From 9f3538f4ccc6b3e4c714cb323412e697f0f8e2fe Mon Sep 17 00:00:00 2001 From: YunaiV Date: Tue, 24 Mar 2026 09:45:23 +0800 Subject: [PATCH] ✨ feat(mes): 重构过程检验行服务,优化方法命名与逻辑 --- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/indicatorresult/MesQcIndicatorResultController.java | 2 +- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/ipqc/MesQcIpqcController.java | 1 - yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/ipqc/MesQcIpqcLineController.java | 4 ---- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/ipqc/vo/MesQcIpqcSaveReqVO.java | 3 --- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/ipqc/MesQcIpqcLineService.java | 38 +++++++++++++++++++------------------- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/ipqc/MesQcIpqcLineServiceImpl.java | 42 ++++++++++++++++++++++-------------------- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/ipqc/MesQcIpqcServiceImpl.java | 13 ++++++++----- 7 files changed, 50 insertions(+), 53 deletions(-) diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/indicatorresult/MesQcIndicatorResultController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/indicatorresult/MesQcIndicatorResultController.java index 47e110f..6591f43 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/indicatorresult/MesQcIndicatorResultController.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/indicatorresult/MesQcIndicatorResultController.java @@ -137,7 +137,7 @@ public class MesQcIndicatorResultController { indicatorIds = CollUtil.isEmpty(lines) ? Collections.emptyList() : new ArrayList<>(convertSet(lines, MesQcIqcLineDO::getIndicatorId)); } else if (Objects.equals(qcType, MesQcTypeEnum.IPQC.getType())) { - List lines = ipqcLineService.selectListByIpqcId(qcId); + List lines = ipqcLineService.getIpqcLineListByIpqcId(qcId); indicatorIds = CollUtil.isEmpty(lines) ? Collections.emptyList() : new ArrayList<>(convertSet(lines, MesQcIpqcLineDO::getIndicatorId)); } else if (Objects.equals(qcType, MesQcTypeEnum.OQC.getType())) { diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/ipqc/MesQcIpqcController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/ipqc/MesQcIpqcController.java index f2a73e9..3e1c52b 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/ipqc/MesQcIpqcController.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/ipqc/MesQcIpqcController.java @@ -35,7 +35,6 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.io.IOException; -import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Map; diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/ipqc/MesQcIpqcLineController.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/ipqc/MesQcIpqcLineController.java index 26b740b..61b5bd6 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/ipqc/MesQcIpqcLineController.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/ipqc/MesQcIpqcLineController.java @@ -9,11 +9,9 @@ import cn.iocoder.yudao.module.mes.controller.admin.qc.ipqc.vo.line.MesQcIpqcLin import cn.iocoder.yudao.module.mes.dal.dataobject.md.unitmeasure.MesMdUnitMeasureDO; import cn.iocoder.yudao.module.mes.dal.dataobject.qc.indicator.MesQcIndicatorDO; import cn.iocoder.yudao.module.mes.dal.dataobject.qc.ipqc.MesQcIpqcLineDO; -import cn.iocoder.yudao.module.mes.dal.dataobject.tm.tool.MesTmToolDO; import cn.iocoder.yudao.module.mes.service.md.unitmeasure.MesMdUnitMeasureService; import cn.iocoder.yudao.module.mes.service.qc.indicator.MesQcIndicatorService; import cn.iocoder.yudao.module.mes.service.qc.ipqc.MesQcIpqcLineService; -import cn.iocoder.yudao.module.mes.service.tm.tool.MesTmToolService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; @@ -46,8 +44,6 @@ public class MesQcIpqcLineController { private MesQcIndicatorService indicatorService; @Resource private MesMdUnitMeasureService unitMeasureService; - @Resource - private MesTmToolService toolService; @GetMapping("/get") @Operation(summary = "获得过程检验单行") diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/ipqc/vo/MesQcIpqcSaveReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/ipqc/vo/MesQcIpqcSaveReqVO.java index c1d6045..fae9698 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/ipqc/vo/MesQcIpqcSaveReqVO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/ipqc/vo/MesQcIpqcSaveReqVO.java @@ -31,9 +31,6 @@ public class MesQcIpqcSaveReqVO { @NotNull(message = "检验类型不能为空") private Integer type; - @Schema(description = "检验模板 ID", example = "100") - private Long templateId; - // ========== 来源单据 ========== @Schema(description = "来源单据类型", example = "FEEDBACK") diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/ipqc/MesQcIpqcLineService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/ipqc/MesQcIpqcLineService.java index 8a1ac6b..df2d09e 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/ipqc/MesQcIpqcLineService.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/ipqc/MesQcIpqcLineService.java @@ -15,6 +15,14 @@ import java.util.List; public interface MesQcIpqcLineService { /** + * 校验过程检验行存在 + * + * @param id 编号 + * @return 过程检验行 + */ + MesQcIpqcLineDO validateIpqcLineExists(Long id); + + /** * 获得过程检验行 * * @param id 编号 @@ -31,14 +39,6 @@ public interface MesQcIpqcLineService { PageResult getIpqcLinePage(MesQcIpqcLinePageReqVO pageReqVO); /** - * 根据过程检验单 ID 查询所有行 - * - * @param ipqcId 过程检验单 ID - * @return 行列表 - */ - List selectListByIpqcId(Long ipqcId); - - /** * 从模板指标自动生成检验行 * * @param ipqcId 过程检验单 ID @@ -47,26 +47,26 @@ public interface MesQcIpqcLineService { void createLinesFromTemplate(Long ipqcId, Long templateId); /** - * 根据过程检验单 ID 级联删除所有行 + * 根据缺陷记录重新计算行级缺陷统计 * - * @param ipqcId 过程检验单 ID + * @param ipqcId 过程检验单 ID + * @param records 缺陷记录列表 */ - void deleteByIpqcId(Long ipqcId); + void recalculateLineDefectStats(Long ipqcId, List records); /** - * 校验过程检验行存在 + * 根据过程检验单 ID 获取所有行 * - * @param id 编号 - * @return 过程检验行 + * @param ipqcId 过程检验单 ID + * @return 行列表 */ - MesQcIpqcLineDO validateIpqcLineExists(Long id); + List getIpqcLineListByIpqcId(Long ipqcId); /** - * 根据缺陷记录重新计算行级缺陷统计 + * 根据过程检验单 ID 级联删除所有行 * - * @param ipqcId 过程检验单 ID - * @param records 缺陷记录列表 + * @param ipqcId 过程检验单 ID */ - void recalculateLineDefectStats(Long ipqcId, List records); + void deleteListByIpqcId(Long ipqcId); } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/ipqc/MesQcIpqcLineServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/ipqc/MesQcIpqcLineServiceImpl.java index 48f38fb..f3cff4e 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/ipqc/MesQcIpqcLineServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/ipqc/MesQcIpqcLineServiceImpl.java @@ -44,6 +44,15 @@ public class MesQcIpqcLineServiceImpl implements MesQcIpqcLineService { private MesQcIndicatorService indicatorService; @Override + public MesQcIpqcLineDO validateIpqcLineExists(Long id) { + MesQcIpqcLineDO line = ipqcLineMapper.selectById(id); + if (line == null) { + throw exception(QC_IPQC_LINE_NOT_EXISTS); + } + return line; + } + + @Override public MesQcIpqcLineDO getIpqcLine(Long id) { return ipqcLineMapper.selectById(id); } @@ -54,11 +63,6 @@ public class MesQcIpqcLineServiceImpl implements MesQcIpqcLineService { } @Override - public List selectListByIpqcId(Long ipqcId) { - return ipqcLineMapper.selectListByIpqcId(ipqcId); - } - - @Override public void createLinesFromTemplate(Long ipqcId, Long templateId) { List templateIndicators = templateIndicatorMapper.selectListByTemplateId(templateId); if (CollUtil.isEmpty(templateIndicators)) { @@ -80,20 +84,6 @@ public class MesQcIpqcLineServiceImpl implements MesQcIpqcLineService { } @Override - public void deleteByIpqcId(Long ipqcId) { - ipqcLineMapper.deleteByIpqcId(ipqcId); - } - - @Override - public MesQcIpqcLineDO validateIpqcLineExists(Long id) { - MesQcIpqcLineDO line = ipqcLineMapper.selectById(id); - if (line == null) { - throw exception(QC_IPQC_LINE_NOT_EXISTS); - } - return line; - } - - @Override public void recalculateLineDefectStats(Long ipqcId, List records) { List lines = ipqcLineMapper.selectListByIpqcId(ipqcId); if (CollUtil.isEmpty(lines)) { @@ -101,7 +91,9 @@ public class MesQcIpqcLineServiceImpl implements MesQcIpqcLineService { } List updateLines = new ArrayList<>(lines.size()); for (MesQcIpqcLineDO line : lines) { - int critical = 0, major = 0, minor = 0; + int critical = 0; + int major = 0; + int minor = 0; for (MesQcDefectRecordDO record : records) { if (ObjUtil.notEqual(record.getLineId(), line.getId())) { continue; @@ -125,4 +117,14 @@ public class MesQcIpqcLineServiceImpl implements MesQcIpqcLineService { } } + @Override + public List getIpqcLineListByIpqcId(Long ipqcId) { + return ipqcLineMapper.selectListByIpqcId(ipqcId); + } + + @Override + public void deleteListByIpqcId(Long ipqcId) { + ipqcLineMapper.deleteByIpqcId(ipqcId); + } + } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/ipqc/MesQcIpqcServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/ipqc/MesQcIpqcServiceImpl.java index 9a799f0..e3fb154 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/ipqc/MesQcIpqcServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/ipqc/MesQcIpqcServiceImpl.java @@ -104,8 +104,12 @@ public class MesQcIpqcServiceImpl implements MesQcIpqcService { adminUserApi.validateUser(updateReqVO.getInspectorUserId()); itemService.validateItemExists(updateReqVO.getItemId()); - // 2. 更新 + // 2. 更新主表 MesQcIpqcDO updateObj = BeanUtils.toBean(updateReqVO, MesQcIpqcDO.class); + updateObj.setSourceDocType(null).setSourceDocId(null).setSourceLineId(null); // 不允许修改来源单据 + updateObj.setTemplateId(null); // 不允许修改模板 + updateObj.setItemId(null); // 不允许修改物料 + updateObj.setWorkOrderId(null); // 不允许修改工单 ipqcMapper.updateById(updateObj); } @@ -119,9 +123,8 @@ public class MesQcIpqcServiceImpl implements MesQcIpqcService { } // 2. 更新状态为已完成 - MesQcIpqcDO updateObj = new MesQcIpqcDO(); - updateObj.setId(id); - updateObj.setStatus(MesQcStatusEnum.FINISHED.getStatus()); + MesQcIpqcDO updateObj = new MesQcIpqcDO() + .setId(id).setStatus(MesQcStatusEnum.FINISHED.getStatus()); ipqcMapper.updateById(updateObj); // TODO @AI(from codex):如果检验来源是报工,需要对待检产出按检验结果拆分合格/不合格行、生成产出明细、完成产品产出入库、 @@ -137,7 +140,7 @@ public class MesQcIpqcServiceImpl implements MesQcIpqcService { // 2.1 删除主表 ipqcMapper.deleteById(id); // 2.2 级联删除行 - ipqcLineService.deleteByIpqcId(id); + ipqcLineService.deleteListByIpqcId(id); // 2.3 级联删除缺陷记录 defectRecordService.deleteListByQcTypeAndQcId(MesQcTypeEnum.IPQC.getType(), id); } -- libgit2 0.21.4