From fe891f627a483eb6298f12eca60cf7f274e31c88 Mon Sep 17 00:00:00 2001
From: cuilei <ray_tsu1@163.com>
Date: 星期三, 20 八月 2025 16:54:43 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 src/main/java/org/jeecg/modules/wms/request/ReceiveMESScanItemList.java                |    2 
 src/main/java/org/jeecg/modules/wms/request/WebReservationOrder.java                   |   18 +
 src/main/java/org/jeecg/modules/wms/request/WebServiceSendItem.java                    |   34 +-
 .gitignore                                                                             |    1 
 src/main/java/org/jeecg/modules/andon/service/impl/AndonButtonConfigServiceImpl.java   |   14 
 src/main/java/org/jeecg/modules/wms/service/WebServiceSoap.java                        |    2 
 src/main/java/org/jeecg/modules/feishu/service/FeishuUserService.java                  |   20 
 src/main/java/org/jeecg/modules/andon/service/impl/AndonResponseConfigServiceImpl.java |   35 ++
 src/main/java/org/jeecg/modules/wms/WMSWebService.java                                 |    7 
 src/main/java/org/jeecg/modules/andon/service/IAndonResponseConfigService.java         |   27 ++
 src/main/java/org/jeecg/modules/andon/controller/AndonButtonConfigController.java      |   13 
 src/main/java/org/jeecg/modules/wms/service/impl/WMSWebServiceClientImpl.java          |   75 ++++++
 src/main/java/org/jeecg/modules/andon/mapper/AndonButtonConfigMapper.java              |    8 
 src/main/java/org/jeecg/modules/wms/request/ArrayOfWebServiceSendItem.java             |    5 
 src/main/java/org/jeecg/modules/wms/controller/WMSTestController.java                  |   71 +++--
 src/main/java/org/jeecg/modules/andon/service/IAndonButtonConfigService.java           |    8 
 src/main/java/org/jeecg/modules/wms/request/ReceiveReservation.java                    |    6 
 src/main/java/org/jeecg/modules/andon/dto/AndonOrdeDto.java                            |  151 ++++++++++++
 src/main/java/org/jeecg/modules/andon/controller/AndonResponseConfigController.java    |    4 
 src/main/java/org/jeecg/modules/wms/service/WMSWebServiceClient.java                   |   36 +++
 src/main/java/org/jeecg/common/aspect/ApiLogAspect.java                                |   10 
 src/main/java/org/jeecg/modules/andon/mapper/xml/AndonButtonConfigMapper.xml           |   59 +---
 src/main/java/org/jeecg/modules/base/service/impl/FactoryServiceImpl.java              |    2 
 src/main/java/org/jeecg/modules/wms/dto/WSResponse.java                                |    6 
 src/main/java/org/jeecg/modules/andon/controller/AndonOrderController.java             |   55 ++++
 25 files changed, 523 insertions(+), 146 deletions(-)

diff --git a/.gitignore b/.gitignore
index b7838ca..a8837ab 100644
--- a/.gitignore
+++ b/.gitignore
@@ -13,3 +13,4 @@
 os_del_doc.cmd
 .svn
 derby.log
+.gitignore
\ No newline at end of file
diff --git a/src/main/java/org/jeecg/common/aspect/ApiLogAspect.java b/src/main/java/org/jeecg/common/aspect/ApiLogAspect.java
index 2651f1a..a3539e8 100644
--- a/src/main/java/org/jeecg/common/aspect/ApiLogAspect.java
+++ b/src/main/java/org/jeecg/common/aspect/ApiLogAspect.java
@@ -4,7 +4,6 @@
 import com.alibaba.fastjson.parser.Feature;
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.sap.conn.jco.*;
 import org.aspectj.lang.ProceedingJoinPoint;
 import org.aspectj.lang.annotation.Around;
 import org.aspectj.lang.annotation.Aspect;
@@ -83,6 +82,13 @@
                     break;
                 case WMS:
                     dto.setRequestMethod("Webservice");
+                    if (result instanceof Map) {
+                        Map<String, Object> map = (Map<String, Object>) result;
+                        dto.setResponseCode(map.get("ztype").toString());
+                        dto.setResponseMessage(map.get("zmess").toString());
+                        dto.setRequestBody(map.get("importParameters") == null ? null : map.get("importParameters").toString());
+                        dto.setResponseBody(parseSAPResponseResult(map.get("result")));
+                    }
                     break;
                 case FEI_SHU:
                     dto.setRequestMethod("Http");
@@ -146,6 +152,8 @@
             } catch (JsonProcessingException e) {
                 throw new JeecgBootException(e);
             }
+        } else if (result instanceof String) {
+            return result.toString();
         } else {
             try {
                 String json = objectMapper.writeValueAsString(result);
diff --git a/src/main/java/org/jeecg/modules/andon/controller/AndonButtonConfigController.java b/src/main/java/org/jeecg/modules/andon/controller/AndonButtonConfigController.java
index f1b74a5..81b45b1 100644
--- a/src/main/java/org/jeecg/modules/andon/controller/AndonButtonConfigController.java
+++ b/src/main/java/org/jeecg/modules/andon/controller/AndonButtonConfigController.java
@@ -11,6 +11,7 @@
 import org.jeecg.common.system.base.controller.JeecgController;
 import org.jeecg.common.system.query.QueryGenerator;
 import org.jeecg.modules.andon.dto.AndonButtonDTO;
+import org.jeecg.modules.andon.dto.AndonOrdeDto;
 import org.jeecg.modules.andon.entity.AndonButtonConfig;
 import org.jeecg.modules.andon.service.IAndonButtonConfigService;
 import org.jeecg.modules.andon.service.impl.AndonOrderServiceImpl;
@@ -84,8 +85,8 @@
      */
     @ApiOperation(value = "瀹夌伅鍙戣捣-鍒嗛〉鍒楄〃鏌ヨ", notes = "瀹夌伅鍙戣捣-鍒嗛〉鍒楄〃鏌ヨ")
     @GetMapping(value = "/queryUserAndonCallList")
-    public Result<List<AndonButtonDTO>> queryUserAndonCallList(@RequestParam("factoryId") String factoryId) {
-        List<AndonButtonDTO> list = andonButtonConfigService.queryUserAndonCallList(factoryId);
+    public Result<List<AndonOrdeDto>> queryUserAndonCallList(@RequestParam("factoryId") String factoryId, @RequestParam("orderStatus") String orderStatus) {
+        List<AndonOrdeDto> list = andonButtonConfigService.queryUserAndonCallList(factoryId,orderStatus);
         return Result.OK(list);
     }
 
@@ -97,8 +98,8 @@
      */
     @ApiOperation(value = "瀹夌伅鍝嶅簲-鍒嗛〉鍒楄〃鏌ヨ", notes = "瀹夌伅鍝嶅簲-鍒嗛〉鍒楄〃鏌ヨ")
     @GetMapping(value = "/queryUserAndonRespondList")
-    public Result<List<AndonButtonDTO>> queryUserAndonRespondList(@RequestParam("factoryId") String factoryId) {
-        List<AndonButtonDTO> list = andonButtonConfigService.queryUserAndonRespondList(factoryId);
+    public Result<List<AndonOrdeDto>> queryUserAndonRespondList(@RequestParam("factoryId") String factoryId, @RequestParam("orderStatus") String orderStatus) {
+        List<AndonOrdeDto> list = andonButtonConfigService.queryUserAndonRespondList(factoryId,orderStatus);
         return Result.OK(list);
     }
 
@@ -110,8 +111,8 @@
      */
     @ApiOperation(value = "瀹夌伅鍝嶅簲-鍒嗛〉鍒楄〃鏌ヨ", notes = "瀹夌伅鍝嶅簲-鍒嗛〉鍒楄〃鏌ヨ")
     @GetMapping(value = "/queryUserAndonHandelList")
-    public Result<List<AndonButtonDTO>> queryUserAndonHandelList(@RequestParam("factoryId") String factoryId) {
-        List<AndonButtonDTO> list = andonButtonConfigService.queryUserAndonHandelList(factoryId);
+    public Result<List<AndonOrdeDto>> queryUserAndonHandelList(@RequestParam("factoryId") String factoryId ,@RequestParam("orderStatus") String orderStatus) {
+        List<AndonOrdeDto> list = andonButtonConfigService.queryUserAndonHandelList(factoryId,orderStatus);
         return Result.OK(list);
     }
     /**
diff --git a/src/main/java/org/jeecg/modules/andon/controller/AndonOrderController.java b/src/main/java/org/jeecg/modules/andon/controller/AndonOrderController.java
index 9132c9f..2b8e922 100644
--- a/src/main/java/org/jeecg/modules/andon/controller/AndonOrderController.java
+++ b/src/main/java/org/jeecg/modules/andon/controller/AndonOrderController.java
@@ -6,12 +6,16 @@
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.aspect.annotation.AutoLog;
 import org.jeecg.common.system.base.controller.JeecgController;
 import org.jeecg.common.system.query.QueryGenerator;
+import org.jeecg.common.system.vo.LoginUser;
+import org.jeecg.modules.andon.dto.AndonOrdeDto;
 import org.jeecg.modules.andon.entity.AndonOrder;
 import org.jeecg.modules.andon.service.IAndonOrderService;
+import org.jeecg.modules.andon.service.IAndonResponseConfigService;
 import org.jeecg.modules.system.entity.SysUser;
 import org.jeecg.modules.system.service.ISysUserService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -20,6 +24,7 @@
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.sql.Date;
 import java.util.Arrays;
 
 /**
@@ -37,6 +42,8 @@
     private IAndonOrderService andonOrderService;
 
 
+    @Autowired
+    private IAndonResponseConfigService andonResponseConfigService;
 
     /**
      * 鍒嗛〉鍒楄〃鏌ヨ
@@ -71,21 +78,62 @@
     @ApiOperation(value = "瀹夌伅宸ュ崟-娣诲姞", notes = "瀹夌伅宸ュ崟-娣诲姞")
     @PostMapping(value = "/add")
     public Result<String> add(@RequestBody AndonOrder andonOrder) {
+        // 鏍规嵁button_id鏌ヨ瀵瑰簲鐨勪骇绾縄D
+        if (andonOrder.getButtonId() != null) {
+            String productionLineId = andonResponseConfigService.getProductionLineIdByButtonId(andonOrder.getButtonId());
+            if (productionLineId != null) {
+                andonOrder.setFactoryId(productionLineId);
+            }
+        }
         andonOrderService.save(andonOrder);
         return Result.OK("娣诲姞鎴愬姛锛�");
     }
 
 
     /**
+     * 娣诲姞
+     *
+     * @param andonOrder
+     * @return
+     */
+    @AutoLog(value = "瀹夌伅APP宸ュ崟-娣诲姞")
+    @ApiOperation(value = "瀹夌伅APP宸ュ崟-娣诲姞", notes = "瀹夌伅APP宸ュ崟-娣诲姞")
+    @PostMapping(value = "/app/add")
+    public Result<String> appAdd(@RequestBody AndonOrder andonOrder) {
+        // 鏍规嵁button_id鏌ヨ瀵瑰簲鐨勪骇绾縄D
+        andonOrder.setAndonLevel("1");
+        andonOrder.setFactoryId(andonOrder.getFactoryId());
+        andonOrder.setOperator(andonOrder.getOperator());
+        String Responder = andonResponseConfigService.getResponderByButtonId(andonOrder.getButtonId(),andonOrder.getFactoryId());
+        andonOrder.setResponder(Responder);
+        andonOrder.setProcessor(Responder);
+        andonOrder.setOperateTime(new java.sql.Timestamp(System.currentTimeMillis()));
+        andonOrderService.save(andonOrder);
+        // 鍒涘缓AndonOrderDto瀵硅薄骞跺鍒跺睘鎬�
+        AndonOrdeDto andonOrderDto = new AndonOrdeDto();
+        // 澶嶅埗蹇呰灞炴�у埌Dto瀵硅薄
+        andonOrderDto.setId(andonOrder.getId());
+        andonOrderDto.setButtonId(andonOrder.getButtonId());
+        andonOrderDto.setFactoryId(andonOrder.getFactoryId());
+        andonOrderDto.setOperator(andonOrder.getOperator());
+        andonOrderDto.setResponder(andonOrder.getResponder());
+        andonOrderDto.setProcessor(andonOrder.getProcessor());
+        andonOrderDto.setAndonLevel(andonOrder.getAndonLevel());
+        andonOrderDto.setOperateTime(andonOrder.getOperateTime());
+        andonResponseConfigService.sendAndonNotification(andonOrderDto);
+        return Result.OK("娣诲姞鎴愬姛锛�");
+    }
+
+    /**
      * APP瀹夌伅鍝嶅簲鎿嶄綔
      *
-     * @param orderId
+     * @param id
      * @return
      */
     @ApiOperation(value = "APP瀹夌伅鍝嶅簲鎿嶄綔", notes = "APP瀹夌伅鍝嶅簲鎿嶄綔")
     @GetMapping(value = "/AndonRespond")
-    public Result<String> AndonRespond(@RequestParam("orderId") String orderId) {
-        AndonOrder andonOrder = andonOrderService.getById(orderId);
+    public Result<String> AndonRespond(@RequestParam("id") String id) {
+        AndonOrder andonOrder = andonOrderService.getById(id);
         andonOrder.setOrderStatus("2");
         andonOrderService.updateById(andonOrder);
         return Result.OK("鍝嶅簲鎴愬姛锛�");
@@ -94,7 +142,6 @@
 
     /**
      * APP瀹夌伅澶勭悊鎿嶄綔
-     *
      *
      * @return
      */
diff --git a/src/main/java/org/jeecg/modules/andon/controller/AndonResponseConfigController.java b/src/main/java/org/jeecg/modules/andon/controller/AndonResponseConfigController.java
index 976af22..5fa20d7 100644
--- a/src/main/java/org/jeecg/modules/andon/controller/AndonResponseConfigController.java
+++ b/src/main/java/org/jeecg/modules/andon/controller/AndonResponseConfigController.java
@@ -11,6 +11,7 @@
 import org.jeecg.common.system.base.controller.JeecgController;
 import org.jeecg.common.system.query.QueryGenerator;
 import org.jeecg.modules.andon.dto.AndonButtonDTO;
+import org.jeecg.modules.andon.dto.AndonOrdeDto;
 import org.jeecg.modules.andon.entity.AndonResponseConfig;
 import org.jeecg.modules.andon.service.IAndonResponseConfigService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -68,9 +69,8 @@
     @AutoLog(value = "瀹夌伅宸ュ崟-鍙戦�侀涔︽秷鎭�")
     @ApiOperation(value = "瀹夌伅宸ュ崟-鍙戦�侀涔︽秷鎭�", notes = "瀹夌伅宸ュ崟-鍙戦�侀涔︽秷鎭�")
     @PostMapping(value = "/sendMessage")
-    public Result<String> sendMessage(@RequestBody AndonButtonDTO andonButtonDTO) {
+    public Result<String> sendMessage(@RequestBody AndonOrdeDto andonButtonDTO) {
         try {
-            andonButtonDTO.setBlinkingFlag(1);
             // 璋冪敤鏈嶅姟灞傚鐞嗕笟鍔¢�昏緫
             andonResponseConfigService.sendAndonNotification(andonButtonDTO);
             return Result.OK("娣诲姞鎴愬姛锛�");
diff --git a/src/main/java/org/jeecg/modules/andon/dto/AndonOrdeDto.java b/src/main/java/org/jeecg/modules/andon/dto/AndonOrdeDto.java
new file mode 100644
index 0000000..413a18e
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/andon/dto/AndonOrdeDto.java
@@ -0,0 +1,151 @@
+package org.jeecg.modules.andon.dto;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.jeecg.common.aspect.annotation.Dict;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+@Data
+public class AndonOrdeDto {
+    /**涓婚敭*/
+    @TableId(type = IdType.ASSIGN_ID)
+    @ApiModelProperty(value = "涓婚敭")
+    private String id;
+    /**鍒涘缓浜�*/
+    @ApiModelProperty(value = "鍒涘缓浜�")
+    private String createBy;
+    /**鍒涘缓鏃ユ湡*/
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "鍒涘缓鏃ユ湡")
+    private Date createTime;
+    /**鏇存柊浜�*/
+    @ApiModelProperty(value = "鏇存柊浜�")
+    private String updateBy;
+    /**鏇存柊鏃ユ湡*/
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "鏇存柊鏃ユ湡")
+    private Date updateTime;
+    /**鍒犻櫎鏍囪*/
+
+    @ApiModelProperty(value = "鍒犻櫎鏍囪")
+    @TableLogic
+    private Integer delFlag;
+    /**浜х嚎ID*/
+
+    @ApiModelProperty(value = "浜х嚎ID")
+    @Dict(dictTable = "base_factory", dicCode = "id", dicText = "factory_name")
+    private String factoryId;
+    /**瀹夌伅绫诲瀷*/
+
+    @ApiModelProperty(value = "瀹夌伅绫诲瀷")
+    @Dict(dictTable = "andon_button_config", dicCode = "id", dicText = "button_name")
+    private String buttonId;
+    /**瀹夌伅浜�*/
+
+    @Dict(dictTable = "sys_user", dicCode = "id", dicText = "username")
+    @ApiModelProperty(value = "瀹夌伅浜�")
+    private String operator;
+    /**瀹夌伅鏃堕棿*/
+
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "瀹夌伅鏃堕棿")
+    private Date operateTime;
+    /**瀹夌伅绛夌骇*/
+
+    @Dict(dicCode = "andon_level")
+    @ApiModelProperty(value = "瀹夌伅绛夌骇")
+    private String andonLevel;
+    /**鍝嶅簲浜�*/
+    @Dict(dictTable = "sys_user", dicCode = "id", dicText = "username")
+
+    @ApiModelProperty(value = "鍝嶅簲浜�")
+    private String responder;
+    /**鍝嶅簲鏃堕棿*/
+
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "鍝嶅簲鏃堕棿")
+    private Date responseTime;
+    /**澶勭悊浜�*/
+    @Dict(dictTable = "sys_user", dicCode = "id", dicText = "username")
+
+    @ApiModelProperty(value = "澶勭悊浜�")
+    private String processor;
+    /**澶勭悊瀹屾垚鏃堕棿*/
+
+    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
+    @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
+    @ApiModelProperty(value = "澶勭悊瀹屾垚鏃堕棿")
+    private Date processTime;
+    /**瀹夌伅鐘舵��*/
+
+    @Dict(dicCode = "order_status")
+    @ApiModelProperty(value = "瀹夌伅鐘舵��")
+    private String orderStatus;
+    /**闂鎻忚堪*/
+
+    @ApiModelProperty(value = "闂鎻忚堪")
+    private String problemDescreption;
+    /**澶勭悊缁撴灉鎻忚堪*/
+
+    @ApiModelProperty(value = "澶勭悊缁撴灉鎻忚堪")
+    private String resolutionDescreption;
+    @ApiModelProperty(value = "涓�绾у搷搴斾汉openId")
+    private String responderOpenId;
+
+    @ApiModelProperty(value = "浜岀骇鍝嶅簲浜簅penId")
+    private String secondResponderOpenId;
+
+    @ApiModelProperty(value = "涓夌骇鍝嶅簲浜簅penId")
+    private String thirdResponderOpenId;
+
+
+
+    @ApiModelProperty(value = "涓夌骇鍝嶅簲浜�")
+    private String thirdResponder;
+
+
+
+    @ApiModelProperty(value = "浜岀骇鍝嶅簲浜�")
+    private String secondResponder;
+    /**浜х嚎鍚嶇О*/
+    @ApiModelProperty(value = "浜х嚎鍚嶇О")
+    private String factoryName;
+
+    /**浜х嚎鍚嶇О*/
+    @ApiModelProperty(value = "宸ュ巶鍚嶇О")
+    private String parentFactoryName;
+
+    /**涓�绾у搷搴旀椂闀�*/
+    @ApiModelProperty(value = "涓�绾у搷搴旀椂闀�")
+    private Integer upgradeResponseDuration;
+
+
+    /**鎸夐挳鍚嶇О*/
+    @ApiModelProperty(value = "鎸夐挳鍚嶇О")
+    private String buttonName;
+
+
+
+    /**
+     * 瀹夌伅浜哄悕绉�
+     */
+    @ApiModelProperty(value = "瀹夌伅浜哄悕绉�")
+    private String operatorName;
+
+    /**浜岀骇鍝嶅簲鏃堕暱*/
+    @ApiModelProperty(value = "浜岀骇鍝嶅簲鏃堕暱")
+    private Integer secondUpgradeResponseDuration;
+
+    /**涓夌骇绾у搷搴旀椂闀�*/
+    @ApiModelProperty(value = "涓夌骇鍝嶅簲鏃堕暱")
+    private Integer thirdUpgradeResponseDuration;
+}
diff --git a/src/main/java/org/jeecg/modules/andon/mapper/AndonButtonConfigMapper.java b/src/main/java/org/jeecg/modules/andon/mapper/AndonButtonConfigMapper.java
index dbf50f1..26f8842 100644
--- a/src/main/java/org/jeecg/modules/andon/mapper/AndonButtonConfigMapper.java
+++ b/src/main/java/org/jeecg/modules/andon/mapper/AndonButtonConfigMapper.java
@@ -3,6 +3,7 @@
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Param;
 import org.jeecg.modules.andon.dto.AndonButtonDTO;
+import org.jeecg.modules.andon.dto.AndonOrdeDto;
 import org.jeecg.modules.andon.entity.AndonButtonConfig;
 
 import java.util.List;
@@ -27,22 +28,21 @@
      * @param factoryId
      * @return
      */
-    List<AndonButtonDTO> queryUserAndonCallList(String factoryId);
+    List<AndonOrdeDto> queryUserAndonCallList(String factoryId, String orderStatus);
 
     /**
      * 鍝嶅簲瀹夌伅鍒楄〃
      * @param factoryId
      * @return
      */
-    List<AndonButtonDTO> queryUserAndonRespondList(String factoryId);
-
+    List<AndonOrdeDto> queryUserAndonRespondList(String factoryId, String orderStatus);
 
     /**
      * 澶勭悊瀹夌伅鍒楄〃
      * @param factoryId
      * @return
      */
-    List<AndonButtonDTO> queryUserAndonHandelList(String factoryId);
+    List<AndonOrdeDto> queryUserAndonHandelList(String factoryId, String orderStatus);
 
 }
 
diff --git a/src/main/java/org/jeecg/modules/andon/mapper/xml/AndonButtonConfigMapper.xml b/src/main/java/org/jeecg/modules/andon/mapper/xml/AndonButtonConfigMapper.xml
index 0475bda..48ff89d 100644
--- a/src/main/java/org/jeecg/modules/andon/mapper/xml/AndonButtonConfigMapper.xml
+++ b/src/main/java/org/jeecg/modules/andon/mapper/xml/AndonButtonConfigMapper.xml
@@ -28,49 +28,26 @@
         where arc.factory_id=#{factoryId};
     </select>
 
-    <select id="queryUserAndonCallList" resultType="org.jeecg.modules.andon.dto.AndonButtonDTO">
-        select arc.id,
-               abc.id          as buttonId,
-               abc.button_name as buttonName,
-               abc.button_code as buttonCode,
-               (select count(1)
-                from andon_order ao
-                where ao.button_id = arc.button_id
-                  and ao.factory_id = arc.factory_id
-                  and ao.order_status = '1') as blinkingFlag,
-               STUFF((SELECT ',' + CAST (ao.id AS VARCHAR)
-                      FROM andon_order ao
-                      WHERE ao.button_id = arc.button_id
-                        and ao.factory_id = arc.factory_id
-                        and ao.order_status = '1'
-                   FOR XML PATH ('')), 1, 1, '') as orderIds,
-               bf.factory_name as factoryName,
-               parent_bf.factory_name as parentFactoryName,
-               abc.upgrade_response_duration as upgradeResponseDuration,
-               abc.second_upgrade_response_duration as secondUpgradeResponseDuration,
-               arc.firster_responder as responder,
-               arc.second_responder,
-               arc.third_responder,
-               STUFF((SELECT ',' + ao.order_status
-                      FROM andon_order ao
-                      WHERE ao.button_id = arc.button_id
-                        and ao.factory_id = arc.factory_id
-                        and ao.order_status = '1'
-                   FOR XML PATH ('')), 1, 1, '') as orderStatus
-        from andon_response_config arc
-                 left join andon_button_config abc
-                           on arc.button_id = abc.id
-                 left join base_factory bf on arc.factory_id = bf.id
-                 left join base_factory parent_bf on bf.parent_id = parent_bf.id
-        where arc.factory_id=#{factoryId}
-          and (select count (1)
-               from andon_order ao
-               where ao.button_id = arc.button_id
-                 and ao.factory_id = arc.factory_id
-                 and ao.order_status = '1') = 1
+    <select id="queryUserAndonCallList" resultType="org.jeecg.modules.andon.dto.AndonOrdeDto">
+        SELECT
+            ao.*,
+            bf.factory_name as factoryName,
+            parent_bf.factory_name as parentFactoryName,
+            abc.button_name as buttonName,
+            abc.upgrade_response_duration as upgradeResponseDuration,
+            abc.second_upgrade_response_duration as secondUpgradeResponseDuration,
+            su.username as operatorName
+        FROM andon_order ao
+                 LEFT JOIN base_factory bf ON ao.factory_id = bf.id
+                 LEFT JOIN base_factory parent_bf ON bf.parent_id = parent_bf.id
+                 LEFT JOIN andon_button_config abc ON ao.button_id = abc.id
+                 LEFT JOIN sys_user su ON ao.operator = su.id
+        WHERE ao.factory_id = #{factoryId}
+          AND ao.del_flag = 0
+          AND ao.order_status = #{orderStatus}
     </select>
 
-    <select id="queryUserAndonRespondList" resultType="org.jeecg.modules.andon.dto.AndonButtonDTO">
+    <select id="queryUserAndonRespondList" resultType="org.jeecg.modules.andon.dto.AndonOrdeDto">
         select arc.id,
                abc.id                               as buttonId,
                abc.button_name                      as buttonName,
diff --git a/src/main/java/org/jeecg/modules/andon/service/IAndonButtonConfigService.java b/src/main/java/org/jeecg/modules/andon/service/IAndonButtonConfigService.java
index 500343c..1ff6772 100644
--- a/src/main/java/org/jeecg/modules/andon/service/IAndonButtonConfigService.java
+++ b/src/main/java/org/jeecg/modules/andon/service/IAndonButtonConfigService.java
@@ -2,6 +2,7 @@
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.jeecg.modules.andon.dto.AndonButtonDTO;
+import org.jeecg.modules.andon.dto.AndonOrdeDto;
 import org.jeecg.modules.andon.entity.AndonButtonConfig;
 
 import java.util.List;
@@ -28,21 +29,20 @@
      * @param factoryId
      * @return
      */
-    List<AndonButtonDTO> queryUserAndonCallList(String factoryId);
+    List<AndonOrdeDto> queryUserAndonCallList(String factoryId, String orderStatus);
 
     /**
      * 鏌ヨ鐢ㄦ埛鍙戣捣瀹夌伅鍝嶅簲鍒楄〃
      * @param factoryId
      * @return
      */
-    List<AndonButtonDTO> queryUserAndonRespondList(String factoryId);
-
+    List<AndonOrdeDto> queryUserAndonRespondList(String factoryId,String orderStatus);
 
     /**
      * 鏌ヨ鐢ㄦ埛鍙戣捣瀹夌伅澶勭悊鍒楄〃
      * @param factoryId
      * @return
      */
-    List<AndonButtonDTO> queryUserAndonHandelList(String factoryId);
+    List<AndonOrdeDto> queryUserAndonHandelList(String factoryId,String orderStatus);
 
 }
diff --git a/src/main/java/org/jeecg/modules/andon/service/IAndonResponseConfigService.java b/src/main/java/org/jeecg/modules/andon/service/IAndonResponseConfigService.java
index 58aa6bb..ff3ccd3 100644
--- a/src/main/java/org/jeecg/modules/andon/service/IAndonResponseConfigService.java
+++ b/src/main/java/org/jeecg/modules/andon/service/IAndonResponseConfigService.java
@@ -2,6 +2,8 @@
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import org.jeecg.modules.andon.dto.AndonButtonDTO;
+import org.jeecg.modules.andon.dto.AndonOrdeDto;
+import org.jeecg.modules.andon.entity.AndonOrder;
 import org.jeecg.modules.andon.entity.AndonResponseConfig;
 
 import java.util.List;
@@ -17,11 +19,34 @@
 
 
 
+    /**
+     * 鏍规嵁button_id鑾峰彇浜х嚎ID
+     * @param buttonId
+     * @return
+     */
+    String getProductionLineIdByButtonId(String buttonId);
+
+    /**
+     * 鏍规嵁button_id鑾峰彇鍝嶅簲浜�
+     * @param buttonId
+     * @return
+     */
+    String getResponderByButtonId(String buttonId,String factoryId);
+
+
+    /**
+     * 鏍规嵁button_id鍜宖actory_id鑾峰彇鍝嶅簲閰嶇疆瀵硅薄
+     * @param buttonId 鎸夐挳ID
+     * @param factoryId 宸ュ巶/浜х嚎ID
+     * @return AndonResponseConfig 鍝嶅簲閰嶇疆瀵硅薄
+     */
+    AndonResponseConfig getResponseConfigByButtonIdAndFactoryId(String buttonId, String factoryId);
+
 
     /**
      * 鍙戦�佸畨鐏�氱煡
      * @param andonButtonDTO 瀹夌伅鎸夐挳DTO
      * @return 缁撴灉
      */
-    void sendAndonNotification(AndonButtonDTO andonButtonDTO);
+    void sendAndonNotification(AndonOrdeDto andonButtonDTO);
 }
diff --git a/src/main/java/org/jeecg/modules/andon/service/impl/AndonButtonConfigServiceImpl.java b/src/main/java/org/jeecg/modules/andon/service/impl/AndonButtonConfigServiceImpl.java
index 3dc9212..c1eea0f 100644
--- a/src/main/java/org/jeecg/modules/andon/service/impl/AndonButtonConfigServiceImpl.java
+++ b/src/main/java/org/jeecg/modules/andon/service/impl/AndonButtonConfigServiceImpl.java
@@ -1,7 +1,9 @@
 package org.jeecg.modules.andon.service.impl;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import liquibase.pro.packaged.S;
 import org.jeecg.modules.andon.dto.AndonButtonDTO;
+import org.jeecg.modules.andon.dto.AndonOrdeDto;
 import org.jeecg.modules.andon.entity.AndonButtonConfig;
 import org.jeecg.modules.andon.mapper.AndonButtonConfigMapper;
 import org.jeecg.modules.andon.service.IAndonButtonConfigService;
@@ -30,18 +32,18 @@
     }
 
     @Override
-    public List<AndonButtonDTO> queryUserAndonCallList(String factoryId) {
-        return baseMapper.queryUserAndonCallList(factoryId);
+    public List<AndonOrdeDto> queryUserAndonCallList(String factoryId, String orderStatus) {
+        return baseMapper.queryUserAndonCallList(factoryId, orderStatus);
     }
 
     @Override
-    public List<AndonButtonDTO> queryUserAndonRespondList(String factoryId) {
-        return baseMapper.queryUserAndonRespondList(factoryId);
+    public List<AndonOrdeDto> queryUserAndonRespondList(String factoryId, String orderStatus) {
+        return baseMapper.queryUserAndonRespondList(factoryId, orderStatus);
     }
 
     @Override
-    public List<AndonButtonDTO> queryUserAndonHandelList(String factoryId) {
-        return baseMapper.queryUserAndonHandelList(factoryId);
+    public List<AndonOrdeDto> queryUserAndonHandelList(String factoryId, String orderStatus) {
+        return baseMapper.queryUserAndonHandelList(factoryId, orderStatus);
     }
 
 
diff --git a/src/main/java/org/jeecg/modules/andon/service/impl/AndonResponseConfigServiceImpl.java b/src/main/java/org/jeecg/modules/andon/service/impl/AndonResponseConfigServiceImpl.java
index f6f23ae..5129363 100644
--- a/src/main/java/org/jeecg/modules/andon/service/impl/AndonResponseConfigServiceImpl.java
+++ b/src/main/java/org/jeecg/modules/andon/service/impl/AndonResponseConfigServiceImpl.java
@@ -6,6 +6,7 @@
 import org.apache.shiro.SecurityUtils;
 import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.modules.andon.dto.AndonButtonDTO;
+import org.jeecg.modules.andon.dto.AndonOrdeDto;
 import org.jeecg.modules.andon.entity.AndonButtonConfig;
 import org.jeecg.modules.andon.entity.AndonOrder;
 import org.jeecg.modules.andon.entity.AndonResponseConfig;
@@ -51,10 +52,35 @@
         return baseMapper.getAndonResponseConfigByFactoryIdAndButtonId(factoryId, buttonId);
     }
 
+    @Override
+    public String getProductionLineIdByButtonId(String buttonId) {
+        QueryWrapper<AndonResponseConfig> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("button_id", buttonId);
+        AndonResponseConfig config = this.getOne(queryWrapper);
+        return config != null ? config.getFactoryId() : null;
+    }
+
+    @Override
+    public String getResponderByButtonId(String buttonId,String factoryId) {
+        QueryWrapper<AndonResponseConfig> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("button_id", buttonId);
+        queryWrapper.eq("factory_id", factoryId); // 鍋囪factory_id瀵瑰簲浜х嚎ID
+        AndonResponseConfig config = this.getOne(queryWrapper, false);
+        return config != null ? config.getFirsterResponder() : null;
+    }
+
+    @Override
+    public AndonResponseConfig getResponseConfigByButtonIdAndFactoryId(String buttonId, String factoryId) {
+        QueryWrapper<AndonResponseConfig> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("button_id", buttonId);
+        queryWrapper.eq("factory_id", factoryId);
+        // 浣跨敤false鍙傛暟锛屽綋鏌ヨ鍒板鏉¤褰曟椂涓嶄細鎶涘嚭寮傚父锛岃�屾槸杩斿洖绗竴鏉�
+        return this.getOne(queryWrapper, false);
+    }
 
 
     @Override
-    public void sendAndonNotification(AndonButtonDTO andonButtonDTO) {
+    public void sendAndonNotification(AndonOrdeDto andonButtonDTO) {
         /**
          * 1. 楠岃瘉宸ュ崟鐘舵��
          */
@@ -62,16 +88,13 @@
             log.warn("璇锋眰鍙傛暟涓虹┖");
             throw new IllegalArgumentException("璇锋眰鍙傛暟涓嶈兘涓虹┖");
         }
-        /**
-         * 璁剧疆瀹夌伅浜�
-         */
 
         /**
          * 2. 鑾峰彇鍝嶅簲閰嶇疆
          */
-        AndonResponseConfig andonResponseConfig = this.getById(andonButtonDTO.getId());
+        AndonResponseConfig andonResponseConfig = getResponseConfigByButtonIdAndFactoryId(andonButtonDTO.getButtonId(), andonButtonDTO.getFactoryId());
 
-        AndonOrder andonOrder = andonOrderService.getById(andonButtonDTO.getOrderIds());
+        AndonOrder andonOrder = andonOrderService.getById(andonButtonDTO.getId());
         if (andonOrder == null) {
             log.warn("鏈壘鍒癐D涓篬{}]鐨勫畨鐏鍗�");
             throw new IllegalArgumentException("鏈壘鍒板搴旂殑瀹夌伅璁㈠崟");
diff --git a/src/main/java/org/jeecg/modules/base/service/impl/FactoryServiceImpl.java b/src/main/java/org/jeecg/modules/base/service/impl/FactoryServiceImpl.java
index 9d4268d..a275e49 100644
--- a/src/main/java/org/jeecg/modules/base/service/impl/FactoryServiceImpl.java
+++ b/src/main/java/org/jeecg/modules/base/service/impl/FactoryServiceImpl.java
@@ -192,7 +192,7 @@
         List<String> list = Arrays.asList(productionIds.split(","));
         LambdaQueryWrapper<Factory> queryWrapper = new LambdaQueryWrapper<>();
         queryWrapper.eq(Factory::getDelFlag, CommonConstant.DEL_FLAG_0);
-//        queryWrapper.eq(Factory::getFactoryCategory, "PRODUCTION_LINE");
+        queryWrapper.eq(Factory::getFactoryCategory, "3");
         queryWrapper.in(Factory::getId, list);
         queryWrapper.orderByAsc(Factory::getSorter);
         return super.list(queryWrapper);
diff --git a/src/main/java/org/jeecg/modules/feishu/service/FeishuUserService.java b/src/main/java/org/jeecg/modules/feishu/service/FeishuUserService.java
index 92d6b09..4492d4d 100644
--- a/src/main/java/org/jeecg/modules/feishu/service/FeishuUserService.java
+++ b/src/main/java/org/jeecg/modules/feishu/service/FeishuUserService.java
@@ -5,7 +5,7 @@
 import org.jeecg.common.util.PasswordUtil;
 import org.jeecg.common.util.RestUtil;
 import org.jeecg.common.util.oConvertUtils;
-import org.jeecg.modules.andon.dto.AndonButtonDTO;
+import org.jeecg.modules.andon.dto.AndonOrdeDto;
 import org.jeecg.modules.mes.entity.FeishuUser;
 import org.jeecg.modules.system.entity.SysUser;
 import org.jeecg.modules.system.service.ISysUserService;
@@ -139,7 +139,7 @@
      * 2. 涓�绾у搷搴旀椂闀垮悗妫�鏌ョ姸鎬侊紝鏈鐞嗗垯鍙戦�佷簩绾�
      * 3. 浜岀骇鍝嶅簲鏃堕暱鍚庢鏌ョ姸鎬侊紝鏈鐞嗗垯鍙戦�佷笁绾�
      */
-    public boolean sendAndonNotification(String accessToken, AndonButtonDTO andonOrde) {
+    public boolean sendAndonNotification(String accessToken, AndonOrdeDto andonOrde) {
         try {
             String currentTime = sdf.format(new Date());
             log.info("銆恵}銆戣Е鍙戜竴绾у搷搴旓紙鍒濈骇鍝嶅簲锛夛紝瀹夌伅ID: {}", currentTime, andonOrde.getId());
@@ -178,7 +178,7 @@
      * 鍙戦�佹寚瀹氱骇鍒殑閫氱煡
      * @param level 1-涓�绾э紝2-浜岀骇锛�3-涓夌骇
      */
-    private boolean sendLevelNotification(String accessToken, AndonButtonDTO andonOrde, int level) {
+    private boolean sendLevelNotification(String accessToken, AndonOrdeDto andonOrde, int level) {
         try {
             String levelDesc = getLevelDesc(level);
             String openId = getResponderOpenId(andonOrde, level);
@@ -250,7 +250,7 @@
      * @param currentLevel 褰撳墠绾у埆
      * @param delayMinutes 寤惰繜鍒嗛挓鏁帮紙鐢卞綋鍓嶇骇鍒搷搴旀椂闀垮喅瀹氾級
      */
-    private void scheduleNextLevelNotification(String accessToken, AndonButtonDTO andonOrde, int currentLevel, int delayMinutes) {
+    private void scheduleNextLevelNotification(String accessToken, AndonOrdeDto andonOrde, int currentLevel, int delayMinutes) {
         int nextLevel = currentLevel + 1;
         if (nextLevel > 3) {
             log.info("宸插埌杈炬渶楂樼骇鍒�氱煡锛屾棤闇�缁х画璋冨害锛屽畨鐏疘D: {}", andonOrde.getId());
@@ -306,7 +306,7 @@
     /**
      * 鏋勫缓閫氱煡鍐呭锛堜紭鍖栧垎闅旂锛屾彁鍗囧彲璇绘�э級
      */
-    private String buildNotificationContent(AndonButtonDTO andonOrde, int level) {
+    private String buildNotificationContent(AndonOrdeDto andonOrde, int level) {
         // 鑾峰彇宸ュ巶鍚嶇О鍜屼骇绾垮悕绉帮紝鍋氱┖鍊间繚鎶�
         String parentFactoryName = andonOrde.getParentFactoryName() != null ? andonOrde.getParentFactoryName() : "鏈煡宸ュ巶";
         String factoryName = andonOrde.getFactoryName() != null ? andonOrde.getFactoryName() : "鏈煡浜х嚎";
@@ -358,7 +358,7 @@
     /**
      * 楠岃瘉閫氱煡鐩稿叧鍙傛暟
      */
-    private boolean validateNotificationParams(AndonButtonDTO andonOrde) {
+    private boolean validateNotificationParams(AndonOrdeDto andonOrde) {
         if (andonOrde == null) {
             log.error("瀹夌伅璁㈠崟淇℃伅涓虹┖");
             return false;
@@ -401,7 +401,7 @@
     }
 
     // 宸ュ叿鏂规硶锛氳幏鍙栧搷搴斾汉openId
-    private String getResponderOpenId(AndonButtonDTO andonOrde, int level) {
+    private String getResponderOpenId(AndonOrdeDto andonOrde, int level) {
         switch (level) {
             case 1: return andonOrde.getResponderOpenId();
             case 2: return andonOrde.getSecondResponderOpenId();
@@ -411,7 +411,7 @@
     }
 
     // 宸ュ叿鏂规硶锛氳幏鍙栧搷搴斾汉鍚嶇О
-    private String getResponderName(AndonButtonDTO andonOrde, int level) {
+    private String getResponderName(AndonOrdeDto andonOrde, int level) {
         String name = null;
         switch (level) {
             case 1:
@@ -430,7 +430,7 @@
     }
 
     // 宸ュ叿鏂规硶锛氳幏鍙栧搷搴旀椂闀匡紙涓�绾�=浜岀骇寤惰繜锛屼簩绾�=涓夌骇寤惰繜锛�
-    private int getResponseDuration(AndonButtonDTO andonOrde, int level) {
+    private int getResponseDuration(AndonOrdeDto andonOrde, int level) {
         int duration = 0;
         switch (level) {
             case 1:
@@ -449,7 +449,7 @@
     }
 
     // 宸ュ叿鏂规硶锛氬垽鏂寚瀹氱骇鍒搷搴斾汉鏄惁鏈夋晥
-    private boolean hasValidResponder(AndonButtonDTO andonOrde, int level) {
+    private boolean hasValidResponder(AndonOrdeDto andonOrde, int level) {
         String openId = getResponderOpenId(andonOrde, level);
         return openId != null && !openId.isEmpty();
     }
diff --git a/src/main/java/org/jeecg/modules/wms/WMSWebService.java b/src/main/java/org/jeecg/modules/wms/WMSWebService.java
index bc9d3f2..d66b206 100644
--- a/src/main/java/org/jeecg/modules/wms/WMSWebService.java
+++ b/src/main/java/org/jeecg/modules/wms/WMSWebService.java
@@ -7,6 +7,8 @@
 import javax.xml.ws.WebServiceClient;
 import javax.xml.ws.WebServiceFeature;
 import javax.xml.ws.Service;
+
+import lombok.extern.slf4j.Slf4j;
 import org.jeecg.modules.wms.service.WebServiceSoap;
 import org.springframework.stereotype.Component;
 
@@ -16,6 +18,7 @@
  * Generated source version: 3.5.5
  *
  */
+@Slf4j
 @Component
 @WebServiceClient(name = "WebService",
                   wsdlLocation = "classpath:/wsdl/WebService.asmx.wsdl",
@@ -32,9 +35,7 @@
         try {
             url = new URL("classpath:/wsdl/WebService.asmx.wsdl");
         } catch (MalformedURLException e) {
-            java.util.logging.Logger.getLogger(WMSWebService.class.getName())
-                .log(java.util.logging.Level.INFO,
-                     "Can not initialize the default wsdl from {0}", "classpath:/wsdl/WebService.asmx.wsdl");
+            log.error("Can not initialize the default wsdl from {}", "classpath:/wsdl/WebService.asmx.wsdl");
         }
         WSDL_LOCATION = url;
     }
diff --git a/src/main/java/org/jeecg/modules/wms/controller/WMSTestController.java b/src/main/java/org/jeecg/modules/wms/controller/WMSTestController.java
index 08d60e0..9732f55 100644
--- a/src/main/java/org/jeecg/modules/wms/controller/WMSTestController.java
+++ b/src/main/java/org/jeecg/modules/wms/controller/WMSTestController.java
@@ -3,44 +3,38 @@
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
-import org.apache.cxf.endpoint.Client;
-import org.apache.cxf.frontend.ClientProxy;
 import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
-import org.apache.cxf.transport.http.HTTPConduit;
-import org.apache.cxf.transports.http.configuration.HTTPClientPolicy;
 import org.jeecg.common.api.vo.Result;
-import org.jeecg.modules.wms.WMSWebService;
 import org.jeecg.modules.wms.dto.WSResponse;
-import org.jeecg.modules.wms.request.ReceiveWMSScanItemList;
+import org.jeecg.modules.wms.request.*;
 import org.jeecg.modules.wms.service.MESWebServiceSoap;
-import org.jeecg.modules.wms.service.WebServiceSoap;
+import org.jeecg.modules.wms.service.WMSWebServiceClient;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.Map;
 
 @Api(tags = "WMS闆嗘垚娴嬭瘯")
 @RestController
 @RequestMapping("/wms/client")
 @Slf4j
 public class WMSTestController {
-    @Value("${webservice.url}")
-    private String url;
     @Autowired
-    private WMSWebService webService;
+    private WMSWebServiceClient webServiceClient;
 
-    private final static String localUrl = "http://localhost:9989/jeecg-boot/webservice/ReceiveWMSScanItemList?wsdl";
+    private final static String localUrl = "http://localhost:9989/ebservice/ReceiveWMSScanItemList?wsdl";
 
 
     @ApiOperation(value = "WMS闆嗘垚娴嬭瘯-鎺ユ敹WMS绉诲簱缁撴灉", notes = "WMS闆嗘垚娴嬭瘯-鎺ユ敹WMS绉诲簱缁撴灉")
     @PostMapping("/testReceiveWMSScanItemList")
-    public Result<?> testReceiveWMSScanItemList() {
+    public Result<?> testReceiveWMSScanItemList(@RequestBody List<WMSWebServiceSendItem> list) {
         JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
         factory.setAddress(localUrl);
         factory.setServiceClass(MESWebServiceSoap.class);
         MESWebServiceSoap service = (MESWebServiceSoap) factory.create();
         ReceiveWMSScanItemList request = new ReceiveWMSScanItemList();
+        request.setWmsWebServiceSendItemList(list);
         WSResponse response = service.receiveWMSScanItemList(request);
         return Result.ok(response);
     }
@@ -54,20 +48,45 @@
 //        WebServiceSoap service = (WebServiceSoap) factory.create();
 //        String response = service.helloWorld();
 //        return Result.ok(response);
-        WebServiceSoap port = webService.getWebServiceSoap12();
+//        WebServiceSoap port = webService.getWebServiceSoap();
         // 2. 鑾峰彇 CXF 搴曞眰 Client 瀵硅薄
-        Client client = ClientProxy.getClient(port);
+//        Client client = ClientProxy.getClient(port);
 
         // 3. 鑾峰彇 HTTPConduit 骞惰缃秴鏃�
-        HTTPConduit http = (HTTPConduit) client.getConduit();
-        HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
+//        HTTPConduit http = (HTTPConduit) client.getConduit();
+//        HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
+//
+//        httpClientPolicy.setConnectionTimeout(10 * 1000); // 杩炴帴瓒呮椂 10 绉�
+//        httpClientPolicy.setReceiveTimeout(300 * 1000);   // 璇诲彇瓒呮椂 60 绉掞紙閲嶇偣锛侊級
 
-        httpClientPolicy.setConnectionTimeout(10 * 1000); // 杩炴帴瓒呮椂 10 绉�
-        httpClientPolicy.setReceiveTimeout(300 * 1000);   // 璇诲彇瓒呮椂 60 绉掞紙閲嶇偣锛侊級
-
-        http.setClient(httpClientPolicy);
-        String result = port.helloWorld();
-        return Result.ok(result);
+//        http.setClient(httpClientPolicy);
+        Map<String, Object> stringObjectMap = webServiceClient.helloWorld();
+        return Result.ok(stringObjectMap);
 
     }
+
+    @ApiOperation(value = "WMS闆嗘垚娴嬭瘯-鐗╂枡鎷夊姩", notes = "WMS闆嗘垚娴嬭瘯-鐗╂枡鎷夊姩")
+    @PostMapping("/receiveReservation")
+    public Result<?> receiveReservation(@RequestBody WebReservationOrder request) {
+        Map<String, Object> stringObjectMap = webServiceClient.receiveReservation(request);
+        return Result.ok(stringObjectMap);
+
+    }
+
+    @ApiOperation(value = "WMS闆嗘垚娴嬭瘯-绉诲簱鐢宠", notes = "WMS闆嗘垚娴嬭瘯-绉诲簱鐢宠")
+    @PostMapping("/receiveMESScanItemList")
+    public Result<?> receiveMESScanItemList(@RequestBody List<WebServiceSendItem> webServiceSendItem) {
+        ArrayOfWebServiceSendItem request = new ArrayOfWebServiceSendItem();
+        request.setWebServiceSendItem(webServiceSendItem);
+        Map<String, Object> stringObjectMap = webServiceClient.receiveMESScanItemList(request);
+        return Result.ok(stringObjectMap);
+    }
+
+    @ApiOperation(value = "WMS闆嗘垚娴嬭瘯-绉诲簱鐢宠鎾ら攢", notes = "WMS闆嗘垚娴嬭瘯-绉诲簱鐢宠鎾ら攢")
+    @PostMapping("/deliOrderDelete")
+    public Result<?> deliOrderDelete(@RequestParam String sFactoryCode, @RequestParam String sStockRecord) {
+        Map<String, Object> stringObjectMap = webServiceClient.deliOrderDelete(sFactoryCode, sStockRecord);
+        return Result.ok(stringObjectMap);
+    }
+
 }
diff --git a/src/main/java/org/jeecg/modules/wms/dto/WSResponse.java b/src/main/java/org/jeecg/modules/wms/dto/WSResponse.java
index 0d55fcf..873f3ca 100644
--- a/src/main/java/org/jeecg/modules/wms/dto/WSResponse.java
+++ b/src/main/java/org/jeecg/modules/wms/dto/WSResponse.java
@@ -33,14 +33,14 @@
 @Getter
 @Setter
 @XmlAccessorType(XmlAccessType.FIELD)
-@XmlType(name = "WSResponse", propOrder = {
+@XmlType(name = "WSResponse",  propOrder = {
         "errorCode",
         "errorDesc"
 })
 public class WSResponse {
 
-    @XmlElement(name = "ErrorCode")
+    @XmlElement(name = "ErrorCode", namespace = "http://tempuri.org/")
     protected String errorCode;
-    @XmlElement(name = "ErrorDesc")
+    @XmlElement(name = "ErrorDesc", namespace = "http://tempuri.org/")
     protected String errorDesc;
 }
diff --git a/src/main/java/org/jeecg/modules/wms/request/ArrayOfWebServiceSendItem.java b/src/main/java/org/jeecg/modules/wms/request/ArrayOfWebServiceSendItem.java
index 98f4d53..1567fbb 100644
--- a/src/main/java/org/jeecg/modules/wms/request/ArrayOfWebServiceSendItem.java
+++ b/src/main/java/org/jeecg/modules/wms/request/ArrayOfWebServiceSendItem.java
@@ -34,7 +34,7 @@
 })
 public class ArrayOfWebServiceSendItem {
 
-    @XmlElement(name = "WebServiceSendItem", nillable = true)
+    @XmlElement(name = "WebServiceSendItem", nillable = true, namespace = "http://tempuri.org/")
     protected List<WebServiceSendItem> webServiceSendItem;
 
     /**
@@ -66,4 +66,7 @@
         return this.webServiceSendItem;
     }
 
+    public void setWebServiceSendItem(List<WebServiceSendItem> webServiceSendItem) {
+        this.webServiceSendItem = webServiceSendItem;
+    }
 }
diff --git a/src/main/java/org/jeecg/modules/wms/request/ReceiveMESScanItemList.java b/src/main/java/org/jeecg/modules/wms/request/ReceiveMESScanItemList.java
index 8977c4b..b7207a9 100644
--- a/src/main/java/org/jeecg/modules/wms/request/ReceiveMESScanItemList.java
+++ b/src/main/java/org/jeecg/modules/wms/request/ReceiveMESScanItemList.java
@@ -35,6 +35,6 @@
 @Setter
 public class ReceiveMESScanItemList {
 
-    @XmlElement(name = "oMESScanItemList")
+    @XmlElement(name = "oMESScanItemList", namespace = "http://tempuri.org/")
     protected ArrayOfWebServiceSendItem omesScanItemList;
 }
diff --git a/src/main/java/org/jeecg/modules/wms/request/ReceiveReservation.java b/src/main/java/org/jeecg/modules/wms/request/ReceiveReservation.java
index d38ae84..d3e2ece 100644
--- a/src/main/java/org/jeecg/modules/wms/request/ReceiveReservation.java
+++ b/src/main/java/org/jeecg/modules/wms/request/ReceiveReservation.java
@@ -4,10 +4,7 @@
 import lombok.Getter;
 import lombok.Setter;
 
-import javax.xml.bind.annotation.XmlAccessType;
-import javax.xml.bind.annotation.XmlAccessorType;
-import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlType;
+import javax.xml.bind.annotation.*;
 
 
 /**
@@ -38,5 +35,6 @@
 @Setter
 public class ReceiveReservation {
 
+    @XmlElement(name = "oWebReservationOrder")
     protected WebReservationOrder oWebReservationOrder;
 }
diff --git a/src/main/java/org/jeecg/modules/wms/request/WebReservationOrder.java b/src/main/java/org/jeecg/modules/wms/request/WebReservationOrder.java
index 2f962be..017faae 100644
--- a/src/main/java/org/jeecg/modules/wms/request/WebReservationOrder.java
+++ b/src/main/java/org/jeecg/modules/wms/request/WebReservationOrder.java
@@ -8,6 +8,7 @@
 import javax.xml.bind.annotation.XmlAccessorType;
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.bind.annotation.XmlType;
+import java.io.Serializable;
 import java.math.BigDecimal;
 
 
@@ -40,12 +41,21 @@
 })
 @Getter
 @Setter
-public class WebReservationOrder {
+public class WebReservationOrder implements Serializable {
 
-    @XmlElement(name = "FactoryCode")
+    @XmlElement(name = "FactoryCode", namespace = "http://tempuri.org/")
     protected String factoryCode;
-    @XmlElement(name = "ReservationOrder")
+    @XmlElement(name = "ReservationOrder", namespace = "http://tempuri.org/")
     protected String reservationOrder;
-    @XmlElement(name = "Total", required = true)
+    @XmlElement(name = "Total", required = true, namespace = "http://tempuri.org/")
     protected BigDecimal total;
+
+    @Override
+    public String toString() {
+        return "WebReservationOrder{" +
+                "factoryCode='" + factoryCode + '\'' +
+                ", reservationOrder='" + reservationOrder + '\'' +
+                ", total=" + total +
+                '}';
+    }
 }
diff --git a/src/main/java/org/jeecg/modules/wms/request/WebServiceSendItem.java b/src/main/java/org/jeecg/modules/wms/request/WebServiceSendItem.java
index ab7e44e..329b80e 100644
--- a/src/main/java/org/jeecg/modules/wms/request/WebServiceSendItem.java
+++ b/src/main/java/org/jeecg/modules/wms/request/WebServiceSendItem.java
@@ -70,38 +70,38 @@
 @Setter
 public class WebServiceSendItem {
 
-    @XmlElement(name = "FactoryCode")
+    @XmlElement(name = "FactoryCode", namespace = "http://tempuri.org/")
     protected String factoryCode;
-    @XmlElement(name = "SkuCode")
+    @XmlElement(name = "SkuCode", namespace = "http://tempuri.org/")
     protected String skuCode;
-    @XmlElement(name = "Align")
+    @XmlElement(name = "Align", namespace = "http://tempuri.org/")
     protected String align;
-    @XmlElement(name = "Pallet")
+    @XmlElement(name = "Pallet", namespace = "http://tempuri.org/")
     protected String pallet;
-    @XmlElement(name = "PackageNo")
+    @XmlElement(name = "PackageNo", namespace = "http://tempuri.org/")
     protected String packageNo;
-    @XmlElement(name = "TrackLot")
+    @XmlElement(name = "TrackLot", namespace = "http://tempuri.org/")
     protected long trackLot;
-    @XmlElement(name = "Series")
+    @XmlElement(name = "Series", namespace = "http://tempuri.org/")
     protected long series;
-    @XmlElement(name = "MesStockID")
+    @XmlElement(name = "MesStockID", namespace = "http://tempuri.org/")
     protected String mesStockID;
-    @XmlElement(name = "Quantity", required = true)
+    @XmlElement(name = "Quantity", required = true, namespace = "http://tempuri.org/")
     protected BigDecimal quantity;
-    @XmlElement(name = "SapTrackLot")
+    @XmlElement(name = "SapTrackLot", namespace = "http://tempuri.org/")
     protected String sapTrackLot;
-    @XmlElement(name = "Section")
+    @XmlElement(name = "Section", namespace = "http://tempuri.org/")
     protected String section;
-    @XmlElement(name = "DestSection")
+    @XmlElement(name = "DestSection", namespace = "http://tempuri.org/")
     protected String destSection;
-    @XmlElement(name = "SupplierCode")
+    @XmlElement(name = "SupplierCode", namespace = "http://tempuri.org/")
     protected String supplierCode;
-    @XmlElement(name = "SupplierTrackLot")
+    @XmlElement(name = "SupplierTrackLot", namespace = "http://tempuri.org/")
     protected String supplierTrackLot;
-    @XmlElement(name = "StageID")
+    @XmlElement(name = "StageID", namespace = "http://tempuri.org/")
     protected String stageID;
-    @XmlElement(name = "Remark")
+    @XmlElement(name = "Remark", namespace = "http://tempuri.org/")
     protected String remark;
-    @XmlElement(name = "OrderCode")
+    @XmlElement(name = "OrderCode", namespace = "http://tempuri.org/")
     protected String orderCode;
 }
diff --git a/src/main/java/org/jeecg/modules/wms/service/WMSWebServiceClient.java b/src/main/java/org/jeecg/modules/wms/service/WMSWebServiceClient.java
new file mode 100644
index 0000000..df2a6ea
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/wms/service/WMSWebServiceClient.java
@@ -0,0 +1,36 @@
+package org.jeecg.modules.wms.service;
+
+import org.jeecg.modules.wms.request.ArrayOfWebServiceSendItem;
+import org.jeecg.modules.wms.request.WebReservationOrder;
+
+import java.util.Map;
+
+public interface WMSWebServiceClient {
+    /**
+     * 娴嬭瘯杩為�氭帴鍙�
+     * @return
+     */
+    Map<String, Object> helloWorld();
+
+    /**
+     * 鐗╂枡鎷夊姩
+     * @param oWebReservationOrder
+     * @return
+     */
+    Map<String, Object> receiveReservation(WebReservationOrder oWebReservationOrder);
+
+    /**
+     * 绉诲簱鐢宠
+     * @param oMESScanItemList
+     * @return
+     */
+    Map<String, Object> receiveMESScanItemList(ArrayOfWebServiceSendItem oMESScanItemList);
+
+    /**
+     * 鎾ら攢绉诲簱鐢宠
+     * @param sFactoryCode
+     * @param sStockRecord
+     * @return
+     */
+    Map<String, Object> deliOrderDelete(String sFactoryCode, String sStockRecord);
+}
diff --git a/src/main/java/org/jeecg/modules/wms/service/WebServiceSoap.java b/src/main/java/org/jeecg/modules/wms/service/WebServiceSoap.java
index 84aba91..4d9887d 100644
--- a/src/main/java/org/jeecg/modules/wms/service/WebServiceSoap.java
+++ b/src/main/java/org/jeecg/modules/wms/service/WebServiceSoap.java
@@ -46,7 +46,7 @@
     WSResponse receiveMESScanItemList(
 
             @WebParam(name = "oMESScanItemList", targetNamespace = "http://tempuri.org/")
-            ArrayOfWebServiceSendItem oMESScanItemList
+            ArrayOfWebServiceSendItem omesScanItemList
     );
 
     @WebMethod(operationName = "DeliOrderDelete", action = "http://tempuri.org/DeliOrderDelete")
diff --git a/src/main/java/org/jeecg/modules/wms/service/impl/WMSWebServiceClientImpl.java b/src/main/java/org/jeecg/modules/wms/service/impl/WMSWebServiceClientImpl.java
new file mode 100644
index 0000000..db42e31
--- /dev/null
+++ b/src/main/java/org/jeecg/modules/wms/service/impl/WMSWebServiceClientImpl.java
@@ -0,0 +1,75 @@
+package org.jeecg.modules.wms.service.impl;
+
+import lombok.extern.slf4j.Slf4j;
+import org.jeecg.common.aspect.annotation.ApiLog;
+import org.jeecg.common.constant.ApiLogCategoryEnum;
+import org.jeecg.modules.wms.WMSWebService;
+import org.jeecg.modules.wms.dto.WSResponse;
+import org.jeecg.modules.wms.request.ArrayOfWebServiceSendItem;
+import org.jeecg.modules.wms.request.WebReservationOrder;
+import org.jeecg.modules.wms.service.WMSWebServiceClient;
+import org.jeecg.modules.wms.service.WebServiceSoap;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.HashMap;
+import java.util.Map;
+
+@Service
+@Slf4j
+public class WMSWebServiceClientImpl implements WMSWebServiceClient {
+    @Autowired
+    private WMSWebService webService;
+
+    @Override
+    @ApiLog(apiName = "WMS娴嬭瘯杩為�氭帴鍙�(HelloWorld)", apiCategory = ApiLogCategoryEnum.WMS)
+    public Map<String, Object> helloWorld() {
+        Map<String, Object> resultMap = new HashMap<>();
+        WebServiceSoap port = webService.getWebServiceSoap();
+        String result = port.helloWorld();
+        resultMap.put("zmess", "璇锋眰鎴愬姛");
+        resultMap.put("ztype", 200);
+        resultMap.put("importParameters", null);
+        resultMap.put("result", result);
+        return resultMap;
+    }
+
+    @Override
+    @ApiLog(apiName = "鐗╂枡鎷夊姩(receiveReservation)", apiCategory = ApiLogCategoryEnum.WMS)
+    public Map<String, Object> receiveReservation(WebReservationOrder oWebReservationOrder) {
+        Map<String, Object> resultMap = new HashMap<>();
+        WebServiceSoap port = webService.getWebServiceSoap();
+        WSResponse result = port.receiveReservation(oWebReservationOrder);
+        resultMap.put("zmess", "璇锋眰鎴愬姛");
+        resultMap.put("ztype", 200);
+        resultMap.put("importParameters", oWebReservationOrder);
+        resultMap.put("result", result);
+        return resultMap;
+    }
+
+    @Override
+    @ApiLog(apiName = "绉诲簱鐢宠(receiveMESScanItemList)", apiCategory = ApiLogCategoryEnum.WMS)
+    public Map<String, Object> receiveMESScanItemList(ArrayOfWebServiceSendItem oMESScanItemList) {
+        Map<String, Object> resultMap = new HashMap<>();
+        WebServiceSoap port = webService.getWebServiceSoap();
+        WSResponse result = port.receiveMESScanItemList(oMESScanItemList);
+        resultMap.put("zmess", "璇锋眰鎴愬姛");
+        resultMap.put("ztype", 200);
+        resultMap.put("importParameters", oMESScanItemList);
+        resultMap.put("result", result);
+        return resultMap;
+    }
+
+    @Override
+    @ApiLog(apiName = "鎾ら攢绉诲簱鐢宠(deliOrderDelete)", apiCategory = ApiLogCategoryEnum.WMS)
+    public Map<String, Object> deliOrderDelete(String sFactoryCode, String sStockRecord) {
+        Map<String, Object> resultMap = new HashMap<>();
+        WebServiceSoap port = webService.getWebServiceSoap();
+        WSResponse result = port.deliOrderDelete(sFactoryCode, sStockRecord);
+        resultMap.put("zmess", "璇锋眰鎴愬姛");
+        resultMap.put("ztype", 200);
+        resultMap.put("importParameters", sStockRecord);
+        resultMap.put("result", result);
+        return resultMap;
+    }
+}

--
Gitblit v1.9.3