diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/iqc/vo/MesQcIqcSaveReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/iqc/vo/MesQcIqcSaveReqVO.java index 59c40a3..172dceb 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/iqc/vo/MesQcIqcSaveReqVO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/iqc/vo/MesQcIqcSaveReqVO.java @@ -1,6 +1,7 @@ package cn.iocoder.yudao.module.mes.controller.admin.qc.iqc.vo; import cn.hutool.core.util.ObjUtil; +import com.fasterxml.jackson.annotation.JsonIgnore; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.AssertTrue; import jakarta.validation.constraints.DecimalMin; @@ -85,7 +86,7 @@ public class MesQcIqcSaveReqVO { private String remark; @AssertTrue(message = "合格品数量与不合格品数量之和必须等于本次接收数量") - @Schema(hidden = true) + @JsonIgnore public boolean isQuantityValid() { if (ObjUtil.hasNull(qualifiedQuantity, unqualifiedQuantity, receivedQuantity)) { return true; // @NotNull 会处理 null diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/vendor/MesMdVendorService.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/vendor/MesMdVendorService.java index 20610dd..b0d7f98 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/vendor/MesMdVendorService.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/vendor/MesMdVendorService.java @@ -52,6 +52,14 @@ public interface MesMdVendorService { MesMdVendorDO getVendor(Long id); /** + * 校验供应商存在 + * + * @param id 供应商 ID + * @return 供应商 + */ + MesMdVendorDO validateVendorExists(Long id); + + /** * 获得供应商分页 * * @param pageReqVO 分页查询 diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/vendor/MesMdVendorServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/vendor/MesMdVendorServiceImpl.java index 943895c..d125f43 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/vendor/MesMdVendorServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/md/vendor/MesMdVendorServiceImpl.java @@ -78,10 +78,13 @@ public class MesMdVendorServiceImpl implements MesMdVendorService { vendorMapper.deleteById(id); } - private void validateVendorExists(Long id) { - if (vendorMapper.selectById(id) == null) { + @Override + public MesMdVendorDO validateVendorExists(Long id) { + MesMdVendorDO vendor = vendorMapper.selectById(id); + if (vendor == null) { throw exception(MD_VENDOR_NOT_EXISTS); } + return vendor; } private void validateVendorCodeUnique(Long id, String code) { diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/iqc/MesQcIqcLineServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/iqc/MesQcIqcLineServiceImpl.java index 74e9b79..268f9b1 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/iqc/MesQcIqcLineServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/iqc/MesQcIqcLineServiceImpl.java @@ -91,7 +91,9 @@ public class MesQcIqcLineServiceImpl implements MesQcIqcLineService { } List updateLines = new ArrayList<>(lines.size()); for (MesQcIqcLineDO 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; diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/iqc/MesQcIqcServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/iqc/MesQcIqcServiceImpl.java index 1859f6f..64aba32 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/iqc/MesQcIqcServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/qc/iqc/MesQcIqcServiceImpl.java @@ -15,6 +15,8 @@ import cn.iocoder.yudao.module.mes.enums.MesBizTypeConstants; import cn.iocoder.yudao.module.mes.enums.qc.MesQcDefectLevelEnum; import cn.iocoder.yudao.module.mes.enums.qc.MesQcIqcStatusEnum; import cn.iocoder.yudao.module.mes.enums.qc.MesQcTypeEnum; +import cn.iocoder.yudao.module.mes.service.md.item.MesMdItemService; +import cn.iocoder.yudao.module.mes.service.md.vendor.MesMdVendorService; import cn.iocoder.yudao.module.mes.service.qc.defectrecord.MesQcDefectRecordService; import cn.iocoder.yudao.module.mes.service.qc.template.MesQcTemplateDetailService; import cn.iocoder.yudao.module.mes.service.wm.arrivalnotice.MesWmArrivalNoticeService; @@ -52,15 +54,22 @@ public class MesQcIqcServiceImpl implements MesQcIqcService { private MesQcDefectRecordService defectRecordService; @Resource private MesWmArrivalNoticeService arrivalNoticeService; + @Resource + private MesMdVendorService vendorService; + @Resource + private MesMdItemService itemService; @Override @Transactional(rollbackFor = Exception.class) public Long createIqc(MesQcIqcSaveReqVO createReqVO, Long inspectorUserId) { // 1.1 校验编号唯一 validateIqcCodeUnique(null, createReqVO.getCode()); - // 1.2 校验来源单据参数,并验证数据存在 + // 1.2 校验供应商、物料存在 + vendorService.validateVendorExists(createReqVO.getVendorId()); + itemService.validateItemExists(createReqVO.getItemId()); + // 1.3 校验来源单据参数,并验证数据存在 validateSourceDoc(createReqVO.getSourceDocType(), createReqVO.getSourceDocId(), createReqVO.getSourceLineId()); - // 1.3 通过 itemId + IQC 类型自动查找模板 + // 1.4 通过 itemId + IQC 类型自动查找模板 MesQcTemplateItemDO templateItem = templateDetailService.getRequiredTemplateByItemIdAndType( createReqVO.getItemId(), MesQcTypeEnum.IQC.getType()); Long templateId = templateItem.getTemplateId(); @@ -84,6 +93,9 @@ public class MesQcIqcServiceImpl implements MesQcIqcService { validateIqcStatusPrepare(updateReqVO.getId()); // 1.2 校验编号唯一 validateIqcCodeUnique(updateReqVO.getId(), updateReqVO.getCode()); + // 1.3 校验供应商、物料存在 + vendorService.validateVendorExists(updateReqVO.getVendorId()); + itemService.validateItemExists(updateReqVO.getItemId()); // 2. 更新主表 MesQcIqcDO updateObj = BeanUtils.toBean(updateReqVO, MesQcIqcDO.class); @@ -216,11 +228,14 @@ public class MesQcIqcServiceImpl implements MesQcIqcService { @Override public void recalculateDefectStats(Long iqcId, List records) { + MesQcIqcDO iqc = validateIqcExists(iqcId); // 1. 行级缺陷统计 iqcLineService.recalculateLineDefectStats(iqcId, records); // 2.1 汇总主表的缺陷数量 - int totalCritical = 0, totalMajor = 0, totalMinor = 0; + int totalCritical = 0; + int totalMajor = 0; + int totalMinor = 0; for (MesQcDefectRecordDO record : records) { int quantity = ObjUtil.defaultIfNull(record.getQuantity(), 1); if (Objects.equals(record.getLevel(), MesQcDefectLevelEnum.CRITICAL.getType())) { @@ -234,7 +249,6 @@ public class MesQcIqcServiceImpl implements MesQcIqcService { } } // 2.2 计算缺陷率 - MesQcIqcDO iqc = validateIqcExists(iqcId); BigDecimal criticalRate = BigDecimal.ZERO; BigDecimal majorRate = BigDecimal.ZERO; BigDecimal minorRate = BigDecimal.ZERO;