| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | * @throws JobExecutionException |
| | | */ |
| | | @Override |
| | | @Transactional(rollbackFor = Exception.class) |
| | | public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { |
| | | //任务日志 |
| | | SysQuartzLog quartzLog = new SysQuartzLog(); |
| | |
| | | } |
| | | //当前日期 |
| | | 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); |