From 3d63e7c025d5d8164df640d7c947e601c149e951 Mon Sep 17 00:00:00 2001 From: zhangherong <571457620@qq.com> Date: 星期一, 21 七月 2025 14:12:52 +0800 Subject: [PATCH] art: 技术状态鉴定工单-定时任务生成 --- lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamTechnicalStatusEvaluationOrderRequest.java | 10 +++ lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentServiceImpl.java | 2 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamTechnicalStatusEvaluationOrderController.java | 2 lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamTechnicalStatusEvaluationOrderServiceImpl.java | 4 + lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/TechnicalStatusEvaluationGenerateJob.java | 119 +++++++++++++++++++++++++++++++++++++-- lxzn-boot-base-core/src/main/java/org/jeecg/common/util/DateUtils.java | 6 -- 6 files changed, 129 insertions(+), 14 deletions(-) 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 1810ee0..cb79bf1 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 @@ -203,9 +203,6 @@ public static String date2Str(SimpleDateFormat dateSdf) { synchronized (dateSdf) { Date date = getDate(); - if (null == date) { - return null; - } return dateSdf.format(date); } } @@ -783,7 +780,4 @@ public static Date localDateToDate(LocalDate localDate) { return Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant()); } - - - } \ No newline at end of file diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentServiceImpl.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentServiceImpl.java index 5d7a2c8..c994336 100644 --- a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentServiceImpl.java +++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentServiceImpl.java @@ -410,7 +410,7 @@ queryWrapper.eq("e.del_flag", CommonConstant.DEL_FLAG_0); queryWrapper.ne("ext.technology_status", TechnologyStatusEnum.PROHIBITED.name()); queryWrapper.isNotNull("ext.technology_check_period"); - queryWrapper.isNotNull("e.next_technology_check"); + queryWrapper.isNotNull("ext.next_technology_check"); return this.getBaseMapper().selectTechnicalEquipmentList(queryWrapper); } diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamTechnicalStatusEvaluationOrderController.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamTechnicalStatusEvaluationOrderController.java index da1b55f..4911f1a 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamTechnicalStatusEvaluationOrderController.java +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamTechnicalStatusEvaluationOrderController.java @@ -15,6 +15,7 @@ import org.jeecg.common.aspect.annotation.AutoLog; import org.jeecg.common.system.base.controller.JeecgController; import org.jeecg.common.util.TranslateDictTextUtils; +import org.jeecg.modules.eam.constant.OrderCreationMethodEnum; import org.jeecg.modules.eam.entity.EamTechnicalStatusEvaluationOrder; import org.jeecg.modules.eam.request.EamTechnicalStatusEvaluationOrderQuery; import org.jeecg.modules.eam.request.EamTechnicalStatusEvaluationOrderRequest; @@ -74,6 +75,7 @@ if (CollectionUtil.isEmpty(request.getTableDetailList())) { return Result.error("妫�鏌ラ」涓嶈兘涓虹┖锛�"); } + request.setCreationMethod(OrderCreationMethodEnum.MANUAL.name()); boolean b = eamTechnicalStatusEvaluationOrderService.addTechnicalStatusEvaluationOrder(request); if (!b) { return Result.error("娣诲姞澶辫触锛�"); 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..a06c8a4 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,10 +1,20 @@ package org.jeecg.modules.eam.job; +import cn.hutool.core.collection.CollectionUtil; import lombok.extern.slf4j.Slf4j; -import org.jeecg.modules.eam.service.IEamEquipmentExtendService; +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.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; @@ -13,25 +23,122 @@ 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; @Override @Transactional(rollbackFor = Exception.class) public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { + //鑾峰彇鎶�鏈姸鎬侀壌瀹氱郴缁熼厤缃弬鏁� + SysParams threeYearOrderPreGenerationDaysParam = paramsService.getSysPramBySettingKey("three_year_order_pre_generation_days"); + if (threeYearOrderPreGenerationDaysParam == null) { + log.error("鏈厤缃�3~4骞存湡鎻愬墠鐢熸垚宸ュ崟鐨勭郴缁熷弬鏁帮紝鏃ユ湡锛歿}", DateUtils.date2Str(DateUtils.date_sdf.get())); + 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())); + 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())); + 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())); + return; + } + int oneYearOrderPreLockDays = Integer.parseInt(oneYearOrderPreLockDaysParam.getSettingValue()); //鑾峰彇璁惧鍒楄〃 + List<EamEquipment> equipmentList = equipmentService.selectTechnicalEquipmentList(); + if (CollectionUtil.isEmpty(equipmentList)) { + log.warn("娌℃湁闇�瑕佺敓鎴愭妧鏈姸鎬侀壌瀹氬伐鍗曞緱璁惧锛佹棩鏈燂細{}", DateUtils.date2Str(DateUtils.date_sdf.get())); + return; + } + //浠诲姟鏃ュ織 + 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(); + 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().equals(generateDate)) { + //璁$畻褰撳ぉ闇�瑕佺敓鎴� + 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(); + } catch (Exception e) { + log.error("鐢熸垚鎶�鏈姸鎬侀壌瀹氬伐鍗曞け璐ワ紝鍘熷洜锛歿}", e.getMessage(), e); + failCount.incrementAndGet(); + sb.append("鐢熸垚鎶�鏈姸鎬侀壌瀹氬伐鍗曞け璐ワ紝鍘熷洜锛�").append(e.getMessage()).append("锛�"); + } + } } } diff --git a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamTechnicalStatusEvaluationOrderRequest.java b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamTechnicalStatusEvaluationOrderRequest.java index f5b319d..69afb5b 100644 --- a/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamTechnicalStatusEvaluationOrderRequest.java +++ b/lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamTechnicalStatusEvaluationOrderRequest.java @@ -37,6 +37,16 @@ @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") @DateTimeFormat(pattern = "yyyy-MM-dd") private Date evaluationDate; + /**閿佸畾宸ュ崟鏃ユ湡;鎻愬墠55澶╅攣瀹氬伐鍗�*/ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "閿佸畾宸ュ崟鏃ユ湡;鎻愬墠55澶╅攣瀹氬伐鍗�") + private Date freezeOrderDate; + /**宸ュ崟杩囨湡鏃ユ湡;鍒版湡鏈仛鐩存帴杩囨湡锛屽苟淇敼璁惧鎶�鏈姸鎬佷负绂佺敤*/ + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + @DateTimeFormat(pattern = "yyyy-MM-dd") + @ApiModelProperty(value = "宸ュ崟杩囨湡鏃ユ湡;鍒版湡鏈仛鐩存帴杩囨湡锛屽苟淇敼璁惧鎶�鏈姸鎬佷负绂佺敤") + private Date orderExpirationDate; /**閴村畾浜�*/ @ApiModelProperty(value = "閴村畾浜�") private String evaluator; 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 9648448..1ebf51d 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 @@ -169,10 +169,12 @@ order.setEquipmentId(request.getEquipmentId()); order.setStandardId(request.getStandardId()); order.setEvaluationDate(request.getEvaluationDate()); + order.setFreezeOrderDate(request.getFreezeOrderDate()); + order.setOrderExpirationDate(request.getOrderExpirationDate()); order.setRemark(request.getRemark()); String codeSeq = businessCodeRuleService.generateBusinessCodeSeq(BusinessCodeConst.TECHNICAL_STATUS_EVALUATION_ORDER_CODE_RULE); order.setOrderNum(codeSeq); - order.setCreationMethod(OrderCreationMethodEnum.MANUAL.name()); + order.setCreationMethod(request.getCreationMethod()); //鐘舵�佸垵濮嬪寲 order.setEvaluationStatus(TechnicalStatusEvaluationOrderStatusEnum.WAIT_EVALUATION.name()); //鍒犻櫎鏍囪 -- Gitblit v1.9.3