From 694ef7f821e9178fcf8569a0249b4ba96a4541fa Mon Sep 17 00:00:00 2001
From: zhangherong <571457620@qq.com>
Date: 星期一, 11 八月 2025 09:12:10 +0800
Subject: [PATCH] art: WebService集成

---
 src/main/java/org/jeecg/modules/wms/request/ReceiveMESScanItemList.java                 |    4 +
 src/main/java/org/jeecg/config/Swagger2Config.java                                      |   79 +++++++++----------
 src/main/java/org/jeecg/modules/wms/config/WebServiceClientConfig.java                  |    4 +
 src/main/java/org/jeecg/modules/wms/dto/WSResponse.java                                 |    6 +
 src/main/resources/application-dev.yml                                                  |    6 -
 src/main/resources/application-prod.yml                                                 |    3 
 src/main/java/org/jeecg/modules/wms/config/WebServiceServerConfig.java                  |   39 +++++++++
 pom.xml                                                                                 |   16 +++
 src/main/java/org/jeecg/modules/wms/service/impl/ReceiveWMSScanItemListServiceImpl.java |   14 +++
 src/main/java/org/jeecg/modules/wms/CxfClientUtil.java                                  |   32 ++++++++
 src/main/java/org/jeecg/modules/wms/service/ReceiveWMSScanItemListService.java          |    8 ++
 11 files changed, 163 insertions(+), 48 deletions(-)

diff --git a/pom.xml b/pom.xml
index 40acc8d..559fb4f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -58,6 +58,8 @@
         <!-- Log4j2鐖嗛浄婕忔礊 -->
         <log4j2.version>2.17.0</log4j2.version>
         <logback.version>1.2.9</logback.version>
+        <!-- webservice -->
+        <cxf.version>3.2.4</cxf.version>
     </properties>
 
     <repositories>
@@ -220,17 +222,27 @@
             <artifactId>java-jwt</artifactId>
             <version>${java-jwt.version}</version>
         </dependency>
+        <!-- WebService -->
+        <dependency>
+            <groupId>org.springframework.boot</groupId>
+            <artifactId>spring-boot-starter-web-services</artifactId>
+        </dependency>
+<!--        <dependency>-->
+<!--            <groupId>org.apache.cxf</groupId>-->
+<!--            <artifactId>cxf-spring-boot-starter-jaxws</artifactId>-->
+<!--            <version>${cxf.version}</version>-->
+<!--        </dependency>-->
 
         <!-- CXF webservice -->
         <dependency>
             <groupId>org.apache.cxf</groupId>
             <artifactId>cxf-spring-boot-starter-jaxws</artifactId>
-            <version>3.2.1</version>
+            <version>${cxf.version}</version>
         </dependency>
         <dependency>
             <groupId>org.apache.cxf</groupId>
             <artifactId>cxf-rt-transports-http</artifactId>
-            <version>3.2.1</version>
+            <version>${cxf.version}</version>
         </dependency>
 
         <!--shiro-->
diff --git a/src/main/java/org/jeecg/config/Swagger2Config.java b/src/main/java/org/jeecg/config/Swagger2Config.java
index 1fb1a97..17afa0c 100644
--- a/src/main/java/org/jeecg/config/Swagger2Config.java
+++ b/src/main/java/org/jeecg/config/Swagger2Config.java
@@ -101,29 +101,6 @@
                 .groupName("MDC");
     }
 
-    /**
-     * swagger2鐨勯厤缃枃浠讹紝杩欓噷鍙互閰嶇疆swagger2鐨勪竴浜涘熀鏈殑鍐呭锛屾瘮濡傛壂鎻忕殑鍖呯瓑绛� 锛圖NC锛�
-     *
-     * @return Docket
-     */
-    @Bean(value = "defaultApiDnc")
-    public Docket defaultApi3() {
-        return new Docket(DocumentationType.SWAGGER_2)
-                .apiInfo(apiInfo())
-                .select()
-                //姝ゅ寘璺緞涓嬬殑绫伙紝鎵嶇敓鎴愭帴鍙f枃妗�
-                .apis(RequestHandlerSelectors.basePackage("org.jeecg.modules.dnc"))
-                //鍔犱簡ApiOperation娉ㄨВ鐨勭被锛屾墠鐢熸垚鎺ュ彛鏂囨。
-                .apis(RequestHandlerSelectors.withClassAnnotation(RestController.class))
-                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
-                .paths(PathSelectors.any())
-                .build()
-                .securitySchemes(Collections.singletonList(securityScheme()))
-                .securityContexts(securityContexts())
-                .globalOperationParameters(setHeaderToken())
-                .groupName("DNC");
-    }
-
     @Bean(value = "defaultApiAct")
     public Docket activitiApi() {
         return new Docket(DocumentationType.SWAGGER_2)
@@ -142,24 +119,6 @@
                 .groupName("Flowable妯″潡");
     }
 
-    @Bean(value = "defaultApiMsi")
-    public Docket activitiApiMsi() {
-        return new Docket(DocumentationType.SWAGGER_2)
-                .apiInfo(apiInfo())
-                .select()
-                //姝ゅ寘璺緞涓嬬殑绫伙紝鎵嶇敓鎴愭帴鍙f枃妗�
-                .apis(RequestHandlerSelectors.basePackage("org.jeecg.modules.msi"))
-                //鍔犱簡ApiOperation娉ㄨВ鐨勭被锛屾墠鐢熸垚鎺ュ彛鏂囨。
-                .apis(RequestHandlerSelectors.withClassAnnotation(RestController.class))
-                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
-                .paths(PathSelectors.any())
-                .build()
-                .securitySchemes(Collections.singletonList(securityScheme()))
-                .securityContexts(securityContexts())
-                .globalOperationParameters(setHeaderToken())
-                .groupName("闆嗘垚");
-    }
-
     @Bean(value = "defaultApiEam")
     public Docket activitiApiEam() {
         return new Docket(DocumentationType.SWAGGER_2)
@@ -175,7 +134,43 @@
                 .securitySchemes(Collections.singletonList(securityScheme()))
                 .securityContexts(securityContexts())
                 .globalOperationParameters(setHeaderToken())
-                .groupName("eam");
+                .groupName("EAM璁惧绠$悊");
+    }
+
+    @Bean(value = "defaultApiSAP")
+    public Docket defaultApiSAP() {
+        return new Docket(DocumentationType.SWAGGER_2)
+                .apiInfo(apiInfo())
+                .select()
+                //姝ゅ寘璺緞涓嬬殑绫伙紝鎵嶇敓鎴愭帴鍙f枃妗�
+                .apis(RequestHandlerSelectors.basePackage("org.jeecg.modules.sap"))
+                //鍔犱簡ApiOperation娉ㄨВ鐨勭被锛屾墠鐢熸垚鎺ュ彛鏂囨。
+                .apis(RequestHandlerSelectors.withClassAnnotation(RestController.class))
+                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
+                .paths(PathSelectors.any())
+                .build()
+                .securitySchemes(Collections.singletonList(securityScheme()))
+                .securityContexts(securityContexts())
+                .globalOperationParameters(setHeaderToken())
+                .groupName("SAP瀵规帴");
+    }
+
+    @Bean(value = "defaultApiMES")
+    public Docket defaultApiMES() {
+        return new Docket(DocumentationType.SWAGGER_2)
+                .apiInfo(apiInfo())
+                .select()
+                //姝ゅ寘璺緞涓嬬殑绫伙紝鎵嶇敓鎴愭帴鍙f枃妗�
+                .apis(RequestHandlerSelectors.basePackage("org.jeecg.modules.mes"))
+                //鍔犱簡ApiOperation娉ㄨВ鐨勭被锛屾墠鐢熸垚鎺ュ彛鏂囨。
+                .apis(RequestHandlerSelectors.withClassAnnotation(RestController.class))
+                .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
+                .paths(PathSelectors.any())
+                .build()
+                .securitySchemes(Collections.singletonList(securityScheme()))
+                .securityContexts(securityContexts())
+                .globalOperationParameters(setHeaderToken())
+                .groupName("MES妯″潡");
     }
 
     /***
diff --git a/src/main/java/org/jeecg/modules/wms/CxfClientUtil.java b/src/main/java/org/jeecg/modules/wms/CxfClientUtil.java
new file mode 100644
index 0000000..484d2c9
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/wms/CxfClientUtil.java
@@ -0,0 +1,32 @@
+package org.jeecg.modules.wms;
+
+import com.alibaba.fastjson.JSONObject;
+import org.apache.cxf.endpoint.Client;
+import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory;
+
+import javax.xml.namespace.QName;
+
+/**
+ * @author Lius
+ * @date 2024/6/11 10:16
+ */
+public class CxfClientUtil {
+
+    /**
+     * 鍔ㄦ�佽皟鐢�
+     */
+    public static String invokeService(String url, String data, String namespace, String method) throws Exception {
+        JaxWsDynamicClientFactory dcf = JaxWsDynamicClientFactory.newInstance();
+        Client client = dcf.createClient(url);
+        QName opName = new QName(namespace, method);
+        Object[] objects = new Object[0];
+        try {
+            objects = client.invoke(opName, data);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        String json = JSONObject.toJSONString(objects[0]);
+        return json;
+    }
+
+}
diff --git a/src/main/java/org/jeecg/modules/wms/config/WebServiceClientConfig.java b/src/main/java/org/jeecg/modules/wms/config/WebServiceClientConfig.java
new file mode 100644
index 0000000..23a94af
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/wms/config/WebServiceClientConfig.java
@@ -0,0 +1,4 @@
+package org.jeecg.modules.wms.config;
+
+public class WebServiceClientConfig {
+}
diff --git a/src/main/java/org/jeecg/modules/wms/config/WebServiceServerConfig.java b/src/main/java/org/jeecg/modules/wms/config/WebServiceServerConfig.java
new file mode 100644
index 0000000..0c818be
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/wms/config/WebServiceServerConfig.java
@@ -0,0 +1,39 @@
+package org.jeecg.modules.wms.config;
+
+import org.apache.cxf.Bus;
+import org.apache.cxf.bus.spring.SpringBus;
+import org.apache.cxf.jaxws.EndpointImpl;
+import org.apache.cxf.transport.servlet.CXFServlet;
+import org.jeecg.modules.wms.service.ReceiveWMSScanItemListService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.web.servlet.ServletRegistrationBean;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+import javax.xml.ws.Endpoint;
+
+
+@Configuration
+public class WebServiceServerConfig {
+    @Autowired
+    private ReceiveWMSScanItemListService receiveWMSScanItemListService;
+
+    @Bean(name = "cxfServer")
+    public Bus springBus() {
+        return new SpringBus();
+    }
+
+    @Bean(name = "cxfServlet")  // 娉ㄥ叆servlet bean name涓嶈兘dispatcherServlet ,鍚﹀垯浼氳鐩杁ispatcherServlet
+    public ServletRegistrationBean<CXFServlet> cxfServlet() {
+        return new ServletRegistrationBean<CXFServlet>(new CXFServlet(), "/webservice/*");
+    }
+
+    @Bean
+    public Endpoint endpoint() {
+        // 鍙傛暟浜岋紝鏄疭EI瀹炵幇绫诲璞�
+        Endpoint endpoint = new EndpointImpl(this.springBus(), receiveWMSScanItemListService);
+        // 鍙戝竷鏈嶅姟
+        endpoint.publish("/userService");
+        return endpoint;
+    }
+}
diff --git a/src/main/java/org/jeecg/modules/wms/dto/WSResponse.java b/src/main/java/org/jeecg/modules/wms/dto/WSResponse.java
new file mode 100644
index 0000000..611bfcd
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/wms/dto/WSResponse.java
@@ -0,0 +1,6 @@
+package org.jeecg.modules.wms.dto;
+
+public class WSResponse {
+    private String ErrorCode;
+    private String ErrorDesc;
+}
diff --git a/src/main/java/org/jeecg/modules/wms/request/ReceiveMESScanItemList.java b/src/main/java/org/jeecg/modules/wms/request/ReceiveMESScanItemList.java
new file mode 100644
index 0000000..a6132e0
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/wms/request/ReceiveMESScanItemList.java
@@ -0,0 +1,4 @@
+package org.jeecg.modules.wms.request;
+
+public class ReceiveMESScanItemList {
+}
diff --git a/src/main/java/org/jeecg/modules/wms/service/ReceiveWMSScanItemListService.java b/src/main/java/org/jeecg/modules/wms/service/ReceiveWMSScanItemListService.java
new file mode 100644
index 0000000..2026d5a
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/wms/service/ReceiveWMSScanItemListService.java
@@ -0,0 +1,8 @@
+package org.jeecg.modules.wms.service;
+
+import javax.jws.WebService;
+
+@WebService
+public interface ReceiveWMSScanItemListService {
+
+}
diff --git a/src/main/java/org/jeecg/modules/wms/service/impl/ReceiveWMSScanItemListServiceImpl.java b/src/main/java/org/jeecg/modules/wms/service/impl/ReceiveWMSScanItemListServiceImpl.java
new file mode 100644
index 0000000..94d8dae
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/wms/service/impl/ReceiveWMSScanItemListServiceImpl.java
@@ -0,0 +1,14 @@
+package org.jeecg.modules.wms.service.impl;
+
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.modules.wms.service.ReceiveWMSScanItemListService;
+import org.springframework.stereotype.Service;
+
+import javax.jws.WebService;
+
+
+@WebService(name = "ReceiveWMSScanItemListService",  targetNamespace = "http://xhj008.server.webservice.com")
+@Slf4j
+@Service
+public class ReceiveWMSScanItemListServiceImpl implements ReceiveWMSScanItemListService {
+}
diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml
index b365287..509414e 100644
--- a/src/main/resources/application-dev.yml
+++ b/src/main/resources/application-dev.yml
@@ -283,10 +283,8 @@
       client-secret: ??
       agent-id: ??
 webservice:
-  url: http://localhost:8081/services/EquipmentService?wsdl
-  namespace: http://service.server.webservice.example.com
-  statusMethod: equipmentStatus
-  rateMethod: equipmentRate
+  url: http://10.101.0.182:8002/MesWebService/WebService.asmx?wsdl
+  namespace: http://tempuri.org/
 # SAP RFC鏂瑰紡鎺ュ彛闆嗘垚
 sap:
   rfc:
diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml
index 48063b6..e69e853 100644
--- a/src/main/resources/application-prod.yml
+++ b/src/main/resources/application-prod.yml
@@ -281,6 +281,9 @@
       # appSecret
       client-secret: ??
       agent-id: ??
+webservice:
+  url: http://10.101.0.182:8002/MesWebService/WebService.asmx?wsdl
+  namespace: http://tempuri.org/
 # SAP RFC鏂瑰紡鎺ュ彛闆嗘垚
 sap:
   rfc:

--
Gitblit v1.9.3