车间能级提升-智能设备管理系统
baoshiwei
2025-07-01 b6d533f17a997e58133b825c5bbcc5ed3f2e5579
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
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.conditions.query.QueryWrapper;
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) {
 
        QueryWrapper<EimsInspectPlan> planBoQueryWrapper = Wrappers.query();
        // 查询启用的点检计划
        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.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;
//            }
//
//            // 计算生成点检记录时间
//            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("点检计划生成点检记录成功");
    }
}