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 9e85ac25..57d439d4 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 @@ -426,8 +426,8 @@ public class NormalPGIController extends BaseController { .setWmsQcReceiveItems(wmsQcReceiveItems) .setSrmMaterialReceiptScanCodes(srmMaterialReceiptScanCodes) .setOrderId(order.getId()) - .setInventories(inventories) - .setZwm3A17DTOS(zwm3A17DTOS) + // .setInventories(inventories) + // .setZwm3A17DTOS(zwm3A17DTOS) .setQrCodes(qrCodes) .setQcMaterialSyncDTOS(qcMaterialSyncDTOS); dtos.add(dto); @@ -1537,7 +1537,6 @@ public class NormalPGIController extends BaseController { VUtil.trueThrowBusinessError(ObjectUtil.isNull(pacageScanVO)).throwMessage("打包码不存在"); VUtil.trueThrowBusinessError(pacageScanVO.getPackageStatus() == 0).throwMessage("此打包码尚未打包"); VUtil.trueThrowBusinessError(pacageScanVO.getPackageStatus() == 2).throwMessage("此打包码已完成收货"); - List pdaOrderVO = normalPGIControllerService.getPackageContents(request.getPackageCode()); return ApiResult.success(pdaOrderVO); } @@ -1565,13 +1564,14 @@ public class NormalPGIController extends BaseController { .list(); if (CollectionUtil.isNotEmpty(warehouseList)) { List warehouseNoList = warehouseList.stream().map(WmsWarehouse::getName).collect(Collectors.toList()); - VUtil.trueThrowBusinessError(true).throwMessage("仓库[" + warehouseNoList.stream().collect(Collectors.joining(";")) + "]"); + VUtil.trueThrowBusinessError(true).throwMessage("仓库[" + warehouseNoList.stream().collect(Collectors.joining(";")) + "]不允许免扫码收货"); } List dtos = wmsPackageService.getPackageItemDetails(request.getPackageCode()); + List packItemId = dtos.stream().map(WmsPackageItemDetailDTO::getPackageItemId).distinct().collect(Collectors.toList()); //对中码进行一个操作 - List parentIds = dtos.stream().filter(dto -> dto.getPackagingType() == 0) + List parentIds = dtos.stream().filter(dto -> dto.getPackagingType() == 1) .map(WmsPackageItemDetailDTO::getBarcodeId).collect(Collectors.toList()); if (CollectionUtil.isNotEmpty(parentIds)) { @@ -1628,16 +1628,17 @@ public class NormalPGIController extends BaseController { } qoItem.setScanCodes(scanCodes); receiptQOS.add(qoItem); + qo.setReceiptQOS(receiptQOS); } - qo.setReceiptQOS(receiptQOS); + receipts.add(qo); } //开始收货 - GoodReceipt(receipts, pacageScanVO.getId()); + GoodReceipt(receipts, pacageScanVO.getId(), packItemId); return ApiResult.success(); } - private void GoodReceipt(List receipts, Long packageId) { + private void GoodReceipt(List receipts, Long packageId, List packItemId) { VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(receipts)).throwMessage("收货参数为空"); List dtos = new ArrayList<>(); for (SrmReceiptQO request : receipts) { @@ -1645,8 +1646,6 @@ public class NormalPGIController extends BaseController { List wmsQcReceiveItems = new ArrayList<>(); List srmMaterialReceiptScanCodes = new ArrayList<>(); List qcMaterialSyncDTOS = new ArrayList<>(); - List inventories = new ArrayList<>(); - List zwm3A17DTOS = new ArrayList<>(); List qrCodes = new ArrayList<>(); WmsSrmOrder order = wmsSrmOrderService.lambdaQuery().eq(WmsSrmOrder::getNoteNum, request.getDeliveryNo()).one(); VUtil.trueThrowBusinessError(Objects.isNull(order)).throwMessage("收货单不存在"); @@ -1670,6 +1669,7 @@ public class NormalPGIController extends BaseController { .setIsCheck((short) 0) .setSourceType(0) .setCreateUserId(UserUtil.getUserId()); + //TODO for (SrmMaterialReceiptQO item : request.getReceiptQOS()) { if (item.getReceiptNum().equals(BigDecimal.ZERO)) { continue; @@ -1705,108 +1705,22 @@ public class NormalPGIController extends BaseController { qrCodes.add(qrCodeMaster); } } else { - 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); - } + 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); } + // } } //========= } @@ -1817,13 +1731,31 @@ public class NormalPGIController extends BaseController { .setWmsQcReceiveItems(wmsQcReceiveItems) .setSrmMaterialReceiptScanCodes(srmMaterialReceiptScanCodes) .setOrderId(order.getId()) - .setInventories(inventories) - .setZwm3A17DTOS(zwm3A17DTOS) + // .setInventories(inventories) + // .setZwm3A17DTOS(zwm3A17DTOS) + .setPackItemIds(packItemId) .setQrCodes(qrCodes) .setQcMaterialSyncDTOS(qcMaterialSyncDTOS); dtos.add(dto); } normalPGIControllerService.takeDeliveryByPackage(dtos, packageId); + + List wmsPackageItems = wmsPackageItemService.lambdaQuery() + .eq(WmsPackageItem::getPackageId, packageId) + .eq(WmsPackageItem::getPackageStatus, 0) + .list(); + if (CollectionUtil.isNotEmpty(wmsPackageItems)) { + wmsPackageService.lambdaUpdate() + .set(WmsPackage::getPackageStatus, 3) + .eq(WmsPackage::getId, packageId) + .update(); + } else { + wmsPackageService.lambdaUpdate() + .set(WmsPackage::getPackageStatus, 2) + .eq(WmsPackage::getId, packageId) + .update(); + } + } /** @@ -1843,6 +1775,7 @@ public class NormalPGIController extends BaseController { VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(request.getItems())).throwMessage("没有收货的物料信息"); List receipts = new ArrayList<>(); List orderNos = request.getItems().stream().map(it -> it.getNoteNum()).distinct().toList(); + List packItemId = new ArrayList<>(); for (String orderNo : orderNos) { SrmReceiptQO receipt = new SrmReceiptQO(); receipt.setDeliveryNo(orderNo); @@ -1852,6 +1785,14 @@ public class NormalPGIController extends BaseController { VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(item.getScanCodes())).throwMessage("[" + item.getItemCode() + "]没有码信息"); //对项目进行处理 for (PDAScanCodeQO code : item.getScanCodes()) { + WmsPackageItem packItem = wmsPackageItemService.lambdaQuery() + .eq(WmsPackageItem::getPackageId, pacageScanVO.getId()) + .eq(WmsPackageItem::getBarcodeCode, code.getCodeId()) + .one(); + VUtil.trueThrowBusinessError(Objects.isNull(packItem)).throwMessage("无效码【" + code.getCodeId() + "】"); + VUtil.trueThrowBusinessError(packItem.getPackageStatus() == 2).throwMessage("此码【" + code.getCodeId() + "】已完成收货"); + packItemId.add(packItem.getId()); + WmsQrCodeMaster qrCodeMaster = qrCodeMasterService.lambdaQuery() .eq(WmsQrCodeMaster::getBarcodeCode, code.getCodeId()) .one(); @@ -1877,7 +1818,7 @@ public class NormalPGIController extends BaseController { receipt.setReceiptQOS(items); receipts.add(receipt); } - GoodReceipt(receipts, pacageScanVO.getId()); + GoodReceipt(receipts, pacageScanVO.getId(), packItemId); return ApiResult.success(); } } diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/pojo/dto/GoodReceiptDTO.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/pojo/dto/GoodReceiptDTO.java index eabc4274..5fff3698 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/pojo/dto/GoodReceiptDTO.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/pojo/dto/GoodReceiptDTO.java @@ -47,17 +47,22 @@ public class GoodReceiptDTO { private Long orderId; /** - * 库存数据 + * 包装项ID */ - private List inventories; + private List packItemIds; - /** - *同步库存到SAP的数据 - */ - private List zwm3A17DTOS; +// /** +// * 库存数据 +// */ +// private List inventories; + +// /** +// *同步库存到SAP的数据 +// */ +// private List zwm3A17DTOS; /** * 条码数据 */ - private List qrCodes; + private List qrCodes; } diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/NormalPGIControllerService.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/NormalPGIControllerService.java index e82d5467..2a335dae 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/NormalPGIControllerService.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/NormalPGIControllerService.java @@ -552,13 +552,13 @@ public class NormalPGIControllerService { public List getPackageContents(@NotNull @NotBlank String packageCode) { List packagePOItems = wmsPackageService.getPackagePOItems(packageCode); - VUtil.trueThrowBusinessError(CollectionUtil.isNotEmpty(packagePOItems)).throwMessage("此大包中的物料已完成收货"); + VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(packagePOItems)).throwMessage("此大包中的物料已完成收货"); List orderItemVOList = new ArrayList<>(); // 遍历订单行项目,填充详细信息并从 SAP 获取补充数据 for (PackagePOItemDTO item : packagePOItems) { PDAOrderItemVO itemVO = new PDAOrderItemVO(); - itemVO.setId(item.getSrmOrderId()); + itemVO.setId(item.getSrmOrderItemId()); itemVO.setPoLineNumber(item.getPoLineNumber()); itemVO.setPoNum(item.getPoNumber()); itemVO.setItemCode(item.getMaterialCode()); @@ -595,33 +595,16 @@ public class NormalPGIControllerService { takeDelivery(dto.getWmsPoReceipt(), dto.getWmsQcReceive(), dto.getWmsPoReceiptItems(), dto.getWmsQcReceiveItems() , dto.getSrmMaterialReceiptScanCodes(), dto.getQcMaterialSyncDTOS(), dto.getOrderId() ); - //入库 - if (CollectionUtil.isNotEmpty(dto.getInventories())) { - inventoryService.in(dto.getInventories()); - } - //过账SAP - if (CollectionUtil.isNotEmpty(dto.getZwm3A17DTOS())) { - for (ZWM3A17DTO zwm3A17DTO : dto.getZwm3A17DTOS()) { - Pair, Pair> returnDto = sapService.zwm3a17(zwm3A17DTO); - wmsPoReceiptItemService.lambdaUpdate() - .eq(WmsPoReceiptItem::getPoNum, zwm3A17DTO.getEbeln()) - .eq(WmsPoReceiptItem::getReceiveId, zwm3A17DTO.getReceiveId()) - .set(WmsPoReceiptItem::getMaterialDoc, returnDto.getKey().getKey()) - .set(WmsPoReceiptItem::getMaterialDocYear, returnDto.getValue().getValue()) - .update(); - } + if (CollectionUtil.isNotEmpty(dto.getPackItemIds())) { + wmsPackageItemService.lambdaUpdate() + .set(WmsPackageItem::getPackageStatus, (short) 2) + .in(WmsPackageItem::getId, dto.getPackItemIds()) + .update(); } + //编码管理 if (CollectionUtil.isNotEmpty(dto.getQrCodes())) { qrCodeMasterService.updateBarCode(dto.getQrCodes()); - // 修改包装项的收货状态 - if (Objects.nonNull(packageId) && packageId > 0) { - List codeIds = dto.getQrCodes().stream().map(WmsQrCodeMaster::getBarcodeCode).toList(); - wmsPackageItemService.lambdaUpdate() - .eq(WmsPackageItem::getPackageId, packageId) - .in(WmsPackageItem::getBarcodeCode, codeIds) - .set(WmsPackageItem::getPackageStatus, (short) 2); - } } } } diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/SAPCommonService.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/SAPCommonService.java index 946639ba..bcd9f4e0 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/SAPCommonService.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/SAPCommonService.java @@ -43,6 +43,7 @@ public class SAPCommonService { syncParams.setWerks(materialInfoInOrder.getWerks()); syncParams.setLbprt(materialInfoInOrder.getLbprt()); syncParams.setKzkri(materialInfoInOrder.getKzkri()); + syncParams.setWarehouseNo(materialInfoInOrder.getWarehouseNo()); //获取仓库信息 // List warehouseNos = new ArrayList<>(); diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/PackagePOItemDTO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/PackagePOItemDTO.java index c32980c5..12597906 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/PackagePOItemDTO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/dto/PackagePOItemDTO.java @@ -19,7 +19,7 @@ public class PackagePOItemDTO { /** * 送货单项ID */ - private Long srmOrderId; + private Long srmOrderItemId; /** * 供应商编号 diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsWarehouseServiceImpl.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsWarehouseServiceImpl.java index 69c8d651..cbc79221 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsWarehouseServiceImpl.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsWarehouseServiceImpl.java @@ -43,7 +43,9 @@ public class WmsWarehouseServiceImpl extends ServiceImpl