From d11feb8336d609a47695f849cc377a0a5f8dbb3b Mon Sep 17 00:00:00 2001
From: cuilei <ray_tsu1@163.com>
Date: 星期二, 26 八月 2025 15:01:14 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 src/main/java/org/jeecg/modules/cms/mapper/CuttingInventoryMapper.java                      |    8 
 src/main/java/org/jeecg/modules/andon/service/impl/AndonResponseConfigServiceImpl.java      |    2 
 src/main/java/org/jeecg/modules/mes/entity/MesMaterialTransferRequest.java                  |   11 
 src/main/java/org/jeecg/modules/mes/service/IMesMaterialTransferRequestService.java         |   21 +
 src/main/resources/application-prod.yml                                                     |    6 
 src/main/java/org/jeecg/modules/wms/WMSWebService.java                                      |    3 
 src/main/java/org/jeecg/modules/cms/service/ICuttingInventoryService.java                   |    7 
 src/main/java/org/jeecg/modules/cms/controller/CuttingInventoryController.java              |  258 +++++++++++-----------
 src/main/java/org/jeecg/modules/mes/service/impl/MesMaterialTransferRequestServiceImpl.java |   96 ++++++++
 src/main/java/org/jeecg/modules/cms/service/impl/CuttingInventoryServiceImpl.java           |   16 +
 src/main/java/org/jeecg/modules/wms/service/impl/MESWebServiceSoapImpl.java                 |   32 ++
 src/main/java/org/jeecg/modules/mes/controller/MesMaterialTransferRequestController.java    |  130 +++++++++--
 src/main/java/org/jeecg/modules/wms/controller/WMSTestController.java                       |    2 
 src/main/java/org/jeecg/modules/andon/controller/AndonOrderController.java                  |    2 
 src/main/java/org/jeecg/modules/andon/service/impl/AndonOrderServiceImpl.java               |    2 
 src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingInventoryMapper.xml                   |   12 +
 src/main/java/org/jeecg/modules/sap/service/impl/OrderMaterialRequestServiceImpl.java       |    2 
 17 files changed, 431 insertions(+), 179 deletions(-)

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 2b8e922..d05ceca 100644
--- a/src/main/java/org/jeecg/modules/andon/controller/AndonOrderController.java
+++ b/src/main/java/org/jeecg/modules/andon/controller/AndonOrderController.java
@@ -83,6 +83,8 @@
             String productionLineId = andonResponseConfigService.getProductionLineIdByButtonId(andonOrder.getButtonId());
             if (productionLineId != null) {
                 andonOrder.setFactoryId(productionLineId);
+            }else{
+             return Result.error("鏈壘鍒板搴旂殑浜х嚎ID,璇峰厛杩涜瀹夌伅鍝嶅簲閰嶇疆锛�");
             }
         }
         andonOrderService.save(andonOrder);
diff --git a/src/main/java/org/jeecg/modules/andon/service/impl/AndonOrderServiceImpl.java b/src/main/java/org/jeecg/modules/andon/service/impl/AndonOrderServiceImpl.java
index e9b6a34..205d5e7 100644
--- a/src/main/java/org/jeecg/modules/andon/service/impl/AndonOrderServiceImpl.java
+++ b/src/main/java/org/jeecg/modules/andon/service/impl/AndonOrderServiceImpl.java
@@ -68,7 +68,7 @@
         // 璁剧疆宸ュ崟鐘舵�佷负澶勭悊涓�
         andonOrder.setOrderStatus("3");
 
-        // 鑾峰彇鍝嶅簲鑰呯敤鎴峰悕
+        // 鑾峰彇鍝嶅簲鐢ㄦ埛鍚�
         String responderUsername = andonOrder.getResponder();
 
         // 楠岃瘉鍝嶅簲鑰呯敤鎴峰悕涓嶄负绌�
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 5129363..f121ee5 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
@@ -55,7 +55,7 @@
     @Override
     public String getProductionLineIdByButtonId(String buttonId) {
         QueryWrapper<AndonResponseConfig> queryWrapper = new QueryWrapper<>();
-        queryWrapper.eq("button_id", buttonId);
+        queryWrapper.eq("button_id", buttonId);  // 纭繚杩欓噷浣跨敤鐨勬槸鏁版嵁搴撳瓧娈靛悕
         AndonResponseConfig config = this.getOne(queryWrapper);
         return config != null ? config.getFactoryId() : null;
     }
diff --git a/src/main/java/org/jeecg/modules/cms/controller/CuttingInventoryController.java b/src/main/java/org/jeecg/modules/cms/controller/CuttingInventoryController.java
index 92024f7..630d7e6 100644
--- a/src/main/java/org/jeecg/modules/cms/controller/CuttingInventoryController.java
+++ b/src/main/java/org/jeecg/modules/cms/controller/CuttingInventoryController.java
@@ -3,15 +3,11 @@
 import java.util.Arrays;
 import java.util.List;
 import java.util.Map;
-import java.util.stream.Collectors;
-import java.io.IOException;
-import java.io.UnsupportedEncodingException;
-import java.net.URLDecoder;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.system.query.QueryGenerator;
-import org.jeecg.common.util.oConvertUtils;
 import org.jeecg.modules.cms.entity.CuttingInventory;
 import org.jeecg.modules.cms.service.ICuttingInventoryService;
 
@@ -20,141 +16,133 @@
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.extern.slf4j.Slf4j;
 
-import org.jeecgframework.poi.excel.ExcelImportUtil;
-import org.jeecgframework.poi.excel.def.NormalExcelConstants;
-import org.jeecgframework.poi.excel.entity.ExportParams;
-import org.jeecgframework.poi.excel.entity.ImportParams;
-import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
 import org.jeecg.common.system.base.controller.JeecgController;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
-import org.springframework.web.multipart.MultipartHttpServletRequest;
 import org.springframework.web.servlet.ModelAndView;
-import com.alibaba.fastjson.JSON;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.jeecg.common.aspect.annotation.AutoLog;
 
- /**
+/**
  * @Description: 鍒�鍏峰簱瀛�
  * @Author: jeecg-boot
- * @Date:   2025-07-28
+ * @Date: 2025-07-28
  * @Version: V1.0
  */
-@Api(tags="鍒�鍏峰簱瀛�")
+@Api(tags = "鍒�鍏峰簱瀛�")
 @RestController
 @RequestMapping("/cms/cuttingInventory")
 @Slf4j
 public class CuttingInventoryController extends JeecgController<CuttingInventory, ICuttingInventoryService> {
-	@Autowired
-	private ICuttingInventoryService cuttingInventoryService;
-	
-	/**
-	 * 鍒嗛〉鍒楄〃鏌ヨ
-	 *
-	 * @param cuttingInventory
-	 * @param pageNo
-	 * @param pageSize
-	 * @param req
-	 * @return
-	 */
-	//@AutoLog(value = "鍒�鍏峰簱瀛�-鍒嗛〉鍒楄〃鏌ヨ")
-	@ApiOperation(value="鍒�鍏峰簱瀛�-鍒嗛〉鍒楄〃鏌ヨ", notes="鍒�鍏峰簱瀛�-鍒嗛〉鍒楄〃鏌ヨ")
-	@GetMapping(value = "/list")
-	public Result<IPage<CuttingInventory>> queryPageList(CuttingInventory cuttingInventory,
-								   @RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
-								   @RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
-								   HttpServletRequest req) {
-		QueryWrapper<CuttingInventory> queryWrapper = QueryGenerator.initQueryWrapper(cuttingInventory, req.getParameterMap());
-		Page<CuttingInventory> page = new Page<CuttingInventory>(pageNo, pageSize);
-		IPage<CuttingInventory> pageList = cuttingInventoryService.page(page, queryWrapper);
-		return Result.OK(pageList);
-	}
-	
-	/**
-	 *   娣诲姞
-	 *
-	 * @param cuttingInventory
-	 * @return
-	 */
-	@AutoLog(value = "鍒�鍏峰簱瀛�-娣诲姞")
-	@ApiOperation(value="鍒�鍏峰簱瀛�-娣诲姞", notes="鍒�鍏峰簱瀛�-娣诲姞")
-	//@RequiresPermissions("org.jeecg.modules:cms_cutting_inventory:add")
-	@PostMapping(value = "/add")
-	public Result<String> add(@RequestBody CuttingInventory cuttingInventory) {
-		cuttingInventoryService.save(cuttingInventory);
-		return Result.OK("娣诲姞鎴愬姛锛�");
-	}
-	
-	/**
-	 *  缂栬緫
-	 *
-	 * @param cuttingInventory
-	 * @return
-	 */
-	@AutoLog(value = "鍒�鍏峰簱瀛�-缂栬緫")
-	@ApiOperation(value="鍒�鍏峰簱瀛�-缂栬緫", notes="鍒�鍏峰簱瀛�-缂栬緫")
-	//@RequiresPermissions("org.jeecg.modules:cms_cutting_inventory:edit")
-	@RequestMapping(value = "/edit", method = {RequestMethod.PUT,RequestMethod.POST})
-	public Result<String> edit(@RequestBody CuttingInventory cuttingInventory) {
-		cuttingInventoryService.updateById(cuttingInventory);
-		return Result.OK("缂栬緫鎴愬姛!");
-	}
-	
-	/**
-	 *   閫氳繃id鍒犻櫎
-	 *
-	 * @param id
-	 * @return
-	 */
-	@AutoLog(value = "鍒�鍏峰簱瀛�-閫氳繃id鍒犻櫎")
-	@ApiOperation(value="鍒�鍏峰簱瀛�-閫氳繃id鍒犻櫎", notes="鍒�鍏峰簱瀛�-閫氳繃id鍒犻櫎")
-	//@RequiresPermissions("org.jeecg.modules:cms_cutting_inventory:delete")
-	@DeleteMapping(value = "/delete")
-	public Result<String> delete(@RequestParam(name="id",required=true) String id) {
-		cuttingInventoryService.removeById(id);
-		return Result.OK("鍒犻櫎鎴愬姛!");
-	}
-	
-	/**
-	 *  鎵归噺鍒犻櫎
-	 *
-	 * @param ids
-	 * @return
-	 */
-	@AutoLog(value = "鍒�鍏峰簱瀛�-鎵归噺鍒犻櫎")
-	@ApiOperation(value="鍒�鍏峰簱瀛�-鎵归噺鍒犻櫎", notes="鍒�鍏峰簱瀛�-鎵归噺鍒犻櫎")
-	//@RequiresPermissions("org.jeecg.modules:cms_cutting_inventory:deleteBatch")
-	@DeleteMapping(value = "/deleteBatch")
-	public Result<String> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
-		this.cuttingInventoryService.removeByIds(Arrays.asList(ids.split(",")));
-		return Result.OK("鎵归噺鍒犻櫎鎴愬姛!");
-	}
-	
-	/**
-	 * 閫氳繃id鏌ヨ
-	 *
-	 * @param id
-	 * @return
-	 */
-	//@AutoLog(value = "鍒�鍏峰簱瀛�-閫氳繃id鏌ヨ")
-	@ApiOperation(value="鍒�鍏峰簱瀛�-閫氳繃id鏌ヨ", notes="鍒�鍏峰簱瀛�-閫氳繃id鏌ヨ")
-	@GetMapping(value = "/queryById")
-	public Result<CuttingInventory> queryById(@RequestParam(name="id",required=true) String id) {
-		CuttingInventory cuttingInventory = cuttingInventoryService.getById(id);
-		if(cuttingInventory==null) {
-			return Result.error("鏈壘鍒板搴旀暟鎹�");
-		}
-		return Result.OK(cuttingInventory);
-	}
+    @Autowired
+    private ICuttingInventoryService cuttingInventoryService;
 
     /**
-    * 瀵煎嚭excel
-    *
-    * @param request
-    * @param cuttingInventory
-    */
+     * 鍒嗛〉鍒楄〃鏌ヨ
+     *
+     * @param cuttingInventory
+     * @param pageNo
+     * @param pageSize
+     * @param req
+     * @return
+     */
+    //@AutoLog(value = "鍒�鍏峰簱瀛�-鍒嗛〉鍒楄〃鏌ヨ")
+    @ApiOperation(value = "鍒�鍏峰簱瀛�-鍒嗛〉鍒楄〃鏌ヨ", notes = "鍒�鍏峰簱瀛�-鍒嗛〉鍒楄〃鏌ヨ")
+    @GetMapping(value = "/list")
+    public Result<IPage<CuttingInventory>> queryPageList(CuttingInventory cuttingInventory,
+                                                         @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+                                                         @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
+                                                         HttpServletRequest req) {
+        QueryWrapper<CuttingInventory> queryWrapper = QueryGenerator.initQueryWrapper(cuttingInventory, req.getParameterMap());
+        Page<CuttingInventory> page = new Page<CuttingInventory>(pageNo, pageSize);
+        IPage<CuttingInventory> pageList = cuttingInventoryService.page(page, queryWrapper);
+        return Result.OK(pageList);
+    }
+
+    /**
+     * 娣诲姞
+     *
+     * @param cuttingInventory
+     * @return
+     */
+    @AutoLog(value = "鍒�鍏峰簱瀛�-娣诲姞")
+    @ApiOperation(value = "鍒�鍏峰簱瀛�-娣诲姞", notes = "鍒�鍏峰簱瀛�-娣诲姞")
+    //@RequiresPermissions("org.jeecg.modules:cms_cutting_inventory:add")
+    @PostMapping(value = "/add")
+    public Result<String> add(@RequestBody CuttingInventory cuttingInventory) {
+        cuttingInventoryService.save(cuttingInventory);
+        return Result.OK("娣诲姞鎴愬姛锛�");
+    }
+
+    /**
+     * 缂栬緫
+     *
+     * @param cuttingInventory
+     * @return
+     */
+    @AutoLog(value = "鍒�鍏峰簱瀛�-缂栬緫")
+    @ApiOperation(value = "鍒�鍏峰簱瀛�-缂栬緫", notes = "鍒�鍏峰簱瀛�-缂栬緫")
+    //@RequiresPermissions("org.jeecg.modules:cms_cutting_inventory:edit")
+    @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
+    public Result<String> edit(@RequestBody CuttingInventory cuttingInventory) {
+        cuttingInventoryService.updateById(cuttingInventory);
+        return Result.OK("缂栬緫鎴愬姛!");
+    }
+
+    /**
+     * 閫氳繃id鍒犻櫎
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "鍒�鍏峰簱瀛�-閫氳繃id鍒犻櫎")
+    @ApiOperation(value = "鍒�鍏峰簱瀛�-閫氳繃id鍒犻櫎", notes = "鍒�鍏峰簱瀛�-閫氳繃id鍒犻櫎")
+    //@RequiresPermissions("org.jeecg.modules:cms_cutting_inventory:delete")
+    @DeleteMapping(value = "/delete")
+    public Result<String> delete(@RequestParam(name = "id", required = true) String id) {
+        cuttingInventoryService.removeById(id);
+        return Result.OK("鍒犻櫎鎴愬姛!");
+    }
+
+    /**
+     * 鎵归噺鍒犻櫎
+     *
+     * @param ids
+     * @return
+     */
+    @AutoLog(value = "鍒�鍏峰簱瀛�-鎵归噺鍒犻櫎")
+    @ApiOperation(value = "鍒�鍏峰簱瀛�-鎵归噺鍒犻櫎", notes = "鍒�鍏峰簱瀛�-鎵归噺鍒犻櫎")
+    //@RequiresPermissions("org.jeecg.modules:cms_cutting_inventory:deleteBatch")
+    @DeleteMapping(value = "/deleteBatch")
+    public Result<String> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
+        this.cuttingInventoryService.removeByIds(Arrays.asList(ids.split(",")));
+        return Result.OK("鎵归噺鍒犻櫎鎴愬姛!");
+    }
+
+    /**
+     * 閫氳繃id鏌ヨ
+     *
+     * @param id
+     * @return
+     */
+    //@AutoLog(value = "鍒�鍏峰簱瀛�-閫氳繃id鏌ヨ")
+    @ApiOperation(value = "鍒�鍏峰簱瀛�-閫氳繃id鏌ヨ", notes = "鍒�鍏峰簱瀛�-閫氳繃id鏌ヨ")
+    @GetMapping(value = "/queryById")
+    public Result<CuttingInventory> queryById(@RequestParam(name = "id", required = true) String id) {
+        CuttingInventory cuttingInventory = cuttingInventoryService.getById(id);
+        if (cuttingInventory == null) {
+            return Result.error("鏈壘鍒板搴旀暟鎹�");
+        }
+        return Result.OK(cuttingInventory);
+    }
+
+    /**
+     * 瀵煎嚭excel
+     *
+     * @param request
+     * @param cuttingInventory
+     */
     //@RequiresPermissions("org.jeecg.modules:cms_cutting_inventory:exportXls")
     @RequestMapping(value = "/exportXls")
     public ModelAndView exportXls(HttpServletRequest request, CuttingInventory cuttingInventory) {
@@ -162,16 +150,30 @@
     }
 
     /**
-      * 閫氳繃excel瀵煎叆鏁版嵁
-    *
-    * @param request
-    * @param response
-    * @return
-    */
+     * 閫氳繃excel瀵煎叆鏁版嵁
+     *
+     * @param request
+     * @param response
+     * @return
+     */
     //@RequiresPermissions("cms_cutting_inventory:importExcel")
     @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
     public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
         return super.importExcel(request, response, CuttingInventory.class);
     }
 
+    /**
+     * 鍒�鍏峰簱瀛樼粺璁�
+     */
+    @ApiOperation(value = "鍒�鍏峰簱瀛�-缁熻鍒嗛〉鏌ヨ", notes = "鍒�鍏峰簱瀛�-缁熻鍒嗛〉鏌ヨ")
+    @GetMapping(value = "/statistics")
+    public Result<IPage<Map<String, Object>>> statistics(
+            @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo,
+            @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize) {
+
+        Page<Map<String, Object>> page = new Page<>(pageNo, pageSize);
+        IPage<Map<String, Object>> pageList = cuttingInventoryService.statisticsByCuttingIdAndStatus(page);
+        return Result.OK(pageList);
+    }
+
 }
diff --git a/src/main/java/org/jeecg/modules/cms/mapper/CuttingInventoryMapper.java b/src/main/java/org/jeecg/modules/cms/mapper/CuttingInventoryMapper.java
index 6a98599..551ea83 100644
--- a/src/main/java/org/jeecg/modules/cms/mapper/CuttingInventoryMapper.java
+++ b/src/main/java/org/jeecg/modules/cms/mapper/CuttingInventoryMapper.java
@@ -1,8 +1,9 @@
 package org.jeecg.modules.cms.mapper;
 
-import java.util.List;
+import java.util.Map;
 
-import org.apache.ibatis.annotations.Param;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.jeecg.modules.cms.entity.CuttingInventory;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 
@@ -13,5 +14,4 @@
  * @Version: V1.0
  */
 public interface CuttingInventoryMapper extends BaseMapper<CuttingInventory> {
-
-}
+    IPage<Map<String, Object>> statisticsByCuttingIdAndStatus(Page<Map<String, Object>> page);}
diff --git a/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingInventoryMapper.xml b/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingInventoryMapper.xml
index 90c6061..0c9424a 100644
--- a/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingInventoryMapper.xml
+++ b/src/main/java/org/jeecg/modules/cms/mapper/xml/CuttingInventoryMapper.xml
@@ -1,5 +1,15 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="org.jeecg.modules.cms.mapper.CuttingInventoryMapper">
-
+    <select id="statisticsByCuttingIdAndStatus" resultType="map">
+        SELECT
+            t1.cutting_id as cuttingId,
+            count(*) AS cuttingIdNumber,
+            t1.inventory_status as inventoryStatus,
+            t2.cutting_code AS cuttingCode
+        FROM
+            cms_cutting_inventory t1
+        LEFT JOIN cms_cutting_tool t2 ON t1.cutting_id = t2.id AND t2.del_flag = 0
+        GROUP BY cutting_id, inventory_status, cutting_code
+    </select>
 </mapper>
\ No newline at end of file
diff --git a/src/main/java/org/jeecg/modules/cms/service/ICuttingInventoryService.java b/src/main/java/org/jeecg/modules/cms/service/ICuttingInventoryService.java
index 10cea17..5c4098a 100644
--- a/src/main/java/org/jeecg/modules/cms/service/ICuttingInventoryService.java
+++ b/src/main/java/org/jeecg/modules/cms/service/ICuttingInventoryService.java
@@ -1,7 +1,12 @@
 package org.jeecg.modules.cms.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.jeecg.modules.cms.entity.CuttingInventory;
 import com.baomidou.mybatisplus.extension.service.IService;
+
+import java.util.List;
+import java.util.Map;
 
 /**
  * @Description: 鍒�鍏峰簱瀛�
@@ -11,4 +16,6 @@
  */
 public interface ICuttingInventoryService extends IService<CuttingInventory> {
 
+    IPage<Map<String, Object>> statisticsByCuttingIdAndStatus(Page<Map<String, Object>> page);
+
 }
diff --git a/src/main/java/org/jeecg/modules/cms/service/impl/CuttingInventoryServiceImpl.java b/src/main/java/org/jeecg/modules/cms/service/impl/CuttingInventoryServiceImpl.java
index 2e3fcd1..f5adc82 100644
--- a/src/main/java/org/jeecg/modules/cms/service/impl/CuttingInventoryServiceImpl.java
+++ b/src/main/java/org/jeecg/modules/cms/service/impl/CuttingInventoryServiceImpl.java
@@ -1,11 +1,21 @@
 package org.jeecg.modules.cms.service.impl;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import org.jeecg.modules.cms.entity.CuttingInventory;
 import org.jeecg.modules.cms.mapper.CuttingInventoryMapper;
+import org.jeecg.modules.cms.mapper.CuttingToolMapper;
 import org.jeecg.modules.cms.service.ICuttingInventoryService;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+import java.util.stream.Collectors;
 
 /**
  * @Description: 鍒�鍏峰簱瀛�
@@ -15,5 +25,9 @@
  */
 @Service
 public class CuttingInventoryServiceImpl extends ServiceImpl<CuttingInventoryMapper, CuttingInventory> implements ICuttingInventoryService {
-
+    @Override
+    public IPage<Map<String, Object>> statisticsByCuttingIdAndStatus(Page<Map<String, Object>> page) {        // 鎵ц鍒嗛〉缁熻鏌ヨ
+        IPage<Map<String, Object>> result = baseMapper.statisticsByCuttingIdAndStatus(page);
+        return result;
+    }
 }
diff --git a/src/main/java/org/jeecg/modules/mes/controller/MesMaterialTransferRequestController.java b/src/main/java/org/jeecg/modules/mes/controller/MesMaterialTransferRequestController.java
index 461882f..80a891c 100644
--- a/src/main/java/org/jeecg/modules/mes/controller/MesMaterialTransferRequestController.java
+++ b/src/main/java/org/jeecg/modules/mes/controller/MesMaterialTransferRequestController.java
@@ -6,21 +6,21 @@
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.aspect.annotation.AutoLog;
+import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.common.system.base.controller.JeecgController;
 import org.jeecg.common.system.query.QueryGenerator;
 import org.jeecg.modules.eam.constant.BusinessCodeConst;
 import org.jeecg.modules.mes.entity.MesMaterialTransferRequest;
+import org.jeecg.modules.mes.enums.MaterialTransferPublishStatus;
 import org.jeecg.modules.mes.service.IMesMaterialTransferRequestService;
 import org.jeecg.modules.system.service.ISysBusinessCodeRuleService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
-import org.springframework.web.servlet.ModelAndView;
 
 import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.util.Arrays;
 
 /**
  * @Description: 鐗╂枡鎷夊姩鐢宠
@@ -73,7 +73,7 @@
         String codeSeq = businessCodeRuleService.generateBusinessCodeSeq(BusinessCodeConst.MATERIAL_TRANSFER_CODE_RULE);
         request.setRequestCode(codeSeq);
         boolean b = mesMaterialTransferRequestService.addMaterialTransferRequest(request);
-        if(!b) {
+        if (!b) {
             return Result.error("娣诲姞澶辫触锛�");
         }
         return Result.OK("娣诲姞鎴愬姛锛�");
@@ -87,7 +87,6 @@
      */
     @AutoLog(value = "鐗╂枡鎷夊姩鐢宠-缂栬緫")
     @ApiOperation(value = "鐗╂枡鎷夊姩鐢宠-缂栬緫", notes = "鐗╂枡鎷夊姩鐢宠-缂栬緫")
-    //@RequiresPermissions("org.jeecg.modules:mes_material_transfer_request:edit")
     @RequestMapping(value = "/edit", method = {RequestMethod.PUT, RequestMethod.POST})
     public Result<String> edit(@RequestBody MesMaterialTransferRequest mesMaterialTransferRequest) {
         mesMaterialTransferRequestService.updateById(mesMaterialTransferRequest);
@@ -102,11 +101,18 @@
      */
     @AutoLog(value = "鐗╂枡鎷夊姩鐢宠-閫氳繃id鍒犻櫎")
     @ApiOperation(value = "鐗╂枡鎷夊姩鐢宠-閫氳繃id鍒犻櫎", notes = "鐗╂枡鎷夊姩鐢宠-閫氳繃id鍒犻櫎")
-    //@RequiresPermissions("org.jeecg.modules:mes_material_transfer_request:delete")
     @DeleteMapping(value = "/delete")
     public Result<String> delete(@RequestParam(name = "id", required = true) String id) {
-        mesMaterialTransferRequestService.removeById(id);
-        return Result.OK("鍒犻櫎鎴愬姛!");
+        MesMaterialTransferRequest entity = mesMaterialTransferRequestService.getById(id);
+        if (entity == null) {
+            return Result.error("鍒犻櫎鐨勬暟鎹笉瀛樺湪锛岃鍒锋柊閲嶈瘯锛�");
+        }
+        if (!MaterialTransferPublishStatus.WAIT_PUBLISH.name().equals(entity.getPublishStatus())) {
+            return Result.error("鏁版嵁宸插彂甯冿紝鏃犳硶鍒犻櫎锛�");
+        }
+        entity.setDelFlag(CommonConstant.DEL_FLAG_1);
+        mesMaterialTransferRequestService.updateById(entity);
+        return Result.OK("鍒犻櫎鎴愬姛锛�");
     }
 
     /**
@@ -117,10 +123,21 @@
      */
     @AutoLog(value = "鐗╂枡鎷夊姩鐢宠-鎵归噺鍒犻櫎")
     @ApiOperation(value = "鐗╂枡鎷夊姩鐢宠-鎵归噺鍒犻櫎", notes = "鐗╂枡鎷夊姩鐢宠-鎵归噺鍒犻櫎")
-    //@RequiresPermissions("org.jeecg.modules:mes_material_transfer_request:deleteBatch")
     @DeleteMapping(value = "/deleteBatch")
     public Result<String> deleteBatch(@RequestParam(name = "ids", required = true) String ids) {
-        this.mesMaterialTransferRequestService.removeByIds(Arrays.asList(ids.split(",")));
+        if (StringUtils.isBlank(ids)) {
+            return Result.error("鍙傛暟閿欒锛�");
+        }
+        String[] split = ids.split(",");
+        for (String id : split) {
+            MesMaterialTransferRequest entity = mesMaterialTransferRequestService.getById(id);
+            if (entity == null || !MaterialTransferPublishStatus.WAIT_PUBLISH.name().equals(entity.getPublishStatus())) {
+                //涓嶅仛澶勭悊
+                continue;
+            }
+            entity.setDelFlag(CommonConstant.DEL_FLAG_1);
+            mesMaterialTransferRequestService.updateById(entity);
+        }
         return Result.OK("鎵归噺鍒犻櫎鎴愬姛!");
     }
 
@@ -142,28 +159,93 @@
     }
 
     /**
-     * 瀵煎嚭excel
+     *  閫氳繃id鍙戝竷
      *
-     * @param request
-     * @param mesMaterialTransferRequest
+     * @param id
+     * @return
      */
-    //@RequiresPermissions("org.jeecg.modules:mes_material_transfer_request:exportXls")
-    @RequestMapping(value = "/exportXls")
-    public ModelAndView exportXls(HttpServletRequest request, MesMaterialTransferRequest mesMaterialTransferRequest) {
-        return super.exportXls(request, mesMaterialTransferRequest, MesMaterialTransferRequest.class, "鐗╂枡鎷夊姩鐢宠");
+    @AutoLog(value = "鐗╂枡鎷夊姩鐢宠-鍙戝竷")
+    @ApiOperation(value = "鐗╂枡鎷夊姩鐢宠-鍙戝竷", notes = "鐗╂枡鎷夊姩鐢宠-鍙戝竷")
+    @PutMapping(value = "/publish")
+    public Result<String> publish(@RequestParam(name = "id", required = true) String id) {
+        boolean b = mesMaterialTransferRequestService.publish(id);
+        if (!b) {
+            return Result.error("鍙戝竷澶辫触锛�");
+        }
+        return Result.OK("鍙戝竷鎴愬姛锛�");
     }
 
     /**
-     * 閫氳繃excel瀵煎叆鏁版嵁
+     *  鎵归噺鍙戝竷
      *
-     * @param request
-     * @param response
+     * @param ids
      * @return
      */
-    //@RequiresPermissions("mes_material_transfer_request:importExcel")
-    @RequestMapping(value = "/importExcel", method = RequestMethod.POST)
-    public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
-        return super.importExcel(request, response, MesMaterialTransferRequest.class);
+    @AutoLog(value = "鐗╂枡鎷夊姩鐢宠-鎵归噺鍙戝竷")
+    @ApiOperation(value = "鐗╂枡鎷夊姩鐢宠-鎵归噺鍙戝竷", notes = "鐗╂枡鎷夊姩鐢宠-鎵归噺鍙戝竷")
+    @PutMapping(value = "/publishBatch")
+    public Result<String> publishBatch(@RequestParam(name = "ids", required = true) String ids) {
+        if (StringUtils.isBlank(ids)) {
+            return Result.error("鍙傛暟閿欒锛�");
+        }
+        String[] split = ids.split(",");
+        int count = 0;
+        for (String id : split) {
+            try {
+                boolean b = mesMaterialTransferRequestService.publish(id);
+                if(b) {
+                    count++;
+                }
+            } catch (Exception e) {
+                log.error(e.getMessage(), e);
+            }
+        }
+        return Result.OK("鎴愬姛鍙戝竷" + count + "鏉℃暟鎹紒");
+    }
+
+    /**
+     *  閫氳繃id璇锋眰WMS
+     *
+     * @param id
+     * @return
+     */
+    @AutoLog(value = "鐗╂枡鎷夊姩鐢宠-璇锋眰WMS")
+    @ApiOperation(value = "鐗╂枡鎷夊姩鐢宠-璇锋眰WMS", notes = "鐗╂枡鎷夊姩鐢宠-璇锋眰WMS")
+    @PutMapping(value = "/request")
+    public Result<String> request(@RequestParam(name = "id", required = true) String id) {
+        boolean b = mesMaterialTransferRequestService.request(id);
+        if (!b) {
+            return Result.error("璇锋眰澶辫触锛�");
+        }
+        return Result.OK("璇锋眰鎴愬姛锛�");
+    }
+
+    /**
+     *  鎵归噺璇锋眰WMS
+     *
+     * @param ids
+     * @return
+     */
+    @AutoLog(value = "鐗╂枡鎷夊姩鐢宠-鎵归噺璇锋眰WMS")
+    @ApiOperation(value = "鐗╂枡鎷夊姩鐢宠-鎵归噺璇锋眰WMS", notes = "鐗╂枡鎷夊姩鐢宠-鎵归噺璇锋眰WMS")
+    @PutMapping(value = "/requestBatch")
+    public Result<String> requestBatch(@RequestParam(name = "ids", required = true) String ids) {
+        if (StringUtils.isBlank(ids)) {
+            return Result.error("鍙傛暟閿欒锛�");
+        }
+        String[] split = ids.split(",");
+        int count = 0;
+        for (String id : split) {
+            try {
+                boolean b = mesMaterialTransferRequestService.request(id);
+                if(b) {
+                    count++;
+                }
+            } catch (Exception e) {
+                log.error(e.getMessage(), e);
+            }
+        }
+        return Result.OK("鎴愬姛璇锋眰WMS" + count + "鏉℃暟鎹紒");
     }
 
     /*
diff --git a/src/main/java/org/jeecg/modules/mes/entity/MesMaterialTransferRequest.java b/src/main/java/org/jeecg/modules/mes/entity/MesMaterialTransferRequest.java
index 8adcc8e..7bb3ee3 100644
--- a/src/main/java/org/jeecg/modules/mes/entity/MesMaterialTransferRequest.java
+++ b/src/main/java/org/jeecg/modules/mes/entity/MesMaterialTransferRequest.java
@@ -1,6 +1,9 @@
 package org.jeecg.modules.mes.entity;
 
-import com.baomidou.mybatisplus.annotation.*;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableLogic;
+import com.baomidou.mybatisplus.annotation.TableName;
 import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -8,10 +11,10 @@
 import lombok.EqualsAndHashCode;
 import lombok.experimental.Accessors;
 import org.jeecg.common.aspect.annotation.Dict;
-import org.jeecgframework.poi.excel.annotation.Excel;
 import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serializable;
+import java.math.BigDecimal;
 import java.util.Date;
 
 /**
@@ -105,8 +108,8 @@
     private String materialName;
     /**鐞嗚鎷夊姩鏁伴噺*/
     @ApiModelProperty(value = "鐞嗚鎷夊姩鏁伴噺")
-    private Double specifiedQuantity;
+    private BigDecimal specifiedQuantity;
     /**瀹為檯鎷夊姩鏁伴噺*/
     @ApiModelProperty(value = "瀹為檯鎷夊姩鏁伴噺")
-    private Double actualQuantity;
+    private BigDecimal actualQuantity;
 }
diff --git a/src/main/java/org/jeecg/modules/mes/service/IMesMaterialTransferRequestService.java b/src/main/java/org/jeecg/modules/mes/service/IMesMaterialTransferRequestService.java
index cae934a..ea52b2c 100644
--- a/src/main/java/org/jeecg/modules/mes/service/IMesMaterialTransferRequestService.java
+++ b/src/main/java/org/jeecg/modules/mes/service/IMesMaterialTransferRequestService.java
@@ -19,4 +19,25 @@
      * @param request
      */
     boolean addMaterialTransferRequest(MesMaterialTransferRequest request);
+
+    /**
+     * 鍙戝竷锛岃皟鐢⊿AP鑾峰彇棰勭暀鍙�
+     * @param id
+     * @return
+     */
+    boolean publish(String id);
+
+    /**
+     * 璇锋眰WMS
+     * @param id
+     * @return
+     */
+    boolean request(String id);
+
+    /**
+     * 鏍规嵁棰勭暀鍙疯幏鍙栫墿鏂欐媺鍔ㄤ俊鎭�
+     * @param reservationCode
+     * @return
+     */
+    MesMaterialTransferRequest queryByReservationCode(String reservationCode);
 }
diff --git a/src/main/java/org/jeecg/modules/mes/service/impl/MesMaterialTransferRequestServiceImpl.java b/src/main/java/org/jeecg/modules/mes/service/impl/MesMaterialTransferRequestServiceImpl.java
index 87c4ad6..118e09f 100644
--- a/src/main/java/org/jeecg/modules/mes/service/impl/MesMaterialTransferRequestServiceImpl.java
+++ b/src/main/java/org/jeecg/modules/mes/service/impl/MesMaterialTransferRequestServiceImpl.java
@@ -1,8 +1,12 @@
 package org.jeecg.modules.mes.service.impl;
 
+import cn.hutool.core.collection.CollectionUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import org.jeecg.common.constant.CommonConstant;
 import org.jeecg.common.exception.JeecgBootException;
+import org.jeecg.modules.base.entity.LineSideWarehouse;
+import org.jeecg.modules.base.service.ILineSideWarehouseService;
 import org.jeecg.modules.mes.entity.MesMaterialTransferRequest;
 import org.jeecg.modules.mes.entity.MesProductionWorkOrder;
 import org.jeecg.modules.mes.enums.MaterialTransferPublishStatus;
@@ -11,16 +15,22 @@
 import org.jeecg.modules.mes.mapper.MesMaterialTransferRequestMapper;
 import org.jeecg.modules.mes.service.IMesMaterialTransferRequestService;
 import org.jeecg.modules.mes.service.IMesProductionWorkOrderService;
+import org.jeecg.modules.sap.dto.MaterialRequestDTO;
+import org.jeecg.modules.sap.request.MaterialRequest;
+import org.jeecg.modules.sap.service.OrderMaterialRequestService;
+import org.jeecg.modules.wms.dto.WSResponse;
+import org.jeecg.modules.wms.request.WebReservationOrder;
+import org.jeecg.modules.wms.service.WMSWebServiceClient;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.List;
+import java.util.*;
 
 /**
  * @Description: 鐗╂枡鎷夊姩鐢宠
  * @Author: jeecg-boot
- * @Date:   2025-07-04
+ * @Date: 2025-07-04
  * @Version: V1.0
  */
 @Service
@@ -28,6 +38,12 @@
 
     @Autowired
     private IMesProductionWorkOrderService productionWorkOrderService;
+    @Autowired
+    private OrderMaterialRequestService orderMaterialRequestService;
+    @Autowired
+    private ILineSideWarehouseService lineSideWarehouseService;
+    @Autowired
+    private WMSWebServiceClient wmsWebServiceClient;
 
     @Override
     public List<MesMaterialTransferRequest> queryMaterialTransferRequestByWorkOrderId(String workOrderId) {
@@ -38,10 +54,10 @@
     @Transactional(rollbackFor = Exception.class)
     public boolean addMaterialTransferRequest(MesMaterialTransferRequest request) {
         MesProductionWorkOrder order = productionWorkOrderService.getById(request.getWorkOrderId());
-        if(order == null){
+        if (order == null) {
             throw new JeecgBootException("鎺掍骇宸ュ崟涓嶅瓨鍦�");
         }
-        if(!ProductionWorkOrderStatus.PUBLISHED.name().equals(order.getWorkOrderStatus())){
+        if (!ProductionWorkOrderStatus.PUBLISHED.name().equals(order.getWorkOrderStatus())) {
             throw new JeecgBootException("鍙湁鍙戝竷鐘舵�佺殑鎺掍骇宸ュ崟鎵嶅彲鐢宠鐗╂枡");
         }
         request.setPublishStatus(MaterialTransferPublishStatus.WAIT_PUBLISH.name());
@@ -50,4 +66,76 @@
         this.getBaseMapper().insert(request);
         return true;
     }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean publish(String id) {
+        MesMaterialTransferRequest entity = super.getById(id);
+        if (entity == null) {
+            throw new JeecgBootException("鏁版嵁涓嶅瓨鍦紝璇峰埛鏂伴噸璇曪紒");
+        }
+        if (!MaterialTransferPublishStatus.WAIT_PUBLISH.name().equals(entity.getPublishStatus())) {
+            throw new JeecgBootException("鏁版嵁宸插彂甯冿紒");
+        }
+        LineSideWarehouse warehouse = lineSideWarehouseService.getById(entity.getTargetWarehouseId());
+        if (warehouse == null) {
+            throw new JeecgBootException("绾胯竟搴撲笉瀛樺湪锛�");
+        }
+        MaterialRequest request = new MaterialRequest();
+        request.setMaterialNumber(entity.getMaterialNumber());
+        request.setQuantity(request.getQuantity());
+        request.setWarehouseCode(entity.getOriginalWarehouseId());
+        try {
+            Map<String, Object> response = orderMaterialRequestService.orderMaterialRequest("2301", warehouse.getWarehouseCode(), Collections.singletonList(request));
+            Object ztype = response.get("ztype");
+            if (!"S".equals(ztype)) {
+                throw new JeecgBootException("璋冪敤SAP璇锋眰棰勭暀鍙峰け璐ワ紒" + response.get("zmess"));
+            }
+            MaterialRequestDTO result = (MaterialRequestDTO) response.get("result");
+            entity.setReservationCode(result.getO_SAP_RESV());
+            entity.setPublishStatus(MaterialTransferPublishStatus.PUBLISHED.name());
+            entity.setPublishTime(new Date());
+            super.updateById(entity);
+            return true;
+        } catch (Exception e) {
+            throw new JeecgBootException("璋冪敤SAP璇锋眰棰勭暀鍙峰け璐ワ紒");
+        }
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean request(String id) {
+        MesMaterialTransferRequest entity = super.getById(id);
+        if (entity == null) {
+            throw new JeecgBootException("鏁版嵁涓嶅瓨鍦紝璇峰埛鏂伴噸璇曪紒");
+        }
+        if (!MaterialTransferPublishStatus.PUBLISHED.name().equals(entity.getPublishStatus()) || !MaterialTransferRequestStatus.WAIT_REQUEST.name().equals(entity.getRequestStatus())) {
+            throw new JeecgBootException("鏁版嵁鐘舵�佷笉鍙姹俉MS锛�");
+        }
+        WebReservationOrder request = new WebReservationOrder();
+        request.setFactoryCode("2301");
+        request.setReservationOrder(entity.getReservationCode());
+        request.setTotal(entity.getSpecifiedQuantity());
+        Map<String, Object> resultMap = wmsWebServiceClient.receiveReservation(request);
+        WSResponse result = (WSResponse) resultMap.get("result");
+        if ("Y".equals(result.getErrorCode())) {
+            entity.setRequestStatus(MaterialTransferRequestStatus.REQUESTED.name());
+            entity.setRequestTime(new Date());
+            super.updateById(entity);
+            return true;
+        }
+        return false;
+    }
+
+    @Override
+    public MesMaterialTransferRequest queryByReservationCode(String reservationCode) {
+        LambdaQueryWrapper<MesMaterialTransferRequest> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(MesMaterialTransferRequest::getReservationCode, reservationCode);
+        queryWrapper.eq(MesMaterialTransferRequest::getDelFlag, CommonConstant.DEL_FLAG_0);
+        List<MesMaterialTransferRequest> list = super.list(queryWrapper);
+        if (CollectionUtil.isNotEmpty(list)) {
+            return list.get(0);
+        }
+        return null;
+    }
 }
diff --git a/src/main/java/org/jeecg/modules/sap/service/impl/OrderMaterialRequestServiceImpl.java b/src/main/java/org/jeecg/modules/sap/service/impl/OrderMaterialRequestServiceImpl.java
index 1bf9282..e6b614f 100644
--- a/src/main/java/org/jeecg/modules/sap/service/impl/OrderMaterialRequestServiceImpl.java
+++ b/src/main/java/org/jeecg/modules/sap/service/impl/OrderMaterialRequestServiceImpl.java
@@ -82,7 +82,7 @@
         MaterialRequestDTO response = new MaterialRequestDTO();
         String zmess = function.getExportParameterList().getValue("O_IS_OK").toString();
         String ztype = function.getExportParameterList().getValue("O_MESSAGE").toString();//S 鏍囪瘑 鎴愬姛
-        String resv = function.getExportParameterList().getValue("O_SAP_RESV").toString();//S 鏍囪瘑 鎴愬姛
+        String resv = function.getExportParameterList().getValue("O_SAP_RESV").toString();
         response.setO_IS_OK(ztype);
         response.setO_MESSAGE(zmess);
         response.setO_SAP_RESV(resv);
diff --git a/src/main/java/org/jeecg/modules/wms/WMSWebService.java b/src/main/java/org/jeecg/modules/wms/WMSWebService.java
index d66b206..e5d0be3 100644
--- a/src/main/java/org/jeecg/modules/wms/WMSWebService.java
+++ b/src/main/java/org/jeecg/modules/wms/WMSWebService.java
@@ -64,9 +64,6 @@
         super(wsdlLocation, serviceName, features);
     }
 
-
-
-
     /**
      *
      * @return
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 9732f55..2e3eaad 100644
--- a/src/main/java/org/jeecg/modules/wms/controller/WMSTestController.java
+++ b/src/main/java/org/jeecg/modules/wms/controller/WMSTestController.java
@@ -23,7 +23,7 @@
     @Autowired
     private WMSWebServiceClient webServiceClient;
 
-    private final static String localUrl = "http://localhost:9989/ebservice/ReceiveWMSScanItemList?wsdl";
+    private final static String localUrl = "http://localhost:9989/webservice/MESWebService?wsdl";
 
 
     @ApiOperation(value = "WMS闆嗘垚娴嬭瘯-鎺ユ敹WMS绉诲簱缁撴灉", notes = "WMS闆嗘垚娴嬭瘯-鎺ユ敹WMS绉诲簱缁撴灉")
diff --git a/src/main/java/org/jeecg/modules/wms/service/impl/MESWebServiceSoapImpl.java b/src/main/java/org/jeecg/modules/wms/service/impl/MESWebServiceSoapImpl.java
index b3a7987..ff68abc 100644
--- a/src/main/java/org/jeecg/modules/wms/service/impl/MESWebServiceSoapImpl.java
+++ b/src/main/java/org/jeecg/modules/wms/service/impl/MESWebServiceSoapImpl.java
@@ -1,12 +1,19 @@
 package org.jeecg.modules.wms.service.impl;
 
+import cn.hutool.core.collection.CollectionUtil;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.jeecg.common.aspect.annotation.ApiLog;
 import org.jeecg.common.constant.ApiLogCategoryEnum;
+import org.jeecg.modules.mes.entity.MesMaterialTransferRequest;
+import org.jeecg.modules.mes.service.IMesMaterialTransferRequestService;
 import org.jeecg.modules.wms.dto.WSResponse;
 import org.jeecg.modules.wms.request.ReceiveWMSScanItemList;
+import org.jeecg.modules.wms.request.WMSWebServiceSendItem;
 import org.jeecg.modules.wms.service.MESWebServiceSoap;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import javax.jws.WebMethod;
 import javax.jws.WebParam;
@@ -21,17 +28,36 @@
 @WebService(name = "MESWebServiceSoap", targetNamespace = "http://xhj008.server.webservice.com", endpointInterface = "org.jeecg.modules.wms.service.MESWebServiceSoap")
 public class MESWebServiceSoapImpl implements MESWebServiceSoap {
 
+    @Autowired
+    private IMesMaterialTransferRequestService materialTransferRequestService;
+
     @Override
+    @Transactional(rollbackFor = Exception.class)
     @WebMethod(operationName = "ReceiveWMSScanItemList", action = "http://xhj008.server.webservice.com/ReceiveWMSScanItemList")
     @RequestWrapper(localName = "ReceiveWMSScanItemList", targetNamespace = "http://xhj008.server.webservice.com/", className = "ReceiveWMSScanItemList")
     @ResponseWrapper(localName = "ReceiveWMSScanItemListResponse", targetNamespace = "http://xhj008.server.webservice.com/", className = "ReceiveWMSScanItemListResponse")
     @WebResult(name = "ReceiveWMSScanItemListResult", targetNamespace = "http://xhj008.server.webservice.com/")
     @ApiLog(apiName = "鎺ユ敹WMS鐨勭Щ搴撲俊鎭�(ReceiveWMSScanItemList(MES)", apiCategory = ApiLogCategoryEnum.WMS)
     public WSResponse receiveWMSScanItemList(@WebParam(name = "ReceiveWMSScanItemList", targetNamespace = "http://xhj008.server.webservice.com/") ReceiveWMSScanItemList request) {
-        log.error("11111111111");
         WSResponse response = new WSResponse();
-        response.setErrorCode("-1");
-        response.setErrorDesc("鎴戞椂缁撴灉闆�");
+        if (request == null || CollectionUtil.isEmpty(request.getWmsWebServiceSendItemList())) {
+            response.setErrorCode("N");
+            response.setErrorDesc("浼犲叆鐨勫弬鏁颁负绌猴紒");
+            return response;
+        }
+        for(WMSWebServiceSendItem item : request.getWmsWebServiceSendItemList()) {
+            if(StringUtils.isNotBlank(item.getReservationOrder())) {
+                //鐗╂枡鎷夊姩鍥炶皟
+                MesMaterialTransferRequest transferRequest = materialTransferRequestService.queryByReservationCode(item.getReservationOrder());
+                if(transferRequest == null) {
+                    response.setErrorCode("N");
+                    response.setErrorDesc("鏍规嵁棰勭暀鍙锋湭鎵惧埌鐗╂枡鎷夊姩鍗曪紒");
+                    return response;
+                }
+            }else if(StringUtils.isNotBlank(item.getAlign())){
+                //绉诲簱鍗曞洖璋�
+            }
+        }
         return response;
     }
 }
diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml
index e28975a..ecd52bc 100644
--- a/src/main/resources/application-prod.yml
+++ b/src/main/resources/application-prod.yml
@@ -132,16 +132,16 @@
         connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
       datasource:
         master:
-          url: jdbc:sqlserver://localhost:1433;databasename=LXZN_TEST_XHJ
+          url: jdbc:sqlserver://10.210.199.2:1433;databasename=LXZN_MDC_XHJ
           username: sa
-          password: 123
+          password: Lxzn1688
           driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
   #redis 閰嶇疆
   redis:
     database: 0
     host: 127.0.0.1
     port: 6379
-    password:
+    password: '1qaz@WSX'
 #mybatis plus 璁剧疆
 mybatis-plus:
   mapper-locations: classpath*:org/jeecg/modules/**/xml/*Mapper.xml

--
Gitblit v1.9.3