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 640cb1a..f089acf 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 @@ -8,11 +8,17 @@ import cn.iocoder.yudao.module.mes.controller.admin.qc.indicatorresult.vo.*; import cn.iocoder.yudao.module.mes.dal.dataobject.qc.indicator.MesQcIndicatorDO; import cn.iocoder.yudao.module.mes.dal.dataobject.qc.indicatorresult.MesQcIndicatorResultDO; import cn.iocoder.yudao.module.mes.dal.dataobject.qc.indicatorresult.MesQcIndicatorResultDetailDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.qc.ipqc.MesQcIpqcLineDO; import cn.iocoder.yudao.module.mes.dal.dataobject.qc.lqc.MesQcIqcLineDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.qc.oqc.MesQcOqcLineDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.qc.rqc.MesQcRqcLineDO; import cn.iocoder.yudao.module.mes.enums.qc.MesQcTypeEnum; import cn.iocoder.yudao.module.mes.service.qc.indicator.MesQcIndicatorService; import cn.iocoder.yudao.module.mes.service.qc.indicatorresult.MesQcIndicatorResultService; +import cn.iocoder.yudao.module.mes.service.qc.ipqc.MesQcIpqcLineService; import cn.iocoder.yudao.module.mes.service.qc.lqc.MesQcIqcLineService; +import cn.iocoder.yudao.module.mes.service.qc.oqc.MesQcOqcLineService; +import cn.iocoder.yudao.module.mes.service.qc.rqc.MesQcRqcLineService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.Parameters; @@ -41,6 +47,12 @@ public class MesQcIndicatorResultController { @Resource private MesQcIqcLineService iqcLineService; @Resource + private MesQcIpqcLineService ipqcLineService; + @Resource + private MesQcOqcLineService oqcLineService; + @Resource + private MesQcRqcLineService rqcLineService; + @Resource private MesQcIndicatorService indicatorService; @PostMapping("/create") @@ -118,38 +130,50 @@ public class MesQcIndicatorResultController { */ private List buildDetailItemList( List details, Long qcId, Integer qcType) { - // 1.1 获取检验单行列表(知道有哪些检测指标) - List lines; + // 1.1 获取检验单行的指标 ID 列表(知道有哪些检测指标) + List indicatorIds; if (Objects.equals(qcType, MesQcTypeEnum.IQC.getType())) { - lines = iqcLineService.getIqcLineListByIqcId(qcId); + List lines = iqcLineService.getIqcLineListByIqcId(qcId); + 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); + indicatorIds = CollUtil.isEmpty(lines) ? Collections.emptyList() + : new ArrayList<>(convertSet(lines, MesQcIpqcLineDO::getIndicatorId)); + } else if (Objects.equals(qcType, MesQcTypeEnum.OQC.getType())) { + List lines = oqcLineService.getOqcLineListByOqcId(qcId); + indicatorIds = CollUtil.isEmpty(lines) ? Collections.emptyList() + : new ArrayList<>(convertSet(lines, MesQcOqcLineDO::getIndicatorId)); + } else if (Objects.equals(qcType, MesQcTypeEnum.RQC.getType())) { + List lines = rqcLineService.getRqcLineListByRqcId(qcId); + indicatorIds = CollUtil.isEmpty(lines) ? Collections.emptyList() + : new ArrayList<>(convertSet(lines, MesQcRqcLineDO::getIndicatorId)); } else { - // TODO @芋艿:IPQC/OQC/RQC 模块迁移后实现 throw new IllegalArgumentException("暂不支持 qcType=" + qcType); } - if (CollUtil.isEmpty(lines)) { + if (CollUtil.isEmpty(indicatorIds)) { return Collections.emptyList(); } // 1.2 批量查询检测指标 - Map indicatorMap = indicatorService.getIndicatorMap( - convertSet(lines, MesQcIqcLineDO::getIndicatorId)); + Map indicatorMap = indicatorService.getIndicatorMap(new HashSet<>(indicatorIds)); // 1.3 构建已有明细 Map(按 indicatorId 索引) Map detailMap = CollUtil.isEmpty(details) ? Collections.emptyMap() : convertMap(details, MesQcIndicatorResultDetailDO::getIndicatorId); - // 2. 遍历行,组装 VO - List voList = new ArrayList<>(lines.size()); - for (MesQcIqcLineDO line : lines) { + // 2. 遍历指标 ID,组装 VO + List voList = new ArrayList<>(indicatorIds.size()); + for (Long indicatorId : indicatorIds) { MesQcIndicatorResultRespVO.Item vo = new MesQcIndicatorResultRespVO.Item() - .setIndicatorId(line.getIndicatorId()); + .setIndicatorId(indicatorId); // 来自 indicator - findAndThen(indicatorMap, line.getIndicatorId(), indicator -> vo + findAndThen(indicatorMap, indicatorId, indicator -> vo .setIndicatorName(indicator.getName()) .setValueType(indicator.getResultType()) .setValueSpecification(indicator.getResultSpecification())); // 来自已有结果明细(如有) - findAndThen(detailMap, line.getIndicatorId(), detail -> vo + findAndThen(detailMap, indicatorId, detail -> vo .setId(detail.getId()).setResultId(detail.getResultId()) .setValue(detail.getValue()).setRemark(detail.getRemark())); voList.add(vo); diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/defectrecord/MesQcDefectRecordServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/defectrecord/MesQcDefectRecordServiceImpl.java index 7e48542..268e4fb 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/defectrecord/MesQcDefectRecordServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/defectrecord/MesQcDefectRecordServiceImpl.java @@ -7,8 +7,14 @@ import cn.iocoder.yudao.module.mes.controller.admin.qc.defectrecord.vo.MesQcDefe import cn.iocoder.yudao.module.mes.dal.dataobject.qc.defectrecord.MesQcDefectRecordDO; import cn.iocoder.yudao.module.mes.dal.mysql.qc.defectrecord.MesQcDefectRecordMapper; import cn.iocoder.yudao.module.mes.enums.qc.MesQcTypeEnum; +import cn.iocoder.yudao.module.mes.service.qc.ipqc.MesQcIpqcLineService; +import cn.iocoder.yudao.module.mes.service.qc.ipqc.MesQcIpqcService; import cn.iocoder.yudao.module.mes.service.qc.lqc.MesQcIqcLineService; import cn.iocoder.yudao.module.mes.service.qc.lqc.MesQcIqcService; +import cn.iocoder.yudao.module.mes.service.qc.oqc.MesQcOqcLineService; +import cn.iocoder.yudao.module.mes.service.qc.oqc.MesQcOqcService; +import cn.iocoder.yudao.module.mes.service.qc.rqc.MesQcRqcLineService; +import cn.iocoder.yudao.module.mes.service.qc.rqc.MesQcRqcService; import jakarta.annotation.Resource; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; @@ -40,6 +46,27 @@ public class MesQcDefectRecordServiceImpl implements MesQcDefectRecordService { @Lazy private MesQcIqcLineService iqcLineService; + @Resource + @Lazy + private MesQcIpqcService ipqcService; + @Resource + @Lazy + private MesQcIpqcLineService ipqcLineService; + + @Resource + @Lazy + private MesQcOqcService oqcService; + @Resource + @Lazy + private MesQcOqcLineService oqcLineService; + + @Resource + @Lazy + private MesQcRqcService rqcService; + @Resource + @Lazy + private MesQcRqcLineService rqcLineService; + @Override @Transactional(rollbackFor = Exception.class) public Long createDefectRecord(MesQcDefectRecordSaveReqVO createReqVO) { @@ -98,8 +125,16 @@ public class MesQcDefectRecordServiceImpl implements MesQcDefectRecordService { if (Objects.equals(qcType, MesQcTypeEnum.IQC.getType())) { iqcService.validateIqcExists(qcId); iqcLineService.validateIqcLineExists(lineId); + } else if (Objects.equals(qcType, MesQcTypeEnum.IPQC.getType())) { + ipqcService.validateIpqcExists(qcId); + ipqcLineService.validateIpqcLineExists(lineId); + } else if (Objects.equals(qcType, MesQcTypeEnum.OQC.getType())) { + oqcService.validateOqcExists(qcId); + oqcLineService.validateOqcLineExists(lineId); + } else if (Objects.equals(qcType, MesQcTypeEnum.RQC.getType())) { + rqcService.validateRqcExists(qcId); + rqcLineService.validateRqcLineExists(lineId); } else { - // 后续扩展:IPQC、OQC、RQC throw exception(QC_DEFECT_RECORD_QC_TYPE_UNSUPPORTED); } } @@ -124,8 +159,13 @@ public class MesQcDefectRecordServiceImpl implements MesQcDefectRecordService { List records = defectRecordMapper.selectListByQcTypeAndQcId(qcType, qcId); if (Objects.equals(qcType, MesQcTypeEnum.IQC.getType())) { iqcService.recalculateDefectStats(qcId, records); + } else if (Objects.equals(qcType, MesQcTypeEnum.IPQC.getType())) { + ipqcService.recalculateDefectStats(qcId, records); + } else if (Objects.equals(qcType, MesQcTypeEnum.OQC.getType())) { + oqcService.recalculateDefectStats(qcId, records); + } else if (Objects.equals(qcType, MesQcTypeEnum.RQC.getType())) { + rqcService.recalculateDefectStats(qcId, records); } else { - // 后续扩展:IPQC、OQC、RQC throw exception(QC_DEFECT_RECORD_QC_TYPE_UNSUPPORTED); } } diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/indicatorresult/MesQcIndicatorResultServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/indicatorresult/MesQcIndicatorResultServiceImpl.java index b576de0..98b3cf1 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/indicatorresult/MesQcIndicatorResultServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/indicatorresult/MesQcIndicatorResultServiceImpl.java @@ -9,9 +9,16 @@ import cn.iocoder.yudao.module.mes.dal.dataobject.qc.indicatorresult.MesQcIndica import cn.iocoder.yudao.module.mes.dal.dataobject.qc.indicatorresult.MesQcIndicatorResultDetailDO; import cn.iocoder.yudao.module.mes.dal.mysql.qc.indicatorresult.MesQcIndicatorResultDetailMapper; import cn.iocoder.yudao.module.mes.dal.mysql.qc.indicatorresult.MesQcIndicatorResultMapper; +import cn.iocoder.yudao.module.mes.dal.dataobject.qc.ipqc.MesQcIpqcDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.qc.oqc.MesQcOqcDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.qc.rqc.MesQcRqcDO; import cn.iocoder.yudao.module.mes.enums.qc.MesQcTypeEnum; +import cn.iocoder.yudao.module.mes.service.qc.ipqc.MesQcIpqcService; import cn.iocoder.yudao.module.mes.service.qc.lqc.MesQcIqcService; +import cn.iocoder.yudao.module.mes.service.qc.oqc.MesQcOqcService; +import cn.iocoder.yudao.module.mes.service.qc.rqc.MesQcRqcService; import jakarta.annotation.Resource; +import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; @@ -39,6 +46,15 @@ public class MesQcIndicatorResultServiceImpl implements MesQcIndicatorResultServ @Resource private MesQcIqcService iqcService; + @Resource + @Lazy + private MesQcIpqcService ipqcService; + @Resource + @Lazy + private MesQcOqcService oqcService; + @Resource + @Lazy + private MesQcRqcService rqcService; @Override @Transactional(rollbackFor = Exception.class) @@ -117,8 +133,16 @@ public class MesQcIndicatorResultServiceImpl implements MesQcIndicatorResultServ if (Objects.equals(qcType, MesQcTypeEnum.IQC.getType())) { MesQcIqcDO iqc = iqcService.validateIqcExists(qcId); return iqc.getItemId(); + } else if (Objects.equals(qcType, MesQcTypeEnum.IPQC.getType())) { + MesQcIpqcDO ipqc = ipqcService.validateIpqcExists(qcId); + return ipqc.getItemId(); + } else if (Objects.equals(qcType, MesQcTypeEnum.OQC.getType())) { + MesQcOqcDO oqc = oqcService.validateOqcExists(qcId); + return oqc.getItemId(); + } else if (Objects.equals(qcType, MesQcTypeEnum.RQC.getType())) { + MesQcRqcDO rqc = rqcService.validateRqcExists(qcId); + return rqc.getItemId(); } - // TODO @芋艿:IPQC/OQC/RQC 模块迁移后实现 throw new IllegalArgumentException("暂不支持 qcType=" + qcType); }