Commit 63239ca1fc5ed470943c196b94cf1642de3db966

Authored by YunaiV
1 parent 4d091839

✨ feat(mes): 新增检验结果明细服务接口及实现

yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/indicatorresult/MesQcIndicatorResultDetailService.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mes.service.qc.indicatorresult;
  2 +
  3 +import cn.iocoder.yudao.module.mes.dal.dataobject.qc.indicatorresult.MesQcIndicatorResultDetailDO;
  4 +
  5 +import java.util.List;
  6 +
  7 +/**
  8 + * MES 检验结果明细 Service 接口
  9 + *
  10 + * @author 芋道源码
  11 + */
  12 +public interface MesQcIndicatorResultDetailService {
  13 +
  14 + /**
  15 + * 批量创建检验结果明细
  16 + *
  17 + * @param details 明细列表
  18 + */
  19 + void createDetailList(List<MesQcIndicatorResultDetailDO> details);
  20 +
  21 + /**
  22 + * 批量新增或更新检验结果明细
  23 + *
  24 + * @param details 明细列表
  25 + */
  26 + void createOrUpdateDetailList(List<MesQcIndicatorResultDetailDO> details);
  27 +
  28 + /**
  29 + * 根据检验结果 ID 获取明细列表
  30 + *
  31 + * @param resultId 检验结果 ID
  32 + * @return 明细列表
  33 + */
  34 + List<MesQcIndicatorResultDetailDO> getDetailListByResultId(Long resultId);
  35 +
  36 + /**
  37 + * 根据检验结果 ID 删除所有明细
  38 + *
  39 + * @param resultId 检验结果 ID
  40 + */
  41 + void deleteDetailByResultId(Long resultId);
  42 +
  43 +}
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/indicatorresult/MesQcIndicatorResultDetailServiceImpl.java 0 → 100644
  1 +package cn.iocoder.yudao.module.mes.service.qc.indicatorresult;
  2 +
  3 +import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
  4 +import cn.iocoder.yudao.module.mes.dal.dataobject.qc.indicatorresult.MesQcIndicatorResultDetailDO;
  5 +import cn.iocoder.yudao.module.mes.dal.mysql.qc.indicatorresult.MesQcIndicatorResultDetailMapper;
  6 +import jakarta.annotation.Resource;
  7 +import org.springframework.stereotype.Service;
  8 +import org.springframework.validation.annotation.Validated;
  9 +
  10 +import java.util.List;
  11 +
  12 +/**
  13 + * MES 检验结果明细 Service 实现类
  14 + *
  15 + * @author 芋道源码
  16 + */
  17 +@Service
  18 +@Validated
  19 +public class MesQcIndicatorResultDetailServiceImpl implements MesQcIndicatorResultDetailService {
  20 +
  21 + @Resource
  22 + private MesQcIndicatorResultDetailMapper detailMapper;
  23 +
  24 + @Override
  25 + public void createDetailList(List<MesQcIndicatorResultDetailDO> details) {
  26 + detailMapper.insertBatch(details);
  27 + }
  28 +
  29 + @Override
  30 + public void createOrUpdateDetailList(List<MesQcIndicatorResultDetailDO> details) {
  31 + detailMapper.insertOrUpdate(details);
  32 + }
  33 +
  34 + @Override
  35 + public List<MesQcIndicatorResultDetailDO> getDetailListByResultId(Long resultId) {
  36 + return detailMapper.selectListByResultId(resultId);
  37 + }
  38 +
  39 + @Override
  40 + public void deleteDetailByResultId(Long resultId) {
  41 + detailMapper.delete(new LambdaQueryWrapperX<MesQcIndicatorResultDetailDO>()
  42 + .eq(MesQcIndicatorResultDetailDO::getResultId, resultId));
  43 + }
  44 +
  45 +}
... ...
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/indicatorresult/MesQcIndicatorResultServiceImpl.java
1 1 package cn.iocoder.yudao.module.mes.service.qc.indicatorresult;
2 2  
  3 +import cn.hutool.core.collection.CollUtil;
3 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
4 5 import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
5 6 import cn.iocoder.yudao.module.mes.controller.admin.qc.indicatorresult.vo.MesQcIndicatorResultPageReqVO;
6 7 import cn.iocoder.yudao.module.mes.controller.admin.qc.indicatorresult.vo.MesQcIndicatorResultSaveReqVO;
7   -import cn.iocoder.yudao.module.mes.dal.dataobject.qc.iqc.MesQcIqcDO;
  8 +import cn.iocoder.yudao.module.mes.dal.dataobject.qc.indicator.MesQcIndicatorDO;
8 9 import cn.iocoder.yudao.module.mes.dal.dataobject.qc.indicatorresult.MesQcIndicatorResultDO;
9 10 import cn.iocoder.yudao.module.mes.dal.dataobject.qc.indicatorresult.MesQcIndicatorResultDetailDO;
10   -import cn.iocoder.yudao.module.mes.dal.mysql.qc.indicatorresult.MesQcIndicatorResultDetailMapper;
11   -import cn.iocoder.yudao.module.mes.dal.mysql.qc.indicatorresult.MesQcIndicatorResultMapper;
  11 +import cn.iocoder.yudao.module.mes.dal.dataobject.qc.iqc.MesQcIqcDO;
12 12 import cn.iocoder.yudao.module.mes.dal.dataobject.qc.ipqc.MesQcIpqcDO;
13 13 import cn.iocoder.yudao.module.mes.dal.dataobject.qc.oqc.MesQcOqcDO;
14 14 import cn.iocoder.yudao.module.mes.dal.dataobject.qc.rqc.MesQcRqcDO;
  15 +import cn.iocoder.yudao.module.mes.dal.mysql.qc.indicatorresult.MesQcIndicatorResultMapper;
15 16 import cn.iocoder.yudao.module.mes.enums.qc.MesQcTypeEnum;
  17 +import cn.iocoder.yudao.module.mes.service.qc.indicator.MesQcIndicatorService;
16 18 import cn.iocoder.yudao.module.mes.service.qc.ipqc.MesQcIpqcService;
17 19 import cn.iocoder.yudao.module.mes.service.qc.iqc.MesQcIqcService;
18 20 import cn.iocoder.yudao.module.mes.service.qc.oqc.MesQcOqcService;
... ... @@ -26,7 +28,6 @@ import org.springframework.validation.annotation.Validated;
26 28 import java.util.*;
27 29  
28 30 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
29   -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
30 31 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
31 32 import static cn.iocoder.yudao.module.mes.enums.ErrorCodeConstants.*;
32 33  
... ... @@ -42,9 +43,11 @@ public class MesQcIndicatorResultServiceImpl implements MesQcIndicatorResultServ
42 43 @Resource
43 44 private MesQcIndicatorResultMapper resultMapper;
44 45 @Resource
45   - private MesQcIndicatorResultDetailMapper resultDetailMapper;
  46 + private MesQcIndicatorResultDetailService resultDetailService;
46 47  
47 48 @Resource
  49 + private MesQcIndicatorService indicatorService;
  50 + @Resource
48 51 private MesQcIqcService iqcService;
49 52 @Resource
50 53 @Lazy
... ... @@ -59,8 +62,10 @@ public class MesQcIndicatorResultServiceImpl implements MesQcIndicatorResultServ
59 62 @Override
60 63 @Transactional(rollbackFor = Exception.class)
61 64 public Long createIndicatorResult(MesQcIndicatorResultSaveReqVO createReqVO) {
62   - // 1. 根据 qcType 查询源质检单,获取 itemId
  65 + // 1.1 根据 qcType 查询源质检单,获取 itemId
63 66 Long itemId = getItemIdFromQcDoc(createReqVO.getQcId(), createReqVO.getQcType());
  67 + // 1.2 校验所有明细的 indicatorId 是否存在
  68 + validateIndicatorIds(createReqVO.getItems());
64 69  
65 70 // 2.1 插入主表
66 71 MesQcIndicatorResultDO result = BeanUtils.toBean(createReqVO, MesQcIndicatorResultDO.class);
... ... @@ -70,7 +75,7 @@ public class MesQcIndicatorResultServiceImpl implements MesQcIndicatorResultServ
70 75 List<MesQcIndicatorResultDetailDO> details = BeanUtils.toBean(createReqVO.getItems(),
71 76 MesQcIndicatorResultDetailDO.class);
72 77 details.forEach(detail -> detail.setResultId(result.getId()));
73   - resultDetailMapper.insertBatch(details);
  78 + resultDetailService.createDetailList(details);
74 79 return result.getId();
75 80 }
76 81  
... ... @@ -86,7 +91,7 @@ public class MesQcIndicatorResultServiceImpl implements MesQcIndicatorResultServ
86 91 // 2.2 批量更新明细
87 92 List<MesQcIndicatorResultDetailDO> details = BeanUtils.toBean(updateReqVO.getItems(),
88 93 MesQcIndicatorResultDetailDO.class);
89   - resultDetailMapper.insertOrUpdate(details);
  94 + resultDetailService.createOrUpdateDetailList(details);
90 95 }
91 96  
92 97 @Override
... ... @@ -96,7 +101,7 @@ public class MesQcIndicatorResultServiceImpl implements MesQcIndicatorResultServ
96 101 validateIndicatorResultExists(id);
97 102  
98 103 // 2.1 级联删除明细
99   - resultDetailMapper.deleteByResultId(id);
  104 + resultDetailService.deleteDetailByResultId(id);
100 105 // 2.2 删除主表
101 106 resultMapper.deleteById(id);
102 107 }
... ... @@ -113,7 +118,7 @@ public class MesQcIndicatorResultServiceImpl implements MesQcIndicatorResultServ
113 118  
114 119 @Override
115 120 public List<MesQcIndicatorResultDetailDO> getIndicatorResultDetailListByResultId(Long resultId) {
116   - return resultDetailMapper.selectListByResultId(resultId);
  121 + return resultDetailService.getDetailListByResultId(resultId);
117 122 }
118 123  
119 124 // ==================== 私有方法 ====================
... ... @@ -127,6 +132,22 @@ public class MesQcIndicatorResultServiceImpl implements MesQcIndicatorResultServ
127 132 }
128 133  
129 134 /**
  135 + * 校验所有明细的 indicatorId 是否存在
  136 + */
  137 + private void validateIndicatorIds(List<MesQcIndicatorResultSaveReqVO.Item> items) {
  138 + if (CollUtil.isEmpty(items)) {
  139 + return;
  140 + }
  141 + Set<Long> indicatorIds = convertSet(items, MesQcIndicatorResultSaveReqVO.Item::getIndicatorId);
  142 + List<MesQcIndicatorDO> indicators = indicatorService.getIndicatorList(indicatorIds);
  143 + if (indicators.size() != indicatorIds.size()) {
  144 + Set<Long> existIds = convertSet(indicators, MesQcIndicatorDO::getId);
  145 + indicatorIds.removeAll(existIds);
  146 + throw exception(QC_INDICATOR_NOT_EXISTS);
  147 + }
  148 + }
  149 +
  150 + /**
130 151 * 根据 qcType 查询源质检单,获取 itemId
131 152 */
132 153 private Long getItemIdFromQcDoc(Long qcId, Integer qcType) {
... ...