lyh
2025-06-30 e3a037adf3861fee78ad5478784f24e59cc598a2
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
package org.jeecg.modules.eam.service.impl;
 
import org.jeecg.common.constant.CommonConstant;
import org.jeecg.modules.eam.entity.DeductionItem;
import org.jeecg.modules.eam.entity.OperationCertificate;
import org.jeecg.modules.eam.entity.OperationCertificateDetail;
import org.jeecg.modules.eam.mapper.OperationCertificateDetailMapper;
import org.jeecg.modules.eam.mapper.OperationCertificateMapper;
import org.jeecg.modules.eam.service.IDeductionItemService;
import org.jeecg.modules.eam.service.IOperationCertificateService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
 
import java.io.Serializable;
import java.util.List;
import java.util.Collection;
 
/**
 * @Description: 操作证书管理
 * @Author: jeecg-boot
 * @Date: 2023-10-17
 * @Version: V1.0
 */
@Service
public class OperationCertificateServiceImpl extends ServiceImpl<OperationCertificateMapper, OperationCertificate> implements IOperationCertificateService {
 
    @Autowired
    private OperationCertificateMapper operationCertificateMapper;
    @Autowired
    private OperationCertificateDetailMapper operationCertificateDetailMapper;
    @Autowired
    private IDeductionItemService deductionItemService;
 
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void saveMain(OperationCertificate operationCertificate, List<OperationCertificateDetail> operationCertificateDetailList) {
//        operationCertificateMapper.insert(operationCertificate);
//        if (operationCertificateDetailList != null && operationCertificateDetailList.size() > 0) {
//            for (OperationCertificateDetail entity : operationCertificateDetailList) {
//                //外键设置
//                entity.setOperationCertificateId(operationCertificate.getId());
//                operationCertificateDetailMapper.insert(entity);
//            }
//        }
        operationCertificateMapper.insert(operationCertificate);
        String equipmentIds = operationCertificate.getEquipmentIds();
        Integer currentCycleScore = operationCertificate.getCurrentCycleScore();
        for (OperationCertificateDetail entity : operationCertificateDetailList) {
            if ("addEquipment".equals(entity.getType()) && !equipmentIds.contains(entity.getEquipmentId())) {
                equipmentIds = equipmentIds + "," + entity.getEquipmentId();
            } else if ("deduction".equals(entity.getType())) {
                String deductionItemId = entity.getDeductionItem();
                Integer deductionScore = deductionItemService.getById(deductionItemId).getDeductionScore();
                currentCycleScore = currentCycleScore - deductionScore;
            }
            //外键设置
            entity.setOperationCertificateId(operationCertificate.getId());
            operationCertificateDetailMapper.insert(entity);
 
        }
        operationCertificate.setEquipmentIds(equipmentIds);
        if (currentCycleScore <= 0) {
            currentCycleScore = 0;
            // 当分数为0时,设置操作证的状态为禁用
            operationCertificate.setStatus(CommonConstant.STATUS_0);
        }
        operationCertificate.setCurrentCycleScore(currentCycleScore);
        operationCertificateMapper.updateById(operationCertificate);
 
    }
 
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void updateMain(OperationCertificate operationCertificate, List<OperationCertificateDetail> operationCertificateDetailList) {
//        operationCertificateMapper.updateById(operationCertificate);
 
        //1.先删除子表数据
//        operationCertificateDetailMapper.deleteByMainId(operationCertificate.getId());
 
//        //2.子表数据重新插入
//        if(operationCertificateDetailList!=null && operationCertificateDetailList.size()>0) {
//            for(OperationCertificateDetail entity:operationCertificateDetailList) {
//                //外键设置
//                entity.setOperationCertificateId(operationCertificate.getId());
//                operationCertificateDetailMapper.insert(entity);
//            }
//        }
        // 新增设备更新主表的equipmentIds字段,新增扣分则根据扣分项更新当前分数,分数为0时候禁用操作证
        String equipmentIds = operationCertificate.getEquipmentIds();
        Integer currentCycleScore = operationCertificate.getCurrentCycleScore();
        for (OperationCertificateDetail entity : operationCertificateDetailList) {
            if ("addEquipment".equals(entity.getType()) && !equipmentIds.contains(entity.getEquipmentId())) {
                equipmentIds = equipmentIds + "," + entity.getEquipmentId();
            } else if ("deduction".equals(entity.getType())) {
                String deductionItemId = entity.getDeductionItem();
                Integer deductionScore = deductionItemService.getById(deductionItemId).getDeductionScore();
                currentCycleScore = currentCycleScore - deductionScore;
            }
            //外键设置
            entity.setOperationCertificateId(operationCertificate.getId());
            operationCertificateDetailMapper.insert(entity);
 
        }
        operationCertificate.setEquipmentIds(equipmentIds);
        if (currentCycleScore <= 0) {
            currentCycleScore = 0;
            // 当分数为0时,设置操作证的状态为禁用
            operationCertificate.setStatus(CommonConstant.STATUS_0);
        }
        operationCertificate.setCurrentCycleScore(currentCycleScore);
        operationCertificateMapper.updateById(operationCertificate);
    }
 
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void delMain(String id) {
        operationCertificateDetailMapper.deleteByMainId(id);
        operationCertificateMapper.deleteById(id);
    }
 
    @Override
    @Transactional(rollbackFor = Exception.class)
    public void delBatchMain(Collection<? extends Serializable> idList) {
        for (Serializable id : idList) {
            operationCertificateDetailMapper.deleteByMainId(id.toString());
            operationCertificateMapper.deleteById(id);
        }
    }
 
}