Commit 6e5183580306c14acbda4d017633bf5c1a413396
1 parent
6d4dc2bd
feat(mes): update IPQC type to Integer and add source document fields in RQC
Showing
7 changed files
with
23 additions
and
37 deletions
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 { |
| 20 | 20 | @Schema(description = "检验单编号", example = "IPQC2025") |
| 21 | 21 | private String code; |
| 22 | 22 | |
| 23 | - @Schema(description = "IPQC 检验类型", example = "IPQC") | |
| 24 | - private String type; | |
| 23 | + @Schema(description = "IPQC 检验类型", example = "1") | |
| 24 | + private Integer type; | |
| 25 | 25 | |
| 26 | 26 | @Schema(description = "生产工单 ID", example = "10") |
| 27 | 27 | private Long workOrderId; | ... | ... |
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 { |
| 25 | 25 | @ExcelProperty("检验单名称") |
| 26 | 26 | private String name; |
| 27 | 27 | |
| 28 | - @Schema(description = "IPQC 检验类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "IPQC") | |
| 28 | + @Schema(description = "IPQC 检验类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") | |
| 29 | 29 | @ExcelProperty("检验类型") |
| 30 | - private String type; | |
| 30 | + private Integer type; | |
| 31 | 31 | |
| 32 | 32 | @Schema(description = "检验模板 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "100") |
| 33 | 33 | private Long templateId; | ... | ... |
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 { |
| 23 | 23 | @NotEmpty(message = "检验单名称不能为空") |
| 24 | 24 | private String name; |
| 25 | 25 | |
| 26 | - @Schema(description = "IPQC 检验类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "IPQC") | |
| 27 | - @NotEmpty(message = "检验类型不能为空") | |
| 28 | - private String type; | |
| 26 | + @Schema(description = "IPQC 检验类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1") | |
| 27 | + @NotNull(message = "检验类型不能为空") | |
| 28 | + private Integer type; | |
| 29 | 29 | |
| 30 | 30 | @Schema(description = "检验模板 ID", example = "100") |
| 31 | 31 | private Long templateId; | ... | ... |
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 { |
| 20 | 20 | @Schema(description = "检验单编号", example = "RQC2025") |
| 21 | 21 | private String code; |
| 22 | 22 | |
| 23 | + @Schema(description = "来源单据类型", example = "RTISSUE") | |
| 24 | + private String sourceDocType; | |
| 25 | + | |
| 26 | + @Schema(description = "来源单据编号", example = "RT2025") | |
| 27 | + private String sourceDocCode; | |
| 28 | + | |
| 23 | 29 | @Schema(description = "产品物料 ID", example = "20") |
| 24 | 30 | private Long itemId; |
| 25 | 31 | ... | ... |
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 { |
| 41 | 41 | * 检验单名称 |
| 42 | 42 | */ |
| 43 | 43 | private String name; |
| 44 | - // TODO @AI:搞成 int 类型; | |
| 45 | 44 | /** |
| 46 | 45 | * IPQC 检验类型 |
| 47 | 46 | * |
| 48 | 47 | * 字典 {@link cn.iocoder.yudao.module.mes.enums.DictTypeConstants#MES_IPQC_TYPE} |
| 49 | 48 | */ |
| 50 | - private String type; | |
| 49 | + private Integer type; | |
| 51 | 50 | /** |
| 52 | 51 | * 检验模板 ID |
| 53 | 52 | * | ... | ... |
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<MesQcRqcDO> { |
| 18 | 18 | default PageResult<MesQcRqcDO> selectPage(MesQcRqcPageReqVO reqVO) { |
| 19 | 19 | return selectPage(reqVO, new LambdaQueryWrapperX<MesQcRqcDO>() |
| 20 | 20 | .likeIfPresent(MesQcRqcDO::getCode, reqVO.getCode()) |
| 21 | + .eqIfPresent(MesQcRqcDO::getSourceDocType, reqVO.getSourceDocType()) | |
| 22 | + .likeIfPresent(MesQcRqcDO::getSourceDocCode, reqVO.getSourceDocCode()) | |
| 21 | 23 | .eqIfPresent(MesQcRqcDO::getItemId, reqVO.getItemId()) |
| 22 | 24 | .eqIfPresent(MesQcRqcDO::getRqcType, reqVO.getRqcType()) |
| 23 | 25 | .eqIfPresent(MesQcRqcDO::getCheckResult, reqVO.getCheckResult()) | ... | ... |
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; |
| 5 | 5 | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| 6 | 6 | import cn.iocoder.yudao.module.mes.controller.admin.qc.ipqc.vo.MesQcIpqcPageReqVO; |
| 7 | 7 | import cn.iocoder.yudao.module.mes.controller.admin.qc.ipqc.vo.MesQcIpqcSaveReqVO; |
| 8 | -import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationDO; | |
| 9 | 8 | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO; |
| 10 | 9 | import cn.iocoder.yudao.module.mes.dal.dataobject.qc.defectrecord.MesQcDefectRecordDO; |
| 11 | 10 | import cn.iocoder.yudao.module.mes.dal.dataobject.qc.ipqc.MesQcIpqcDO; |
| 12 | 11 | import cn.iocoder.yudao.module.mes.dal.dataobject.qc.template.MesQcTemplateDO; |
| 13 | -import cn.iocoder.yudao.module.mes.dal.dataobject.qc.template.MesQcTemplateItemDO; | |
| 14 | 12 | import cn.iocoder.yudao.module.mes.dal.mysql.qc.ipqc.MesQcIpqcMapper; |
| 15 | 13 | import cn.iocoder.yudao.module.mes.enums.qc.MesQcDefectLevelEnum; |
| 16 | 14 | import cn.iocoder.yudao.module.mes.enums.qc.MesQcIqcStatusEnum; |
| ... | ... | @@ -64,40 +62,21 @@ public class MesQcIpqcServiceImpl implements MesQcIpqcService { |
| 64 | 62 | public Long createIpqc(MesQcIpqcSaveReqVO createReqVO) { |
| 65 | 63 | // 1.1 校验编号唯一 |
| 66 | 64 | validateIpqcCodeUnique(null, createReqVO.getCode()); |
| 67 | - | |
| 68 | - // 1.2 从工单获取产品物料 ID | |
| 69 | - // TODO @AI:需要校验 workOrderService 存在; | |
| 70 | -// TODO createReqVO 里的 itemId 字段去掉;直接去下面的实体去 set; | |
| 71 | - MesProWorkOrderDO workOrder = workOrderService.getWorkOrder(createReqVO.getWorkOrderId()); | |
| 72 | - if (workOrder != null) { | |
| 73 | - createReqVO.setItemId(workOrder.getProductId()); | |
| 74 | - } | |
| 75 | - | |
| 76 | - // 1.3 从工位获取工序 ID | |
| 77 | - // TODO @AI:需要校验 workstationService 存在; | |
| 78 | - // TODO @AI:processId 不存储,去读取好了; | |
| 79 | - MesMdWorkstationDO workstation = workstationService.getWorkstation(createReqVO.getWorkstationId()); | |
| 80 | - if (workstation != null && workstation.getProcessId() != null) { | |
| 81 | - createReqVO.setProcessId(workstation.getProcessId()); | |
| 82 | - } | |
| 83 | - | |
| 65 | + // 1.2 校验工单存在 | |
| 66 | + MesProWorkOrderDO workOrder = workOrderService.validateWorkOrderExists(createReqVO.getWorkOrderId()); | |
| 67 | + // 1.3 校验工位存在 | |
| 68 | + workstationService.validateWorkstationExists(createReqVO.getWorkstationId()); | |
| 84 | 69 | // 1.4 根据产品 + 检验类型自动匹配模板 |
| 85 | - // TODO @AI:直接调用 templateService 的校验方法; | |
| 86 | 70 | MesQcTemplateDO template = templateService.getTemplateByItemIdAndType( |
| 87 | - createReqVO.getItemId(), MesQcTypeEnum.IPQC.getType()); | |
| 71 | + workOrder.getProductId(), MesQcTypeEnum.IPQC.getType()); | |
| 88 | 72 | if (template == null) { |
| 89 | 73 | throw exception(QC_IPQC_NO_TEMPLATE); |
| 90 | 74 | } |
| 91 | - createReqVO.setTemplateId(template.getId()); | |
| 92 | - | |
| 93 | - // 1.5 从模板的产品关联中获取检测参数 | |
| 94 | - MesQcTemplateItemDO templateItem = templateService.getTemplateItemByTemplateIdAndItemId( | |
| 95 | - template.getId(), createReqVO.getItemId()); | |
| 96 | - // 模板产品关联可能为空(模板关联了其他产品但也可手动选择),此处不强制 | |
| 97 | 75 | |
| 98 | 76 | // 2. 插入主表 |
| 99 | 77 | MesQcIpqcDO ipqc = BeanUtils.toBean(createReqVO, MesQcIpqcDO.class); |
| 100 | - ipqc.setStatus(MesQcIqcStatusEnum.PREPARE.getType()); | |
| 78 | + ipqc.setItemId(workOrder.getProductId()); | |
| 79 | + ipqc.setTemplateId(template.getId()).setStatus(MesQcIqcStatusEnum.PREPARE.getType()); | |
| 101 | 80 | ipqcMapper.insert(ipqc); |
| 102 | 81 | |
| 103 | 82 | // 3. 从模板指标自动生成检验行 | ... | ... |