From 8904f9e6005e7e1f3cc06f415fdcde0033c32332 Mon Sep 17 00:00:00 2001
From: zhangherong <571457620@qq.com>
Date: 星期一, 21 七月 2025 20:33:53 +0800
Subject: [PATCH] art: 技术状态鉴定工单-生成逻辑优化

---
 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentExtendServiceImpl.java         |   29 +++++++++
 db/430设备管理数据库设计.pdma.json                                                                                          |   38 ++++++++++++
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamTechnicalStatusEvaluationOrderServiceImpl.java |    8 ++
 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentExtend.java                          |    6 ++
 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamEquipmentMapper.xml                       |    4 +
 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/IEamEquipmentExtendService.java                 |   12 ++++
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/TechnicalStatusEvaluationGenerateJob.java                  |   18 +++--
 lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamEquipment.java                                |    9 +++
 lxzn-boot-base-core/src/main/java/org/jeecg/common/util/DateUtils.java                                             |   27 +++++++--
 9 files changed, 134 insertions(+), 17 deletions(-)

diff --git "a/db/430\350\256\276\345\244\207\347\256\241\347\220\206\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.pdma.json" "b/db/430\350\256\276\345\244\207\347\256\241\347\220\206\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.pdma.json"
index 6a7bcf1..99ef71c 100644
--- "a/db/430\350\256\276\345\244\207\347\256\241\347\220\206\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.pdma.json"
+++ "b/db/430\350\256\276\345\244\207\347\256\241\347\220\206\346\225\260\346\215\256\345\272\223\350\256\276\350\256\241.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": [],
diff --git a/lxzn-boot-base-core/src/main/java/org/jeecg/common/util/DateUtils.java b/lxzn-boot-base-core/src/main/java/org/jeecg/common/util/DateUtils.java
index cb79bf1..c702b27 100644
--- a/lxzn-boot-base-core/src/main/java/org/jeecg/common/util/DateUtils.java
+++ b/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();
+    }
 }
\ No newline at end of file
diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamEquipment.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamEquipment.java
index 8723d08..3aded91 100644
--- a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamEquipment.java
+++ b/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;
diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentExtend.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentExtend.java
index a843e8f..630c58e 100644
--- a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/entity/EamEquipmentExtend.java
+++ b/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;
 }
diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamEquipmentMapper.xml b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamEquipmentMapper.xml
index d59e70e..c6a96e2 100644
--- a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamEquipmentMapper.xml
+++ b/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
diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/IEamEquipmentExtendService.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/IEamEquipmentExtendService.java
index c886331..098f1eb 100644
--- a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/IEamEquipmentExtendService.java
+++ b/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);
 }
diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentExtendServiceImpl.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentExtendServiceImpl.java
index b7c322d..98dce3f 100644
--- a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentExtendServiceImpl.java
+++ b/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;
+    }
 }
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/TechnicalStatusEvaluationGenerateJob.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/TechnicalStatusEvaluationGenerateJob.java
index 6aeba9e..e712bce 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/TechnicalStatusEvaluationGenerateJob.java
+++ b/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("锛�");
             }
         }
     }
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamTechnicalStatusEvaluationOrderServiceImpl.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamTechnicalStatusEvaluationOrderServiceImpl.java
index 1c68444..4fa6923 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamTechnicalStatusEvaluationOrderServiceImpl.java
+++ b/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);

--
Gitblit v1.9.3