package org.jeecg.modules.eam.job; import lombok.extern.slf4j.Slf4j; import org.jeecg.modules.eam.entity.*; import org.jeecg.modules.eam.service.*; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.beans.factory.annotation.Autowired; import javax.annotation.Resource; import java.math.BigDecimal; import java.text.SimpleDateFormat; import java.time.DayOfWeek; import java.time.Instant; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.Calendar; import java.util.Date; import java.util.List; /** * 自主维护工单自动生成 */ @Slf4j public class DailyInspectionOrderJob implements Job { @Autowired private IInspectionCycleService inspectionCycleService; @Autowired private IdentityService identityService; @Autowired private IInspectionOrderService inspectionOrderService; @Autowired private IInspectionOrderDetailService inspectionOrderDetailService; @Autowired private IDailyInspectionStandardDetailService dailyInspectionStandardDetailService; @Autowired private IEamEquipmentService equipmentService; @Autowired private IDailyInspectionStandardService dailyInspectionStandardService; @Autowired private IInspectionProjectService inspectionProjectService; @Override public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException { /*//遍历点检标准,通过点检标准生成点检工单 SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); List inspectionCycleList = inspectionCycleService.getInspectionOrder(); //当前时间 String currentDateTime = formatter.format(LocalDateTime.now()); for(InspectionCycle inspectionCycle : inspectionCycleList){ //提前时间 BigDecimal leadTime = new BigDecimal("0"); //有效时间 BigDecimal effectiveTime = new BigDecimal("0"); //本次点检时间 Date newInspecttionTime = null; if("min".equals(inspectionCycle.getUnit())){ leadTime = inspectionCycle.getLeadTime().multiply(new BigDecimal("60")); effectiveTime = inspectionCycle.getEffectiveTime().multiply(new BigDecimal("60")); }else if("hour".equals(inspectionCycle.getUnit())){ leadTime = inspectionCycle.getLeadTime().multiply(new BigDecimal("3600")); effectiveTime = inspectionCycle.getEffectiveTime().multiply(new BigDecimal("3600")); }else if("day".equals(inspectionCycle.getUnit())){ leadTime = inspectionCycle.getLeadTime().multiply(new BigDecimal("86400")); effectiveTime = inspectionCycle.getEffectiveTime().multiply(new BigDecimal("86400")); } if("day".equals(inspectionCycle.getCycleUnit())){ Calendar calendar = Calendar.getInstance(); if(inspectionCycle.getLastInspectionTime() != null){ calendar.setTime(inspectionCycle.getLastInspectionTime()); }else { calendar.setTime(inspectionCycle.getFirstInspectionTime()); } calendar.add(Calendar.DAY_OF_YEAR, inspectionCycle.getCycle().intValue()); Date inspecttionTime = calendar.getTime(); Instant instant = inspecttionTime.toInstant(); instant = instant.minusSeconds(leadTime.intValue()); newInspecttionTime = Date.from(instant); }else if("week".equals(inspectionCycle.getCycleUnit())){ Calendar calendar = Calendar.getInstance(); if(inspectionCycle.getLastInspectionTime() != null){ calendar.setTime(inspectionCycle.getLastInspectionTime()); }else { calendar.setTime(inspectionCycle.getFirstInspectionTime()); } calendar.add(Calendar.WEEK_OF_MONTH, inspectionCycle.getCycle().intValue()); Date inspecttionTime = calendar.getTime(); Instant instant = inspecttionTime.toInstant(); instant = instant.minusSeconds(leadTime.intValue()); newInspecttionTime = Date.from(instant); } Instant instant = newInspecttionTime.toInstant(); instant = instant.plusSeconds(effectiveTime.intValue()); //本次点检截止时间 Date newnspectionDeadline = Date.from(instant); String newDate = formatter.format(newInspecttionTime); if(currentDateTime.equals(newDate)){ //保存点检工单主表数据 InspectionOrder inspectionOrder = new InspectionOrder(); inspectionOrder.setNum(identityService.getNumByTypeAndLength("DailylnspectionOrder",4)); inspectionOrder.setInspectionCycleId(inspectionCycle.getId()); inspectionOrder.setInspectionStandardId(inspectionCycle.getInspectionStandardId()); inspectionOrder.setInspectionTime(newInspecttionTime); inspectionOrder.setInspectionStandardType("1"); inspectionOrder.setInspectionDeadline(newnspectionDeadline); inspectionOrder.setEquipmentId(inspectionCycle.getEquipmentId()); inspectionOrder.setTeamId(inspectionCycle.getTeamId()); inspectionOrderService.save(inspectionOrder); //更新上次点检时间 inspectionCycle.setLastInspectionTime(newInspecttionTime); inspectionCycleService.updateById(inspectionCycle); //根据标准和周期查询点检项目 //保存点检工单子表数据 } }*/ SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); List inspectionCycleList = inspectionCycleService.getInspectionOrder(); LocalDate today = LocalDate.now(); DayOfWeek dayOfWeek = today.getDayOfWeek(); for(InspectionCycle inspectionCycle : inspectionCycleList){ if("day".equals(inspectionCycle.getCycleUnit())){ //保存点检工单主表数据 InspectionOrder inspectionOrder = new InspectionOrder(); inspectionOrder.setNum(identityService.getNumByTypeAndLength("DailylnspectionOrder",4)); inspectionOrder.setInspectionCycleId(inspectionCycle.getId()); inspectionOrder.setInspectionStandardId(inspectionCycle.getInspectionStandardId()); inspectionOrder.setInspectionTime(new Date()); inspectionOrder.setInspectionStandardType("1"); inspectionOrder.setEquipmentId(inspectionCycle.getEquipmentId()); inspectionOrder.setTeamId(inspectionCycle.getTeamId()); inspectionOrder.setStatus("3"); inspectionOrderService.save(inspectionOrder); Equipment equipment = equipmentService.getById(inspectionCycle.getEquipmentId()); String isLineEquip = equipment.getIsLineEquip(); if("no".equals(isLineEquip)){ //保存点检工单子表数据 List dailyInspectionStandardDetailList = dailyInspectionStandardDetailService.lambdaQuery() .eq(DailyInspectionStandardDetail::getDailyInspectionStandardId,inspectionOrder.getInspectionStandardId()) .eq(DailyInspectionStandardDetail::getInspectionCycleId,inspectionOrder.getInspectionCycleId()).list(); for(DailyInspectionStandardDetail dailyInspectionStandardDetail : dailyInspectionStandardDetailList){ String inspectionProjectId = dailyInspectionStandardDetail.getInspectionProjectId(); InspectionOrderDetail inspectionOrderDetail = new InspectionOrderDetail(); inspectionOrderDetail.setInspectionOrderId(inspectionOrder.getId()); inspectionOrderDetail.setInspectionProjectId(inspectionProjectId); inspectionOrderDetail.setInspectionStandardDetailId(dailyInspectionStandardDetail.getId()); inspectionOrderDetail.setLocation(dailyInspectionStandardDetail.getLocation()); inspectionOrderDetail.setPhoto(dailyInspectionStandardDetail.getPhoto()); InspectionProject inspectionProject = inspectionProjectService.getById(inspectionProjectId); if(inspectionProject != null){ inspectionOrderDetail.setDetectionStandard(inspectionProject.getDetectionStandard()); } inspectionOrderDetailService.save(inspectionOrderDetail); } }else{ String lineId = equipment.getLineId(); List dailyInspectionStandards = dailyInspectionStandardService.lambdaQuery() .eq(DailyInspectionStandard::getEquipmentId, lineId) .eq(DailyInspectionStandard::getVersionStatus, "2") .eq(DailyInspectionStandard::getDelFlag, "0").list(); if(dailyInspectionStandards.size()>0){ DailyInspectionStandard dailyInspectionStandard = dailyInspectionStandards.get(0); //保存点检工单子表数据 List dailyInspectionStandardDetailList = dailyInspectionStandardDetailService.lambdaQuery() .eq(DailyInspectionStandardDetail::getDailyInspectionStandardId,dailyInspectionStandard.getId()) .eq(DailyInspectionStandardDetail::getInspectionCycleId,inspectionOrder.getInspectionCycleId()) .eq(DailyInspectionStandardDetail::getDelFlag,"0").list(); for(DailyInspectionStandardDetail dailyInspectionStandardDetail : dailyInspectionStandardDetailList){ String inspectionProjectId = dailyInspectionStandardDetail.getInspectionProjectId(); InspectionOrderDetail inspectionOrderDetail = new InspectionOrderDetail(); inspectionOrderDetail.setInspectionOrderId(inspectionOrder.getId()); inspectionOrderDetail.setInspectionProjectId(inspectionProjectId); inspectionOrderDetail.setInspectionStandardDetailId(dailyInspectionStandardDetail.getId()); inspectionOrderDetail.setLocation(dailyInspectionStandardDetail.getLocation()); inspectionOrderDetail.setPhoto(dailyInspectionStandardDetail.getPhoto()); InspectionProject inspectionProject = inspectionProjectService.getById(inspectionProjectId); if(inspectionProject != null){ inspectionOrderDetail.setDetectionStandard(inspectionProject.getDetectionStandard()); } inspectionOrderDetailService.save(inspectionOrderDetail); } } } }else if("week".equals(inspectionCycle.getCycleUnit()) && dayOfWeek == DayOfWeek.FRIDAY){ //保存点检工单主表数据 InspectionOrder inspectionOrder = new InspectionOrder(); inspectionOrder.setNum(identityService.getNumByTypeAndLength("DailylnspectionOrder",4)); inspectionOrder.setInspectionCycleId(inspectionCycle.getId()); inspectionOrder.setInspectionStandardId(inspectionCycle.getInspectionStandardId()); inspectionOrder.setInspectionTime(new Date()); inspectionOrder.setInspectionStandardType("1"); inspectionOrder.setEquipmentId(inspectionCycle.getEquipmentId()); inspectionOrder.setTeamId(inspectionCycle.getTeamId()); inspectionOrder.setStatus("3"); inspectionOrderService.save(inspectionOrder); //保存点检工单子表数据 List dailyInspectionStandardDetailList = dailyInspectionStandardDetailService.lambdaQuery() .eq(DailyInspectionStandardDetail::getDailyInspectionStandardId,inspectionOrder.getInspectionStandardId()) .eq(DailyInspectionStandardDetail::getInspectionCycleId,inspectionOrder.getInspectionCycleId()).list(); for(DailyInspectionStandardDetail dailyInspectionStandardDetail : dailyInspectionStandardDetailList){ String inspectionProjectId = dailyInspectionStandardDetail.getInspectionProjectId(); InspectionOrderDetail inspectionOrderDetail = new InspectionOrderDetail(); inspectionOrderDetail.setInspectionOrderId(inspectionOrder.getId()); inspectionOrderDetail.setInspectionProjectId(inspectionProjectId); inspectionOrderDetail.setInspectionStandardDetailId(dailyInspectionStandardDetail.getId()); inspectionOrderDetail.setLocation(dailyInspectionStandardDetail.getLocation()); inspectionOrderDetail.setPhoto(dailyInspectionStandardDetail.getPhoto()); InspectionProject inspectionProject = inspectionProjectService.getById(inspectionProjectId); if(inspectionProject != null){ inspectionOrderDetail.setDetectionStandard(inspectionProject.getDetectionStandard()); } inspectionOrderDetailService.save(inspectionOrderDetail); } } } } }