| | |
| | | } |
| | | |
| | | /** |
| | | * 从工序列表中提取 BOM 投料,合并去重后保存到工单 BOM 表 |
| | | * 从工序列表中提取 BOM 投料,按工序分别保存到工单 BOM 表 |
| | | */ |
| | | private void saveWorkOrderBomFromProcesses(Long workOrderId, List<MesProWorkOrderProcessSaveReqVO> list) { |
| | | // 收集所有工序的 bomItems,按 itemId 去重(保留第一个出现的 quantity) |
| | | java.util.Map<Long, MesProWorkOrderProcessSaveReqVO.BomItem> merged = new java.util.LinkedHashMap<>(); |
| | | workOrderBomService.deleteWorkOrderBomByWorkOrderId(workOrderId); |
| | | List<MesProWorkOrderBomDO> bomList = new ArrayList<>(); |
| | | for (MesProWorkOrderProcessSaveReqVO item : list) { |
| | | if (CollUtil.isNotEmpty(item.getBomItems())) { |
| | | for (MesProWorkOrderProcessSaveReqVO.BomItem bomItem : item.getBomItems()) { |
| | | if (bomItem.getItemId() != null) { |
| | | merged.putIfAbsent(bomItem.getItemId(), bomItem); |
| | | bomList.add(MesProWorkOrderBomDO.builder() |
| | | .workOrderId(workOrderId) |
| | | .processId(item.getProcessId()) |
| | | .itemId(bomItem.getItemId()) |
| | | .quantity(bomItem.getQuantity()) |
| | | .remark(bomItem.getRemark()) |
| | | .build()); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | // 删除旧 BOM,批量插入新 BOM |
| | | workOrderBomService.deleteWorkOrderBomByWorkOrderId(workOrderId); |
| | | if (CollUtil.isNotEmpty(merged)) { |
| | | List<MesProWorkOrderBomDO> bomList = new ArrayList<>(merged.size()); |
| | | for (MesProWorkOrderProcessSaveReqVO.BomItem bomItem : merged.values()) { |
| | | bomList.add(MesProWorkOrderBomDO.builder() |
| | | .workOrderId(workOrderId) |
| | | .itemId(bomItem.getItemId()) |
| | | .quantity(bomItem.getQuantity()) |
| | | .remark(bomItem.getRemark()) |
| | | .build()); |
| | | } |
| | | if (CollUtil.isNotEmpty(bomList)) { |
| | | workOrderBomMapper.insertBatch(bomList); |
| | | } |
| | | } |