| | |
| | | /** |
| | | * MES 物料消耗记录 Service 实现类 |
| | | * |
| | | * @author 芋道源码 |
| | | * @author 超级管理员 |
| | | */ |
| | | @Service |
| | | @Validated |
| | |
| | | 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; |
| | | } |
| | |
| | | // 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) { |
| | |
| | | .setAreaId(detail.getAreaId()) |
| | | .setCheckFlag(false) // 线边库允许负库存 |
| | | .setBizType(MesBizTypeConstants.WM_ITEM_CONSUME) |
| | | .setBizId(consumeId) |
| | | .setBizId(consumeId).setWorkOrderId(workOrderId) |
| | | .setBizCode("") |
| | | .setBizLineId(detail.getLineId())); |
| | | } |