From 801bf00af5a4c8689fc71390ab4da777c0ff4add Mon Sep 17 00:00:00 2001 From: Yangwl <1726150332@qq.com> Date: Thu, 14 Dec 2023 15:03:34 +0800 Subject: [PATCH] =?UTF-8?q?SAP=E7=9A=84=E5=82=A8=E4=BD=8D=E4=BB=93?= =?UTF-8?q?=E5=BA=93=E4=BF=A1=E6=81=AF=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/factory/RemoteSapFallbackFactory.java | 5 + .../com/op/sap/controller/SapController.java | 31 +++ .../com/op/sap/service/SapOrderService.java | 2 + .../com/op/sap/service/SapWmsService.java | 13 ++ .../sap/service/impl/SapWmsServicelmpl.java | 208 ++++++++++++++++++ 6 files changed, 263 insertions(+) create mode 100644 op-modules/op-sap/src/main/java/com/op/sap/service/SapWmsService.java create mode 100644 op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapWmsServicelmpl.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 79dcc7d50..c5812c6cd 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 @@ -74,4 +74,8 @@ public interface RemoteSapService { /**订单物料领料过账、原材料补料、订单物料退料过账接口(MB1A)**/ public R sapMaterialPosting(@RequestBody List sapMaterialPostingList); + + /**智慧工厂储位信息*/ + @PostMapping("/sap/sapLgortInfo") + public R sapLgortInfo(@RequestBody(required = false) Map map); } 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 6d6fff031..ab9a85ea0 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 @@ -89,6 +89,11 @@ public class RemoteSapFallbackFactory implements FallbackFactory map) { + 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 22ea9ab7b..db102a018 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 @@ -53,6 +53,9 @@ public class SapController extends BaseController { @Autowired private SapBomMapper sapBomMapper; + @Autowired + private SapWmsService sapWmsService; + /**====================主数据相关===================================================================================*/ /** * 物料同步接口 @@ -414,4 +417,32 @@ public class SapController extends BaseController { return sapOrderService.sapOrderReceipt(sapOrderReceiptQuery); } + /**================================WMS=============================*/ + + /** + * 智慧工厂储位信息 + * @param map + * @return + */ + @PostMapping("/sapLgortInfo") + @Log(title = "智慧工厂储位信息", businessType = BusinessType.SAP) + public R sapLgortInfo(@RequestBody(required = false) Map map){ + return sapWmsService.sapLgortInfo(map); + } + + /** + * 成品下线入库 + *ZMES_201_MB1A(新增) + * ZMES_961_MB1A + * ZMES_962_MB1A + * @param + * @return + */ + + @PostMapping("/sapProductWarehousing") + @Log(title = "成品下线入库", businessType = BusinessType.SAP) + public R sapProductWarehousing(@RequestBody(required = false) List> mapList){ + return sapWmsService.sapProductWarehousing(mapList); + } + } 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 f59d44633..4cdf12d2a 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 @@ -54,4 +54,6 @@ public interface SapOrderService { R shopUpdateSync(SapShopOrderQuery sapProOrder); R sapOrderReceipt(SapOrderReceiptQuery sapOrderReceiptQuery); + + } diff --git a/op-modules/op-sap/src/main/java/com/op/sap/service/SapWmsService.java b/op-modules/op-sap/src/main/java/com/op/sap/service/SapWmsService.java new file mode 100644 index 000000000..cd4eac1a3 --- /dev/null +++ b/op-modules/op-sap/src/main/java/com/op/sap/service/SapWmsService.java @@ -0,0 +1,13 @@ +package com.op.sap.service; + +import com.op.common.core.domain.R; + +import java.util.List; +import java.util.Map; + +public interface SapWmsService { + + R sapLgortInfo(Map map); + + R sapProductWarehousing(List> mapList); +} diff --git a/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapWmsServicelmpl.java b/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapWmsServicelmpl.java new file mode 100644 index 000000000..5be3897d4 --- /dev/null +++ b/op-modules/op-sap/src/main/java/com/op/sap/service/impl/SapWmsServicelmpl.java @@ -0,0 +1,208 @@ +package com.op.sap.service.impl; + +import com.op.common.core.domain.R; +import com.op.common.core.utils.StringUtils; +import com.op.sap.service.SapWmsService; +import com.sap.conn.jco.*; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Component +@Service +public class SapWmsServicelmpl implements SapWmsService { + private static final Logger log = LoggerFactory.getLogger(SapWmsServicelmpl.class); + + @Autowired + private JCoDestination dest; + + @Override + public R sapLgortInfo(Map map) { + try { + JCoRepository repository = dest.getRepository(); + JCoFunction func = repository.getFunction("ZMES_GET_LGORT"); + if (func == null) { + throw new RuntimeException("Function does not exist in SAP"); + } + log.info("获取储位信息入参-------"+map.toString()); + if (!StringUtils.isNull(map.get("S_WERKS"))){ + JCoTable S_MATNR = func.getTableParameterList().getTable("S_WERKS"); + S_MATNR.appendRow(); + S_MATNR.setValue("SIGN", "I"); + S_MATNR.setValue("OPTION", "EQ"); + S_MATNR.setValue("LOW", map.get("S_WERKS")); + } + func.execute(dest);//执行调用函数 + // 获取 内表 - ZMES_PRO + JCoTable maraTable = func.getTableParameterList().getTable("LT_LGORT"); + /** + * WERKS 工厂 + * LGORT 库存地点 + * LGOBE 仓储地点的描述 + * ZTYPE 已冻结标识 + */ + List mapList=new ArrayList<>(); + for (int i = 0; i > mapList) { + try { + JCoRepository repository = dest.getRepository(); + JCoFunction func = repository.getFunction("ZMES_PRODUCT_MB1A"); + if (func == null) { + throw new RuntimeException("Function does not exist in SAP"); + } + log.info("成品移动ZMES_PRODUCT_MB1A-------"+mapList.toString()); + /** + AUFNR 订单号 + POSNR 订单项目编号 + BWART 移动类型(库存管理) + PLANT 工厂 + LGORT 库存地点 + KOSTL 成本中心 + MATNR 物料号 + QUANTITY 数量 + MEINS 基本计量单位 + BATCH 批号 + HSDAT 生产日期 + VFDAT 货架寿命到期日 + */ + JCoTable L_ITEM = func.getTableParameterList().getTable("L_ITEM"); + System.out.println(L_ITEM); + System.out.println( L_ITEM.getNumRows()); + for (int i=1;i<10;i++){ + L_ITEM.appendRow(); + L_ITEM.setValue("AUFNR", "01234567890"+String.valueOf(i)); + L_ITEM.setValue("POSN", "012"+String.valueOf(i)); + L_ITEM.setValue("POSN", "012"+String.valueOf(i)); + L_ITEM.setValue("POSN", "012"+String.valueOf(i)); + } + System.out.println(L_ITEM); +// if (!StringUtils.isNull(map.get("AUFNR"))){ +// JCoTable S_MATNR = func.getTableParameterList().getTable("AUFNR"); +// S_MATNR.appendRow(); +// S_MATNR.setValue("SIGN", "I"); +// S_MATNR.setValue("OPTION", "EQ"); +// S_MATNR.setValue("LOW", map.get("AUFNR")); +// } +// if (!StringUtils.isNull(map.get("POSNR"))){ +// JCoTable S_MATNR = func.getTableParameterList().getTable("POSNR"); +// S_MATNR.appendRow(); +// S_MATNR.setValue("SIGN", "I"); +// S_MATNR.setValue("OPTION", "EQ"); +// S_MATNR.setValue("LOW", map.get("POSNR")); +// } +// if (!StringUtils.isNull(map.get("BWART"))){ +// JCoTable S_MATNR = func.getTableParameterList().getTable("BWART"); +// S_MATNR.appendRow(); +// S_MATNR.setValue("SIGN", "I"); +// S_MATNR.setValue("OPTION", "EQ"); +// S_MATNR.setValue("LOW", map.get("BWART")); +// } +// if (!StringUtils.isNull(map.get("PLANT"))){ +// JCoTable S_MATNR = func.getTableParameterList().getTable("PLANT"); +// S_MATNR.appendRow(); +// S_MATNR.setValue("SIGN", "I"); +// S_MATNR.setValue("OPTION", "EQ"); +// S_MATNR.setValue("LOW", map.get("PLANT")); +// } +// if (!StringUtils.isNull(map.get("LGORT"))){ +// JCoTable S_MATNR = func.getTableParameterList().getTable("LGORT"); +// S_MATNR.appendRow(); +// S_MATNR.setValue("SIGN", "I"); +// S_MATNR.setValue("OPTION", "EQ"); +// S_MATNR.setValue("LOW", map.get("LGORT")); +// } +// if (!StringUtils.isNull(map.get("KOSTL"))){ +// JCoTable S_MATNR = func.getTableParameterList().getTable("KOSTL"); +// S_MATNR.appendRow(); +// S_MATNR.setValue("SIGN", "I"); +// S_MATNR.setValue("OPTION", "EQ"); +// S_MATNR.setValue("LOW", map.get("KOSTL")); +// } +// if (!StringUtils.isNull(map.get("MATNR"))){ +// JCoTable S_MATNR = func.getTableParameterList().getTable("MATNR"); +// S_MATNR.appendRow(); +// S_MATNR.setValue("SIGN", "I"); +// S_MATNR.setValue("OPTION", "EQ"); +// S_MATNR.setValue("LOW", map.get("MATNR")); +// } +// if (!StringUtils.isNull(map.get("QUANTITY"))){ +// JCoTable S_MATNR = func.getTableParameterList().getTable("QUANTITY"); +// S_MATNR.appendRow(); +// S_MATNR.setValue("SIGN", "I"); +// S_MATNR.setValue("OPTION", "EQ"); +// S_MATNR.setValue("LOW", map.get("QUANTITY")); +// } +// if (!StringUtils.isNull(map.get("MEINS"))){ +// JCoTable S_MATNR = func.getTableParameterList().getTable("MEINS"); +// S_MATNR.appendRow(); +// S_MATNR.setValue("SIGN", "I"); +// S_MATNR.setValue("OPTION", "EQ"); +// S_MATNR.setValue("LOW", map.get("MEINS")); +// } +// if (!StringUtils.isNull(map.get("BATCH"))){ +// JCoTable S_MATNR = func.getTableParameterList().getTable("BATCH"); +// S_MATNR.appendRow(); +// S_MATNR.setValue("SIGN", "I"); +// S_MATNR.setValue("OPTION", "EQ"); +// S_MATNR.setValue("LOW", map.get("BATCH")); +// } +// func.execute(dest);//执行调用函数 +// // 获取 内表 - ZMES_PRO +// JCoTable maraTable = func.getTableParameterList().getTable("LT_LGORT"); +// +// List mapList=new ArrayList<>(); +// for (int i = 0; i