From 4545af9041b432cbe79214d52be599e4ce8659aa Mon Sep 17 00:00:00 2001
From: lyh <925863403@qq.com>
Date: 星期四, 14 八月 2025 15:55:39 +0800
Subject: [PATCH] 二保结构树代码 维修工单添加 领取按钮 领取后 生成维修开始时间 提交后 生成维修结束时间 计算 维修时长 故障时长 添加导出
---
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/TechnicalStatusEvaluationGenerateJob.java | 151 ++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 144 insertions(+), 7 deletions(-)
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 8a7c050..2fd2aab 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
@@ -1,37 +1,174 @@
package org.jeecg.modules.eam.job;
+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.IEamTechnicalStatusEvaluationStandardDetailService;
+import org.jeecg.modules.eam.service.IEamTechnicalStatusEvaluationOrderService;
import org.jeecg.modules.eam.service.IEamTechnicalStatusEvaluationStandardService;
+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.ISysParamsService;
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;
+import java.util.concurrent.atomic.AtomicInteger;
@Component
@Slf4j
public class TechnicalStatusEvaluationGenerateJob implements Job {
@Autowired
private IEamEquipmentService equipmentService;
- @Autowired
- private IEamEquipmentExtendService equipmentExtendService;
@Autowired
private IEamTechnicalStatusEvaluationStandardService evaluationStandardService;
@Autowired
- private IEamTechnicalStatusEvaluationStandardDetailService evaluationStandardDetailService;
- @Autowired
private ISysParamsService paramsService;
+ @Autowired
+ private IEamTechnicalStatusEvaluationOrderService evaluationOrderService;
+ @Autowired
+ 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();
+ quartzLog.setCreateTime(new Date());
+ List<QuartzJob> jobClassName = quartzJobService.findByJobClassName(this.getClass().getName());
+ if (jobClassName != null && !jobClassName.isEmpty()) {
+ quartzLog.setJobId(jobClassName.get(0).getId());
+ }
+ long startTime = System.currentTimeMillis();
+ //鑾峰彇鎶�鏈姸鎬侀壌瀹氱郴缁熼厤缃弬鏁�
+ SysParams threeYearOrderPreGenerationDaysParam = paramsService.getSysPramBySettingKey("three_year_order_pre_generation_days");
+ if (threeYearOrderPreGenerationDaysParam == 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 threeYearOrderPreGenerationDays = Integer.parseInt(threeYearOrderPreGenerationDaysParam.getSettingValue());
+ SysParams oneYearOrderPreGenerationDaysParam = paramsService.getSysPramBySettingKey("one_year_order_pre_generation_days");
+ if (oneYearOrderPreGenerationDaysParam == 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 oneYearOrderPreGenerationDays = Integer.parseInt(oneYearOrderPreGenerationDaysParam.getSettingValue());
+ SysParams threeYearOrderPreLockDaysParam = paramsService.getSysPramBySettingKey("three_year_order_pre_lock_days");
+ if (threeYearOrderPreLockDaysParam == 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 threeYearOrderPreLockDays = Integer.parseInt(threeYearOrderPreLockDaysParam.getSettingValue());
+ SysParams oneYearOrderPreLockDaysParam = paramsService.getSysPramBySettingKey("one_year_order_pre_lock_days");
+ if (oneYearOrderPreLockDaysParam == 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 oneYearOrderPreLockDays = Integer.parseInt(oneYearOrderPreLockDaysParam.getSettingValue());
//鑾峰彇璁惧鍒楄〃
+ List<EamEquipment> equipmentList = equipmentService.selectTechnicalEquipmentList();
+ 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 equipment : equipmentList) {
+ //鍒ゆ柇鏄惁涓�1骞寸殑鎶�鏈姸鎬侀壌瀹氬懆鏈�
+ if (equipment.getTechnologyCheckPeriod() == 1) {
+ //1骞存湡
+ generateTechnicalStatusEvaluationOrder(oneYearOrderPreGenerationDays, oneYearOrderPreLockDays, equipment, successCount, failCount, sb);
+ } else if (equipment.getTechnologyCheckPeriod() == 3 || equipment.getTechnologyCheckPeriod() == 4) {
+ //3~4骞存湡
+ generateTechnicalStatusEvaluationOrder(threeYearOrderPreGenerationDays, threeYearOrderPreLockDays, equipment, 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 generateTechnicalStatusEvaluationOrder(int orderPreGenerationDays, int orderPreLockDays, EamEquipment equipment, AtomicInteger successCount, AtomicInteger failCount, StringBuilder sb) {
+ LocalDate nextTechnologyCheckDate = DateUtils.dateToLocalDate(equipment.getNextTechnologyCheck());
+ LocalDate generateDate = nextTechnologyCheckDate.minusDays(orderPreGenerationDays);
+ LocalDate lockDate = nextTechnologyCheckDate.minusDays(orderPreLockDays);
+ if (!LocalDate.now().isBefore(generateDate) && !CommonConstant.STATUS_1.equals(equipment.getTechnologyGenerateFlag())) {
+ //璁$畻褰撳ぉ闇�瑕佺敓鎴�
+ EamTechnicalStatusEvaluationStandard standard = evaluationStandardService.queryEnableStandard(equipment.getId());
+ if (standard == null) {
+ log.warn("璁惧锛歿}锛屾湭閰嶇疆鎶�鏈姸鎬侀壌瀹氳鑼冿紝鏃犳硶鐢熸垚鎶�鏈壌瀹氬伐鍗曪紒鏃ユ湡锛歿}", equipment.getEquipmentCode(), DateUtils.date2Str(DateUtils.date_sdf.get()));
+ failCount.incrementAndGet();
+ sb.append("璁惧锛�").append(equipment.getEquipmentCode()).append("锛屾湭閰嶇疆鎶�鏈姸鎬侀壌瀹氳鑼冿紝鏃犳硶鐢熸垚鎶�鏈壌瀹氬伐鍗曪紒");
+ return;
+ }
+ EamTechnicalStatusEvaluationOrderRequest request = new EamTechnicalStatusEvaluationOrderRequest();
+ request.setEquipmentId(equipment.getId());
+ request.setStandardId(standard.getId());
+ request.setEvaluationDate(DateUtils.localDateToDate(generateDate));
+ request.setFreezeOrderDate(DateUtils.localDateToDate(lockDate));
+ request.setOrderExpirationDate(equipment.getNextTechnologyCheck());
+ request.setCreationMethod(OrderCreationMethodEnum.AUTO.name());
+ try {
+ evaluationOrderService.addTechnicalStatusEvaluationOrder(request);
+ successCount.incrementAndGet();
+ //鏇存柊鎵╁睍琛ㄤ腑鐨勭敓鎴愭爣璇�
+ equipmentExtendService.updateTechnologyParam(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