From 06ecce096b9ba6fec51cef799f7f3858e57a837a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E9=B9=8F=E9=A3=9E?= Date: Mon, 4 Aug 2025 10:29:24 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20sap=E5=8A=9F=E8=83=BD=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/nflg/wms/admin/AdminApplication.java | 4 +- .../wms/admin/controller/TestController.java | 20 +++++-- .../nflg/wms/admin/service/SapService.java | 57 ++++++++++++++++++- .../src/main/resources/application-sit.yml | 2 +- 4 files changed, 76 insertions(+), 7 deletions(-) diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/AdminApplication.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/AdminApplication.java index b647e3bb..e2218e9f 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/AdminApplication.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/AdminApplication.java @@ -1,5 +1,6 @@ package com.nflg.wms.admin; +import com.sap.conn.jco.JCoException; import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -16,13 +17,14 @@ import org.springframework.scheduling.annotation.EnableScheduling; @EnableRetry public class AdminApplication { - public static void main(String[] args) { + public static void main(String[] args) throws JCoException { SpringApplication.run(AdminApplication.class, args); log.info("服务已启动"); // log.info("---------------------- Sa-Token SSO 模式二 Client 端启动成功 ----------------------"); // log.info("配置信息:" + SaSsoManager.getClientConfig()); // SapService sapService= SpringUtil.getBean(SapService.class); +// sapService.zwm00_MB017("1309976"); // log.info(JSONUtil.toJsonStr(sapService.searchOrder("0000101808"))); // log.info(JSONUtil.toJsonStr(sapService.getMaterialInfoInOrder("7500188009","0000101808","2100053760"))); } diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/TestController.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/TestController.java index 0a2461ce..04d47df4 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/TestController.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/controller/TestController.java @@ -5,19 +5,21 @@ import com.nflg.wms.admin.pojo.dto.LdapUserDTO; import com.nflg.wms.admin.service.SapService; import com.nflg.wms.common.pojo.ApiResult; import com.nflg.wms.common.pojo.qo.C_MaterialReturnItemQO; -import com.nflg.wms.repository.entity.Language; import com.nflg.wms.repository.service.ILanguageService; import com.nflg.wms.starter.BaseController; import com.sap.conn.jco.JCoException; import jakarta.annotation.Resource; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotBlank; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; -import tech.powerjob.common.enhance.SafeRunnable; import java.math.BigDecimal; -import java.util.*; -import java.util.stream.Collectors; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; /** * 测试 @@ -89,4 +91,14 @@ public class TestController extends BaseController { public ApiResult> syncUsers() { return ApiResult.success(Collections.emptyList()); } + + /** + * 打印SAP函数参数,需在控制台查看 + * @param functionName SAP函数名 + */ + @GetMapping("/sap/function/params") + public ApiResult printSAPFunctionParams(@Valid @RequestParam @NotBlank String functionName) throws JCoException { + sapService.printMeta(functionName); + return ApiResult.success(); + } } \ No newline at end of file diff --git a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/SapService.java b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/SapService.java index abc39f01..e5538598 100644 --- a/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/SapService.java +++ b/nflg-wms-admin/src/main/java/com/nflg/wms/admin/service/SapService.java @@ -21,7 +21,6 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import java.util.*; -import java.util.stream.Collectors; @Slf4j @Component @@ -354,6 +353,8 @@ public class SapService { private JCoFunction exec(String functionName, Map parameters, Map>> tables) throws JCoException { log.info("SAP functionName:{}", functionName); JCoFunction function = repository.getFunction(functionName); + printMeta(function); + log.info("SAP ImportParameter:{}", JSONUtil.toJsonStr(parameters)); log.info("---{}", function.getImportParameterList().getListMetaData()); @@ -374,4 +375,58 @@ public class SapService { function.execute(destination); return function; } + + public void printMeta(String functionName) throws JCoException { + JCoFunction function = repository.getFunction(functionName); + printMeta(function); + } + + private void printMeta(JCoFunction function){ + log.trace("-------------------------------------------------------"); + log.trace("SAP {} 方法参数信息", function.getName()); + log.trace("-- Import结构"); + printParameterField(function.getImportParameterList()); + log.trace("-- Changing结构"); + printParameterField(function.getChangingParameterList()); + log.trace("-- Export结构"); + printParameterField(function.getExportParameterList()); + log.trace("-- Table结构"); + printParameterField(function.getTableParameterList()); + log.trace("-------------------------------------------------------"); + } + + private void printParameterField(JCoParameterList parameterList){ + if (Objects.nonNull(parameterList)) { + JCoParameterFieldIterator iterator = parameterList.getParameterFieldIterator(); + if (Objects.nonNull(iterator)) { + while (iterator.hasNextField()) { + JCoParameterField field = iterator.nextParameterField(); + log.trace("名称:{},类型:{},描述:{}", field.getName(), field.getTypeAsString(),field.getDescription()); + if (field.isTable()){ + printJCoTable(field.getTable()); + }else if (field.isStructure()){ + printStructure(field.getStructure()); + } + } + } + } + } + + private void printJCoTable(JCoTable table){ + log.trace("Table结构"); + JCoRecordFieldIterator iterator=table.getRecordFieldIterator(); + while (iterator.hasNextField()) { + JCoRecordField field = iterator.nextRecordField(); + log.trace("名称:{},类型:{},描述:{}", field.getName(), field.getTypeAsString(),field.getDescription()); + } + } + + private void printStructure(JCoStructure structure){ + log.trace("Structure结构"); + JCoRecordFieldIterator iterator=structure.getRecordFieldIterator(); + while (iterator.hasNextField()) { + JCoRecordField field = iterator.nextRecordField(); + log.trace("名称:{},类型:{},描述:{}", field.getName(), field.getTypeAsString(),field.getDescription()); + } + } } diff --git a/nflg-wms-admin/src/main/resources/application-sit.yml b/nflg-wms-admin/src/main/resources/application-sit.yml index d11c1864..54cab269 100644 --- a/nflg-wms-admin/src/main/resources/application-sit.yml +++ b/nflg-wms-admin/src/main/resources/application-sit.yml @@ -2,7 +2,7 @@ logging: level: root: info com: - nflg: debug + nflg: trace alibaba: cloud: nacos: debug