From 0063343edb7cee0a8b460f4b1424748e660ec370 Mon Sep 17 00:00:00 2001
From: lyh <925863403@qq.com>
Date: 星期四, 31 七月 2025 16:23:03 +0800
Subject: [PATCH] 修改保养规范点检导入

---
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/ThirdMaintenanceOrderGenerateJob.java |  222 +++++++++++++++++++++++++++++++++----------------------
 1 files changed, 133 insertions(+), 89 deletions(-)

diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/ThirdMaintenanceOrderGenerateJob.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/ThirdMaintenanceOrderGenerateJob.java
index 389b45f..ad65df1 100644
--- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/ThirdMaintenanceOrderGenerateJob.java
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/ThirdMaintenanceOrderGenerateJob.java
@@ -2,22 +2,21 @@
 
 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.common.util.ThrowableUtil;
 import org.jeecg.modules.eam.constant.BusinessCodeConst;
 import org.jeecg.modules.eam.constant.MaintenanceCategoryEnum;
 import org.jeecg.modules.eam.constant.OrderCreationMethodEnum;
 import org.jeecg.modules.eam.entity.*;
 import org.jeecg.modules.eam.request.EamThirdMaintenanceRequest;
-import org.jeecg.modules.eam.service.IEamEquipmentPrecisionParametersService;
-import org.jeecg.modules.eam.service.IEamMaintenanceStandardDetailService;
-import org.jeecg.modules.eam.service.IEamMaintenanceStandardService;
-import org.jeecg.modules.eam.service.IEamThirdMaintenanceOrderService;
+import org.jeecg.modules.eam.service.*;
 import org.jeecg.modules.quartz.entity.QuartzJob;
 import org.jeecg.modules.quartz.entity.SysQuartzLog;
 import org.jeecg.modules.quartz.service.IQuartzJobService;
 import org.jeecg.modules.quartz.service.ISysQuartzLogService;
+import org.jeecg.modules.system.entity.SysParams;
 import org.jeecg.modules.system.service.ISysBusinessCodeRuleService;
+import org.jeecg.modules.system.service.ISysParamsService;
 import org.quartz.Job;
 import org.quartz.JobExecutionContext;
 import org.quartz.JobExecutionException;
@@ -26,16 +25,24 @@
 import org.springframework.transaction.annotation.Transactional;
 
 import java.time.LocalDate;
-import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
 
+/**
+ * @Author: Lius
+ * @CreateTime: 2025-07-29
+ * @Description: 涓変繚宸ュ崟閿佸畾
+ */
 @Component
 @Slf4j
 public class ThirdMaintenanceOrderGenerateJob implements Job {
 
     @Autowired
-    private IEamEquipmentPrecisionParametersService eamEquipmentPrecisionParametersService;
+    private IEamEquipmentService equipmentService;
+    @Autowired
+    private ISysParamsService paramsService;
     @Autowired
     private IEamThirdMaintenanceOrderService eamThirdMaintenanceOrderService;
     @Autowired
@@ -48,6 +55,8 @@
     private ISysQuartzLogService sysQuartzLogService;
     @Autowired
     private IQuartzJobService quartzJobService;
+    @Autowired
+    private IEamEquipmentExtendService equipmentExtendService;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -61,95 +70,130 @@
             quartzLog.setJobId(byJobClassName.get(0).getId());
         }
         long startTime = System.currentTimeMillis();
-        /**
-         * 鑾峰彇 閰嶇疆浜� 涓変繚鏍囧噯鐨� 淇℃伅
-         */
-        List<EamMaintenanceStandard> standardList = eamMaintenanceStandardService.queryListByCategory(MaintenanceCategoryEnum.THIRD_MAINTENANCE.name());
-        if (CollectionUtil.isEmpty(standardList)) {
-            log.warn("娌℃湁閰嶇疆浠讳綍涓変繚鏍囧噯锛屼换鍔$粨鏉�");
+        //鑾峰彇涓変繚绯荤粺閰嶇疆鍙傛暟
+        SysParams threeYearMaintOrderPreGenerationDaysParam = paramsService.getSysPramBySettingKey("three_year_maint_order_pre_generation_days");
+        if (threeYearMaintOrderPreGenerationDaysParam == null) {
+            log.error("鏈厤缃�3~4骞存湡鎻愬墠鐢熸垚宸ュ崟鐨勭郴缁熷弬鏁帮紝鏃ユ湡锛歿}", DateUtils.date2Str(DateUtils.date_sdf.get()));
+            quartzLog.setIsSuccess(-1);
+            long endTime = System.currentTimeMillis();
+            quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime)));
+            quartzLog.setExceptionDetail("鏈厤缃�3~4骞存湡鎻愬墠鐢熸垚宸ュ崟鐨勭郴缁熷弬鏁帮紝鏃ユ湡锛�" + DateUtils.date2Str(DateUtils.date_sdf.get()));
+            sysQuartzLogService.save(quartzLog);
             return;
         }
-        //褰撳墠鏃ユ湡
-        LocalDate now = LocalDate.now();
-        try {
-            for (EamMaintenanceStandard standard : standardList) {
-                if (standard.getMaintenancePeriod() == null || standard.getMaintenancePeriod() < 1) {
-                    log.error("涓変繚鏍囧噯鍛ㄦ湡璁剧疆閿欒锛岃鍏堥厤缃爣鍑嗗懆鏈�, standard:{}", standard);
-                    continue;
-                }
-                if (standard.getInitialDate() == null) {
-                    //璁剧疆鍒濆鏃ユ湡涓哄墠涓�澶�
-                    standard.setInitialDate(DateUtils.localDateToDate(now.minusDays(1)));
-                }
-                LocalDate generateDate = DateUtils.dateToLocalDate(standard.getInitialDate());
-                if (standard.getLastGenerateTime() != null) {
-                    generateDate = DateUtils.dateToLocalDate(standard.getLastGenerateTime());
-                }
-                //鍔犲懆鏈�
-                do {
-                    //鍒濆鏃ユ湡璁剧疆鐨勬瘮杈冩棭锛屾垨浠诲姟闀挎椂闂存病鎵ц锛屽繀椤诲懆鏈熷埌浠婂ぉ鎵嶄細鐢熸垚宸ュ崟
-                    generateDate = generateDate.plusDays(standard.getMaintenancePeriod());
-                } while (now.isAfter(generateDate));
-                if(!now.isEqual(generateDate)) {
-                    //杩樻湭鍒扮敓鎴愭棩鏈燂紝璺宠繃鎵ц
-                    continue;
-                }
-                //鑾峰彇淇濆吇椤规槑缁�
-                List<EamMaintenanceStandardDetail> standardDetailList = eamMaintenanceStandardDetailService.selectByStandardId(standard.getId());
-                if(CollectionUtil.isEmpty(standardDetailList)) {
-                    log.error("涓変繚鏍囧噯娌℃湁淇濆吇鏄庣粏锛岃鍏堥厤缃繚鍏绘槑缁�, standard:{}", standard);
-                    continue;
-                }
-
-                //寮�濮嬬敓鎴�
-                EamThirdMaintenanceRequest request = new EamThirdMaintenanceRequest();
-                request.setEquipmentId(standard.getEquipmentId());
-                request.setStandardId(standard.getId());
-                request.setMaintenanceDate(DateUtils.localDateToDate(generateDate));
-                String codeSeq = businessCodeRuleService.generateBusinessCodeSeq(BusinessCodeConst.THIRD_MAINTENANCE_CODE_RULE);
-                request.setOrderNum(codeSeq);
-                request.setCreationMethod(OrderCreationMethodEnum.AUTO.name());
-
-                List<EamThirdMaintenanceOrderDetail> tableDetailList = new ArrayList<>();
-                for (EamMaintenanceStandardDetail msd : standardDetailList) {
-                    EamThirdMaintenanceOrderDetail tod = new EamThirdMaintenanceOrderDetail();
-                    tod.setItemCode(msd.getItemCode());
-                    tod.setItemName(msd.getItemName());
-                    tod.setItemDemand(msd.getItemDemand());
-                    tod.setItemPart(msd.getItemPart());
-                    tableDetailList.add(tod);
-                }
-//                List<EamThirdMaintenanceOrderDetail> collect = standardDetailList.stream().map(EamThirdMaintenanceOrderDetail::new).collect(Collectors.toList());
-                request.setTableDetailList(tableDetailList);
-
-                //閫氳繃璁惧 鑾峰彇璁惧绮惧害鍙傛暟
-                List<EamEquipmentPrecisionParameters> precisionParametersList = eamEquipmentPrecisionParametersService
-                        .lambdaQuery().eq(EamEquipmentPrecisionParameters::getEquipmentId, standard.getEquipmentId()).list();
-                if(precisionParametersList.size()>0){
-                    List<EamPrecisionCheckDetail> precisionDetailList = new ArrayList<>();
-                    for (EamEquipmentPrecisionParameters epp : precisionParametersList) {
-                        EamPrecisionCheckDetail pcd = new EamPrecisionCheckDetail();
-                        pcd.setParameterId(epp.getParameterId());
-                        pcd.setEquipmentId(standard.getEquipmentId());
-                        pcd.setParameterValue(epp.getParameterValue());
-                        precisionDetailList.add(pcd);
-                    }
-                    request.setPrecisionDetailList(precisionDetailList);
-                }
-                eamThirdMaintenanceOrderService.addMaintenance(request);
-
-                standard.setLastGenerateTime(new Date());
-                eamMaintenanceStandardService.updateById(standard);
-            }
-            quartzLog.setIsSuccess(0);
-        } catch (Exception e) {
-            log.error("涓変繚鐢熸垚鎵ц瀹氭椂浠诲姟澶辫触锛寋}", e.getMessage(), e);
+        int threeYearMaintOrderPreGenerationDays = Integer.parseInt(threeYearMaintOrderPreGenerationDaysParam.getSettingValue());
+        SysParams oneYearMaintOrderPreGenerationDaysParam = paramsService.getSysPramBySettingKey("one_year_maint_order_pre_generation_days");
+        if (oneYearMaintOrderPreGenerationDaysParam == null) {
+            log.error("鏈厤缃�3~4骞存湡鎻愬墠鐢熸垚宸ュ崟鐨勭郴缁熷弬鏁帮紝鏃ユ湡锛歿}", DateUtils.date2Str(DateUtils.date_sdf.get()));
             quartzLog.setIsSuccess(-1);
-            quartzLog.setExceptionDetail(ThrowableUtil.getStackTrace(e));
+            long endTime = System.currentTimeMillis();
+            quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime)));
+            quartzLog.setExceptionDetail("鏈厤缃�3~4骞存湡鎻愬墠鐢熸垚宸ュ崟鐨勭郴缁熷弬鏁帮紝鏃ユ湡锛�" + DateUtils.date2Str(DateUtils.date_sdf.get()));
+            sysQuartzLogService.save(quartzLog);
+            return;
         }
+        int oneYearMaintOrderPreGenerationDays = Integer.parseInt(oneYearMaintOrderPreGenerationDaysParam.getSettingValue());
+        SysParams threeYearMaintOrderPreLockDaysParam = paramsService.getSysPramBySettingKey("three_year_maint_order_pre_lock_days");
+        if (threeYearMaintOrderPreLockDaysParam == null) {
+            log.error("鏈厤缃�3~4骞存湡鎻愬墠閿佸畾宸ュ崟鐨勭郴缁熷弬鏁帮紝鏃ユ湡锛歿}", DateUtils.date2Str(DateUtils.date_sdf.get()));
+            quartzLog.setIsSuccess(-1);
+            long endTime = System.currentTimeMillis();
+            quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime)));
+            quartzLog.setExceptionDetail("鏈厤缃�3~4骞存湡鎻愬墠閿佸畾宸ュ崟鐨勭郴缁熷弬鏁帮紝鏃ユ湡锛�" + DateUtils.date2Str(DateUtils.date_sdf.get()));
+            sysQuartzLogService.save(quartzLog);
+            return;
+        }
+        int threeYearMaintOrderPreLockDays = Integer.parseInt(threeYearMaintOrderPreLockDaysParam.getSettingValue());
+        SysParams oneYearMaintOrderPreLockDaysParam = paramsService.getSysPramBySettingKey("one_year_maint_order_pre_lock_days");
+        if (oneYearMaintOrderPreLockDaysParam == null) {
+            log.error("鏈厤缃�1骞存湡鎻愬墠閿佸畾宸ュ崟鐨勭郴缁熷弬鏁帮紝鏃ユ湡锛歿}", DateUtils.date2Str(DateUtils.date_sdf.get()));
+            quartzLog.setIsSuccess(-1);
+            long endTime = System.currentTimeMillis();
+            quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime)));
+            quartzLog.setExceptionDetail("鏈厤缃�1骞存湡鎻愬墠閿佸畾宸ュ崟鐨勭郴缁熷弬鏁帮紝鏃ユ湡锛�" + DateUtils.date2Str(DateUtils.date_sdf.get()));
+            sysQuartzLogService.save(quartzLog);
+            return;
+        }
+        int oneYearMaintOrderPreLockDays = Integer.parseInt(oneYearMaintOrderPreLockDaysParam.getSettingValue());
+
+        //鑾峰彇璁惧鍒楄〃
+        List<EamEquipment> equipmentList = equipmentService.selectThreeMaintenanceEquipmentList();
+        if (CollectionUtil.isEmpty(equipmentList)) {
+            log.warn("娌℃湁闇�瑕佺敓鎴愪笁淇濆伐鍗曠殑璁惧锛佹棩鏈燂細{}", DateUtils.date2Str(DateUtils.date_sdf.get()));
+            quartzLog.setIsSuccess(-1);
+            long endTime = System.currentTimeMillis();
+            quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime)));
+            quartzLog.setExceptionDetail("娌℃湁闇�瑕佺敓鎴愪笁淇濆伐鍗曠殑璁惧锛屾棩鏈燂細" + DateUtils.date2Str(DateUtils.date_sdf.get()));
+            sysQuartzLogService.save(quartzLog);
+            return;
+        }
+        AtomicInteger successCount = new AtomicInteger(0);
+        AtomicInteger failCount = new AtomicInteger(0);
+        StringBuilder sb = new StringBuilder();
+        for (EamEquipment eamEquipment : equipmentList) {
+            //鍒ゆ柇鏄惁涓�1骞寸殑涓変繚鍛ㄦ湡
+            if (eamEquipment.getThirdMaintenancePeriod() == 1) {
+                //1骞存湡
+                generateThirdMaintenanceOrder(oneYearMaintOrderPreGenerationDays, oneYearMaintOrderPreLockDays, eamEquipment, successCount, failCount, sb);
+            } else if (eamEquipment.getThirdMaintenancePeriod() == 3 || eamEquipment.getThirdMaintenancePeriod() == 4) {
+                //3~4骞存湡
+                generateThirdMaintenanceOrder(threeYearMaintOrderPreGenerationDays, threeYearMaintOrderPreLockDays, eamEquipment, successCount, failCount, sb);
+            }
+        }
+        quartzLog.setIsSuccess(0);
+        if (failCount.get() > 0) {
+            quartzLog.setIsSuccess(-1);
+        }
+        sb.append("涓変繚宸ュ崟鐢熸垚锛氥�愭垚鍔燂細").append(successCount.get()).append("锛屽け璐ワ細").append(failCount.get()).append("銆�");
+        quartzLog.setExceptionDetail(sb.toString());
         long endTime = System.currentTimeMillis();
         quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime)));
         sysQuartzLogService.save(quartzLog);
 
     }
+
+    private void generateThirdMaintenanceOrder(int orderPreGenerationDays, int orderPreLockDays, EamEquipment equipment, AtomicInteger successCount, AtomicInteger failCount, StringBuilder sb) {
+        LocalDate nextThirdMaintenanceDate = DateUtils.dateToLocalDate(equipment.getNextThirdMaintenance());
+        LocalDate generateDate = nextThirdMaintenanceDate.minusDays(orderPreGenerationDays);
+        LocalDate lockDate = nextThirdMaintenanceDate.minusDays(orderPreLockDays);
+        if (!LocalDate.now().isBefore(generateDate) && !CommonConstant.STATUS_1.equals(equipment.getThirdMaintenanceGenerateFlag())) {
+            //璁$畻褰撳ぉ闇�瑕佺敓鎴�
+            EamMaintenanceStandard standard = eamMaintenanceStandardService.queryByEquipmentIdAndCategory(equipment.getId(), MaintenanceCategoryEnum.THIRD_MAINTENANCE.name());
+            if (standard == null) {
+                log.warn("璁惧锛歿}锛屾湭閰嶇疆涓夌骇淇濆吇瑙勮寖锛屾棤娉曠敓鎴愪笁淇濆伐鍗曪紒鏃ユ湡锛歿}", equipment.getEquipmentCode(), DateUtils.date2Str(DateUtils.date_sdf.get()));
+                failCount.incrementAndGet();
+                sb.append("璁惧锛�").append(equipment.getEquipmentCode()).append("锛屾湭閰嶇疆涓夌骇淇濆吇瑙勮寖锛屾棤娉曠敓鎴愪笁淇濆伐鍗曪紒");
+                return;
+            }
+            List<EamMaintenanceStandardDetail> eamMaintenanceStandardDetailList = eamMaintenanceStandardDetailService.selectByStandardId(standard.getId());
+            if (CollectionUtil.isEmpty(eamMaintenanceStandardDetailList)) {
+                log.warn("璁惧锛歿}锛屾湭閰嶇疆涓夌骇淇濆吇瑙勮寖鏄庣粏锛屾棤娉曠敓鎴愪笁淇濆伐鍗曪紒鏃ユ湡锛歿}", equipment.getEquipmentCode(), DateUtils.date2Str(DateUtils.date_sdf.get()));
+                failCount.incrementAndGet();
+                sb.append("璁惧锛�").append(equipment.getEquipmentCode()).append("锛屾湭閰嶇疆涓夌骇淇濆吇瑙勮寖鏄庣粏锛屾棤娉曠敓鎴愪笁淇濆伐鍗曪紒");
+                return;
+            }
+            EamThirdMaintenanceRequest request = new EamThirdMaintenanceRequest();
+            String codeSeq = businessCodeRuleService.generateBusinessCodeSeq(BusinessCodeConst.THIRD_MAINTENANCE_CODE_RULE);
+            request.setOrderNum(codeSeq);
+            request.setEquipmentId(equipment.getId());
+            request.setStandardId(standard.getId());
+            request.setMaintenanceDate(generateDate.toString());
+            request.setFreezeOrderDate(DateUtils.localDateToDate(lockDate));
+            request.setOrderExpirationDate(equipment.getNextThirdMaintenance());
+            request.setCreationMethod(OrderCreationMethodEnum.AUTO.name());
+            List<EamThirdMaintenanceOrderDetail> tableDetailList = eamMaintenanceStandardDetailList.stream().map(EamThirdMaintenanceOrderDetail::new).collect(Collectors.toList());
+            request.setTableDetailList(tableDetailList);
+            try {
+                eamThirdMaintenanceOrderService.addMaintenance(request);
+                successCount.incrementAndGet();
+                //鏇存柊鎵╁睍琛ㄤ腑鐨勭敓鎴愭爣璇�
+                equipmentExtendService.updateThirdMaintenanceParam(equipment.getId(), null, null, CommonConstant.STATUS_1);
+            } catch (Exception e) {
+                log.error("璁惧锛歿}锛岀敓鎴愪笁淇濆伐鍗曞け璐ワ紝鍘熷洜锛歿}", equipment.getEquipmentCode(), e.getMessage(), e);
+                failCount.incrementAndGet();
+                sb.append("璁惧锛�").append(equipment.getEquipmentCode()).append("锛岀敓鎴愪笁淇濆伐鍗曞け璐ワ紝鍘熷洜锛�").append(e.getMessage()).append("锛�");
+            }
+
+        }
+    }
 }

--
Gitblit v1.9.3