zhangherong
3 天以前 0ae6cada776b00f80b1cb5cb1814f17fc8aefd6f
lxzn-module-eam/src/main/java/org/jeecg/modules/eam/job/WeekMaintenanceOrderGenerateJob.java
@@ -13,7 +13,6 @@
import org.jeecg.modules.eam.service.IEamMaintenanceStandardDetailService;
import org.jeecg.modules.eam.service.IEamMaintenanceStandardService;
import org.jeecg.modules.eam.service.IEamWeekMaintenanceOrderService;
import org.jeecg.modules.mdc.util.ThrowableUtil;
import org.jeecg.modules.quartz.entity.QuartzJob;
import org.jeecg.modules.quartz.entity.SysQuartzLog;
import org.jeecg.modules.quartz.service.IQuartzJobService;
@@ -24,7 +23,6 @@
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;
@@ -54,7 +52,6 @@
     * @throws JobExecutionException
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        //任务日志
        SysQuartzLog quartzLog = new SysQuartzLog();
@@ -74,53 +71,51 @@
        }
        //当前日期
        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;
                }
                //开始生成
                EamWeekMaintenanceRequest request = new EamWeekMaintenanceRequest();
                request.setEquipmentId(standard.getEquipmentId());
                request.setStandardId(standard.getId());
                request.setMaintenanceDate(DateUtils.localDateToDate(generateDate));
                String codeSeq = businessCodeRuleService.generateBusinessCodeSeq(BusinessCodeConst.WEEK_MAINTENANCE_CODE_RULE);
                request.setOrderNum(codeSeq);
                request.setCreationMethod(OrderCreationMethodEnum.AUTO.name());
                List<EamWeekMaintenanceOrderDetail> collect = standardDetailList.stream().map(EamWeekMaintenanceOrderDetail::new).collect(Collectors.toList());
                request.setTableDetailList(collect);
                eamWeekMaintenanceOrderService.addWeekMaintenance(request);
        for (EamMaintenanceStandard standard : standardList) {
            if (standard.getMaintenancePeriod() == null || standard.getMaintenancePeriod() < 1) {
                log.error("周保标准周期设置错误,请先配置标准周期, standard:{}", standard);
                continue;
            }
            quartzLog.setIsSuccess(0);
        } catch (Exception e) {
            log.error("周保过生成执行定时任务失败,{}", e.getMessage(), e);
            quartzLog.setIsSuccess(-1);
            quartzLog.setExceptionDetail(ThrowableUtil.getStackTrace(e));
            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;
            }
            //开始生成
            EamWeekMaintenanceRequest request = new EamWeekMaintenanceRequest();
            request.setEquipmentId(standard.getEquipmentId());
            request.setStandardId(standard.getId());
            request.setMaintenanceDate(DateUtils.localDateToDate(generateDate));
            String codeSeq = businessCodeRuleService.generateBusinessCodeSeq(BusinessCodeConst.WEEK_MAINTENANCE_CODE_RULE);
            request.setOrderNum(codeSeq);
            request.setCreationMethod(OrderCreationMethodEnum.AUTO.name());
            List<EamWeekMaintenanceOrderDetail> collect = standardDetailList.stream().map(EamWeekMaintenanceOrderDetail::new).collect(Collectors.toList());
            request.setTableDetailList(collect);
            try {
                eamWeekMaintenanceOrderService.addWeekMaintenance(request);
            } catch (Exception e) {
                log.error("周保生成执行定时任务失败,{}", e.getMessage(), e);
            }
        }
        quartzLog.setIsSuccess(0);
        long endTime = System.currentTimeMillis();
        quartzLog.setExecutionTime(Integer.parseInt(String.valueOf(endTime - startTime)));
        sysQuartzLogService.save(quartzLog);