Commit 6e5183580306c14acbda4d017633bf5c1a413396

Authored by YunaiV
1 parent 6d4dc2bd

feat(mes): update IPQC type to Integer and add source document fields in RQC

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. 从模板指标自动生成检验行
... ...