4 天以前 06321d70dd7617fdc7d475b190e629143fec3263
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 cn.iocoder.yudao.module.mes.service.pro.line;
 
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjUtil;
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
import cn.iocoder.yudao.module.mes.controller.admin.pro.line.vo.MesProLinePageReqVO;
import cn.iocoder.yudao.module.mes.controller.admin.pro.line.vo.MesProLineSaveReqVO;
import cn.iocoder.yudao.module.mes.dal.dataobject.pro.line.MesProLineDO;
import cn.iocoder.yudao.module.mes.dal.mysql.pro.batch.MesProBatchMapper;
import cn.iocoder.yudao.module.mes.dal.mysql.pro.line.MesProLineMapper;
import jakarta.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
 
import java.util.Collection;
import java.util.Collections;
import java.util.List;
 
import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
 
/**
 * MES 产线维护 Service 实现类
 *
 * @author 超级管理员
 */
@Service
@Validated
public class MesProLineServiceImpl implements MesProLineService {
 
    @Resource
    private MesProLineMapper lineMapper;
 
    @Resource
    private MesProBatchMapper batchMapper;
 
    @Override
    public Long createLine(MesProLineSaveReqVO createReqVO) {
        // 1. 校验编码、名称唯一
        validateLineSaveData(createReqVO);
 
        // 2. 插入产线
        MesProLineDO line = BeanUtils.toBean(createReqVO, MesProLineDO.class);
        lineMapper.insert(line);
        return line.getId();
    }
 
    @Override
    public void updateLine(MesProLineSaveReqVO updateReqVO) {
        // 1.1 校验存在
        validateLineExists(updateReqVO.getId());
        // 1.2 校验编码、名称唯一
        validateLineSaveData(updateReqVO);
 
        // 2. 更新产线
        MesProLineDO updateObj = BeanUtils.toBean(updateReqVO, MesProLineDO.class);
        lineMapper.updateById(updateObj);
    }
 
    @Override
    public void deleteLine(Long id) {
        // 1.1 校验存在
        validateLineExists(id);
        // 1.2 校验是否被生产批次引用
        if (batchMapper.selectCountByLineId(id) > 0) {
            throw exception(PRO_LINE_HAS_BATCH_NOT_DELETE);
        }
 
        // 2. 删除产线
        lineMapper.deleteById(id);
    }
 
    @Override
    public MesProLineDO getLine(Long id) {
        return lineMapper.selectById(id);
    }
 
    @Override
    public List<MesProLineDO> getLineList(Collection<Long> ids) {
        if (CollUtil.isEmpty(ids)) {
            return Collections.emptyList();
        }
        return lineMapper.selectByIds(ids);
    }
 
    @Override
    public PageResult<MesProLineDO> getLinePage(MesProLinePageReqVO pageReqVO) {
        return lineMapper.selectPage(pageReqVO);
    }
 
    @Override
    public List<MesProLineDO> getLineListByStatus(Integer status) {
        return lineMapper.selectListByStatus(status);
    }
 
    @Override
    public MesProLineDO validateLineExists(Long id) {
        MesProLineDO line = lineMapper.selectById(id);
        if (line == null) {
            throw exception(PRO_LINE_NOT_EXISTS);
        }
        return line;
    }
 
    @Override
    public MesProLineDO validateLineExistsAndEnable(Long id) {
        MesProLineDO line = validateLineExists(id);
        if (ObjUtil.notEqual(CommonStatusEnum.ENABLE.getStatus(), line.getStatus())) {
            throw exception(PRO_LINE_IS_DISABLE);
        }
        return line;
    }
 
    // ==================== 私有方法 ====================
 
    private void validateLineCodeUnique(Long id, String code) {
        MesProLineDO line = lineMapper.selectByCode(code);
        if (line == null) {
            return;
        }
        if (id == null || !line.getId().equals(id)) {
            throw exception(PRO_LINE_CODE_DUPLICATE);
        }
    }
 
    private void validateLineNameUnique(Long id, String name) {
        MesProLineDO line = lineMapper.selectByName(name);
        if (line == null) {
            return;
        }
        if (id == null || !line.getId().equals(id)) {
            throw exception(PRO_LINE_NAME_DUPLICATE);
        }
    }
 
    private void validateLineSaveData(MesProLineSaveReqVO saveReqVO) {
        // 1. 校验编码唯一
        validateLineCodeUnique(saveReqVO.getId(), saveReqVO.getCode());
        // 2. 校验名称唯一
        validateLineNameUnique(saveReqVO.getId(), saveReqVO.getName());
    }
 
}