lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/TechnicalStatusEvaluationExpiredJob.java
@@ -1,4 +1,80 @@ package org.jeecg.modules.eam.job; public class TechnicalStatusEvaluationExpiredJob { import cn.hutool.core.collection.CollectionUtil; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.util.DateUtils; import org.jeecg.modules.eam.constant.TechnicalStatusEvaluationOrderStatusEnum; import org.jeecg.modules.eam.constant.TechnologyStatusEnum; import org.jeecg.modules.eam.entity.EamEquipmentExtend; import org.jeecg.modules.eam.entity.EamTechnicalStatusEvaluationOrder; import org.jeecg.modules.eam.service.IEamEquipmentExtendService; import org.jeecg.modules.eam.service.IEamTechnicalStatusEvaluationOrderService; 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.util.Date; import java.util.List; @Component @Slf4j public class TechnicalStatusEvaluationExpiredJob implements Job { @Autowired private IEamTechnicalStatusEvaluationOrderService evaluationOrderService; @Autowired private IEamEquipmentExtendService equipmentExtendService; @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> jobClassName = quartzJobService.findByJobClassName(this.getClass().getName()); if (jobClassName != null && !jobClassName.isEmpty()) { quartzLog.setJobId(jobClassName.get(0).getId()); } long startTime = System.currentTimeMillis(); List<EamTechnicalStatusEvaluationOrder> list = evaluationOrderService.selectUncompletedEvaluationOrderList(); if (CollectionUtil.isEmpty(list)) { log.info("没有需要过期的工单!日期:{}", DateUtils.date2Str(DateUtils.date_sdf.get())); quartzLog.setIsSuccess(0); long endTime = System.currentTimeMillis(); quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime))); quartzLog.setExceptionDetail("没有需要过期的工单,日期:" + DateUtils.date2Str(DateUtils.date_sdf.get())); sysQuartzLogService.save(quartzLog); return; } int expiredCount = 0; for (EamTechnicalStatusEvaluationOrder order : list) { EamEquipmentExtend extend = equipmentExtendService.getById(order.getEquipmentId()); if (extend == null) { log.error("设备信息不存在,请检查! 设备ID:{}, 日期:{}", order.getEquipmentId(), DateUtils.date2Str(DateUtils.date_sdf.get())); continue; } if (TechnicalStatusEvaluationOrderStatusEnum.WAIT_EVALUATION.name().equals(order.getEvaluationStatus()) || TechnicalStatusEvaluationOrderStatusEnum.LOCKED.name().equals(order.getEvaluationStatus())) { order.setEvaluationStatus(TechnicalStatusEvaluationOrderStatusEnum.EXPIRED.name()); evaluationOrderService.updateById(order); expiredCount++; } extend.setTechnologyStatus(TechnologyStatusEnum.PROHIBITED.name()); equipmentExtendService.updateById(extend); } quartzLog.setIsSuccess(0); long endTime = System.currentTimeMillis(); quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime))); quartzLog.setExceptionDetail("过期了{" + expiredCount + "}个工单,还有{" + (list.size() - expiredCount) + "}个工单正在执行中,禁用了{" + list.size() + "}台设备, 日期:" + DateUtils.date2Str(DateUtils.date_sdf.get())); sysQuartzLogService.save(quartzLog); } } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/TechnicalStatusEvaluationGenerateJob.java
@@ -48,37 +48,6 @@ @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()); @@ -87,6 +56,63 @@ 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(); lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/TechnicalStatusEvaluationLockedJob.java
@@ -1,4 +1,65 @@ package org.jeecg.modules.eam.job; public class TechnicalStatusEvaluationLockedJob { import cn.hutool.core.collection.CollectionUtil; import lombok.extern.slf4j.Slf4j; import org.jeecg.common.util.DateUtils; import org.jeecg.modules.eam.constant.TechnicalStatusEvaluationOrderStatusEnum; import org.jeecg.modules.eam.entity.EamTechnicalStatusEvaluationOrder; import org.jeecg.modules.eam.service.IEamTechnicalStatusEvaluationOrderService; 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.util.Date; import java.util.List; @Component @Slf4j public class TechnicalStatusEvaluationLockedJob implements Job { @Autowired private IEamTechnicalStatusEvaluationOrderService evaluationOrderService; @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> jobClassName = quartzJobService.findByJobClassName(this.getClass().getName()); if (jobClassName != null && !jobClassName.isEmpty()) { quartzLog.setJobId(jobClassName.get(0).getId()); } long startTime = System.currentTimeMillis(); List<EamTechnicalStatusEvaluationOrder> list = evaluationOrderService.selectWaitEvaluationOrderList(); if (CollectionUtil.isEmpty(list)) { log.info("没有需要锁定的工单!日期:{}", DateUtils.date2Str(DateUtils.date_sdf.get())); quartzLog.setIsSuccess(0); long endTime = System.currentTimeMillis(); quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime))); quartzLog.setExceptionDetail("没有需要锁定的工单,日期:" + DateUtils.date2Str(DateUtils.date_sdf.get())); sysQuartzLogService.save(quartzLog); return; } for (EamTechnicalStatusEvaluationOrder order : list) { order.setEvaluationStatus(TechnicalStatusEvaluationOrderStatusEnum.LOCKED.name()); evaluationOrderService.updateById(order); } quartzLog.setIsSuccess(0); long endTime = System.currentTimeMillis(); quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime))); quartzLog.setExceptionDetail("锁定了{" + list.size() + "}条工单,日期:" + DateUtils.date2Str(DateUtils.date_sdf.get())); sysQuartzLogService.save(quartzLog); } } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/IEamTechnicalStatusEvaluationOrderService.java
@@ -7,6 +7,8 @@ import org.jeecg.modules.eam.request.EamTechnicalStatusEvaluationOrderQuery; import org.jeecg.modules.eam.request.EamTechnicalStatusEvaluationOrderRequest; import java.util.List; /** * @Description: 技术状态鉴定工单 * @Author: jeecg-boot @@ -51,4 +53,16 @@ * @return */ boolean updateEvaluationStatus(String orderId, String evaluationStatus); /** * 获取待鉴定的工单,锁定处理使用 * @return */ List<EamTechnicalStatusEvaluationOrder> selectWaitEvaluationOrderList(); /** * 获取未完成的工单信息,过期处理使用 * @return */ List<EamTechnicalStatusEvaluationOrder> selectUncompletedEvaluationOrderList(); } lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamTechnicalStatusEvaluationOrderServiceImpl.java
@@ -41,6 +41,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDate; import java.util.*; import java.util.stream.Collectors; @@ -332,7 +333,7 @@ List<UserSelector> userSelectors; switch (status) { case UNDER_EVALUATION: if(CollectionUtil.isEmpty(request.getTableDetailList())) { if (CollectionUtil.isEmpty(request.getTableDetailList())) { throw new JeecgBootException("检查明细信息为空!"); } boolean parallelCompletion = flowTaskService.checkParallelCompletion(flowMyBusiness.getTaskId()); @@ -583,6 +584,37 @@ return update > 0; } @Override public List<EamTechnicalStatusEvaluationOrder> selectWaitEvaluationOrderList() { LambdaQueryWrapper<EamTechnicalStatusEvaluationOrder> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(EamTechnicalStatusEvaluationOrder::getEvaluationStatus, TechnicalStatusEvaluationOrderStatusEnum.WAIT_EVALUATION.name()); queryWrapper.isNotNull(EamTechnicalStatusEvaluationOrder::getFreezeOrderDate); queryWrapper.eq(EamTechnicalStatusEvaluationOrder::getDelFlag, CommonConstant.DEL_FLAG_0); LocalDate localDate = LocalDate.now(); queryWrapper.lt(EamTechnicalStatusEvaluationOrder::getFreezeOrderDate, localDate.toString()); return this.getBaseMapper().selectList(queryWrapper); } @Override public List<EamTechnicalStatusEvaluationOrder> selectUncompletedEvaluationOrderList() { LambdaQueryWrapper<EamTechnicalStatusEvaluationOrder> queryWrapper = new LambdaQueryWrapper<>(); List<String> statusList = Arrays.asList(TechnicalStatusEvaluationOrderStatusEnum.WAIT_EVALUATION.name(), TechnicalStatusEvaluationOrderStatusEnum.UNDER_EVALUATION.name(), TechnicalStatusEvaluationOrderStatusEnum.REPAIRER_SIGNING.name(), TechnicalStatusEvaluationOrderStatusEnum.REPAIR_MANAGER_SIGNING.name(), TechnicalStatusEvaluationOrderStatusEnum.PROCESS_TECHNICIAN_SIGNING.name(), TechnicalStatusEvaluationOrderStatusEnum.DEPART_TECHNICAL_LEADER_SIGNING.name(), TechnicalStatusEvaluationOrderStatusEnum.INSPECTOR_SIGNING.name(), TechnicalStatusEvaluationOrderStatusEnum.LOCKED.name() ); queryWrapper.in(EamTechnicalStatusEvaluationOrder::getEvaluationStatus, statusList); queryWrapper.isNotNull(EamTechnicalStatusEvaluationOrder::getOrderExpirationDate); queryWrapper.eq(EamTechnicalStatusEvaluationOrder::getDelFlag, CommonConstant.DEL_FLAG_0); LocalDate localDate = LocalDate.now(); queryWrapper.lt(EamTechnicalStatusEvaluationOrder::getOrderExpirationDate, localDate.toString()); return this.getBaseMapper().selectList(queryWrapper); } private void checkDetailResult(List<EamTechnicalStatusEvaluationOrderDetail> detailList, TechnicalStatusEvaluationCheckCategoryEnum checkCategory) { boolean b; switch (checkCategory) {