From a065e80bfc4a9f16c7e32f2d1a55013955a40d3c Mon Sep 17 00:00:00 2001
From: qushaowei <qushaowei@163.com>
Date: 星期五, 20 六月 2025 15:05:17 +0800
Subject: [PATCH] 定时任务

---
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/SecondMaintenanceOrderExpiredJob.java  |   96 ++++++++++
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/ThirdMaintenanceOrderExpiredJob.java   |   96 ++++++++++
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/SecondMaintenanceOrderGenerateJob.java |  139 +++++++++++++++
 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/ThirdMaintenanceOrderGenerateJob.java  |  154 +++++++++++++++++
 4 files changed, 485 insertions(+), 0 deletions(-)

diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/SecondMaintenanceOrderExpiredJob.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/SecondMaintenanceOrderExpiredJob.java
new file mode 100644
index 0000000..8da6f51
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/SecondMaintenanceOrderExpiredJob.java
@@ -0,0 +1,96 @@
+package org.jeecg.modules.eam.job;
+
+import cn.hutool.core.collection.CollectionUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.modules.eam.constant.SecondMaintenanceStatusEnum;
+import org.jeecg.modules.eam.constant.WeekMaintenanceStatusEnum;
+import org.jeecg.modules.eam.entity.EamSecondMaintenanceOrder;
+import org.jeecg.modules.eam.entity.EamWeekMaintenanceOrder;
+import org.jeecg.modules.eam.service.IEamSecondMaintenanceOrderService;
+import org.jeecg.modules.eam.service.IEamWeekMaintenanceOrderService;
+import org.jeecg.modules.flowable.apithird.business.entity.FlowMyBusiness;
+import org.jeecg.modules.flowable.apithird.business.service.IFlowMyBusinessService;
+import org.jeecg.modules.flowable.service.IFlowTaskService;
+import org.jeecg.modules.mdc.util.ThrowableUtil;
+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.quartz.Job;
+import org.quartz.JobExecutionContext;
+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;
+import java.util.List;
+
+@Component
+@Slf4j
+public class SecondMaintenanceOrderExpiredJob implements Job {
+
+    @Autowired
+    private IEamSecondMaintenanceOrderService eamSecondMaintenanceOrderService;
+
+    @Autowired
+    private IFlowMyBusinessService flowMyBusinessService;
+    @Autowired
+    private IFlowTaskService flowTaskService;
+    @Autowired
+    private ISysQuartzLogService sysQuartzLogService;
+    @Autowired
+    private IQuartzJobService quartzJobService;
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
+        //浠诲姟鏃ュ織
+        SysQuartzLog quartzLog = new SysQuartzLog();
+        quartzLog.setCreateTime(new Date());
+        List<QuartzJob> byJobClassName = quartzJobService.findByJobClassName(this.getClass().getName());
+        if (byJobClassName != null && !byJobClassName.isEmpty()) {
+            quartzLog.setJobId(byJobClassName.get(0).getId());
+        }
+        long startTime = System.currentTimeMillis();
+        LocalDate now = LocalDate.now();
+        try {
+
+            List<EamSecondMaintenanceOrder> unCompleteOrderList = eamSecondMaintenanceOrderService.lambdaQuery()
+                    .lt(EamSecondMaintenanceOrder::getMaintenanceDate, now.toString())
+                    .in(EamSecondMaintenanceOrder::getMaintenanceStatus, SecondMaintenanceStatusEnum.WAIT_MAINTENANCE, SecondMaintenanceStatusEnum.UNDER_MAINTENANCE)
+                    .orderByDesc(EamSecondMaintenanceOrder::getMaintenanceDate)
+                    .list();
+
+            if (CollectionUtil.isEmpty(unCompleteOrderList)) {
+                //娌℃湁闇�瑕佸鐞嗙殑鏁版嵁
+                return;
+            }
+            for (EamSecondMaintenanceOrder order : unCompleteOrderList) {
+                if (SecondMaintenanceStatusEnum.WAIT_MAINTENANCE.name().equals(order.getMaintenanceStatus())) {
+                    order.setMaintenanceStatus(SecondMaintenanceStatusEnum.ABOLISH.name());
+                } else if (WeekMaintenanceStatusEnum.UNDER_MAINTENANCE.name().equals(order.getMaintenanceStatus())) {
+                    //宸茬粡琚帴鍗� 浣嗘湭鎵ц瀹屾垚
+                    order.setMaintenanceStatus(SecondMaintenanceStatusEnum.ABOLISH.name());
+                    //寮哄埗缁撴潫娴佺▼ 鍒犻櫎鐢ㄦ埛鐨勬寰呭姙浠诲姟
+                    FlowMyBusiness flowMyBusiness = flowMyBusinessService.selectByDataId(order.getId());
+                    if (flowMyBusiness != null) {
+                        flowTaskService.end(flowMyBusiness.getProcessInstanceId(), "杩囨湡鍒犻櫎");
+                    }
+                }
+            }
+            eamSecondMaintenanceOrderService.updateBatchById(unCompleteOrderList);
+            quartzLog.setIsSuccess(0);
+        } catch (Exception e) {
+            log.error("浜屼繚杩囨湡鎵ц瀹氭椂浠诲姟澶辫触锛寋}", e.getMessage(), e);
+            quartzLog.setIsSuccess(-1);
+            quartzLog.setExceptionDetail(ThrowableUtil.getStackTrace(e));
+        }
+        long endTime = System.currentTimeMillis();
+        quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime)));
+        sysQuartzLogService.save(quartzLog);
+    }
+
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/SecondMaintenanceOrderGenerateJob.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/SecondMaintenanceOrderGenerateJob.java
new file mode 100644
index 0000000..89b126a
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/SecondMaintenanceOrderGenerateJob.java
@@ -0,0 +1,139 @@
+package org.jeecg.modules.eam.job;
+
+import cn.hutool.core.collection.CollectionUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.util.DateUtils;
+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.EamSecondMaintenanceRequest;
+import org.jeecg.modules.eam.request.EamWeekMaintenanceRequest;
+import org.jeecg.modules.eam.service.IEamMaintenanceStandardDetailService;
+import org.jeecg.modules.eam.service.IEamMaintenanceStandardService;
+import org.jeecg.modules.eam.service.IEamSecondMaintenanceOrderService;
+import org.jeecg.modules.eam.service.IEamWeekMaintenanceOrderService;
+import org.jeecg.modules.mdc.util.ThrowableUtil;
+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.service.ISysBusinessCodeRuleService;
+import org.quartz.Job;
+import org.quartz.JobExecutionContext;
+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.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Component
+@Slf4j
+public class SecondMaintenanceOrderGenerateJob implements Job {
+
+    @Autowired
+    private IEamSecondMaintenanceOrderService eamSecondMaintenanceOrderService;
+    @Autowired
+    private IEamMaintenanceStandardService eamMaintenanceStandardService;
+    @Autowired
+    private IEamMaintenanceStandardDetailService eamMaintenanceStandardDetailService;
+    @Autowired
+    private ISysBusinessCodeRuleService businessCodeRuleService;
+    @Autowired
+    private ISysQuartzLogService sysQuartzLogService;
+    @Autowired
+    private IQuartzJobService quartzJobService;
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
+
+        //浠诲姟鏃ュ織
+        SysQuartzLog quartzLog = new SysQuartzLog();
+        quartzLog.setCreateTime(new Date());
+        List<QuartzJob> byJobClassName = quartzJobService.findByJobClassName(this.getClass().getName());
+        if (byJobClassName != null && !byJobClassName.isEmpty()) {
+            quartzLog.setJobId(byJobClassName.get(0).getId());
+        }
+        long startTime = System.currentTimeMillis();
+        /**
+         * 鑾峰彇 閰嶇疆浜� 浜屼繚鏍囧噯鐨� 淇℃伅
+         */
+        List<EamMaintenanceStandard> standardList = eamMaintenanceStandardService.queryListByCategory(MaintenanceCategoryEnum.SECOND_MAINTENANCE.name());
+        if (CollectionUtil.isEmpty(standardList)) {
+            log.warn("娌℃湁閰嶇疆浠讳綍浜屼繚鏍囧噯锛屼换鍔$粨鏉�");
+            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;
+                }
+                //寮�濮嬬敓鎴�
+                EamSecondMaintenanceRequest request = new EamSecondMaintenanceRequest();
+                request.setEquipmentId(standard.getEquipmentId());
+                request.setStandardId(standard.getId());
+                request.setMaintenanceDate(DateUtils.localDateToDate(generateDate));
+                String codeSeq = businessCodeRuleService.generateBusinessCodeSeq(BusinessCodeConst.SECOND_MAINTENANCE_CODE_RULE);
+                request.setOrderNum(codeSeq);
+                request.setCreationMethod(OrderCreationMethodEnum.AUTO.name());
+
+                List<EamSecondMaintenanceOrderDetail> tableDetailList = new ArrayList<>();
+                for (EamMaintenanceStandardDetail msd : standardDetailList) {
+                    EamSecondMaintenanceOrderDetail sod = new EamSecondMaintenanceOrderDetail();
+                    sod.setItemCode(msd.getItemCode());
+                    sod.setItemName(msd.getItemName());
+                    sod.setItemDemand(msd.getItemDemand());
+                    sod.setItemPart(msd.getItemPart());
+                    tableDetailList.add(sod);
+                }
+//                List<EamSecondMaintenanceOrderDetail> collect = standardDetailList.stream().map(EamSecondMaintenanceOrderDetail::new).collect(Collectors.toList());
+                request.setTableDetailList(tableDetailList);
+                eamSecondMaintenanceOrderService.addMaintenance(request);
+
+                standard.setLastGenerateTime(new Date());
+                eamMaintenanceStandardService.updateById(standard);
+            }
+            quartzLog.setIsSuccess(0);
+        } catch (Exception e) {
+            log.error("浜屼繚鐢熸垚鎵ц瀹氭椂浠诲姟澶辫触锛寋}", e.getMessage(), e);
+            quartzLog.setIsSuccess(-1);
+            quartzLog.setExceptionDetail(ThrowableUtil.getStackTrace(e));
+        }
+        long endTime = System.currentTimeMillis();
+        quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime)));
+        sysQuartzLogService.save(quartzLog);
+
+    }
+}
diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/ThirdMaintenanceOrderExpiredJob.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/ThirdMaintenanceOrderExpiredJob.java
new file mode 100644
index 0000000..8a90fee
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/ThirdMaintenanceOrderExpiredJob.java
@@ -0,0 +1,96 @@
+package org.jeecg.modules.eam.job;
+
+import cn.hutool.core.collection.CollectionUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.modules.eam.constant.SecondMaintenanceStatusEnum;
+import org.jeecg.modules.eam.constant.ThirdMaintenanceStatusEnum;
+import org.jeecg.modules.eam.constant.WeekMaintenanceStatusEnum;
+import org.jeecg.modules.eam.entity.EamSecondMaintenanceOrder;
+import org.jeecg.modules.eam.entity.EamThirdMaintenanceOrder;
+import org.jeecg.modules.eam.service.IEamSecondMaintenanceOrderService;
+import org.jeecg.modules.eam.service.IEamThirdMaintenanceOrderService;
+import org.jeecg.modules.flowable.apithird.business.entity.FlowMyBusiness;
+import org.jeecg.modules.flowable.apithird.business.service.IFlowMyBusinessService;
+import org.jeecg.modules.flowable.service.IFlowTaskService;
+import org.jeecg.modules.mdc.util.ThrowableUtil;
+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.quartz.Job;
+import org.quartz.JobExecutionContext;
+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;
+import java.util.List;
+
+@Component
+@Slf4j
+public class ThirdMaintenanceOrderExpiredJob implements Job {
+
+    @Autowired
+    private IEamThirdMaintenanceOrderService eamThirdMaintenanceOrderService;
+
+    @Autowired
+    private IFlowMyBusinessService flowMyBusinessService;
+    @Autowired
+    private IFlowTaskService flowTaskService;
+    @Autowired
+    private ISysQuartzLogService sysQuartzLogService;
+    @Autowired
+    private IQuartzJobService quartzJobService;
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
+        //浠诲姟鏃ュ織
+        SysQuartzLog quartzLog = new SysQuartzLog();
+        quartzLog.setCreateTime(new Date());
+        List<QuartzJob> byJobClassName = quartzJobService.findByJobClassName(this.getClass().getName());
+        if (byJobClassName != null && !byJobClassName.isEmpty()) {
+            quartzLog.setJobId(byJobClassName.get(0).getId());
+        }
+        long startTime = System.currentTimeMillis();
+        LocalDate now = LocalDate.now();
+        try {
+
+            List<EamThirdMaintenanceOrder> unCompleteOrderList = eamThirdMaintenanceOrderService.lambdaQuery()
+                    .lt(EamThirdMaintenanceOrder::getMaintenanceDate, now.toString())
+                    .in(EamThirdMaintenanceOrder::getMaintenanceStatus, ThirdMaintenanceStatusEnum.WAIT_MAINTENANCE, ThirdMaintenanceStatusEnum.UNDER_MAINTENANCE)
+                    .orderByDesc(EamThirdMaintenanceOrder::getMaintenanceDate)
+                    .list();
+
+            if (CollectionUtil.isEmpty(unCompleteOrderList)) {
+                //娌℃湁闇�瑕佸鐞嗙殑鏁版嵁
+                return;
+            }
+            for (EamThirdMaintenanceOrder order : unCompleteOrderList) {
+                if (ThirdMaintenanceStatusEnum.WAIT_MAINTENANCE.name().equals(order.getMaintenanceStatus())) {
+                    order.setMaintenanceStatus(ThirdMaintenanceStatusEnum.ABOLISH.name());
+                } else if (ThirdMaintenanceStatusEnum.UNDER_MAINTENANCE.name().equals(order.getMaintenanceStatus())) {
+                    //宸茬粡琚帴鍗� 浣嗘湭鎵ц瀹屾垚
+                    order.setMaintenanceStatus(ThirdMaintenanceStatusEnum.ABOLISH.name());
+                    //寮哄埗缁撴潫娴佺▼ 鍒犻櫎鐢ㄦ埛鐨勬寰呭姙浠诲姟
+                    FlowMyBusiness flowMyBusiness = flowMyBusinessService.selectByDataId(order.getId());
+                    if (flowMyBusiness != null) {
+                        flowTaskService.end(flowMyBusiness.getProcessInstanceId(), "杩囨湡鍒犻櫎");
+                    }
+                }
+            }
+            eamThirdMaintenanceOrderService.updateBatchById(unCompleteOrderList);
+            quartzLog.setIsSuccess(0);
+        } catch (Exception e) {
+            log.error("涓変繚杩囨湡鎵ц瀹氭椂浠诲姟澶辫触锛寋}", e.getMessage(), e);
+            quartzLog.setIsSuccess(-1);
+            quartzLog.setExceptionDetail(ThrowableUtil.getStackTrace(e));
+        }
+        long endTime = System.currentTimeMillis();
+        quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime)));
+        sysQuartzLogService.save(quartzLog);
+    }
+
+}
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
new file mode 100644
index 0000000..8e19741
--- /dev/null
+++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/ThirdMaintenanceOrderGenerateJob.java
@@ -0,0 +1,154 @@
+package org.jeecg.modules.eam.job;
+
+import cn.hutool.core.collection.CollectionUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.util.DateUtils;
+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.EamSecondMaintenanceRequest;
+import org.jeecg.modules.eam.request.EamThirdMaintenanceRequest;
+import org.jeecg.modules.eam.service.*;
+import org.jeecg.modules.mdc.util.ThrowableUtil;
+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.service.ISysBusinessCodeRuleService;
+import org.quartz.Job;
+import org.quartz.JobExecutionContext;
+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.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
+
+@Component
+@Slf4j
+public class ThirdMaintenanceOrderGenerateJob implements Job {
+
+    @Autowired
+    private IEamEquipmentPrecisionParametersService eamEquipmentPrecisionParametersService;
+    @Autowired
+    private IEamThirdMaintenanceOrderService eamThirdMaintenanceOrderService;
+    @Autowired
+    private IEamMaintenanceStandardService eamMaintenanceStandardService;
+    @Autowired
+    private IEamMaintenanceStandardDetailService eamMaintenanceStandardDetailService;
+    @Autowired
+    private ISysBusinessCodeRuleService businessCodeRuleService;
+    @Autowired
+    private ISysQuartzLogService sysQuartzLogService;
+    @Autowired
+    private IQuartzJobService quartzJobService;
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
+
+        //浠诲姟鏃ュ織
+        SysQuartzLog quartzLog = new SysQuartzLog();
+        quartzLog.setCreateTime(new Date());
+        List<QuartzJob> byJobClassName = quartzJobService.findByJobClassName(this.getClass().getName());
+        if (byJobClassName != null && !byJobClassName.isEmpty()) {
+            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("娌℃湁閰嶇疆浠讳綍涓変繚鏍囧噯锛屼换鍔$粨鏉�");
+            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);
+            quartzLog.setIsSuccess(-1);
+            quartzLog.setExceptionDetail(ThrowableUtil.getStackTrace(e));
+        }
+        long endTime = System.currentTimeMillis();
+        quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime)));
+        sysQuartzLogService.save(quartzLog);
+
+    }
+}

--
Gitblit v1.9.3