Commit 2676319a76dc0969b6bb3bf8ee65142c5537b05c
1 parent
d9722c13
✨ feat(mes): 添加反馈记录关联及代码注释优化
Showing
3 changed files
with
12 additions
and
14 deletions
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; | @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.mes.dal.dataobject.wm.productproduce; | ||
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; | 3 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; |
| 4 | import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationDO; | 4 | import cn.iocoder.yudao.module.mes.dal.dataobject.md.workstation.MesMdWorkstationDO; |
| 5 | +import cn.iocoder.yudao.module.mes.dal.dataobject.pro.feedback.MesProFeedbackDO; | ||
| 5 | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.process.MesProProcessDO; | 6 | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.process.MesProProcessDO; |
| 6 | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.task.MesProTaskDO; | 7 | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.task.MesProTaskDO; |
| 7 | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO; | 8 | import cn.iocoder.yudao.module.mes.dal.dataobject.pro.workorder.MesProWorkOrderDO; |
| @@ -42,7 +43,7 @@ public class MesWmProductProduceDO extends BaseDO { | @@ -42,7 +43,7 @@ public class MesWmProductProduceDO extends BaseDO { | ||
| 42 | /** | 43 | /** |
| 43 | * 报工记录 ID | 44 | * 报工记录 ID |
| 44 | * | 45 | * |
| 45 | - * TODO @芋艿:关联 ProFeedback,待 ProFeedback 联调时补充 | 46 | + * 关联 {@link MesProFeedbackDO#getId()} |
| 46 | */ | 47 | */ |
| 47 | private Long feedbackId; | 48 | private Long feedbackId; |
| 48 | /** | 49 | /** |
| @@ -51,7 +52,6 @@ public class MesWmProductProduceDO extends BaseDO { | @@ -51,7 +52,6 @@ public class MesWmProductProduceDO extends BaseDO { | ||
| 51 | * 关联 {@link MesProTaskDO#getId()} | 52 | * 关联 {@link MesProTaskDO#getId()} |
| 52 | */ | 53 | */ |
| 53 | private Long taskId; | 54 | private Long taskId; |
| 54 | - // TODO @芋艿:workstationId、processId 哪些是必填字段; | ||
| 55 | /** | 55 | /** |
| 56 | * 工作站 ID | 56 | * 工作站 ID |
| 57 | * | 57 | * |
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; | @@ -2,6 +2,7 @@ package cn.iocoder.yudao.module.mes.dal.dataobject.wm.productproduce; | ||
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; | 3 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; |
| 4 | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; | 4 | import cn.iocoder.yudao.module.mes.dal.dataobject.md.item.MesMdItemDO; |
| 5 | +import cn.iocoder.yudao.module.mes.dal.dataobject.pro.feedback.MesProFeedbackDO; | ||
| 5 | import com.baomidou.mybatisplus.annotation.KeySequence; | 6 | import com.baomidou.mybatisplus.annotation.KeySequence; |
| 6 | import com.baomidou.mybatisplus.annotation.TableId; | 7 | import com.baomidou.mybatisplus.annotation.TableId; |
| 7 | import com.baomidou.mybatisplus.annotation.TableName; | 8 | import com.baomidou.mybatisplus.annotation.TableName; |
| @@ -39,7 +40,7 @@ public class MesWmProductProduceLineDO extends BaseDO { | @@ -39,7 +40,7 @@ public class MesWmProductProduceLineDO extends BaseDO { | ||
| 39 | /** | 40 | /** |
| 40 | * 报工记录 ID | 41 | * 报工记录 ID |
| 41 | * | 42 | * |
| 42 | - * TODO @芋艿:关联 ProFeedback,待 ProFeedback 联调时补充 | 43 | + * 关联 {@link MesProFeedbackDO#getId()} |
| 43 | */ | 44 | */ |
| 44 | private Long feedbackId; | 45 | private Long feedbackId; |
| 45 | /** | 46 | /** |
| @@ -68,12 +69,10 @@ public class MesWmProductProduceLineDO extends BaseDO { | @@ -68,12 +69,10 @@ public class MesWmProductProduceLineDO extends BaseDO { | ||
| 68 | * 生产批号 | 69 | * 生产批号 |
| 69 | */ | 70 | */ |
| 70 | private String lotNumber; | 71 | private String lotNumber; |
| 71 | - // TODO @AI:待定 | ||
| 72 | /** | 72 | /** |
| 73 | * 质量状态 | 73 | * 质量状态 |
| 74 | * | 74 | * |
| 75 | - * 0-待检, 1-合格, 2-不合格 | ||
| 76 | - * 字典类型 mes_wm_quality_status | 75 | + * 枚举 {@link cn.iocoder.yudao.module.mes.enums.wm.MesWmQualityStatusEnum} |
| 77 | */ | 76 | */ |
| 78 | private Integer qualityStatus; | 77 | private Integer qualityStatus; |
| 79 | /** | 78 | /** |
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 | @@ -129,10 +129,9 @@ public class MesWmProductProduceServiceImpl implements MesWmProductProduceServic | ||
| 129 | .setExpireDate(feedback.getExpireDate()) | 129 | .setExpireDate(feedback.getExpireDate()) |
| 130 | .setWorkOrderId(feedback.getWorkOrderId()) | 130 | .setWorkOrderId(feedback.getWorkOrderId()) |
| 131 | .setClientId(workOrder != null ? workOrder.getClientId() : null) | 131 | .setClientId(workOrder != null ? workOrder.getClientId() : null) |
| 132 | + .setSalesOrderCode(workOrder != null ? workOrder.getOrderSourceCode() : null) | ||
| 132 | .setWorkstationId(feedback.getWorkstationId()) | 133 | .setWorkstationId(feedback.getWorkstationId()) |
| 133 | .setLotNumber(feedback.getLotNumber()); | 134 | .setLotNumber(feedback.getLotNumber()); |
| 134 | - // TODO @AI(from codex):对齐 批次生成还需要带上工单来源单号(salesOrderCode / coCode 对应 orderSourceCode); | ||
| 135 | - // 否则启用该维度的批次规则会生成错误批次或直接缺参失败。 | ||
| 136 | MesWmBatchDO batch = batchService.getOrGenerateBatchCode(batchReqVO); | 135 | MesWmBatchDO batch = batchService.getOrGenerateBatchCode(batchReqVO); |
| 137 | Long batchId = batch != null ? batch.getId() : null; | 136 | Long batchId = batch != null ? batch.getId() : null; |
| 138 | String batchCode = batch != null ? batch.getCode() : null; | 137 | String batchCode = batch != null ? batch.getCode() : null; |
| @@ -148,7 +147,7 @@ public class MesWmProductProduceServiceImpl implements MesWmProductProduceServic | @@ -148,7 +147,7 @@ public class MesWmProductProduceServiceImpl implements MesWmProductProduceServic | ||
| 148 | MesWmProductProduceLineDO line = buildProduceLine(produce, feedback, batchId, batchCode, | 147 | MesWmProductProduceLineDO line = buildProduceLine(produce, feedback, batchId, batchCode, |
| 149 | feedback.getFeedbackQuantity(), MesWmQualityStatusEnum.PENDING.getStatus()); | 148 | feedback.getFeedbackQuantity(), MesWmQualityStatusEnum.PENDING.getStatus()); |
| 150 | productProduceLineService.createProductProduceLine(line); | 149 | productProduceLineService.createProductProduceLine(line); |
| 151 | - // TODO @芋艿:先不生成明细行,等待检验完成时,再根据行的质量状态生成明细行 | 150 | + // 注意:checkFlag=true 时不生成明细行,等 IPQC 检验完成后由 splitPendingAndFinishProduce 按质量结果拆行+生成明细 |
| 152 | } else { | 151 | } else { |
| 153 | // 3.2 无需检验:按合格品/不合格品各生成一行 + 明细 | 152 | // 3.2 无需检验:按合格品/不合格品各生成一行 + 明细 |
| 154 | BigDecimal qualifiedQty = ObjectUtil.defaultIfNull(feedback.getQualifiedQuantity(), BigDecimal.ZERO); | 153 | BigDecimal qualifiedQty = ObjectUtil.defaultIfNull(feedback.getQualifiedQuantity(), BigDecimal.ZERO); |
| @@ -236,11 +235,11 @@ public class MesWmProductProduceServiceImpl implements MesWmProductProduceServic | @@ -236,11 +235,11 @@ public class MesWmProductProduceServiceImpl implements MesWmProductProduceServic | ||
| 236 | 235 | ||
| 237 | // 2. 查找待检验行(checkFlag=true 时只有一行 PENDING) | 236 | // 2. 查找待检验行(checkFlag=true 时只有一行 PENDING) |
| 238 | List<MesWmProductProduceLineDO> lines = productProduceLineService.getProductProduceLineListByProduceId(produce.getId()); | 237 | List<MesWmProductProduceLineDO> lines = productProduceLineService.getProductProduceLineListByProduceId(produce.getId()); |
| 239 | - // TODO @AI:hutool 的 findOne 方法,替代掉 stream;手动 if 判断为空,抛出异常; | ||
| 240 | - MesWmProductProduceLineDO pendingLine = lines.stream() | ||
| 241 | - .filter(l -> ObjUtil.equal(l.getQualityStatus(), MesWmQualityStatusEnum.PENDING.getStatus())) | ||
| 242 | - .findFirst() | ||
| 243 | - .orElseThrow(() -> exception(WM_PRODUCT_PRODUCE_LINE_NOT_EXISTS)); | 238 | + MesWmProductProduceLineDO pendingLine = CollUtil.findOne(lines, |
| 239 | + l -> ObjUtil.equal(l.getQualityStatus(), MesWmQualityStatusEnum.PENDING.getStatus())); | ||
| 240 | + if (pendingLine == null) { | ||
| 241 | + throw exception(WM_PRODUCT_PRODUCE_LINE_NOT_EXISTS); | ||
| 242 | + } | ||
| 244 | 243 | ||
| 245 | // 3A. 情况一:存在不合格品数量,需要拆分行 | 244 | // 3A. 情况一:存在不合格品数量,需要拆分行 |
| 246 | if (unqualifiedQty != null && unqualifiedQty.compareTo(BigDecimal.ZERO) > 0) { | 245 | if (unqualifiedQty != null && unqualifiedQty.compareTo(BigDecimal.ZERO) > 0) { |