From e29f43f20f2f2d4492824c592f99a9083182f89a Mon Sep 17 00:00:00 2001 From: zhangke Date: Sat, 7 Mar 2026 21:45:13 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E6=94=B6=E8=B4=A7=E7=9B=B4?= =?UTF-8?q?=E6=8E=A5=E5=85=A5=E5=BA=93=E7=9A=84=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/controller/NormalPGIController.java | 249 +++++++++++++++--- 1 file changed, 215 insertions(+), 34 deletions(-) diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/NormalPGIController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/NormalPGIController.java index 72a9bb6d..f9c34418 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/NormalPGIController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/NormalPGIController.java @@ -213,11 +213,39 @@ public class NormalPGIController extends BaseController { List srmMaterialReceiptScanCodes = new ArrayList<>(); List qcMaterialSyncDTOS = new ArrayList<>(); + List inventories = new ArrayList<>(); + List zwm3A17DTOS = new ArrayList<>(); + List qrCodes = new ArrayList<>(); for (SrmMaterialReceiptQO item : request) { if (item.getReceiptNum().equals(BigDecimal.ZERO)) continue; +// 处理二维码 + for (PDAScanCodeQO code : item.getScanCodes()) { + WmsQrCodeMaster qrCodeMaster = qrCodeMasterService.lambdaQuery() + .eq(WmsQrCodeMaster::getBarcodeCode, code.getCodeId()) + .one(); + VUtil.trueThrowBusinessError(Objects.isNull(qrCodeMaster)).throwMessage("无效码【" + code.getCodeId() + "】"); + if (qrCodeMaster.getPackagingType().equals(1)) { + code.setCodeNum(BigDecimal.ZERO); + List childCode= qrCodeMasterService.lambdaQuery() + .eq(WmsQrCodeMaster::getParentBarcodeId, qrCodeMaster.getId()) + .list(); + VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(childCode)).throwMessage("箱码【" + code.getCodeId() + "】为空箱"); + for (WmsQrCodeMaster child : childCode) + { + item.getScanCodes().add(new PDAScanCodeQO() + .setBatchNumber(child.getBatchNo()) + .setSerialNumbers(child.getSerialNo()) + .setCodeId(child.getBarcodeCode()) + .setCodeNum(child.getQuantity()) + .setCodeContent(child.getPackagingType().toString()) + ); + } + } + } + SAPSyncParamsDTO materialInfoInOrder = sapSyncParamsDTOS.stream() .filter(sapSyncParamsDTO -> @@ -238,44 +266,173 @@ public class NormalPGIController extends BaseController { // 如果是质检单 if (isQuality) { setQcMaterialSyncDto(qcMaterialSyncDTOS, item, order, codes, materialInfoInOrder, wmsQcReceiveItems, wmsQcReceive.getId(), orderItemId); + for (PDAScanCodeQO code : item.getScanCodes()) { + // 处理条码 + WmsQrCodeMaster qrCodeMaster = wmsQrCodeMasterService.lambdaQuery() + .eq(WmsQrCodeMaster::getBarcodeCode, code.getCodeId()) + .one(); + VUtil.trueThrowBusinessError(Objects.isNull(qrCodeMaster)).throwMessage("无效码【" + code.getCodeId() + "】"); + qrCodeMaster.setLastScanTime(LocalDateTime.now()); + qrCodeMaster.setLastScanBy(UserUtil.getUserId()); + qrCodeMaster.setLastScanByname(UserUtil.getUserName()); + qrCodeMaster.setProcessStage(BarCodeProcessStage.Checking.getState()); + qrCodeMaster.setReceiptItemId(orderItemId); + qrCodes.add(qrCodeMaster); + } } else { - setPoReceive(item, wmsPoReceiptItems, wmsPoReceipt.getId(), materialInfoInOrder, orderItemId); + //判断是否存在没有启用储位管理的仓库 + WmsWarehouse warehouse = wmsWarehouseService.lambdaQuery().eq(WmsWarehouse::getNo, item.getReceivedWarehouse()).one(); + if (!warehouse.getIsDisableLocation()) { + //设置收货明细项 + setPoReceiveByIn(item, wmsPoReceiptItems, wmsPoReceipt.getId(), materialInfoInOrder, orderItemId); + //设置SAP过账接口 + ZWM3A17DTO zwm3A17DTO = zwm3A17DTOS.stream() + .filter(zwm3A17DTO1 -> zwm3A17DTO1.getEbeln().equals(item.getPoNum())) + .findFirst() + .orElse(null); + if (Objects.isNull(zwm3A17DTO)) { + zwm3A17DTO = new ZWM3A17DTO() + .setEbeln(item.getPoNum()) + .setUsnam(UserUtil.getUserName()) + .setReceiveId(orderItemId) + .setItem1(new ArrayList<>()) + .setItem2(new ArrayList<>()); + zwm3A17DTOS.add(zwm3A17DTO); + } + List item1 = zwm3A17DTO.getItem1(); + List item2 = zwm3A17DTO.getItem2(); + for (PDAScanCodeQO code : item.getScanCodes()) { + // 处理条码 + WmsQrCodeMaster qrCodeMaster = wmsQrCodeMasterService.lambdaQuery() + .eq(WmsQrCodeMaster::getBarcodeCode, code.getCodeId()) + .one(); + VUtil.trueThrowBusinessError(Objects.isNull(qrCodeMaster)).throwMessage("无效码【" + code.getCodeId() + "】"); + qrCodeMaster.setLastScanTime(LocalDateTime.now()); + qrCodeMaster.setLastScanBy(UserUtil.getUserId()); + qrCodeMaster.setLastScanByname(UserUtil.getUserName()); + qrCodeMaster.setProcessStage(BarCodeProcessStage.InBound.getState()); + qrCodeMaster.setReceiptItemId(orderItemId); + qrCodes.add(qrCodeMaster); + if (qrCodeMaster.getPackagingType().equals(1)) { + continue; + } + // 库存 + InventoryDTO inventoryDTO = inventories.stream() + .filter(inventoriesDTO -> inventoriesDTO.getMaterialNo().equals(item.getItemCode()) + && inventoriesDTO.getBatchNo().equals(code.getBatchNumber()) + && inventoriesDTO.getSerialNo().equals(code.getSerialNumbers()) + && inventoriesDTO.getFactoryNo().equals(wmsPoReceipt.getFactoryCode()) + && inventoriesDTO.getWarehouseNo().equals(item.getReceivedWarehouse()) + ).findFirst().orElse(null); + if (Objects.isNull(inventoryDTO)) { + inventoryDTO = new InventoryDTO() + .setMaterialNo(item.getItemCode()) + .setFactoryNo(wmsPoReceipt.getFactoryCode()) + .setWarehouseNo(item.getReceivedWarehouse()) + .setBatchNo(code.getBatchNumber()) + .setSerialNo(code.getSerialNumbers()) + .setNum(code.getCodeNum()); + inventories.add(inventoryDTO); + } else { + inventoryDTO.setNum(inventoryDTO.getNum().add(code.getCodeNum())); + } + ZWM3A17Item1DTO ietm1Dto = item1.stream() + .filter(dto1 -> + dto1.getEBELP().equals(item.getPoLineNumber()) + && dto1.getMATNR().equals(item.getItemCode()) + && dto1.getMeins().equals(item.getUomCode()) + && dto1.getCHARG().equals(code.getBatchNumber()) + && dto1.getWERKS().equals(wmsPoReceipt.getFactoryCode()) + && dto1.getLGORT().equals(item.getReceivedWarehouse()) + ).findFirst().orElse(null); + if (Objects.isNull(ietm1Dto)) { + item1.add(new ZWM3A17Item1DTO() + .setEBELP(item.getPoLineNumber()) + .setMATNR(item.getItemCode()) + .setERFMG(code.getCodeNum()) + .setMEINS(item.getUomCode()) + .setCHARG(code.getBatchNumber()) + .setWERKS(wmsPoReceipt.getFactoryCode()) + .setLGORT(item.getReceivedWarehouse()) + .setKZKRI("") + ); + } else { + ietm1Dto.setERFMG(ietm1Dto.getERFMG().add(code.getCodeNum())); + } + + item2.add(new ZWM3A17Item2DTO() + .setEBELP(item.getPoLineNumber()) + .setFLAG("") + .setSERNR(code.getSerialNumbers())); + } + //................... + } else { + setPoReceive(item, wmsPoReceiptItems, wmsPoReceipt.getId(), materialInfoInOrder, orderItemId); + for (PDAScanCodeQO code : item.getScanCodes()) { + // 处理条码 + WmsQrCodeMaster qrCodeMaster = wmsQrCodeMasterService.lambdaQuery() + .eq(WmsQrCodeMaster::getBarcodeCode, code.getCodeId()) + .one(); + VUtil.trueThrowBusinessError(Objects.isNull(qrCodeMaster)).throwMessage("无效码【" + code.getCodeId() + "】"); + qrCodeMaster.setLastScanTime(LocalDateTime.now()); + qrCodeMaster.setLastScanBy(UserUtil.getUserId()); + qrCodeMaster.setLastScanByname(UserUtil.getUserName()); + qrCodeMaster.setStorageLocation(materialInfoInOrder.getWarehouseNo()); + qrCodeMaster.setProcessStage(BarCodeProcessStage.Received.getState()); + qrCodeMaster.setReceiptItemId(orderItemId); + qrCodes.add(qrCodeMaster); + } + } } } // 盘点条码是否重复 - Map duplicateCodes = srmMaterialReceiptScanCodes.stream() - .collect(Collectors.groupingBy( - SrmMaterialReceiptScanCodes::getCodeId, - Collectors.counting() - )) - .entrySet() - .stream() - .filter(entry -> entry.getValue() > 1) - .collect(Collectors.toMap( - Map.Entry::getKey, - Map.Entry::getValue - )); - - VUtil.trueThrowBusinessError(CollectionUtil.isNotEmpty(duplicateCodes)).throwMessage("存在重复条码"); - qrCodeMasterService.saveBatch( - srmMaterialReceiptScanCodes - .stream() - .map(it -> new WmsQrCodeMaster() - .setBarcodeCode(KeyUtil.next()) - .setProcessStage(BarCodeProcessStage.Received.getState()) - .setBarcodeType(BarCodeType.Disassemble.getState()) - .setMaterialCode(it.getCodeId()) - .setMaterialDescription("") - .setPackagingType((short) 0) - .setQuantity(it.getCodeNum()) - .setReceiptItemId(it.getReceiveItemId()) - .setCreateUserId(UserUtil.getUserId()) - .setCreateUserName(UserUtil.getUserName()) - .setCreateTime(LocalDateTime.now()) - ) - .toList() - ); - normalPGIControllerService.takeDelivery(wmsPoReceipt, wmsQcReceive, wmsPoReceiptItems, wmsQcReceiveItems, srmMaterialReceiptScanCodes, qcMaterialSyncDTOS, order.getId()); +// Map duplicateCodes = srmMaterialReceiptScanCodes.stream() +// .collect(Collectors.groupingBy( +// SrmMaterialReceiptScanCodes::getCodeId, +// Collectors.counting() +// )) +// .entrySet() +// .stream() +// .filter(entry -> entry.getValue() > 1) +// .collect(Collectors.toMap( +// Map.Entry::getKey, +// Map.Entry::getValue +// )); +// +// VUtil.trueThrowBusinessError(CollectionUtil.isNotEmpty(duplicateCodes)).throwMessage("存在重复条码"); +// qrCodeMasterService.saveBatch( +// srmMaterialReceiptScanCodes +// .stream() +// .map(it -> new WmsQrCodeMaster() +// .setBarcodeCode(KeyUtil.next()) +// .setProcessStage(BarCodeProcessStage.Received.getState()) +// .setBarcodeType(BarCodeType.Disassemble.getState()) +// .setMaterialCode(it.getCodeId()) +// .setMaterialDescription("") +// .setPackagingType((short) 0) +// .setQuantity(it.getCodeNum()) +// .setReceiptItemId(it.getReceiveItemId()) +// .setCreateUserId(UserUtil.getUserId()) +// .setCreateUserName(UserUtil.getUserName()) +// .setCreateTime(LocalDateTime.now()) +// ) +// .toList() +// ); + normalPGIControllerService.takeDelivery(wmsPoReceipt, wmsQcReceive, wmsPoReceiptItems, wmsQcReceiveItems, srmMaterialReceiptScanCodes, qcMaterialSyncDTOS, order.getId()); + List dtos = new ArrayList<>(); + GoodReceiptDTO dto = new GoodReceiptDTO() + .setWmsPoReceipt(wmsPoReceipt) + .setWmsQcReceive(wmsQcReceive) + .setWmsPoReceiptItems(wmsPoReceiptItems) + .setWmsQcReceiveItems(wmsQcReceiveItems) + .setSrmMaterialReceiptScanCodes(srmMaterialReceiptScanCodes) + .setOrderId(order.getId()) + .setInventories(inventories) + .setZwm3A17DTOS(zwm3A17DTOS) + .setQrCodes(qrCodes) + .setQcMaterialSyncDTOS(qcMaterialSyncDTOS); + dtos.add(dto); + normalPGIControllerService.takeDeliveryByPackage(dtos, null); return ApiResult.success(); } @@ -1693,6 +1850,30 @@ public class NormalPGIController extends BaseController { for (SrmMaterialReceiptQO item : items) { // 盘点是否有条码 VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(item.getScanCodes())).throwMessage("[" + item.getItemCode() + "]没有码信息"); + //对项目进行处理 + for (PDAScanCodeQO code : item.getScanCodes()) { + WmsQrCodeMaster qrCodeMaster = qrCodeMasterService.lambdaQuery() + .eq(WmsQrCodeMaster::getBarcodeCode, code.getCodeId()) + .one(); + VUtil.trueThrowBusinessError(Objects.isNull(qrCodeMaster)).throwMessage("无效码【" + code.getCodeId() + "】"); + if (qrCodeMaster.getPackagingType().equals(1)) { + code.setCodeNum(BigDecimal.ZERO); + List childCode= qrCodeMasterService.lambdaQuery() + .eq(WmsQrCodeMaster::getParentBarcodeId, qrCodeMaster.getId()) + .list(); + VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(childCode)).throwMessage("箱码【" + code.getCodeId() + "】为空箱"); + for (WmsQrCodeMaster child : childCode) + { + item.getScanCodes().add(new PDAScanCodeQO() + .setBatchNumber(child.getBatchNo()) + .setSerialNumbers(child.getSerialNo()) + .setCodeId(child.getBarcodeCode()) + .setCodeNum(child.getQuantity()) + .setCodeContent(child.getPackagingType().toString()) + ); + } + } + } } receipt.setReceiptQOS(items); receipts.add(receipt);