gaoluyang
7 天以前 6e98da8a58b29ca550f2b5f45564f9ecf7740b5b
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/wm/itemconsume/MesWmItemConsumeServiceImpl.java
@@ -44,7 +44,7 @@
/**
 * MES 物料消耗记录 Service 实现类
 *
 * @author 芋道源码
 * @author 超级管理员
 */
@Service
@Validated
@@ -78,9 +78,10 @@
        if (feedback.getWorkOrderId() == null) {
            throw exception(PRO_FEEDBACK_ROUTE_PROCESS_INVALID);
        }
        // 1.2 查询工单 BOM 物料列表(倒冲按工单投料,非工艺路线)
        List<MesProWorkOrderBomDO> boms = workOrderBomService.getWorkOrderBomListByWorkOrderId(
                feedback.getWorkOrderId());
        // 1.2 查询该倒冲工序的投料 BOM 列表(按报工工序过滤,只扣当前工序的投料明细,
        //     避免把其他工序的投料一并扣除导致多扣物料)
        List<MesProWorkOrderBomDO> boms = workOrderBomService.getWorkOrderBomListByWorkOrderIdAndProcessId(
                feedback.getWorkOrderId(), feedback.getProcessId());
        if (CollUtil.isEmpty(boms)) {
            return null;
        }
@@ -177,6 +178,9 @@
        // 1. 查询消耗明细(detail 级别,包含精确的批次/仓库信息)
        List<MesWmItemConsumeDetailDO> details = itemConsumeDetailService
                .getItemConsumeDetailListByConsumeId(consumeId);
        // 生产订单 ID 冗余到流水,便于出库台账按生产订单追溯
        MesWmItemConsumeDO consume = itemConsumeMapper.selectById(consumeId);
        Long workOrderId = consume != null ? consume.getWorkOrderId() : null;
        // 2. 遍历明细,创建库存事务(按批次精确扣减线边库)
        for (MesWmItemConsumeDetailDO detail : details) {
@@ -191,7 +195,7 @@
                    .setAreaId(detail.getAreaId())
                    .setCheckFlag(false) // 线边库允许负库存
                    .setBizType(MesBizTypeConstants.WM_ITEM_CONSUME)
                    .setBizId(consumeId)
                    .setBizId(consumeId).setWorkOrderId(workOrderId)
                    .setBizCode("")
                    .setBizLineId(detail.getLineId()));
        }