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,8 +20,8 @@ public class MesQcIpqcPageReqVO extends PageParam { | ||
| 20 | @Schema(description = "检验单编号", example = "IPQC2025") | 20 | @Schema(description = "检验单编号", example = "IPQC2025") |
| 21 | private String code; | 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 | @Schema(description = "生产工单 ID", example = "10") | 26 | @Schema(description = "生产工单 ID", example = "10") |
| 27 | private Long workOrderId; | 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,9 +25,9 @@ public class MesQcIpqcRespVO { | ||
| 25 | @ExcelProperty("检验单名称") | 25 | @ExcelProperty("检验单名称") |
| 26 | private String name; | 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 | @ExcelProperty("检验类型") | 29 | @ExcelProperty("检验类型") |
| 30 | - private String type; | 30 | + private Integer type; |
| 31 | 31 | ||
| 32 | @Schema(description = "检验模板 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "100") | 32 | @Schema(description = "检验模板 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "100") |
| 33 | private Long templateId; | 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,9 +23,9 @@ public class MesQcIpqcSaveReqVO { | ||
| 23 | @NotEmpty(message = "检验单名称不能为空") | 23 | @NotEmpty(message = "检验单名称不能为空") |
| 24 | private String name; | 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 | @Schema(description = "检验模板 ID", example = "100") | 30 | @Schema(description = "检验模板 ID", example = "100") |
| 31 | private Long templateId; | 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,6 +20,12 @@ public class MesQcRqcPageReqVO extends PageParam { | ||
| 20 | @Schema(description = "检验单编号", example = "RQC2025") | 20 | @Schema(description = "检验单编号", example = "RQC2025") |
| 21 | private String code; | 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 | @Schema(description = "产品物料 ID", example = "20") | 29 | @Schema(description = "产品物料 ID", example = "20") |
| 24 | private Long itemId; | 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,13 +41,12 @@ public class MesQcIpqcDO extends BaseDO { | ||
| 41 | * 检验单名称 | 41 | * 检验单名称 |
| 42 | */ | 42 | */ |
| 43 | private String name; | 43 | private String name; |
| 44 | - // TODO @AI:搞成 int 类型; | ||
| 45 | /** | 44 | /** |
| 46 | * IPQC 检验类型 | 45 | * IPQC 检验类型 |
| 47 | * | 46 | * |
| 48 | * 字典 {@link cn.iocoder.yudao.module.mes.enums.DictTypeConstants#MES_IPQC_TYPE} | 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 | * 检验模板 ID | 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,6 +18,8 @@ public interface MesQcRqcMapper extends BaseMapperX<MesQcRqcDO> { | ||
| 18 | default PageResult<MesQcRqcDO> selectPage(MesQcRqcPageReqVO reqVO) { | 18 | default PageResult<MesQcRqcDO> selectPage(MesQcRqcPageReqVO reqVO) { |
| 19 | return selectPage(reqVO, new LambdaQueryWrapperX<MesQcRqcDO>() | 19 | return selectPage(reqVO, new LambdaQueryWrapperX<MesQcRqcDO>() |
| 20 | .likeIfPresent(MesQcRqcDO::getCode, reqVO.getCode()) | 20 | .likeIfPresent(MesQcRqcDO::getCode, reqVO.getCode()) |
| 21 | + .eqIfPresent(MesQcRqcDO::getSourceDocType, reqVO.getSourceDocType()) | ||
| 22 | + .likeIfPresent(MesQcRqcDO::getSourceDocCode, reqVO.getSourceDocCode()) | ||
| 21 | .eqIfPresent(MesQcRqcDO::getItemId, reqVO.getItemId()) | 23 | .eqIfPresent(MesQcRqcDO::getItemId, reqVO.getItemId()) |
| 22 | .eqIfPresent(MesQcRqcDO::getRqcType, reqVO.getRqcType()) | 24 | .eqIfPresent(MesQcRqcDO::getRqcType, reqVO.getRqcType()) |
| 23 | .eqIfPresent(MesQcRqcDO::getCheckResult, reqVO.getCheckResult()) | 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,12 +5,10 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||
| 5 | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; | 5 | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; |
| 6 | import cn.iocoder.yudao.module.mes.controller.admin.qc.ipqc.vo.MesQcIpqcPageReqVO; | 6 | import cn.iocoder.yudao.module.mes.controller.admin.qc.ipqc.vo.MesQcIpqcPageReqVO; |
| 7 | import cn.iocoder.yudao.module.mes.controller.admin.qc.ipqc.vo.MesQcIpqcSaveReqVO; | 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 | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO; | 8 | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO; |
| 10 | import cn.iocoder.yudao.module.mes.dal.dataobject.qc.defectrecord.MesQcDefectRecordDO; | 9 | import cn.iocoder.yudao.module.mes.dal.dataobject.qc.defectrecord.MesQcDefectRecordDO; |
| 11 | import cn.iocoder.yudao.module.mes.dal.dataobject.qc.ipqc.MesQcIpqcDO; | 10 | import cn.iocoder.yudao.module.mes.dal.dataobject.qc.ipqc.MesQcIpqcDO; |
| 12 | import cn.iocoder.yudao.module.mes.dal.dataobject.qc.template.MesQcTemplateDO; | 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 | import cn.iocoder.yudao.module.mes.dal.mysql.qc.ipqc.MesQcIpqcMapper; | 12 | import cn.iocoder.yudao.module.mes.dal.mysql.qc.ipqc.MesQcIpqcMapper; |
| 15 | import cn.iocoder.yudao.module.mes.enums.qc.MesQcDefectLevelEnum; | 13 | import cn.iocoder.yudao.module.mes.enums.qc.MesQcDefectLevelEnum; |
| 16 | import cn.iocoder.yudao.module.mes.enums.qc.MesQcIqcStatusEnum; | 14 | import cn.iocoder.yudao.module.mes.enums.qc.MesQcIqcStatusEnum; |
| @@ -64,40 +62,21 @@ public class MesQcIpqcServiceImpl implements MesQcIpqcService { | @@ -64,40 +62,21 @@ public class MesQcIpqcServiceImpl implements MesQcIpqcService { | ||
| 64 | public Long createIpqc(MesQcIpqcSaveReqVO createReqVO) { | 62 | public Long createIpqc(MesQcIpqcSaveReqVO createReqVO) { |
| 65 | // 1.1 校验编号唯一 | 63 | // 1.1 校验编号唯一 |
| 66 | validateIpqcCodeUnique(null, createReqVO.getCode()); | 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 | // 1.4 根据产品 + 检验类型自动匹配模板 | 69 | // 1.4 根据产品 + 检验类型自动匹配模板 |
| 85 | - // TODO @AI:直接调用 templateService 的校验方法; | ||
| 86 | MesQcTemplateDO template = templateService.getTemplateByItemIdAndType( | 70 | MesQcTemplateDO template = templateService.getTemplateByItemIdAndType( |
| 87 | - createReqVO.getItemId(), MesQcTypeEnum.IPQC.getType()); | 71 | + workOrder.getProductId(), MesQcTypeEnum.IPQC.getType()); |
| 88 | if (template == null) { | 72 | if (template == null) { |
| 89 | throw exception(QC_IPQC_NO_TEMPLATE); | 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 | // 2. 插入主表 | 76 | // 2. 插入主表 |
| 99 | MesQcIpqcDO ipqc = BeanUtils.toBean(createReqVO, MesQcIpqcDO.class); | 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 | ipqcMapper.insert(ipqc); | 80 | ipqcMapper.insert(ipqc); |
| 102 | 81 | ||
| 103 | // 3. 从模板指标自动生成检验行 | 82 | // 3. 从模板指标自动生成检验行 |