From 0ecd8b8c158436b23298b66b64eaef0438b6425b Mon Sep 17 00:00:00 2001
From: zhangherong <571457620@qq.com>
Date: 星期二, 17 六月 2025 09:36:53 +0800
Subject: [PATCH] art: SAP集成测试代码修改

---
 src/main/java/org/jeecg/config/sap/CustomDestinationDataProvider.java |   66 +++++++++++----------
 src/main/java/org/jeecg/modules/sap/service/impl/SAPServiceImpl.java  |    8 +-
 src/main/resources/application-dev.yml                                |    7 +
 src/main/java/org/jeecg/config/sap/SapRfcConnectionManager.java       |   59 ++++---------------
 4 files changed, 58 insertions(+), 82 deletions(-)

diff --git a/src/main/java/org/jeecg/config/sap/CustomDestinationDataProvider.java b/src/main/java/org/jeecg/config/sap/CustomDestinationDataProvider.java
index 3263bc1..2af713a 100644
--- a/src/main/java/org/jeecg/config/sap/CustomDestinationDataProvider.java
+++ b/src/main/java/org/jeecg/config/sap/CustomDestinationDataProvider.java
@@ -1,31 +1,35 @@
-//package org.jeecg.config.sap;
-//
-//import com.sap.conn.jco.ext.*;
-//
-//import java.util.Properties;
-//
-//public class CustomDestinationDataProvider implements DestinationDataProvider {
-//
-//    private final Properties properties = new Properties();
-//
-//    public void addDestination(String destinationName, Properties connectProperties) {
-//        properties.put(destinationName, connectProperties);
-//    }
-//
-//    @Override
-//    public boolean supportsEvents() {
-//        return false;
-//    }
-//
-//    @Override
-//    public void setDestinationDataEventListener(DestinationDataEventListener destinationDataEventListener) {
-//
-//    }
-//
-//    @Override
-//    public Properties getDestinationProperties(String destinationName) {
-//        return properties.getProperty(destinationName) != null
-//                ? (Properties) properties.get(destinationName)
-//                : null;
-//    }
-//}
+package org.jeecg.config.sap;
+
+import com.sap.conn.jco.ext.*;
+
+import java.util.Properties;
+
+public class CustomDestinationDataProvider implements DestinationDataProvider {
+
+    private final String destName;
+    private final Properties properties;
+
+    public CustomDestinationDataProvider(String destName, Properties props) {
+        this.destName = destName;
+        this.properties = props;
+    }
+
+
+    @Override
+    public boolean supportsEvents() {
+        return false;
+    }
+
+    @Override
+    public void setDestinationDataEventListener(DestinationDataEventListener destinationDataEventListener) {
+
+    }
+
+    @Override
+    public Properties getDestinationProperties(String destinationName) {
+        if (destName.equals(destinationName)) {
+            return properties;
+        }
+        return null;
+    }
+}
diff --git a/src/main/java/org/jeecg/config/sap/SapRfcConnectionManager.java b/src/main/java/org/jeecg/config/sap/SapRfcConnectionManager.java
index 5463389..876add9 100644
--- a/src/main/java/org/jeecg/config/sap/SapRfcConnectionManager.java
+++ b/src/main/java/org/jeecg/config/sap/SapRfcConnectionManager.java
@@ -1,19 +1,21 @@
 package org.jeecg.config.sap;
 
-import com.sap.conn.jco.*;
+import com.sap.conn.jco.JCoDestination;
+import com.sap.conn.jco.JCoDestinationManager;
+import com.sap.conn.jco.JCoException;
 import com.sap.conn.jco.ext.DestinationDataProvider;
 import com.sap.conn.jco.ext.Environment;
+import lombok.Getter;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.PostConstruct;
-import java.io.File;
-import java.io.FileOutputStream;
 import java.util.Properties;
 
 @Component
 @Slf4j
+@Getter
 public class SapRfcConnectionManager {
 
     @Value("${sap.rfc.destination}")
@@ -37,10 +39,13 @@
     @Value("${sap.rfc.lang}")
     private String lang;
 
-    private String poolSize = "5";
+    @Value("${sap.rfc.poolSize}")
+    private String poolSize;
 
-    private String idleTimeout = "10000";
+    @Value("${sap.rfc.expirationTime}")
+    private String expirationTime;
 
+    @Value("${sap.rfc.peekLimit}")
     private String peekLimit = "10";
 
     private JCoDestination destination;
@@ -60,53 +65,15 @@
         connectProperties.setProperty(DestinationDataProvider.JCO_LANG, lang);
         connectProperties.setProperty(DestinationDataProvider.JCO_PEAK_LIMIT, peekLimit);
         connectProperties.setProperty(DestinationDataProvider.JCO_POOL_CAPACITY, poolSize);
-        connectProperties.setProperty(DestinationDataProvider.JCO_EXPIRATION_TIME, idleTimeout);
+        connectProperties.setProperty(DestinationDataProvider.JCO_EXPIRATION_TIME, expirationTime);
 
         // 鍒涘缓鍔ㄦ�佺洰鐨勫湴锛堥伩鍏嶄緷璧� SM59 閰嶇疆锛�
-//        CustomDestinationDataProvider provider = new CustomDestinationDataProvider();
-//        provider.addDestination(destinationName, connectProperties);
+        CustomDestinationDataProvider provider = new CustomDestinationDataProvider(destinationName, connectProperties);
 
         // 璁剧疆鍏ㄥ眬鐩殑鍦版彁渚涜��
-//        Environment.registerDestinationDataProvider(provider);
-
-        log.info("properties = " + connectProperties);
-
-        //鐢熸垚閰嶇疆鏂囦欢锛孞CoDestinationManager.getDestination()璋冪敤鏃朵細闇�瑕佽杩炴帴閰嶇疆鏂囦欢锛屽悗缂�鍚嶉渶瑕佷负jcoDestination
-        FileOutputStream fos = null;
-        String suffix = "jcoDestination";
-        File cfg = new File(destinationName + "." + suffix);
-        if (!cfg.exists()) {
-            try {
-                fos = new FileOutputStream(cfg, false);
-                connectProperties.store(fos, "for tests only !");
-                fos.close();
-            } catch (Exception var9) {
-                throw new Exception("Unable to create the destination file " + cfg.getName(), var9);
-            } finally {
-                if (null != fos) {
-                    fos.close();
-                }
-            }
-        }
+        Environment.registerDestinationDataProvider(provider);
 
         // 鑾峰彇鐩殑鍦�
         this.destination = JCoDestinationManager.getDestination(destinationName);
-    }
-
-    /**
-     *
-     * @return
-     */
-    public JCoDestination getDestination() {
-        return destination;
-    }
-
-    /**
-     *
-     */
-    public void destroy() {
-        if (destination != null) {
-//            destination;
-        }
     }
 }
\ No newline at end of file
diff --git a/src/main/java/org/jeecg/modules/sap/service/impl/SAPServiceImpl.java b/src/main/java/org/jeecg/modules/sap/service/impl/SAPServiceImpl.java
index 4bcd205..665b844 100644
--- a/src/main/java/org/jeecg/modules/sap/service/impl/SAPServiceImpl.java
+++ b/src/main/java/org/jeecg/modules/sap/service/impl/SAPServiceImpl.java
@@ -11,6 +11,9 @@
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.Arrays;
+import java.util.Collections;
+
 @Service
 @Slf4j
 public class SAPServiceImpl implements SAPService {
@@ -28,9 +31,8 @@
         }
 
         // 璁剧疆杈撳叆鍙傛暟
-//        JCoParameterList input = function.getImportParameterList();
-//        input.setValue("MATERIAL_ID", materialId); // 鍙傛暟鍚嶉渶涓� SAP 鍑芥暟瀹氫箟涓�鑷�
-//        function.getImportParameterList().setValue("MATERIAL_ID", 0);
+        JCoParameterList input = function.getImportParameterList();
+        input.setValue("ZTAB_WERKS", Collections.singletonList("2301")); //鍙傛暟鍚嶉渶涓� SAP 鍑芥暟瀹氫箟涓�鑷�
 
         // 鎵ц璋冪敤
         function.execute(destination);
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index 2dc1942..6a86568 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -317,10 +317,13 @@
     workFolder: D:\\hy_test\\b
 sap:
   rfc:
-    destination: ZPPF_022     # SM59 涓厤缃殑 RFC 鐩爣鍚嶇О
+    destination: SAP_RFC_DEST # 鑷畾涔夌殑鐩爣鍦板潃 RFC 鐩爣鍚嶇О
     ashost: 10.101.0.188      # SAP 涓绘満鍦板潃
     sysnr: '00'               # 绯荤粺缂栧彿
     client: 800               # 瀹㈡埛绔紪鍙�
     user: SLSAP_JK            # 鐢ㄦ埛鍚�
     passwd: 112233            # 瀵嗙爜
-    lang: ZH                  # 璇█
\ No newline at end of file
+    lang: ZH                  # 璇█
+    poolSize: 5               # 绾跨▼姹犳暟閲�
+    expirationTime: 10000     # 杩囨湡鏃堕棿
+    peekLimit: 10             # 宄板��

--
Gitblit v1.9.3