| | |
| | | package org.jeecg.modules.eam.job; |
| | | |
| | | import cn.hutool.core.collection.CollectionUtil; |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.jeecg.common.util.DateUtils; |
| | | import org.jeecg.modules.eam.constant.BusinessCodeConst; |
| | | import org.jeecg.modules.eam.constant.MaintenanceCategoryEnum; |
| | | import org.jeecg.modules.eam.constant.OrderCreationMethodEnum; |
| | | import org.jeecg.modules.eam.entity.EamInspectionOrder; |
| | | import org.jeecg.modules.eam.entity.EamInspectionOrderDetail; |
| | | import org.jeecg.modules.eam.entity.EamMaintenanceStandard; |
| | | import org.jeecg.modules.eam.entity.EamMaintenanceStandardDetail; |
| | |
| | | */ |
| | | List<EamMaintenanceStandard> standardList = eamMaintenanceStandardService.queryListByCategory(MaintenanceCategoryEnum.POINT_INSPECTION.name()); |
| | | if (CollectionUtil.isEmpty(standardList)) { |
| | | log.warn("没有配置任何周保标准,任务结束"); |
| | | log.warn("没有配置任何点检标准,任务结束"); |
| | | return; |
| | | } |
| | | //当前日期 |
| | |
| | | standard.setInitialDate(DateUtils.localDateToDate(now.minusDays(1))); |
| | | } |
| | | LocalDate generateDate = DateUtils.dateToLocalDate(standard.getInitialDate()); |
| | | if (standard.getLastGenerateTime() != null) { |
| | | generateDate = DateUtils.dateToLocalDate(standard.getLastGenerateTime()); |
| | | if (!generateDate.equals(now)) { |
| | | //加周期 |
| | | do { |
| | | //初始日期设置的比较早,或任务长时间没执行,必须周期到今天才会生成工单 |
| | | generateDate = generateDate.plusDays(standard.getMaintenancePeriod()); |
| | | } while (now.isAfter(generateDate)); |
| | | if (!now.isEqual(generateDate)) { |
| | | //还未到生成日期,跳过执行 |
| | | continue; |
| | | } |
| | | } |
| | | //加周期 |
| | | do { |
| | | //初始日期设置的比较早,或任务长时间没执行,必须周期到今天才会生成工单 |
| | | generateDate = generateDate.plusDays(standard.getMaintenancePeriod()); |
| | | } while (now.isAfter(generateDate)); |
| | | if(!now.isEqual(generateDate)) { |
| | | //还未到生成日期,跳过执行 |
| | | //校验生成日期是否已有工单 |
| | | List<EamInspectionOrder> list = eamInspectionOrderService.list(new LambdaQueryWrapper<EamInspectionOrder>().eq(EamInspectionOrder::getEquipmentId, standard.getEquipmentId()).eq(EamInspectionOrder::getInspectionDate, DateUtils.localDateToDate(generateDate))); |
| | | if (!CollectionUtil.isEmpty(list)) { |
| | | continue; |
| | | } |
| | | //获取保养项明细 |
| | | List<EamMaintenanceStandardDetail> standardDetailList = eamMaintenanceStandardDetailService.selectByStandardId(standard.getId()); |
| | | if(CollectionUtil.isEmpty(standardDetailList)) { |
| | | if (CollectionUtil.isEmpty(standardDetailList)) { |
| | | log.error("点检标准没有保养明细,请先配置保养明细, standard:{}", standard); |
| | | continue; |
| | | } |
| | |
| | | request.setCreationMethod(OrderCreationMethodEnum.AUTO.name()); |
| | | String codeSeq = businessCodeRuleService.generateBusinessCodeSeq(BusinessCodeConst.INSPECTION_ORDER_CODE_RULE); |
| | | request.setOrderNum(codeSeq); |
| | | List<EamInspectionOrderDetail> collect = standardDetailList.stream().map(EamInspectionOrderDetail::new).collect(Collectors.toList()); |
| | | request.setTableDetailList(collect); |
| | | eamInspectionOrderService.addInspectionOrder(request); |
| | | } |
| | | quartzLog.setIsSuccess(0); |
| | | } catch (Exception e) { |
| | | log.error("周保过生成执行定时任务失败,{}", e.getMessage(), e); |
| | | log.error("点检生成执行定时任务失败,{}", e.getMessage(), e); |
| | | quartzLog.setIsSuccess(-1); |
| | | quartzLog.setExceptionDetail(ThrowableUtil.getStackTrace(e)); |
| | | } |