From 2676319a76dc0969b6bb3bf8ee65142c5537b05c Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sat, 4 Apr 2026 21:58:47 +0800 Subject: [PATCH] ✨ feat(mes): 添加反馈记录关联及代码注释优化 --- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productproduce/MesWmProductProduceDO.java | 4 ++-- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productproduce/MesWmProductProduceLineDO.java | 7 +++---- yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productproduce/MesWmProductProduceServiceImpl.java | 15 +++++++-------- 3 files changed, 12 insertions(+), 14 deletions(-) diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productproduce/MesWmProductProduceDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productproduce/MesWmProductProduceDO.java index 1384912..4d29666 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productproduce/MesWmProductProduceDO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productproduce/MesWmProductProduceDO.java @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.mes.dal.dataobject.wm.productproduce; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.pro.feedback.MesProFeedbackDO; import cn.iocoder.yudao.module.mes.dal.dataobject.pro.process.MesProProcessDO; import cn.iocoder.yudao.module.mes.dal.dataobject.pro.task.MesProTaskDO; import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO; @@ -42,7 +43,7 @@ public class MesWmProductProduceDO extends BaseDO { /** * 报工记录 ID * - * TODO @芋艿:关联 ProFeedback,待 ProFeedback 联调时补充 + * 关联 {@link MesProFeedbackDO#getId()} */ private Long feedbackId; /** @@ -51,7 +52,6 @@ public class MesWmProductProduceDO extends BaseDO { * 关联 {@link MesProTaskDO#getId()} */ private Long taskId; - // TODO @芋艿:workstationId、processId 哪些是必填字段; /** * 工作站 ID * diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productproduce/MesWmProductProduceLineDO.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productproduce/MesWmProductProduceLineDO.java index 9cf5c09..fb2733e 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productproduce/MesWmProductProduceLineDO.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/dal/dataobject/wm/productproduce/MesWmProductProduceLineDO.java @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.mes.dal.dataobject.wm.productproduce; import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; +import cn.iocoder.yudao.module.mes.dal.dataobject.pro.feedback.MesProFeedbackDO; import com.baomidou.mybatisplus.annotation.KeySequence; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; @@ -39,7 +40,7 @@ public class MesWmProductProduceLineDO extends BaseDO { /** * 报工记录 ID * - * TODO @芋艿:关联 ProFeedback,待 ProFeedback 联调时补充 + * 关联 {@link MesProFeedbackDO#getId()} */ private Long feedbackId; /** @@ -68,12 +69,10 @@ public class MesWmProductProduceLineDO extends BaseDO { * 生产批号 */ private String lotNumber; - // TODO @AI:待定 /** * 质量状态 * - * 0-待检, 1-合格, 2-不合格 - * 字典类型 mes_wm_quality_status + * 枚举 {@link cn.iocoder.yudao.module.mes.enums.wm.MesWmQualityStatusEnum} */ private Integer qualityStatus; /** diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productproduce/MesWmProductProduceServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productproduce/MesWmProductProduceServiceImpl.java index cb1b6a8..f4a1f15 100644 --- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productproduce/MesWmProductProduceServiceImpl.java +++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/productproduce/MesWmProductProduceServiceImpl.java @@ -129,10 +129,9 @@ public class MesWmProductProduceServiceImpl implements MesWmProductProduceServic .setExpireDate(feedback.getExpireDate()) .setWorkOrderId(feedback.getWorkOrderId()) .setClientId(workOrder != null ? workOrder.getClientId() : null) + .setSalesOrderCode(workOrder != null ? workOrder.getOrderSourceCode() : null) .setWorkstationId(feedback.getWorkstationId()) .setLotNumber(feedback.getLotNumber()); - // TODO @AI(from codex):对齐 批次生成还需要带上工单来源单号(salesOrderCode / coCode 对应 orderSourceCode); - // 否则启用该维度的批次规则会生成错误批次或直接缺参失败。 MesWmBatchDO batch = batchService.getOrGenerateBatchCode(batchReqVO); Long batchId = batch != null ? batch.getId() : null; String batchCode = batch != null ? batch.getCode() : null; @@ -148,7 +147,7 @@ public class MesWmProductProduceServiceImpl implements MesWmProductProduceServic MesWmProductProduceLineDO line = buildProduceLine(produce, feedback, batchId, batchCode, feedback.getFeedbackQuantity(), MesWmQualityStatusEnum.PENDING.getStatus()); productProduceLineService.createProductProduceLine(line); - // TODO @芋艿:先不生成明细行,等待检验完成时,再根据行的质量状态生成明细行 + // 注意:checkFlag=true 时不生成明细行,等 IPQC 检验完成后由 splitPendingAndFinishProduce 按质量结果拆行+生成明细 } else { // 3.2 无需检验:按合格品/不合格品各生成一行 + 明细 BigDecimal qualifiedQty = ObjectUtil.defaultIfNull(feedback.getQualifiedQuantity(), BigDecimal.ZERO); @@ -236,11 +235,11 @@ public class MesWmProductProduceServiceImpl implements MesWmProductProduceServic // 2. 查找待检验行(checkFlag=true 时只有一行 PENDING) List lines = productProduceLineService.getProductProduceLineListByProduceId(produce.getId()); - // TODO @AI:hutool 的 findOne 方法,替代掉 stream;手动 if 判断为空,抛出异常; - MesWmProductProduceLineDO pendingLine = lines.stream() - .filter(l -> ObjUtil.equal(l.getQualityStatus(), MesWmQualityStatusEnum.PENDING.getStatus())) - .findFirst() - .orElseThrow(() -> exception(WM_PRODUCT_PRODUCE_LINE_NOT_EXISTS)); + MesWmProductProduceLineDO pendingLine = CollUtil.findOne(lines, + l -> ObjUtil.equal(l.getQualityStatus(), MesWmQualityStatusEnum.PENDING.getStatus())); + if (pendingLine == null) { + throw exception(WM_PRODUCT_PRODUCE_LINE_NOT_EXISTS); + } // 3A. 情况一:存在不合格品数量,需要拆分行 if (unqualifiedQty != null && unqualifiedQty.compareTo(BigDecimal.ZERO) > 0) { -- libgit2 0.21.4