Commit 63239ca1fc5ed470943c196b94cf1642de3db966
1 parent
4d091839
✨ feat(mes): 新增检验结果明细服务接口及实现
Showing
3 changed files
with
119 additions
and
10 deletions
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) { | ... | ... |