车间能级提升-智能设备管理系统
baoshiwei
2025-07-01 b6d533f17a997e58133b825c5bbcc5ed3f2e5579
eims/ruoyi-modules/lb-eims/src/main/java/org/dromara/eims/job/InspectPlanToRecordJob.java
@@ -4,6 +4,7 @@
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.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import lombok.RequiredArgsConstructor;
import lombok.SneakyThrows;
@@ -43,57 +44,62 @@
    @SneakyThrows
    @Transactional(rollbackFor = Exception.class)
    public ExecuteResult jobExecute(JobArgs jobArgs) {
        // 获取今天日期
        Date today = new Date();
        LambdaQueryWrapper<EimsInspectPlan> planBoQueryWrapper = Wrappers.lambdaQuery();
        QueryWrapper<EimsInspectPlan> planBoQueryWrapper = Wrappers.query();
        // 查询启用的点检计划
        planBoQueryWrapper.eq(EimsInspectPlan::getStatus, DictConstants.SYS_NORMAL_DISABLE_DETAIL.NORMAL);
        // 过滤没有下次运行时间
        planBoQueryWrapper.isNotNull(EimsInspectPlan::getInspNextTime);
        // 过滤没有点检周期的数据
        planBoQueryWrapper.isNotNull(EimsInspectPlan::getInspCycle);
        planBoQueryWrapper.isNotNull(EimsInspectPlan::getInspCycleUnit);
        planBoQueryWrapper.eq("ip.status", DictConstants.SYS_NORMAL_DISABLE_DETAIL.NORMAL)
            .eq("equ.status", DictConstants.EIMS_EQU_STATUS_DETAIL.SHIYONG);
        // 增加过滤条件 上次生成日期小于当前日期
        planBoQueryWrapper.and(wrapper -> wrapper.lt("ip.insp_next_time", DateUtils.getDate()).or().isNull("ip.insp_next_time"));
//        // 过滤没有下次运行时间
//        planBoQueryWrapper.isNotNull(EimsInspectPlan::getInspNextTime);
//        // 过滤没有点检周期的数据
//        planBoQueryWrapper.isNotNull(EimsInspectPlan::getInspCycle);
//        planBoQueryWrapper.isNotNull(EimsInspectPlan::getInspCycleUnit);
        List<EimsInspectPlanVo> planVoList = planMapper.selectVoList(planBoQueryWrapper);
        List<EimsInspectPlanVo> planVoList = planMapper.selectVoListJoinEqu(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;
            }
//            // 点检计划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;
//            }
            // 计算生成点检记录时间
            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:
            Date nowDate = DateUtils.getNowDate();
                    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 nextDate = DateUtils.addDays(nowDate, 1);
            EimsInspectRecord record = new EimsInspectRecord();
            record.setEquId(planVo.getEquId());
@@ -102,16 +108,16 @@
            record.setInspUser(planVo.getInspUser());
            record.setInspDept(planVo.getInspDept());
            record.setStatus(DictConstants.EIMS_INSPECT_STATUS_DETAIL.N);
            record.setPlanTime(oldNext);
            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(oldNext);
            plan.setInspNextTime(newNext);
            if(plan.getInspFirstTime()==null)plan.setInspFirstTime(oldNext);
            plan.setInspLastTime(nowDate);
            plan.setInspNextTime(nextDate);
            if(plan.getInspFirstTime()==null)plan.setInspFirstTime(nowDate);
            boolean flag = recordMapper.insert(record) > 0;
            //TODO 生成失败,添加异常记录
            if (!flag) continue;