diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/ipqc/vo/MesQcIpqcPageReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/ipqc/vo/MesQcIpqcPageReqVO.java index 087dbdf..e44f730 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/ipqc/vo/MesQcIpqcPageReqVO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/ipqc/vo/MesQcIpqcPageReqVO.java @@ -20,8 +20,8 @@ public class MesQcIpqcPageReqVO extends PageParam { @Schema(description = "检验单编号", example = "IPQC2025") private String code; - @Schema(description = "IPQC 检验类型", example = "IPQC") - private String type; + @Schema(description = "IPQC 检验类型", example = "1") + private Integer type; @Schema(description = "生产工单 ID", example = "10") private Long workOrderId; diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/ipqc/vo/MesQcIpqcRespVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/ipqc/vo/MesQcIpqcRespVO.java index 36b6d7b..2af1f9c 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/ipqc/vo/MesQcIpqcRespVO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/ipqc/vo/MesQcIpqcRespVO.java @@ -25,9 +25,9 @@ public class MesQcIpqcRespVO { @ExcelProperty("检验单名称") private String name; - @Schema(description = "IPQC 检验类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "IPQC") + @Schema(description = "IPQC 检验类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") @ExcelProperty("检验类型") - private String type; + private Integer type; @Schema(description = "检验模板 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "100") private Long templateId; 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 1494fdf..cb96704 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 @@ -23,9 +23,9 @@ public class MesQcIpqcSaveReqVO { @NotEmpty(message = "检验单名称不能为空") private String name; - @Schema(description = "IPQC 检验类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "IPQC") - @NotEmpty(message = "检验类型不能为空") - private String type; + @Schema(description = "IPQC 检验类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") + @NotNull(message = "检验类型不能为空") + private Integer type; @Schema(description = "检验模板 ID", example = "100") private Long templateId; diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/rqc/vo/MesQcRqcPageReqVO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/rqc/vo/MesQcRqcPageReqVO.java index 6414539..278b615 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/rqc/vo/MesQcRqcPageReqVO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/controller/admin/qc/rqc/vo/MesQcRqcPageReqVO.java @@ -20,6 +20,12 @@ public class MesQcRqcPageReqVO extends PageParam { @Schema(description = "检验单编号", example = "RQC2025") private String code; + @Schema(description = "来源单据类型", example = "RTISSUE") + private String sourceDocType; + + @Schema(description = "来源单据编号", example = "RT2025") + private String sourceDocCode; + @Schema(description = "产品物料 ID", example = "20") private Long itemId; diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/qc/ipqc/MesQcIpqcDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/qc/ipqc/MesQcIpqcDO.java index a52b4e7..a3d1ddc 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/qc/ipqc/MesQcIpqcDO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/qc/ipqc/MesQcIpqcDO.java @@ -41,13 +41,12 @@ public class MesQcIpqcDO extends BaseDO { * 检验单名称 */ private String name; - // TODO @AI:搞成 int 类型; /** * IPQC 检验类型 * * 字典 {@link cn.iocoder.yudao.module.mes.enums.DictTypeConstants#MES_IPQC_TYPE} */ - private String type; + private Integer type; /** * 检验模板 ID * diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/qc/rqc/MesQcRqcMapper.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/qc/rqc/MesQcRqcMapper.java index af3523e..49f649f 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/qc/rqc/MesQcRqcMapper.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/mysql/qc/rqc/MesQcRqcMapper.java @@ -18,6 +18,8 @@ public interface MesQcRqcMapper extends BaseMapperX { default PageResult selectPage(MesQcRqcPageReqVO reqVO) { return selectPage(reqVO, new LambdaQueryWrapperX() .likeIfPresent(MesQcRqcDO::getCode, reqVO.getCode()) + .eqIfPresent(MesQcRqcDO::getSourceDocType, reqVO.getSourceDocType()) + .likeIfPresent(MesQcRqcDO::getSourceDocCode, reqVO.getSourceDocCode()) .eqIfPresent(MesQcRqcDO::getItemId, reqVO.getItemId()) .eqIfPresent(MesQcRqcDO::getRqcType, reqVO.getRqcType()) .eqIfPresent(MesQcRqcDO::getCheckResult, reqVO.getCheckResult()) 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 7d75e08..b9459f5 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 @@ -5,12 +5,10 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.mes.controller.admin.qc.ipqc.vo.MesQcIpqcPageReqVO; import cn.iocoder.yudao.module.mes.controller.admin.qc.ipqc.vo.MesQcIpqcSaveReqVO; -import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationDO; import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO; import cn.iocoder.yudao.module.mes.dal.dataobject.qc.defectrecord.MesQcDefectRecordDO; import cn.iocoder.yudao.module.mes.dal.dataobject.qc.ipqc.MesQcIpqcDO; import cn.iocoder.yudao.module.mes.dal.dataobject.qc.template.MesQcTemplateDO; -import cn.iocoder.yudao.module.mes.dal.dataobject.qc.template.MesQcTemplateItemDO; import cn.iocoder.yudao.module.mes.dal.mysql.qc.ipqc.MesQcIpqcMapper; import cn.iocoder.yudao.module.mes.enums.qc.MesQcDefectLevelEnum; import cn.iocoder.yudao.module.mes.enums.qc.MesQcIqcStatusEnum; @@ -64,40 +62,21 @@ public class MesQcIpqcServiceImpl implements MesQcIpqcService { public Long createIpqc(MesQcIpqcSaveReqVO createReqVO) { // 1.1 校验编号唯一 validateIpqcCodeUnique(null, createReqVO.getCode()); - - // 1.2 从工单获取产品物料 ID - // TODO @AI:需要校验 workOrderService 存在; -// TODO createReqVO 里的 itemId 字段去掉;直接去下面的实体去 set; - MesProWorkOrderDO workOrder = workOrderService.getWorkOrder(createReqVO.getWorkOrderId()); - if (workOrder != null) { - createReqVO.setItemId(workOrder.getProductId()); - } - - // 1.3 从工位获取工序 ID - // TODO @AI:需要校验 workstationService 存在; - // TODO @AI:processId 不存储,去读取好了; - MesMdWorkstationDO workstation = workstationService.getWorkstation(createReqVO.getWorkstationId()); - if (workstation != null && workstation.getProcessId() != null) { - createReqVO.setProcessId(workstation.getProcessId()); - } - + // 1.2 校验工单存在 + MesProWorkOrderDO workOrder = workOrderService.validateWorkOrderExists(createReqVO.getWorkOrderId()); + // 1.3 校验工位存在 + workstationService.validateWorkstationExists(createReqVO.getWorkstationId()); // 1.4 根据产品 + 检验类型自动匹配模板 - // TODO @AI:直接调用 templateService 的校验方法; MesQcTemplateDO template = templateService.getTemplateByItemIdAndType( - createReqVO.getItemId(), MesQcTypeEnum.IPQC.getType()); + workOrder.getProductId(), MesQcTypeEnum.IPQC.getType()); if (template == null) { throw exception(QC_IPQC_NO_TEMPLATE); } - createReqVO.setTemplateId(template.getId()); - - // 1.5 从模板的产品关联中获取检测参数 - MesQcTemplateItemDO templateItem = templateService.getTemplateItemByTemplateIdAndItemId( - template.getId(), createReqVO.getItemId()); - // 模板产品关联可能为空(模板关联了其他产品但也可手动选择),此处不强制 // 2. 插入主表 MesQcIpqcDO ipqc = BeanUtils.toBean(createReqVO, MesQcIpqcDO.class); - ipqc.setStatus(MesQcIqcStatusEnum.PREPARE.getType()); + ipqc.setItemId(workOrder.getProductId()); + ipqc.setTemplateId(template.getId()).setStatus(MesQcIqcStatusEnum.PREPARE.getType()); ipqcMapper.insert(ipqc); // 3. 从模板指标自动生成检验行