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;
|
|
@Override
|
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
|
/*//遍历点检标准,通过点检标准生成点检工单
|
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
List<InspectionCycle> 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<InspectionCycle> 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());
|
inspectionOrderService.save(inspectionOrder);
|
//保存点检工单子表数据
|
List<DailyInspectionStandardDetail> dailyInspectionStandardDetailList = dailyInspectionStandardDetailService.lambdaQuery()
|
.eq(DailyInspectionStandardDetail::getDailyInspectionStandardId,inspectionOrder.getInspectionStandardId())
|
.eq(DailyInspectionStandardDetail::getInspectionCycleId,inspectionOrder.getInspectionCycleId()).list();
|
for(DailyInspectionStandardDetail dailyInspectionStandardDetail : dailyInspectionStandardDetailList){
|
InspectionOrderDetail inspectionOrderDetail = new InspectionOrderDetail();
|
inspectionOrderDetail.setInspectionOrderId(inspectionOrder.getId());
|
inspectionOrderDetail.setInspectionProjectId(dailyInspectionStandardDetail.getInspectionProjectId());
|
inspectionOrderDetail.setInspectionStandardDetailId(dailyInspectionStandardDetail.getId());
|
inspectionOrderDetail.setLocation(dailyInspectionStandardDetail.getLocation());
|
inspectionOrderDetail.setPhoto(dailyInspectionStandardDetail.getPhoto());
|
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());
|
inspectionOrderService.save(inspectionOrder);
|
//保存点检工单子表数据
|
List<DailyInspectionStandardDetail> dailyInspectionStandardDetailList = dailyInspectionStandardDetailService.lambdaQuery()
|
.eq(DailyInspectionStandardDetail::getDailyInspectionStandardId,inspectionOrder.getInspectionStandardId())
|
.eq(DailyInspectionStandardDetail::getInspectionCycleId,inspectionOrder.getInspectionCycleId()).list();
|
for(DailyInspectionStandardDetail dailyInspectionStandardDetail : dailyInspectionStandardDetailList){
|
InspectionOrderDetail inspectionOrderDetail = new InspectionOrderDetail();
|
inspectionOrderDetail.setInspectionOrderId(inspectionOrder.getId());
|
inspectionOrderDetail.setInspectionProjectId(dailyInspectionStandardDetail.getInspectionProjectId());
|
inspectionOrderDetail.setInspectionStandardDetailId(dailyInspectionStandardDetail.getId());
|
inspectionOrderDetail.setLocation(dailyInspectionStandardDetail.getLocation());
|
inspectionOrderDetail.setPhoto(dailyInspectionStandardDetail.getPhoto());
|
inspectionOrderDetailService.save(inspectionOrderDetail);
|
}
|
}
|
}
|
}
|
}
|