package org.dromara.eims.job;
|
|
import com.aizuda.snailjob.client.job.core.annotation.JobExecutor;
|
import com.aizuda.snailjob.client.job.core.dto.JobArgs;
|
import com.aizuda.snailjob.client.model.ExecuteResult;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
import lombok.RequiredArgsConstructor;
|
import lombok.SneakyThrows;
|
import org.dromara.common.core.constant.DictConstants;
|
import org.dromara.common.core.utils.DateUtils;
|
import org.dromara.common.core.utils.MapstructUtils;
|
import org.dromara.eims.domain.EimsInspectPlan;
|
import org.dromara.eims.domain.EimsInspectRecord;
|
import org.dromara.eims.domain.EimsMaintOrder;
|
import org.dromara.eims.domain.EimsMaintPlan;
|
import org.dromara.eims.domain.vo.EimsInspectPlanVo;
|
import org.dromara.eims.domain.vo.EimsMaintPlanVo;
|
import org.dromara.eims.mapper.EimsInspectPlanMapper;
|
import org.dromara.eims.mapper.EimsInspectRecordMapper;
|
import org.dromara.eims.mapper.EimsMaintOrderMapper;
|
import org.dromara.eims.mapper.EimsMaintPlanMapper;
|
import org.dromara.eims.service.IGenerateCodeService;
|
import org.springframework.beans.BeanUtils;
|
import org.springframework.stereotype.Component;
|
import org.springframework.transaction.annotation.Transactional;
|
|
import java.util.Date;
|
import java.util.List;
|
|
@Component
|
@RequiredArgsConstructor
|
@JobExecutor(name = "inspectPlanToRecordJob")
|
public class InspectPlanToRecordJob {
|
private final EimsInspectRecordMapper recordMapper;
|
|
|
private final EimsInspectPlanMapper planMapper;
|
|
private final IGenerateCodeService codeService;
|
|
|
@SneakyThrows
|
@Transactional(rollbackFor = Exception.class)
|
public ExecuteResult jobExecute(JobArgs jobArgs) {
|
// 获取今天日期
|
|
Date today = new Date();
|
LambdaQueryWrapper<EimsInspectPlan> planBoQueryWrapper = Wrappers.lambdaQuery();
|
// 查询启用的点检计划
|
planBoQueryWrapper.eq(EimsInspectPlan::getStatus, DictConstants.SYS_NORMAL_DISABLE_DETAIL.NORMAL);
|
// // 过滤没有下次运行时间
|
// planBoQueryWrapper.isNotNull(EimsInspectPlan::getInspNextTime);
|
// // 过滤没有点检周期的数据
|
// planBoQueryWrapper.isNotNull(EimsInspectPlan::getInspCycle);
|
// planBoQueryWrapper.isNotNull(EimsInspectPlan::getInspCycleUnit);
|
|
List<EimsInspectPlanVo> planVoList = planMapper.selectVoList(planBoQueryWrapper);
|
for (int i = 0; i < planVoList.size(); i++) {
|
EimsInspectPlanVo planVo = planVoList.get(i);
|
// // 点检计划add的时候会自动生成下次运行时间
|
// Date oldNext = planVo.getInspNextTime();
|
// int day = DateUtils.differentDays(today, oldNext);
|
// // 如果计划生成点检日期大于今天则不生成点检记录
|
// if (day >= 1) {
|
// continue;
|
// }
|
//
|
// // 计算生成点检记录时间
|
// Long inspCycle = planVo.getInspCycle();
|
// Date newNext = null;
|
// String inspCycleUnit = planVo.getInspCycleUnit();
|
// switch (inspCycleUnit) {
|
// case DictConstants.MAINT_CYCLE_UNIT_DETAIL.DAY:
|
// newNext = DateUtils.addDays(oldNext, inspCycle.intValue());
|
// break;
|
// case DictConstants.MAINT_CYCLE_UNIT_DETAIL.WEEK:
|
//
|
// newNext = DateUtils.addWeeks(oldNext, inspCycle.intValue());
|
//
|
// break;
|
// case DictConstants.MAINT_CYCLE_UNIT_DETAIL.MONTH:
|
//
|
// newNext = DateUtils.addMonths(oldNext, inspCycle.intValue());
|
//
|
// break;
|
// case DictConstants.MAINT_CYCLE_UNIT_DETAIL.SEASON:
|
// newNext = DateUtils.addMonths(oldNext, inspCycle.intValue() * 3);
|
//
|
// break;
|
// case DictConstants.MAINT_CYCLE_UNIT_DETAIL.YEAR:
|
//
|
// newNext = DateUtils.addYears(oldNext, inspCycle.intValue());
|
//
|
// break;
|
// }
|
|
Date nowDate = DateUtils.getNowDate();
|
|
Date nextDate = DateUtils.addDays(nowDate, 1);
|
|
EimsInspectRecord record = new EimsInspectRecord();
|
record.setEquId(planVo.getEquId());
|
record.setInspDesc(planVo.getInspDesc());
|
record.setInspType(planVo.getInspType());
|
record.setInspUser(planVo.getInspUser());
|
record.setInspDept(planVo.getInspDept());
|
record.setStatus(DictConstants.EIMS_INSPECT_STATUS_DETAIL.N);
|
record.setPlanTime(nowDate);
|
record.setPlanId(planVo.getId());
|
//点检项名称
|
record.setInspName(planVo.getInspName());
|
record.setInspCode(codeService.generateCode("DJZD"));
|
EimsInspectPlan plan = MapstructUtils.convert(planVo, EimsInspectPlan.class);
|
assert plan != null;
|
plan.setInspLastTime(nowDate);
|
plan.setInspNextTime(nextDate);
|
if(plan.getInspFirstTime()==null)plan.setInspFirstTime(nowDate);
|
boolean flag = recordMapper.insert(record) > 0;
|
//TODO 生成失败,添加异常记录
|
if (!flag) continue;
|
planMapper.updateById(plan);
|
|
|
}
|
return ExecuteResult.success("点检计划生成点检记录成功");
|
}
|
}
|