lyh
23 小时以前 0d06048c5d560e301bf17fad476975c8ffffcb56
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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
package org.jeecg.modules.eam.service.impl;
 
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.common.exception.JeecgBootException;
import org.jeecg.modules.eam.constant.HfTemplateCategoryEnum;
import org.jeecg.modules.eam.entity.EamBaseHFCode;
import org.jeecg.modules.eam.entity.EamEquipment;
import org.jeecg.modules.eam.entity.EamThirdMaintenanceWorkPlanSheet;
import org.jeecg.modules.eam.mapper.EamThirdMaintenanceWorkPlanSheetMapper;
import org.jeecg.modules.eam.service.IEamBaseHFCodeService;
import org.jeecg.modules.eam.service.IEamThirdMaintenanceWorkPlanSheetService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 
import java.util.Date;
import java.util.List;
 
/**
 * @Description: “三级保养工作计划单
 * @Author: jeecg-boot
 * @Date:   2025-09-02
 * @Version: V1.0
 */
@Service
public class EamThirdMaintenanceWorkPlanSheetServiceImpl extends ServiceImpl<EamThirdMaintenanceWorkPlanSheetMapper, EamThirdMaintenanceWorkPlanSheet> implements IEamThirdMaintenanceWorkPlanSheetService {
 
    @Autowired
    private IEamBaseHFCodeService hfCodeService;
 
    /**
     * 通过设备编号,保养日期查询
     * @param equipmentCode,maintenanceDate
     * @return
     */
    @Override
    public EamThirdMaintenanceWorkPlanSheet getByEquipmentCodeAndMaintenanceDate(String equipmentCode, java.util.Date maintenanceDate){
        List<EamThirdMaintenanceWorkPlanSheet> list = this.baseMapper.selectList(new QueryWrapper<EamThirdMaintenanceWorkPlanSheet>()
                .eq("equipment_code",equipmentCode).eq("maintenance_date",maintenanceDate));
        if(list == null || list.isEmpty()) {
            return null;
        }else {
            return list.get(0);
        }
    }
    /**
     * 新增
     * @param eamThirdMaintenanceWorkPlanSheet
     * @return
     */
    @Override
    public boolean add(EamThirdMaintenanceWorkPlanSheet eamThirdMaintenanceWorkPlanSheet){
        //三级保养工作计划单
        EamBaseHFCode eamBaseHFCode = hfCodeService.selectByCategory(HfTemplateCategoryEnum.THIRD_MAINTENANCE_WORK_PLAN_SHEET.name());
        if(eamBaseHFCode == null) {
            throw new JeecgBootException("未配置三级保养工作计划单的HF编码,添加失败!");
        }
        eamThirdMaintenanceWorkPlanSheet.setHfCode(eamBaseHFCode.getHfCode());
        eamThirdMaintenanceWorkPlanSheet.setDelFlag(0);
        return super.save(eamThirdMaintenanceWorkPlanSheet);
    }
 
    /**
     * existsByEquipmentAndDate
     * @param equipmentCode
     * @param maintenanceDate
     * @return
     */
    @Override
    public boolean existsByEquipmentAndDate(String equipmentCode, Date maintenanceDate){
        List<EamThirdMaintenanceWorkPlanSheet> list = this.baseMapper.selectList(new QueryWrapper<EamThirdMaintenanceWorkPlanSheet>()
                .eq("equipment_code",equipmentCode).eq("maintenance_date",maintenanceDate));
        return list != null && !list.isEmpty();
    }
 
    /**
     * 处理保养日期变更(增删改查)
     */
    @Override
    public void processMaintenanceDateChange(EamEquipment equipment, Date oldDate, Date newDate) {
        String equipmentCode = equipment.getEquipmentCode();
        //日期从有值变为null → 删除计划
        if (oldDate != null && newDate == null) {
            deleteMaintenancePlan(equipmentCode, oldDate);
        }
        //日期从null变为有值 → 新增计划
        else if (oldDate == null && newDate != null) {
            createMaintenancePlan(equipment, newDate);
        }
        //日期值发生变化 → 更新计划日期
        else if (oldDate != null && !oldDate.equals(newDate)) {
            updateMaintenancePlanDate(equipmentCode, oldDate, newDate,equipment);
        }
    }
 
    /**
     * 创建保养计划
     */
    @Override
    public void createMaintenancePlan(EamEquipment equipment, Date maintenanceDate) {
        if (maintenanceDate == null) return;
        // 避免重复创建
        if (this.existsByEquipmentAndDate(
                equipment.getEquipmentCode(), maintenanceDate)) {
            return;
        }
        EamThirdMaintenanceWorkPlanSheet plan = new EamThirdMaintenanceWorkPlanSheet();
        plan.setEquipmentCode(equipment.getEquipmentCode());
        plan.setEquipmentName(equipment.getEquipmentName());
        plan.setFactoryOrgCode(equipment.getFactoryOrgCode());
        plan.setEquipmentModel(equipment.getEquipmentModel());
        plan.setMaintenanceDate(maintenanceDate);
        this.add(plan);
    }
 
    /**
     * 更新保养计划日期
     */
    private void updateMaintenancePlanDate(String equipmentCode, Date oldDate, Date newDate,EamEquipment equipment) {
        EamThirdMaintenanceWorkPlanSheet plan = this
                .getByEquipmentCodeAndMaintenanceDate(equipmentCode, oldDate);
 
        if (plan != null) {
            plan.setMaintenanceDate(newDate);
            this.updateById(plan);
        }else {
            createMaintenancePlan(equipment, newDate);
        }
    }
 
    /**
     * 删除保养计划
     */
    private void deleteMaintenancePlan(String equipmentCode, Date date) {
        EamThirdMaintenanceWorkPlanSheet plan = this
                .getByEquipmentCodeAndMaintenanceDate(equipmentCode, date);
 
        if (plan != null) {
            this.removeById(plan.getId());
        }
    }
}