zhangherong
2 天以前 8904f9e6005e7e1f3cc06f415fdcde0033c32332
art: 技术状态鉴定工单-生成逻辑优化
已修改9个文件
151 ■■■■ 文件已修改
db/430设备管理数据库设计.pdma.json 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-boot-base-core/src/main/java/org/jeecg/common/util/DateUtils.java 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamEquipment.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentExtend.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamEquipmentMapper.xml 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/IEamEquipmentExtendService.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentExtendServiceImpl.java 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/TechnicalStatusEvaluationGenerateJob.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamTechnicalStatusEvaluationOrderServiceImpl.java 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
db/430É豸¹ÜÀíÊý¾Ý¿âÉè¼Æ.pdma.json
@@ -4,7 +4,7 @@
  "avatar": "",
  "version": "4.9.2",
  "createdTime": "2025-3-10 16:38:19",
  "updatedTime": "2025-7-18 10:53:30",
  "updatedTime": "2025-7-21 18:29:46",
  "dbConns": [],
  "profile": {
    "default": {
@@ -2326,6 +2326,42 @@
          "extProps": {},
          "domain": "6BC8F04B-6CFA-4995-98D3-318F5CDD774E",
          "id": "951E3090-8A27-4E30-A5F0-308B3E9F8E6D"
        },
        {
          "defKey": "technology_genarate_flag",
          "defName": "技术状态鉴定生成标记",
          "comment": "1 å·²ç”Ÿæˆ 0 ä¸‹æ¬¡å¾…生成",
          "type": "",
          "len": "",
          "scale": "",
          "primaryKey": false,
          "notNull": false,
          "autoIncrement": false,
          "defaultValue": "",
          "hideInGraph": false,
          "refDict": "",
          "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64",
          "extProps": {},
          "domain": "73FD2BAD-2358-4336-B96D-45DC897BD792",
          "id": "0F8E5A79-4399-42B0-B893-254A6D9DEFAD"
        },
        {
          "defKey": "third_maintenance_genarate_flag",
          "defName": "三保生成标记",
          "comment": "1 å·²ç”Ÿæˆ 0 ä¸‹æ¬¡å¾…生成",
          "type": "",
          "len": "",
          "scale": "",
          "primaryKey": false,
          "notNull": false,
          "autoIncrement": false,
          "defaultValue": "",
          "hideInGraph": false,
          "refDict": "",
          "baseType": "FC9790A7-36B8-4A48-8F9A-BC1042BCFE64",
          "extProps": {},
          "domain": "73FD2BAD-2358-4336-B96D-45DC897BD792",
          "id": "0BACB829-115B-472B-B205-812ABA028344"
        }
      ],
      "correlations": [],
lxzn-boot-base-core/src/main/java/org/jeecg/common/util/DateUtils.java
@@ -688,6 +688,7 @@
        calendar.setTime(getDate());
        return calendar.get(Calendar.YEAR);
    }
    public static String getDayStr(Date date) {
        Calendar calendar = getCalendar();
        calendar.setTime(date);// æŠŠå½“前时间赋给日历
@@ -695,15 +696,16 @@
        String dayStr = day < 10 ? "0" + day : day + "";
        return dayStr;
    }
    /**
     * å°†å­—符串转成时间
     * @param str
     * @return
     */
    public static Date parseDatetime(String str){
    public static Date parseDatetime(String str) {
        try {
            return datetimeFormat.get().parse(str);
        }catch (Exception e){
        } catch (Exception e) {
        }
        return null;
    }
@@ -711,7 +713,7 @@
    /**
     * èŽ·å–æŒ‡å®šæ—¶é—´ä¹‹åŽçš„å‡ å¹´ qsw
     */
    public static Date getYearAfter(Date data,int number) {
    public static Date getYearAfter(Date data, int number) {
        Calendar c = Calendar.getInstance();
        c.setTime(data);
        c.add(Calendar.YEAR, number);
@@ -724,7 +726,7 @@
    /**
     * èŽ·å–æŒ‡å®šæ—¶é—´ä¹‹åŽçš„å‡ å¤© qsw
     */
    public static Date getDayAfter(Date data,int number) {
    public static Date getDayAfter(Date data, int number) {
        Calendar c = Calendar.getInstance();
        c.setTime(data);
        c.add(Calendar.DAY_OF_MONTH, number);
@@ -737,7 +739,7 @@
    /**
     * èŽ·å–æŒ‡å®šæ—¶é—´ä¹‹åŽçš„å‡ åˆ†é’Ÿ qsw
     */
    public static Date getMinAfter(Date data,int number) {
    public static Date getMinAfter(Date data, int number) {
        Calendar c = Calendar.getInstance();
        c.setTime(data);
        c.add(Calendar.MINUTE, number);
@@ -748,7 +750,7 @@
    /**
     * èŽ·å–æŒ‡å®šæ—¶é—´ä¹‹åŽçš„å‡ å°æ—¶ qsw
     */
    public static Date getHourAfter(Date data,int number) {
    public static Date getHourAfter(Date data, int number) {
        Calendar c = Calendar.getInstance();
        c.setTime(data);
        c.add(Calendar.HOUR_OF_DAY, number);
@@ -780,4 +782,17 @@
    public static Date localDateToDate(LocalDate localDate) {
        return Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
    }
    /**
     * æ—¥æœŸåŠ å¹´
     * @param date
     * @param year
     * @return
     */
    public static Date addYear(Date date, int year) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTime(date);
        calendar.add(Calendar.YEAR, year);
        return calendar.getTime();
    }
}
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamEquipment.java
@@ -453,6 +453,15 @@
    @ApiModelProperty(value = "备注")
    private String remark;
    /** æŠ€æœ¯çŠ¶æ€é‰´å®šç”Ÿæˆæ ‡è®° 1 å·²ç”Ÿæˆ 0 æœªç”Ÿæˆ */
    @ApiModelProperty(value = "技术状态鉴定生成标记 1 å·²ç”Ÿæˆ 0 æœªç”Ÿæˆ")
    @TableField(exist = false)
    private String technologyGenerateFlag;
    /** ä¸‰ä¿ç”Ÿæˆæ ‡è®° 1 å·²ç”Ÿæˆ 0 æœªç”Ÿæˆ */
    @ApiModelProperty(value = "三保生成标记 1 å·²ç”Ÿæˆ 0 æœªç”Ÿæˆ")
    @TableField(exist = false)
    private String thirdMaintenanceGenerateFlag;
    public void setFactoryOrgCode(String factoryOrgCode){
        this.factoryOrgCode = factoryOrgCode;
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentExtend.java
@@ -91,4 +91,10 @@
    /**技术鉴定周期(å¹´)*/
    @ApiModelProperty(value = "技术鉴定周期(å¹´)")
    private Integer technologyCheckPeriod;
    /** æŠ€æœ¯çŠ¶æ€é‰´å®šç”Ÿæˆæ ‡è®° 1 å·²ç”Ÿæˆ 0 æœªç”Ÿæˆ */
    @ApiModelProperty(value = "技术状态鉴定生成标记 1 å·²ç”Ÿæˆ 0 æœªç”Ÿæˆ")
    private String technologyGenerateFlag;
    /** ä¸‰ä¿ç”Ÿæˆæ ‡è®° 1 å·²ç”Ÿæˆ 0 æœªç”Ÿæˆ */
    @ApiModelProperty(value = "三保生成标记 1 å·²ç”Ÿæˆ 0 æœªç”Ÿæˆ")
    private String thirdMaintenanceGenerateFlag;
}
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamEquipmentMapper.xml
@@ -52,7 +52,9 @@
               ext.third_maintenance_period,
               ext.technology_check_period,
               ext.latest_technology_check,
               ext.next_technology_check
               ext.next_technology_check,
               ext.technology_genarate_flag,
               ext.third_maintenance_genarate_flag
        from eam_equipment e
        left join eam_equipment_extend ext
        on e.id = ext.id
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/IEamEquipmentExtendService.java
@@ -3,6 +3,8 @@
import org.jeecg.modules.eam.entity.EamEquipmentExtend;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.Date;
/**
 * @Description: è®¾å¤‡å°è´¦æ‰©å±•表
 * @Author: jeecg-boot
@@ -25,4 +27,14 @@
     * @return
     */
    boolean updateEquipmentRepairStatus(String equipmentId, String status);
    /**
     * æ›´æ–°è®¾å¤‡æŠ€æœ¯çŠ¶æ€åŠé‰´å®šæ—¥æœŸ
     * @param equipmentId è®¾å¤‡ID
     * @param status æŠ€æœ¯çŠ¶æ€
     * @param evaluationDate é‰´å®šå®Œæˆæ—¥æœŸ
     * @param technologyGenerateFlag æŠ€æœ¯çŠ¶æ€é‰´å®šå·¥å•ç”Ÿæˆæ ‡è¯†
     * @return
     */
    boolean updateTechnologyParam(String equipmentId, String status, Date evaluationDate, String technologyGenerateFlag);
}
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentExtendServiceImpl.java
@@ -1,5 +1,9 @@
package org.jeecg.modules.eam.service.impl;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import org.apache.commons.lang3.StringUtils;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.util.DateUtils;
import org.jeecg.modules.eam.entity.EamEquipmentExtend;
import org.jeecg.modules.eam.mapper.EamEquipmentExtendMapper;
import org.jeecg.modules.eam.service.IEamEquipmentExtendService;
@@ -9,6 +13,7 @@
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.Date;
/**
 * @Description: è®¾å¤‡å°è´¦æ‰©å±•表
@@ -45,4 +50,28 @@
        eamEquipmentExtendMapper.updateById(entity);
        return true;
    }
    @Override
    @Transactional(rollbackFor = Exception.class)
    public boolean updateTechnologyParam(String equipmentId, String status, Date evaluationDate, String technologyGenerateFlag) {
        if (StringUtils.isBlank(status) && StringUtils.isBlank(technologyGenerateFlag) && evaluationDate == null) {
            return false;
        }
        EamEquipmentExtend entity = this.getBaseMapper().selectById(equipmentId);
        UpdateWrapper<EamEquipmentExtend> updateWrapper = new UpdateWrapper<>();
        updateWrapper.eq("id", equipmentId);
        if (StringUtils.isNotBlank(status)) {
            entity.setTechnologyStatus(status);
        }
        if (StringUtils.isNotBlank(technologyGenerateFlag)) {
            entity.setTechnologyGenerateFlag(technologyGenerateFlag);
        }
        if (evaluationDate != null) {
            entity.setLatestTechnologyCheck(evaluationDate);
            if (entity.getTechnologyCheckPeriod() != null) {
                entity.setNextTechnologyCheck(DateUtils.addYear(entity.getLatestTechnologyCheck(), entity.getTechnologyCheckPeriod()));
            }
        }
        return this.getBaseMapper().updateById(entity) > 0;
    }
}
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/TechnicalStatusEvaluationGenerateJob.java
@@ -2,11 +2,13 @@
import cn.hutool.core.collection.CollectionUtil;
import lombok.extern.slf4j.Slf4j;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.util.DateUtils;
import org.jeecg.modules.eam.constant.OrderCreationMethodEnum;
import org.jeecg.modules.eam.entity.EamEquipment;
import org.jeecg.modules.eam.entity.EamTechnicalStatusEvaluationStandard;
import org.jeecg.modules.eam.request.EamTechnicalStatusEvaluationOrderRequest;
import org.jeecg.modules.eam.service.IEamEquipmentExtendService;
import org.jeecg.modules.eam.service.IEamEquipmentService;
import org.jeecg.modules.eam.service.IEamTechnicalStatusEvaluationOrderService;
import org.jeecg.modules.eam.service.IEamTechnicalStatusEvaluationStandardService;
@@ -21,7 +23,6 @@
import org.quartz.JobExecutionException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDate;
import java.util.Date;
@@ -44,9 +45,10 @@
    private ISysQuartzLogService sysQuartzLogService;
    @Autowired
    private IQuartzJobService quartzJobService;
    @Autowired
    private IEamEquipmentExtendService equipmentExtendService;
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        //任务日志
        SysQuartzLog quartzLog = new SysQuartzLog();
@@ -127,7 +129,7 @@
            }
        }
        quartzLog.setIsSuccess(0);
        if(failCount.get() > 0) {
        if (failCount.get() > 0) {
            quartzLog.setIsSuccess(-1);
        }
        sb.append("技术状态鉴定工单生成:【成功:").append(successCount.get()).append(",失败:").append(failCount.get()).append("】");
@@ -141,10 +143,10 @@
        LocalDate nextTechnologyCheckDate = DateUtils.dateToLocalDate(equipment.getNextTechnologyCheck());
        LocalDate generateDate = nextTechnologyCheckDate.minusDays(orderPreGenerationDays);
        LocalDate lockDate = nextTechnologyCheckDate.minusDays(orderPreLockDays);
        if (LocalDate.now().equals(generateDate)) {
        if (!LocalDate.now().isBefore(generateDate) && !CommonConstant.STATUS_1.equals(equipment.getTechnologyGenerateFlag())) {
            //计算当天需要生成
            EamTechnicalStatusEvaluationStandard standard = evaluationStandardService.queryEnableStandard(equipment.getId());
            if(standard == null) {
            if (standard == null) {
                log.warn("设备:{},未配置技术状态鉴定规范,无法生成技术鉴定工单!日期:{}", equipment.getEquipmentCode(), DateUtils.date2Str(DateUtils.date_sdf.get()));
                failCount.incrementAndGet();
                sb.append("设备:").append(equipment.getEquipmentCode()).append(",未配置技术状态鉴定规范,无法生成技术鉴定工单!");
@@ -160,10 +162,12 @@
            try {
                evaluationOrderService.addTechnicalStatusEvaluationOrder(request);
                successCount.incrementAndGet();
                //更新扩展表中的生成标识
                equipmentExtendService.updateTechnologyParam(equipment.getId(), null, null, CommonConstant.STATUS_1);
            } catch (Exception e) {
                log.error("生成技术状态鉴定工单失败,原因:{}", e.getMessage(), e);
                log.error("设备:{},生成技术状态鉴定工单失败,原因:{}", equipment.getEquipmentCode(), e.getMessage(), e);
                failCount.incrementAndGet();
                sb.append("生成技术状态鉴定工单失败,原因:").append(e.getMessage()).append("!");
                sb.append("设备:").append(equipment.getEquipmentCode()).append(",生成技术状态鉴定工单失败,原因:").append(e.getMessage()).append("!");
            }
        }
    }
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamTechnicalStatusEvaluationOrderServiceImpl.java
@@ -17,6 +17,7 @@
import org.jeecg.common.constant.DataBaseConstant;
import org.jeecg.common.exception.JeecgBootException;
import org.jeecg.common.system.vo.LoginUser;
import org.jeecg.common.util.DateUtils;
import org.jeecg.common.util.oConvertUtils;
import org.jeecg.modules.eam.constant.*;
import org.jeecg.modules.eam.entity.*;
@@ -501,8 +502,6 @@
                    values.put("NextAssignee", userApprovalList);
                    entity.setEvaluationStatus(TechnicalStatusEvaluationOrderStatusEnum.REPAIRER_SIGNING.name());
                }
//                //更新设备保养状态
//                eamEquipmentExtendService.updateEquipmentMaintenanceStatus(entity.getEquipmentId(), EquipmentMaintenanceStatus.NORMAL.name());
                break;
            case PROCESS_TECHNICIAN_SIGNING:
                //工艺员签字
@@ -562,6 +561,11 @@
                entity.setInspectorComment(request.getInspectorComment());
                entity.setEvaluationResult(request.getEvaluationResult());
                entity.setEvaluationReason(request.getEvaluationReason());
                //更新设备技术状态
                // æŒ‰ç…§å¡«æŠ¥å®Œæˆæ—¥æœŸè®¡ç®—本次三保日期,去除时分秒
                Date evaluationDate = DateUtils.localDateToDate(DateUtils.dateToLocalDate(entity.getActualEndTime()));
                equipmentExtendService.updateTechnologyParam(equipment.getId(), entity.getEvaluationResult(),
                        evaluationDate, CommonConstant.STATUS_0);
                break;
        }
        request.setValues(values);