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/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 b57a350..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