From b65ef39eb77189882ac8ba9b804753905a3e903c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Fri, 12 Jun 2026 14:12:15 +0800 Subject: [PATCH] =?UTF-8?q?feat(srm):=20=E6=B7=BB=E5=8A=A0=E8=B4=A8?= =?UTF-8?q?=E6=A3=80=E5=85=A5=E5=BA=93=E5=8A=9F=E8=83=BD=E5=B9=B6=E4=BC=98?= =?UTF-8?q?=E5=8C=96SAP=E9=9B=86=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在NoScanItemVO中新增储位编号字段 - 将SAP入库接口从ZWM3A17升级到ZWM3A18质检入库接口 - 重构SAP数据传输对象结构以支持质检入库流程 - 添加合格数量和不合格数量分别处理逻辑 - 集成序列号管理功能并在SAP调用中标记启用 - 优化物料凭证回写逻辑以支持质检场景 - 更新日志记录以反映质检入库操作状态 --- .../nflg/wms/common/pojo/vo/NoScanItemVO.java | 5 ++ .../srm/receive/controller/SRMController.java | 50 +++++++++++-------- 2 files changed, 34 insertions(+), 21 deletions(-) diff --git a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/NoScanItemVO.java b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/NoScanItemVO.java index f532103c..f49a727c 100644 --- a/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/NoScanItemVO.java +++ b/nflg-wms-common/src/main/java/com/nflg/wms/common/pojo/vo/NoScanItemVO.java @@ -49,6 +49,11 @@ public class NoScanItemVO { */ private String batchNo; + /** + * 储位编号 + */ + private String binNo; + /** * 是否需要扫码 */ 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 3690a88e..1bd94e5b 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 @@ -13,9 +13,9 @@ import com.nflg.wms.common.pojo.qo.SRMOrderReceiveQO; import com.nflg.wms.common.pojo.qo.SRMQualityInspectionResult; import com.nflg.wms.repository.entity.*; import com.nflg.wms.repository.service.*; -import com.nflg.wms.srm.receive.pojo.dto.ZWM3A17DTO; -import com.nflg.wms.srm.receive.pojo.dto.ZWM3A17Item1DTO; import com.nflg.wms.srm.receive.pojo.dto.ZWM3A17Item2DTO; +import com.nflg.wms.srm.receive.pojo.dto.ZWM3A18DTO; +import com.nflg.wms.srm.receive.pojo.dto.ZWM3A18Item1DTO; import com.nflg.wms.srm.receive.service.SapService; import com.nflg.wms.starter.BaseController; import jakarta.annotation.Resource; @@ -219,40 +219,48 @@ public class SRMController extends BaseController { List inventories = new ArrayList<>(); inventories.add(inventoryDTO); - // 构建SAP入库数据 - ZWM3A17DTO zwm3A17DTO = new ZWM3A17DTO() + // 构建SAP质检入库数据 + ZWM3A18DTO zwm3A18DTO = new ZWM3A18DTO() .setEbeln(data.getPoNum()) - .setUsnam("SRM"); - zwm3A17DTO.getItem1().add(new ZWM3A17Item1DTO() - .setEBELP(data.getPoLineNumber()) - .setMATNR(data.getItemCode()) - .setERFMG(data.getQualifiedQty()) - .setMEINS(data.getUnit()) - .setCHARG(Objects.isNull(data.getMaterialBatch()) ? "" : data.getMaterialBatch()) - .setWERKS(data.getFactory()) - .setLGORT(data.getReceivedWarehouse()) - .setKZKRI("")); + .setUsnam("SRM") + .setMblnr(receiveItem.getMaterialDoc()) + .setMjahr(receiveItem.getMaterialDocYear()); + List item1List = new ArrayList<>(); + item1List.add(new ZWM3A18Item1DTO() + .setErfmg(data.getQualifiedQty().add(data.getUnqualifiedQty())) + .setErfmg1(data.getQualifiedQty()) + .setErfmg2(data.getUnqualifiedQty()) + .setEbelp(data.getPoLineNumber()) + .setMatnr(data.getItemCode()) + .setMeins(data.getUnit()) + .setCharg(Objects.isNull(data.getMaterialBatch()) ? "" : data.getMaterialBatch()) + .setLgort(data.getReceivedWarehouse()) + .setSgtxt("") + .setWerks(data.getFactory())); + zwm3A18DTO.setItem1(item1List); + List item2List = new ArrayList<>(); if (StrUtil.isNotBlank(data.getSerialNum())) { - zwm3A17DTO.getItem2().add(new ZWM3A17Item2DTO() + item2List.add(new ZWM3A17Item2DTO() .setEBELP(data.getPoLineNumber()) - .setFLAG("") + .setFLAG("X") .setSERNR(data.getSerialNum())); } + zwm3A18DTO.setItem2(item2List); // 执行库存入库 log.info("开始本地库存入库, 数量: {}", data.getQualifiedQty()); inventoryService.in(inventories); // 推送到SAP - log.info("开始推送SAP入库, PO: {}, 物料: {}", data.getPoNum(), data.getItemCode()); - Pair, Pair> returnDto = sapService.zwm3a17(zwm3A17DTO); - log.info("SAP入库返回, 物料凭证: {}, 年份: {}", returnDto.getKey().getKey(), returnDto.getValue().getValue()); + log.info("开始推送SAP质检入库, PO: {}, 物料: {}", data.getPoNum(), data.getItemCode()); + Pair returnDto = sapService.zwm3a18(zwm3A18DTO); + log.info("SAP质检入库返回, 物料凭证: {}, 年份: {}", returnDto.getKey(), returnDto.getValue()); // 更新收货明细的物料凭证和入库数量 qcReceiveItemService.lambdaUpdate() .eq(WmsQcReceiveItem::getId, receiveItem.getId()) .set(WmsQcReceiveItem::getInQty, data.getQualifiedQty()) - .set(WmsQcReceiveItem::getMaterialDoc, returnDto.getKey().getKey()) - .set(WmsQcReceiveItem::getMaterialDocYear, returnDto.getValue().getValue()) + .set(WmsQcReceiveItem::getMaterialDoc, returnDto.getKey()) + .set(WmsQcReceiveItem::getMaterialDocYear, returnDto.getValue()) .update(); // 检查并更新收货单完成状态