zhangherong
2 天以前 3d63e7c025d5d8164df640d7c947e601c149e951
art: 技术状态鉴定工单-定时任务生成
已修改6个文件
143 ■■■■■ 文件已修改
lxzn-boot-base-core/src/main/java/org/jeecg/common/util/DateUtils.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/controller/EamTechnicalStatusEvaluationOrderController.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/TechnicalStatusEvaluationGenerateJob.java 119 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/request/EamTechnicalStatusEvaluationOrderRequest.java 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/service/impl/EamTechnicalStatusEvaluationOrderServiceImpl.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
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());
    }
}
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);
    }
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("添加失败!");
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("!");
            }
        }
    }
}
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;
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());
        //删除标记