车间能级提升-智能设备管理系统
zhuguifei
2025-04-08 c6e203d8e80c9cd8f74c79498662fa20d223ff56
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
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;
            }
 
            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(oldNext);
            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);
            boolean flag = recordMapper.insert(record) > 0;
            //TODO 生成失败,添加异常记录
            if (!flag) continue;
            planMapper.updateById(plan);
 
 
        }
        return ExecuteResult.success("点检计划生成点检记录成功");
    }
}