From e97a81a2dfa9af61ccdb818577b826c200a20740 Mon Sep 17 00:00:00 2001 From: zhangke Date: Fri, 5 Sep 2025 21:42:52 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A5=E6=94=B6=E8=B4=A8=E6=A3=80=E7=89=A9?= =?UTF-8?q?=E6=96=99=E7=9A=84=E6=8E=A5=E5=8F=A3=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admin/controller/NormalPGIController.java | 2 + .../admin/controller/NormalQMController.java | 131 ++++++++++++------ .../service/NormalQMControllerService.java | 20 ++- .../mapper/WmsQcReceiveItemMapper.java | 2 +- .../service/IWmsQcReceiveItemService.java | 2 +- .../impl/WmsQcReceiveItemServiceImpl.java | 4 +- .../mapper/WmsQcReceiveItemMapper.xml | 4 +- .../srm/receive/controller/SRMController.java | 10 +- 8 files changed, 118 insertions(+), 57 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 ac945382..b1bd5875 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 @@ -161,6 +161,7 @@ public class NormalPGIController extends BaseController { .setOrderNo(order.getNoteNum()) .setCreateUserName(UserUtil.getUserName()) .setFactoryCode(order.getIuCode()) + .setIsCheck(false) .setCreateUserId(UserUtil.getUserId()); List wmsPoReceiptItems = new ArrayList<>(); @@ -615,6 +616,7 @@ public class NormalPGIController extends BaseController { .setPoNum(item.getPoNum()) .setPoLineNumber(item.getPoLineNumber()) .setReceiveId(receiveId) + .setCheckQty(BigDecimal.valueOf(0)) .setMaterialDoc("") .setMaterialDocYear(""); diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/NormalQMController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/NormalQMController.java index 7a01e7b9..ba7bd16e 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/NormalQMController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/NormalQMController.java @@ -2,6 +2,7 @@ package com.nflg.wms.admin.controller; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.StrUtil; import com.nflg.wms.admin.pojo.document.SrmMaterialReceiptScanCodes; import com.nflg.wms.admin.pojo.dto.*; import com.nflg.wms.admin.service.NormalPGIControllerService; @@ -118,8 +119,7 @@ public class NormalQMController extends BaseController { .apply("check_qty>in_qty") .list(); - if (CollectionUtil.isNotEmpty(wmsQcReceiveItems)) - VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(request)).throwMessage("不存在待入库的物料(或此物料已入库)"); + VUtil.trueThrowBusinessError(CollectionUtil.isEmpty(request)).throwMessage("不存在待入库的物料(或此物料已入库)"); //首先根据采购单的编号进行分类 List poNums = request.stream() @@ -140,22 +140,22 @@ public class NormalQMController extends BaseController { .filter(q -> q.getPoNum().equals(poNum)) .collect(Collectors.toList()); if (CollectionUtil.isNotEmpty(qcReceiveTaskConfirmQOS)) { - for (QCReceiveTaskConfirmQO item : qcReceiveTaskConfirmQOS) { WmsQcReceiveItem wmsQcReceiveItem = wmsQcReceiveItems.stream() .filter(wmsQcReceiveItem1 -> wmsQcReceiveItem1.getId().equals(item.getId())) .findFirst() .orElse(null); - if (Objects.isNull(wmsQcReceiveItem)) + if (Objects.isNull(wmsQcReceiveItem)) { continue; + } - ZWM3A18DTO zwm3A18DTO = new ZWM3A18DTO() + qcReceiveDTO.setZwm3a18DTO(new ZWM3A18DTO() .setEbeln(item.getPoNum()) .setUsnam(UserUtil.getUserName()) .setMblnr(wmsQcReceiveItem.getMaterialDoc()) .setMjahr(wmsQcReceiveItem.getMaterialDocYear()) .setItem1(new ArrayList<>()) - .setItem2(new ArrayList<>()); + .setItem2(new ArrayList<>())); //获取质检物料信息 List qualityInspections = wmsSrmQualityInspectionService.lambdaQuery() @@ -163,11 +163,12 @@ public class NormalQMController extends BaseController { .eq(WmsSrmQualityInspection::getIsIn, false) .list(); - if (CollectionUtil.isEmpty(qualityInspections)) + if (CollectionUtil.isEmpty(qualityInspections)) { continue; + } // 储位变化的信息 - if (!item.getStorageLocation().equals(item.getStorageLocationNew())) { + if (StrUtil.isNotBlank(item.getStorageLocationNew()) && !item.getStorageLocation().equals(item.getStorageLocationNew())) { List bins = Arrays.asList(item.getStorageLocation().split("/")); qcReceiveDTO.getStorageLocationDTOS().add(new StorageLocationDTO() .setBinNos(bins) @@ -179,7 +180,7 @@ public class NormalQMController extends BaseController { // 组装SAP信息 for (WmsSrmQualityInspection code : qualityInspections) { //SAP 信息 - set3A18DTOS(zwm3A18DTO, code, item); + set3A18DTOS(qcReceiveDTO.getZwm3a18DTO(), code, item); //修改物料状态 qcReceiveDTO.getQcIdList().add(code.getId()); // 计算物料的质检信息 @@ -197,24 +198,52 @@ public class NormalQMController extends BaseController { // 库存信息 if (code.getUnqualifiedQty().compareTo(BigDecimal.ZERO) > 0) { - // 不合格品数量大于0时的处理逻辑 - qcReceiveDTO.getUnqualifiedInventories().add(new InventoryDTO() - .setMaterialNo(code.getItemCode()) - .setFactoryNo(code.getFactory()) - .setWarehouseNo("9004") // 不合格仓固定 - .setNum(code.getUnqualifiedQty()) - .setBatchNumber(code.getMaterialBatch()) - ); + InventoryDTO inventoryDTO = qcReceiveDTO.getUnqualifiedInventories() + .stream() + .filter(inventoryDTO1 -> + inventoryDTO1.getMaterialNo().equals(code.getItemCode()) + && inventoryDTO1.getWarehouseNo().equals("9004") + && inventoryDTO1.getBatchNumber().equals(code.getMaterialBatch()) + && inventoryDTO1.getFactoryNo().equals(code.getFactory())) + .findFirst() + .orElse(null); + + if (Objects.isNull(inventoryDTO)) { + // 不合格品数量大于0时的处理逻辑 + qcReceiveDTO.getUnqualifiedInventories().add(new InventoryDTO() + .setMaterialNo(code.getItemCode()) + .setFactoryNo(code.getFactory()) + .setWarehouseNo("9004") // 不合格仓固定 + .setNum(code.getUnqualifiedQty()) + .setBatchNumber(code.getMaterialBatch()) + ); + } else { + inventoryDTO.setNum(inventoryDTO.getNum().add(code.getUnqualifiedQty())); + } } if (code.getQualifiedQty().compareTo(BigDecimal.ZERO) > 0) { // 合格品数量大于0时的处理逻辑 - qcReceiveDTO.getUnqualifiedInventories().add(new InventoryDTO() - .setMaterialNo(code.getItemCode()) - .setFactoryNo(code.getFactory()) - .setWarehouseNo(item.getReceivedWarehouse()) // 不合格仓固定 - .setNum(code.getQualifiedQty()) - .setBatchNumber(code.getMaterialBatch()) - ); + InventoryDTO inventoryDTO = qcReceiveDTO.getQualifiednventories() + .stream() + .filter(inventoryDTO1 -> + inventoryDTO1.getMaterialNo().equals(code.getItemCode()) + && inventoryDTO1.getWarehouseNo().equals(item.getReceivedWarehouse()) + && inventoryDTO1.getBatchNumber().equals(code.getMaterialBatch()) + && inventoryDTO1.getFactoryNo().equals(code.getFactory())) + .findFirst() + .orElse(null); + + if (Objects.isNull(inventoryDTO)) { + qcReceiveDTO.getQualifiednventories().add(new InventoryDTO() + .setMaterialNo(code.getItemCode()) + .setFactoryNo(code.getFactory()) + .setWarehouseNo(item.getReceivedWarehouse()) // 不合格仓固定 + .setNum(code.getQualifiedQty()) + .setBatchNumber(code.getMaterialBatch()) + ); + } else { + inventoryDTO.setNum(inventoryDTO.getNum().add(code.getQualifiedQty())); + } } } } @@ -229,24 +258,42 @@ public class NormalQMController extends BaseController { private void set3A18DTOS(ZWM3A18DTO zwm3A18DTO, WmsSrmQualityInspection code, QCReceiveTaskConfirmQO item) { - ZWM3A18Item1DTO item1DTO = new ZWM3A18Item1DTO() - .setErfmg(code.getInspectionQty()) - .setErfmg1(code.getQualifiedQty()) - .setErfmg2(code.getUnqualifiedQty()) - .setEbelp(Integer.valueOf(code.getPoLineNumber())) - .setMatnr(code.getItemCode()) - .setMeins(code.getUnit()) - .setCharg(code.getMaterialBatch()) - .setLgort(item.getReceivedWarehouse()) - .setSgtxt("") - .setWerks(code.getFactory()); - zwm3A18DTO.getItem1().add(item1DTO); - String flag = code.getInspectionResult().equals("合格") ? "X" : ""; - ZWM3A17Item2DTO item2DTO = new ZWM3A17Item2DTO() - .setEBELP(code.getPoLineNumber()) - .setFLAG(code.getSerialNum()) - .setFLAG(flag); - zwm3A18DTO.getItem2().add(item2DTO); + ZWM3A18Item1DTO item1DTO = zwm3A18DTO.getItem1().stream() + .filter(dto -> + dto.getEbelp().equals(Integer.valueOf(code.getPoLineNumber())) + && dto.getMatnr().equals(code.getItemCode()) + && dto.getMeins().equals(code.getUnit()) + && dto.getCharg().equals(code.getMaterialBatch()) + && dto.getLgort().equals(item.getReceivedWarehouse()) + && dto.getWerks().equals(item.getReceivedWarehouse()) + ) + .findFirst() + .orElse(null); + if (Objects.isNull(item1DTO)) { + item1DTO = new ZWM3A18Item1DTO() + .setErfmg(code.getInspectionQty()) + .setErfmg1(code.getQualifiedQty()) + .setErfmg2(code.getUnqualifiedQty()) + .setEbelp(Integer.valueOf(code.getPoLineNumber())) + .setMatnr(code.getItemCode()) + .setMeins(code.getUnit()) + .setCharg(code.getMaterialBatch()) + .setLgort(item.getReceivedWarehouse()) + .setSgtxt("") + .setWerks(code.getFactory()); + zwm3A18DTO.getItem1().add(item1DTO); + } else { + item1DTO.setErfmg1(item1DTO.getErfmg1().add(code.getQualifiedQty())); + item1DTO.setErfmg2(item1DTO.getErfmg2().add(code.getUnqualifiedQty())); + } + if (StrUtil.isNotBlank(code.getSerialNum())) { + String flag = code.getInspectionResult().equals("合格") ? "X" : ""; + ZWM3A17Item2DTO item2DTO = new ZWM3A17Item2DTO() + .setEBELP(code.getPoLineNumber()) + .setFLAG(code.getSerialNum()) + .setFLAG(flag); + zwm3A18DTO.getItem2().add(item2DTO); + } } } diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/NormalQMControllerService.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/NormalQMControllerService.java index 5acc16ca..f4b85190 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/NormalQMControllerService.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/NormalQMControllerService.java @@ -2,6 +2,7 @@ package com.nflg.wms.admin.service; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.lang.Pair; +import cn.hutool.core.util.ObjectUtil; import com.nflg.wms.admin.pojo.dto.QCReceiveDTO; import com.nflg.wms.common.pojo.vo.QCTaskItemScanCodesVO; import com.nflg.wms.common.pojo.vo.QCTaskItemVO; @@ -20,6 +21,7 @@ import org.springframework.transaction.annotation.Transactional; import java.math.BigDecimal; import java.time.LocalDateTime; +import java.util.ArrayList; import java.util.List; import java.util.Objects; @@ -50,6 +52,10 @@ public class NormalQMControllerService { .eq(WmsSrmQualityInspection::getReceiveId, taskItemVO.getId()) .eq(WmsSrmQualityInspection::getIsIn, false) .list(); + if (CollectionUtil.isEmpty(taskItemVO.getScanCodes())) { + taskItemVO.setScanCodes(new ArrayList<>()); + } + if (CollectionUtil.isNotEmpty(qualityInspections)) { qualityInspections.forEach(code -> { @@ -63,9 +69,14 @@ public class NormalQMControllerService { .setQualifiedQty(code.getQualifiedQty()) .setUnqualifiedQty(code.getUnqualifiedQty()) ); - taskItemVO.setUnqualifiedQty(taskItemVO.getUnqualifiedQty().add(code.getUnqualifiedQty())); - taskItemVO.setQualifiedQty(taskItemVO.getQualifiedQty().add(code.getQualifiedQty())); - taskItemVO.setInQty(code.getQualifiedQty().add(code.getUnqualifiedQty())); + taskItemVO.setUnqualifiedQty( + ObjectUtil.defaultIfNull(taskItemVO.getUnqualifiedQty(), BigDecimal.ZERO) + .add(ObjectUtil.defaultIfNull(code.getUnqualifiedQty(), BigDecimal.ZERO))); + taskItemVO.setQualifiedQty( + ObjectUtil.defaultIfNull(taskItemVO.getQualifiedQty(), BigDecimal.ZERO) + .add(ObjectUtil.defaultIfNull(code.getQualifiedQty(), BigDecimal.ZERO))); + taskItemVO.setInQty(ObjectUtil.defaultIfNull(code.getQualifiedQty(), BigDecimal.ZERO) + .add(ObjectUtil.defaultIfNull(code.getUnqualifiedQty(), BigDecimal.ZERO))); }); } } @@ -78,8 +89,9 @@ public class NormalQMControllerService { @Transactional public void confirmReceive(List qcReceiveDTOS) { - if (CollectionUtil.isEmpty(qcReceiveDTOS)) + if (CollectionUtil.isEmpty(qcReceiveDTOS)) { return; + } for (QCReceiveDTO qcReceiveDTO : qcReceiveDTOS) { //库存处理 if (CollectionUtil.isNotEmpty(qcReceiveDTO.getQualifiednventories())) { diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsQcReceiveItemMapper.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsQcReceiveItemMapper.java index 236b1aa4..9da25288 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsQcReceiveItemMapper.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/mapper/WmsQcReceiveItemMapper.java @@ -19,7 +19,7 @@ public interface WmsQcReceiveItemMapper extends BaseMapper { List getTaskItem(Long taskId); - void updateCheckNum(String receiveNum, String noteNum, String lineNumber, String itemCode); + void updateCheckNum(BigDecimal InspectionQty, String noteNum, String lineNumber, String itemCode, String materialDoc); void updateInQty(Long id, BigDecimal inQty, BigDecimal unqualifiedQty, BigDecimal qualifiedQty); } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsQcReceiveItemService.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsQcReceiveItemService.java index 66fcafb6..94ff3189 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsQcReceiveItemService.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/IWmsQcReceiveItemService.java @@ -21,7 +21,7 @@ public interface IWmsQcReceiveItemService extends IService { List getTaskItem(@Valid @NotNull Long taskId); - void updateCheckNum(String receiveNum, String noteNum, String lineNumber, String itemCode); + void updateCheckNum(BigDecimal InspectionQty, String noteNum, String lineNumber, String itemCode,String materialDoc); void updateInQty(Long id, BigDecimal inQty,BigDecimal unqualifiedQty,BigDecimal qualifiedQty); } diff --git a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsQcReceiveItemServiceImpl.java b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsQcReceiveItemServiceImpl.java index 8632f984..45ec0959 100644 --- a/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsQcReceiveItemServiceImpl.java +++ b/nflg-wms-repository/src/main/java/com/nflg/wms/repository/service/impl/WmsQcReceiveItemServiceImpl.java @@ -27,8 +27,8 @@ public class WmsQcReceiveItemServiceImpl extends ServiceImpl update wms_qc_receive_item - set check_qty=check_qty + #{ inspectionQty} + set check_qty=check_qty + #{InspectionQty} where note_num = #{ noteNum} and line_number = #{ lineNumber} - and material_doc = #{ materialDoc} + and material_doc = #{materialDoc} and item_code = #{ itemCode} diff --git a/nflg-wms-srm-receive/src/main/java/com/nflg/wms/srm/receive/controller/SRMController.java b/nflg-wms-srm-receive/src/main/java/com/nflg/wms/srm/receive/controller/SRMController.java index f386a984..0bae10a0 100644 --- a/nflg-wms-srm-receive/src/main/java/com/nflg/wms/srm/receive/controller/SRMController.java +++ b/nflg-wms-srm-receive/src/main/java/com/nflg/wms/srm/receive/controller/SRMController.java @@ -119,8 +119,9 @@ public class SRMController extends BaseController { /** * SRM 推送质检单到WMS */ - @Transactional + @PostMapping("/SendNFInspect") + @Transactional public Object receiveQualityInspection(@RequestBody SRMQualityInspectionResult request) { SRMQualityInspectionResultDTO data = JSONUtil.toBean(request.getJsonstring(), SRMQualityInspectionResultDTO.class); List inspects = srmQualityInspectionService.lambdaQuery() @@ -152,7 +153,7 @@ public class SRMController extends BaseController { .setSupplerNum(data.getSupplierNum()) .setInspectionType(data.getInspectionType()) .setPoLineNumber(String.valueOf(data.getPoLineNumber())) - .setInspectionQty(ObjectUtil.defaultIfNull(data.getInspectionQty(), BigDecimal.ZERO)) + .setInspectionQty(data.getQualifiedQty().add(data.getUnqualifiedQty())) .setItemName(data.getItemName()) .setUnit(data.getUnit()) .setReceivedWarehouse(data.getReceivedWarehouse()) @@ -165,17 +166,16 @@ public class SRMController extends BaseController { .setSerialNum(data.getSerialNum()) .setLineNumber(data.getLineNumber()) .setNoteNum(data.getNoteNum()) - .setReceiveId(receiveItem.getReceiveId()) + .setReceiveId(receiveItem.getId()) .setIsIn(false) .setAcceptTime(LocalDateTime.now()); try { srmQualityInspectionService.save(inspect); qcReceiveService.lambdaUpdate() .eq(WmsQcReceive::getOrderNo, inspect.getNoteNum()) - .eq(WmsQcReceive::getIsCheck, false) .set(WmsQcReceive::getIsCheck, true) .update(); - qcReceiveItemService.updateCheckNum(inspect.getReceiveNum(), inspect.getNoteNum(), inspect.getLineNumber(), inspect.getItemCode()); + qcReceiveItemService.updateCheckNum(inspect.getInspectionQty(), inspect.getNoteNum(), inspect.getLineNumber(), inspect.getItemCode(), inspect.getReceiveNum()); log.error("质检单生成上架任务成功"); return 0; } catch (Exception ex) {