From 9f6dd7f1dfb1303f366df1250c142dbde3a81d90 Mon Sep 17 00:00:00 2001 From: FCD <2453864257@qq.com> Date: Thu, 16 Oct 2025 11:38:19 +0800 Subject: [PATCH] =?UTF-8?q?=E6=88=90=E5=93=81=E6=89=B9=E9=87=8F=E5=85=A5?= =?UTF-8?q?=E5=BA=93=E6=96=B0=E5=A2=9Esap=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/op/system/api/RemoteSapService.java | 4 + .../api/domain/sap/SapHandMadeInStorage.java | 91 +++++++++++++++++++ .../api/factory/RemoteSapFallbackFactory.java | 5 + .../com/op/sap/controller/SapController.java | 9 ++ .../com/op/sap/service/SapOrderService.java | 2 + .../sap/service/impl/SapOrderServiceImpl.java | 62 ++++++++++++- .../impl/WmsProductPutServiceImpl.java | 38 +++++++- 7 files changed, 204 insertions(+), 7 deletions(-) create mode 100644 op-api/op-api-system/src/main/java/com/op/system/api/domain/sap/SapHandMadeInStorage.java diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/RemoteSapService.java b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteSapService.java index cab856c42..01133f13e 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/RemoteSapService.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/RemoteSapService.java @@ -152,6 +152,10 @@ public interface RemoteSapService { public R ObtainSapInventory(@RequestBody(required = false) SapZmesGetMchb sapZmesGetMchb); @PostMapping("/sap/sapZmesAnlaGet") public R sapZmesAnlaGet(@RequestBody(required = false) Map paramMap); + + @PostMapping("/sap/handMadeInStorage") + public R handMadeInStorage(@RequestBody List list); + } diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/domain/sap/SapHandMadeInStorage.java b/op-api/op-api-system/src/main/java/com/op/system/api/domain/sap/SapHandMadeInStorage.java new file mode 100644 index 000000000..7fe9e15bf --- /dev/null +++ b/op-api/op-api-system/src/main/java/com/op/system/api/domain/sap/SapHandMadeInStorage.java @@ -0,0 +1,91 @@ +package com.op.system.api.domain.sap; + +/** + * remark 手持入库实体类 + * + * @author 019117 + * @date + */ +public class SapHandMadeInStorage { + + /** + * 物料描述 + */ + private String materialDesc; + + /** + * 物料编码 + */ + private String materialCode; + + /** 批次号 **/ + private String batchCode; + + /** 工厂号 **/ + private String factoryNo; + + /** 仓库 **/ + private String warehouse; + + /** 创建人 **/ + private String createBy; + + /** 创建时间 yyyymmdd **/ + private String createTime; + + public String getMaterialDesc() { + return materialDesc; + } + + public void setMaterialDesc(String materialDesc) { + this.materialDesc = materialDesc; + } + + public String getMaterialCode() { + return materialCode; + } + + public void setMaterialCode(String materialCode) { + this.materialCode = materialCode; + } + + public String getBatchCode() { + return batchCode; + } + + public void setBatchCode(String batchCode) { + this.batchCode = batchCode; + } + + public String getFactoryNo() { + return factoryNo; + } + + public void setFactoryNo(String factoryNo) { + this.factoryNo = factoryNo; + } + + public String getWarehouse() { + return warehouse; + } + + public void setWarehouse(String warehouse) { + this.warehouse = warehouse; + } + + public String getCreateBy() { + return createBy; + } + + public void setCreateBy(String createBy) { + this.createBy = createBy; + } + + public String getCreateTime() { + return createTime; + } + + public void setCreateTime(String createTime) { + this.createTime = createTime; + } +} diff --git a/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteSapFallbackFactory.java b/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteSapFallbackFactory.java index 15b438725..0e15409a6 100644 --- a/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteSapFallbackFactory.java +++ b/op-api/op-api-system/src/main/java/com/op/system/api/factory/RemoteSapFallbackFactory.java @@ -188,6 +188,11 @@ public class RemoteSapFallbackFactory implements FallbackFactory list) { + return R.fail("手持成品物料收货入库失败" + throwable.getMessage()); + } + }; } } diff --git a/op-modules/op-sap/src/main/java/com/op/sap/controller/SapController.java b/op-modules/op-sap/src/main/java/com/op/sap/controller/SapController.java index 967ef67dc..fccbe7843 100644 --- a/op-modules/op-sap/src/main/java/com/op/sap/controller/SapController.java +++ b/op-modules/op-sap/src/main/java/com/op/sap/controller/SapController.java @@ -643,4 +643,13 @@ public class SapController extends BaseController { public R ObtainSapInventory(@RequestBody(required = false) SapZmesGetMchb sapZmesGetMchb) { return sapItemSyncService.ObtainSapInventory(sapZmesGetMchb); } + + /** + * 手持成品物料收货入库 + * **/ + @PostMapping("/handMadeInStorage") + @Log(title = "手持成品物料收货入库", businessType = BusinessType.SAP) + public R handMadeInStorage(@RequestBody List list) { + return sapOrderService.handMadeInStorage(list); + } } diff --git a/op-modules/op-sap/src/main/java/com/op/sap/service/SapOrderService.java b/op-modules/op-sap/src/main/java/com/op/sap/service/SapOrderService.java index a3fe16e0b..77d22d55d 100644 --- a/op-modules/op-sap/src/main/java/com/op/sap/service/SapOrderService.java +++ b/op-modules/op-sap/src/main/java/com/op/sap/service/SapOrderService.java @@ -60,4 +60,6 @@ public interface SapOrderService { R sapPOrderGoodsReceipt(List> mapList); R shopOrderBomUpdate(List> mapList); + + R handMadeInStorage(List list); } diff --git a/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapOrderServiceImpl.java b/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapOrderServiceImpl.java index 45c6078b9..3d9cfa653 100644 --- a/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapOrderServiceImpl.java +++ b/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapOrderServiceImpl.java @@ -10,13 +10,9 @@ import com.op.common.core.utils.StringUtils; import com.op.common.core.utils.uuid.IdUtils; import com.op.sap.domain.vo.SapOrderReceiptQuery; -import com.op.system.api.domain.sap.SapPurchaseOrderQuery; +import com.op.system.api.domain.sap.*; import com.op.sap.service.SapOrderService; -import com.op.system.api.domain.sap.SapCloseOrderQuery; -import com.op.system.api.domain.sap.SapCreateOrder; -import com.op.system.api.domain.sap.SapRFW; -import com.op.system.api.domain.sap.SapShopOrderQuery; import com.op.system.api.model.SapProOrder; import com.sap.conn.jco.*; @@ -685,6 +681,62 @@ public class SapOrderServiceImpl implements SapOrderService { return R.ok(successMsg); } + + //手持成品物料收货入库 + @Override + public R handMadeInStorage(List list) { + String msg = null; + try { + + log.info("手持成品物料收货入库-----" + JSONObject.toJSONString(list)); + JCoRepository repository = dest.getRepository(); + JCoFunction func = repository.getFunction("ZMB_MODIFY_ZMMKW"); + + if (func == null) { + throw new RuntimeException("Function does not exist in SAP"); + } + if (!list.isEmpty()) { + + func.getImportParameterList().setValue("P_WRITE", "X"); + + JCoTable table = func.getTableParameterList().getTable("IN_ZMMKW"); + + for (SapHandMadeInStorage item : list) { + table.appendRow(); + //物料编码 + table.setValue("MATNR", item.getMaterialCode()); + //物料描述 + table.setValue("MAKTX", item.getMaterialCode()); + //批次 + table.setValue("CHARG", item.getBatchCode()); + //工厂 + table.setValue("WERKS", item.getFactoryNo()); + //区位 + table.setValue("ABLAD", item.getWarehouse()); + //状态 + table.setValue("ZTYPE", "1"); + //修改人 + table.setValue("ZNAME", item.getCreateBy()); + //修改日期 + table.setValue("ZMDDAT", item.getCreateTime()); + } + + func.execute(dest); + + msg = func.getExportParameterList().getString("RETMSG"); + String code = func.getExportParameterList().getString("RETCODE"); + + return R.ok(); + } else { + log.error("接收的数据为空"); + return R.fail("接收的数据为空"); + } + } catch (Exception e) { + log.error(msg + e.getMessage()); + return R.fail(msg); + } + } + } diff --git a/op-modules/op-wms/src/main/java/com/op/wms/service/impl/WmsProductPutServiceImpl.java b/op-modules/op-wms/src/main/java/com/op/wms/service/impl/WmsProductPutServiceImpl.java index f46825267..eb15e763b 100644 --- a/op-modules/op-wms/src/main/java/com/op/wms/service/impl/WmsProductPutServiceImpl.java +++ b/op-modules/op-wms/src/main/java/com/op/wms/service/impl/WmsProductPutServiceImpl.java @@ -11,9 +11,11 @@ import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder; import com.op.common.core.domain.R; import com.op.common.core.utils.DateUtils; +import com.op.common.core.utils.StringUtils; import com.op.common.core.utils.uuid.IdUtils; import com.op.common.security.utils.SecurityUtils; import com.op.system.api.RemoteQualityService; +import com.op.system.api.domain.sap.SapHandMadeInStorage; import com.op.system.api.domain.wms.wmsReportWork; import com.op.system.api.RemoteSapService; import com.op.wms.domain.*; @@ -1253,9 +1255,21 @@ public class WmsProductPutServiceImpl implements IWmsProductPutService { String formattedDate = dateFormat.format(date);//批次 List wmsProductPutList = wmsProductPut.getWmsProductPut();//前端下栏保存的数据 + //用于写入sap + List sapHandMadeInStorageList = new ArrayList<>(); + String SUCCESS = "操作成功"; - for (WmsProductPut wmsProductPut1 : - wmsProductPutList) { + for (WmsProductPut wmsProductPut1 : wmsProductPutList) { + SapHandMadeInStorage sapHandMadeInStorage = new SapHandMadeInStorage(); + sapHandMadeInStorage.setMaterialDesc(wmsProductPut1.getProductName()); + sapHandMadeInStorage.setMaterialCode(wmsProductPut1.getProductCode()); + sapHandMadeInStorage.setBatchCode(getBatchCode(wmsProductPut1.getBatchNumber())); + sapHandMadeInStorage.setWarehouse(wmsProductPut1.getWaCode()); + sapHandMadeInStorage.setFactoryNo(wmsProductPut.getFactoryCode()); + sapHandMadeInStorage.setCreateTime(DateUtils.parseDateToStr("yyyyMMdd", new Date())); + sapHandMadeInStorage.setCreateBy(wmsProductPut.getCreateBy()); + + sapHandMadeInStorageList.add(sapHandMadeInStorage); //根据下面的记录--先查询对应订单,如果有原来的订单的话,就在原来的订单上进行修改,如果没有就先插入,如果有就修改数量 WmsProductPut wmsProductPutk = new WmsProductPut(); //wms_product_put @@ -1368,6 +1382,7 @@ public class WmsProductPutServiceImpl implements IWmsProductPutService { // wmsProductPutMapper.updateProOrderWorkorderBatchPallet(wmsProductPut1.getSn()); } + remoteSapService.handMadeInStorage(sapHandMadeInStorageList); return SUCCESS; }finally { DynamicDataSourceContextHolder.poll(); @@ -1375,6 +1390,25 @@ public class WmsProductPutServiceImpl implements IWmsProductPutService { } + /** 获取批次号 **/ + private String getBatchCode(String str){ + String batchCode = ""; + + if (StringUtils.isBlank(str)){ + throw new RuntimeException("批次号为空!"); + } + + if (str.length() == 24){ + //截取12位到22位 + batchCode = str.substring(12,22); + }else { + batchCode = str; + } + + return batchCode; + } + + @Override public List selectQueryFinishedProductSalesTS(WmsSellOutEmbryo wmsSellOutEmbryo) { //wms_sell_out_embryo