From 076cd7a73eb60c86d43eda67c5625704576d44cc Mon Sep 17 00:00:00 2001
From: lbq <1065079612@qq.com>
Date: 星期二, 03 二月 2026 17:32:03 +0800
Subject: [PATCH] 实现mes空托和agv任务接口

---
 rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/phyz/MESController.java                   |  100 ++++++++++++
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java            |    4 
 rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/phyz/ERPController.java                   |   88 +++++-----
 rsf-server/src/main/java/com/vincent/rsf/server/api/entity/constant/RcsConstant.java                    |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java                    |    1 
 rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/TaskController.java                       |  111 ++++++++++++-
 rsf-open-api/src/main/java/com/vincent/rsf/openApi/feign/wms/fallback/WmsServerFeignClientFallback.java |   45 +++++
 rsf-open-api/src/main/java/com/vincent/rsf/openApi/feign/wms/WmsServerFeignClient.java                  |   37 ++++
 rsf-server/src/main/java/com/vincent/rsf/server/api/controller/WcsController.java                       |    2 
 rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/constant/WmsConstant.java                     |   10 +
 rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Task.java                                |    3 
 rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/phyz/impl/MesReportServiceImpl.java          |   10 +
 rsf-server/src/main/java/com/vincent/rsf/server/api/controller/mes/MesController.java                   |   21 ++
 rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/CallForEmptyContainersParam.java      |    3 
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaOutStockServiceImpl.java            |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/common/security/SecurityConfig.java                     |    3 
 rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/PdaGeneralParam.java                  |    5 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskMissionSchedules.java             |    2 
 rsf-admin/src/i18n/zh.js                                                                                |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/manager/service/LocItemService.java                     |    2 
 rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/InBoundServiceImpl.java                |    4 
 21 files changed, 388 insertions(+), 69 deletions(-)

diff --git a/rsf-admin/src/i18n/zh.js b/rsf-admin/src/i18n/zh.js
index 4088f47..961e62b 100644
--- a/rsf-admin/src/i18n/zh.js
+++ b/rsf-admin/src/i18n/zh.js
@@ -202,7 +202,7 @@
         logs: '鏃ュ織',
         permissions: '鏉冮檺绠$悊',
         delivery: 'DO鍗�',
-        outStock: '鍑哄簱鍗�',
+        outStock: '鍑哄簱閫氱煡鍗�',
         outStockItem: '鍑哄簱鍗曟槑缁�',
         inStockPoces: '鍏ュ簱绠$悊',
         outStockPoces: '鍑哄簱绠$悊',
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/TaskController.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/TaskController.java
index eed04a3..b289f9a 100644
--- a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/TaskController.java
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/TaskController.java
@@ -2,12 +2,17 @@
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.vincent.rsf.framework.common.R;
 import com.vincent.rsf.framework.exception.CoolException;
 import com.vincent.rsf.openApi.entity.dto.CommonResponse;
 import com.vincent.rsf.openApi.entity.phyz.Task;
+import com.vincent.rsf.openApi.feign.wms.WmsServerFeignClient;
+import com.vincent.rsf.openApi.feign.wms.fallback.WmsServerFeignClientFallback;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
@@ -23,21 +28,67 @@
 @Slf4j
 public class TaskController {
 
+    @Autowired(required = false)
+    private WmsServerFeignClient wmsServerFeignClient;
+
     @ApiOperation("鐐瑰鐐瑰垱寤篈GV鎼繍浠诲姟")
     @PostMapping("/agv/transTask/add")
     public CommonResponse addAgvTask(@RequestBody Object objParams) {
         if (Objects.isNull(objParams)) {
             throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
         }
-        // 杩斿洖妯℃嫙鏁版嵁
-        if (SIMULATED_DATA_ENABLE.equals("1")) {
-            return CommonResponse.ok();
-        }
+//        // 杩斿洖妯℃嫙鏁版嵁
+//        if (SIMULATED_DATA_ENABLE.equals("1")) {
+//            return CommonResponse.ok();
+//        }
 
         JSONArray params = paramsFormat(objParams);
         List<Task> tasks = JSON.parseArray(params.toJSONString(), Task.class);
         // 鏁版嵁澶勭悊锛岃浆鍙憇erver
-        return CommonResponse.ok();
+        int success = 0;
+        StringBuilder errorMsg = new StringBuilder();
+        for (Task task : tasks) {
+            try {
+                if (wmsServerFeignClient == null) {
+                    log.warn("WmsServerFeignClient鏈敞鍏ワ紝鏃犳硶杩涜璋冪敤");
+                    return CommonResponse.error("鏈嶅姟鏈垵濮嬪寲");
+                }
+
+                JSONObject jsonObject = new JSONObject();
+                jsonObject.put("type", task.getPalletType());
+                jsonObject.put("taskNo", task.getTaskNo());
+                jsonObject.put("staNo", task.getEndStationId());
+                jsonObject.put("taskOrigin", "mes");
+
+                log.info("mes涓嬪彂agv杩愯緭浠诲姟鍙傛暟锛� {}", JSON.toJSONString(jsonObject));
+
+                // 鐩存帴浼犻�掑疄浣撶被锛孎eign浼氳嚜鍔ㄥ簭鍒楀寲涓篔SON
+                R result = wmsServerFeignClient.mesAddTask(jsonObject);
+
+                log.info("mes涓嬪彂agv杩愯緭浠诲姟杩斿洖缁撴灉锛� {}", JSON.toJSONString(result));
+
+                if (result != null) {
+                    Integer code = (Integer) result.get("code");
+                    if (code != null && code == 200) {
+                        success++;
+                    } else {
+                        errorMsg.append((String) result.get("msg"));
+                    }
+                } else {
+                    return CommonResponse.error("mes涓嬪彂agv杩愯緭浠诲姟鎵ц澶辫触锛氳繑鍥炵粨鏋滀负绌�");
+                }
+            } catch (Exception e) {
+                log.error("mes涓嬪彂agv杩愯緭浠诲姟鎵ц澶辫触", e);
+                String errorMessage = WmsServerFeignClientFallback.filterErrorMessage(e);
+                errorMsg.append(errorMessage);
+            }
+        }
+
+        if (success == tasks.size()) {
+            return CommonResponse.ok();
+        } else {
+            return CommonResponse.error(errorMsg.toString());
+        }
     }
 
     @ApiOperation("鐐瑰鐐瑰彇娑圓GV鎼繍浠诲姟")
@@ -46,14 +97,54 @@
         if (Objects.isNull(objParams)) {
             throw new CoolException("鍙傛暟涓嶈兘涓虹┖锛侊紒");
         }
-        // 杩斿洖妯℃嫙鏁版嵁
-        if (SIMULATED_DATA_ENABLE.equals("1")) {
-            return CommonResponse.ok();
-        }
+//        // 杩斿洖妯℃嫙鏁版嵁
+//        if (SIMULATED_DATA_ENABLE.equals("1")) {
+//            return CommonResponse.ok();
+//        }
 
         JSONArray params = paramsFormat(objParams);
         List<Task> tasks = JSON.parseArray(params.toJSONString(), Task.class);
         // 鏁版嵁澶勭悊锛岃浆鍙憇erver
-        return CommonResponse.ok();
+        int success = 0;
+        StringBuilder errorMsg = new StringBuilder();
+        for (Task task : tasks) {
+            try {
+                if (wmsServerFeignClient == null) {
+                    log.warn("WmsServerFeignClient鏈敞鍏ワ紝鏃犳硶杩涜璋冪敤");
+                    return CommonResponse.error("鏈嶅姟鏈垵濮嬪寲");
+                }
+
+                JSONObject jsonObject = new JSONObject();
+                jsonObject.put("taskNo", task.getTaskNo());
+
+                log.info("mes鍙栨秷agv杩愯緭浠诲姟鍙傛暟锛� {}", JSON.toJSONString(jsonObject));
+
+                // 鐩存帴浼犻�掑疄浣撶被锛孎eign浼氳嚜鍔ㄥ簭鍒楀寲涓篔SON
+                R result = wmsServerFeignClient.mesAddTask(jsonObject);
+
+                log.info("mes鍙栨秷agv杩愯緭浠诲姟杩斿洖缁撴灉锛� {}", JSON.toJSONString(result));
+
+                if (result != null) {
+                    Integer code = (Integer) result.get("code");
+                    if (code != null && code == 200) {
+                        success++;
+                    } else {
+                        errorMsg.append((String) result.get("msg"));
+                    }
+                } else {
+                    return CommonResponse.error("mes鍙栨秷agv杩愯緭浠诲姟鎵ц澶辫触锛氳繑鍥炵粨鏋滀负绌�");
+                }
+            } catch (Exception e) {
+                log.error("mes鍙栨秷agv杩愯緭浠诲姟鎵ц澶辫触", e);
+                String errorMessage = WmsServerFeignClientFallback.filterErrorMessage(e);
+                errorMsg.append(errorMessage);
+            }
+        }
+
+        if (success == tasks.size()) {
+            return CommonResponse.ok();
+        } else {
+            return CommonResponse.error(errorMsg.toString());
+        }
     }
 }
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/phyz/ERPController.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/phyz/ERPController.java
index d2f59c7..091ef44 100644
--- a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/phyz/ERPController.java
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/phyz/ERPController.java
@@ -170,50 +170,50 @@
             condition = new InventoryQueryCondition();
         }
         
-        if (SIMULATED_DATA_ENABLE.equals("1")) {
-            String x = "[\n" +
-                    "  {\n" +
-                    "    \"locId\": \"LOC-A-01-01\",\n" +
-                    "    \"wareHouseId\": \"WH001\",\n" +
-                    "    \"wareHouseName\": \"鍘熸枡浠撳簱\",\n" +
-                    "    \"palletId\": \"PALLET001\",\n" +
-                    "    \"matNr\": \"MAT10001\",\n" +
-                    "    \"makTx\": \"閽㈡潗Q235\",\n" +
-                    "    \"spec\": \"鍥芥爣GB/T700-2006\",\n" +
-                    "    \"anfme\": 10.5,\n" +
-                    "    \"unit\": \"鍚╘",\n" +
-                    "    \"status\": \"鍙敤\",\n" +
-                    "    \"orderType\": 1,\n" +
-                    "    \"orderNo\": \"Order202698921\",\n" +
-                    "    \"prepareType\": 1,\n" +
-                    "    \"planNo\": \"PLAN202601060001\",\n" +
-                    "    \"batch\": \"BATCH20260106001\",\n" +
-                    "    \"stockOrgId\": \"ORG001\"\n" +
-                    "  },\n" +
-                    "  {\n" +
-                    "    \"locId\": \"LOC-B-02-03\",\n" +
-                    "    \"wareHouseId\": \"WH002\",\n" +
-                    "    \"wareHouseName\": \"鎴愬搧浠撳簱\",\n" +
-                    "    \"palletId\": \"PALLET002\",\n" +
-                    "    \"matNr\": \"MAT20001\",\n" +
-                    "    \"makTx\": \"鐢垫満缁勪欢\",\n" +
-                    "    \"spec\": \"380V 50Hz\",\n" +
-                    "    \"anfme\": 50,\n" +
-                    "    \"unit\": \"鍙癨",\n" +
-                    "    \"status\": \"鍙敤\",\n" +
-                    "    \"orderType\": \"1\",\n" +
-                    "    \"orderNo\": \"SO202601060001\",\n" +
-                    "    \"prepareType\": 1,\n" +
-                    "    \"planNo\": \"PLAN202601060002\",\n" +
-                    "    \"batch\": \"BATCH20260106002\",\n" +
-                    "    \"stockOrgId\": \"ORG001\"\n" +
-                    "  }\n" +
-                    "]";
-            if (map == null || map.isEmpty()) {
-                map = JSON.parseArray(x);
-            }
-            return CommonResponse.ok(JSONArray.parseArray(map.toJSONString(), InventoryDetails.class));
-        }
+//        if (SIMULATED_DATA_ENABLE.equals("1")) {
+//            String x = "[\n" +
+//                    "  {\n" +
+//                    "    \"locId\": \"LOC-A-01-01\",\n" +
+//                    "    \"wareHouseId\": \"WH001\",\n" +
+//                    "    \"wareHouseName\": \"鍘熸枡浠撳簱\",\n" +
+//                    "    \"palletId\": \"PALLET001\",\n" +
+//                    "    \"matNr\": \"MAT10001\",\n" +
+//                    "    \"makTx\": \"閽㈡潗Q235\",\n" +
+//                    "    \"spec\": \"鍥芥爣GB/T700-2006\",\n" +
+//                    "    \"anfme\": 10.5,\n" +
+//                    "    \"unit\": \"鍚╘",\n" +
+//                    "    \"status\": \"鍙敤\",\n" +
+//                    "    \"orderType\": 1,\n" +
+//                    "    \"orderNo\": \"Order202698921\",\n" +
+//                    "    \"prepareType\": 1,\n" +
+//                    "    \"planNo\": \"PLAN202601060001\",\n" +
+//                    "    \"batch\": \"BATCH20260106001\",\n" +
+//                    "    \"stockOrgId\": \"ORG001\"\n" +
+//                    "  },\n" +
+//                    "  {\n" +
+//                    "    \"locId\": \"LOC-B-02-03\",\n" +
+//                    "    \"wareHouseId\": \"WH002\",\n" +
+//                    "    \"wareHouseName\": \"鎴愬搧浠撳簱\",\n" +
+//                    "    \"palletId\": \"PALLET002\",\n" +
+//                    "    \"matNr\": \"MAT20001\",\n" +
+//                    "    \"makTx\": \"鐢垫満缁勪欢\",\n" +
+//                    "    \"spec\": \"380V 50Hz\",\n" +
+//                    "    \"anfme\": 50,\n" +
+//                    "    \"unit\": \"鍙癨",\n" +
+//                    "    \"status\": \"鍙敤\",\n" +
+//                    "    \"orderType\": \"1\",\n" +
+//                    "    \"orderNo\": \"SO202601060001\",\n" +
+//                    "    \"prepareType\": 1,\n" +
+//                    "    \"planNo\": \"PLAN202601060002\",\n" +
+//                    "    \"batch\": \"BATCH20260106002\",\n" +
+//                    "    \"stockOrgId\": \"ORG001\"\n" +
+//                    "  }\n" +
+//                    "]";
+//            if (map == null || map.isEmpty()) {
+//                map = JSON.parseArray(x);
+//            }
+//            return CommonResponse.ok(JSONArray.parseArray(map.toJSONString(), InventoryDetails.class));
+//        }
 
         try {
             if (wmsServerFeignClient == null) {
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/phyz/MESController.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/phyz/MESController.java
index b8d1c7b..325814a 100644
--- a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/phyz/MESController.java
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/controller/phyz/MESController.java
@@ -3,20 +3,26 @@
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.vincent.rsf.framework.common.R;
 import com.vincent.rsf.framework.exception.CoolException;
 import com.vincent.rsf.openApi.entity.dto.CommonResponse;
 import com.vincent.rsf.openApi.entity.phyz.*;
+import com.vincent.rsf.openApi.feign.wms.WmsServerFeignClient;
+import com.vincent.rsf.openApi.feign.wms.fallback.WmsServerFeignClientFallback;
 import com.vincent.rsf.openApi.service.phyz.MesReportService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
+import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 
 import static com.vincent.rsf.openApi.controller.AuthController.SIMULATED_DATA_ENABLE;
@@ -30,6 +36,8 @@
 
     @Resource
     private MesReportService mesReportService;
+    @Autowired(required = false)
+    private WmsServerFeignClient wmsServerFeignClient;
 
 
     @ApiOperation("澶囨枡閫氱煡")
@@ -92,8 +100,51 @@
 
         JSONArray params = paramsFormat(objParams);
         List<Task> tasks = JSON.parseArray(params.toJSONString(), Task.class);
-        // 鏁版嵁澶勭悊锛岃浆鍙憇erver
-        return CommonResponse.ok();
+        // 鏁版嵁澶勭悊锛岃浆鍙憇erver          http://127.0.0.1:8085/rsf-server/pda/callForEmptyContainers   {"staNo":"103-1","type":"3"}
+        int success = 0;
+        StringBuilder errorMsg = new StringBuilder();
+        for (Task task : tasks) {
+            try {
+                if (wmsServerFeignClient == null) {
+                    log.warn("WmsServerFeignClient鏈敞鍏ワ紝鏃犳硶杩涜璋冪敤");
+                    return CommonResponse.error("鏈嶅姟鏈垵濮嬪寲");
+                }
+
+                JSONObject jsonObject = new JSONObject();
+                jsonObject.put("type", task.getPalletType());
+                jsonObject.put("taskNo", task.getTaskNo());
+                jsonObject.put("staNo", task.getEndStationId());
+                jsonObject.put("taskOrigin", "mes");
+
+                log.info("mes绌烘墭鍑哄簱鍙傛暟锛� {}", JSON.toJSONString(jsonObject));
+
+                // 鐩存帴浼犻�掑疄浣撶被锛孎eign浼氳嚜鍔ㄥ簭鍒楀寲涓篔SON
+                R result = wmsServerFeignClient.callForEmptyContainers(jsonObject);
+
+                log.info("mes绌烘墭鍑哄簱杩斿洖缁撴灉锛� {}", JSON.toJSONString(result));
+
+                if (result != null) {
+                    Integer code = (Integer) result.get("code");
+                    if (code != null && code == 200) {
+                        success++;
+                    } else {
+                        errorMsg.append((String) result.get("msg"));
+                    }
+                } else {
+                    return CommonResponse.error("绌烘墭鍑哄簱鎵ц澶辫触锛氳繑鍥炵粨鏋滀负绌�");
+                }
+            } catch (Exception e) {
+                log.error("绌烘墭鍑哄簱鎵ц澶辫触", e);
+                String errorMessage = WmsServerFeignClientFallback.filterErrorMessage(e);
+                errorMsg.append(errorMessage);
+            }
+        }
+
+        if (success == tasks.size()) {
+            return CommonResponse.ok();
+        } else {
+            return CommonResponse.error(errorMsg.toString());
+        }
     }
 
     @ApiOperation("绌烘墭鍏ュ簱")
@@ -110,7 +161,50 @@
         JSONArray params = paramsFormat(objParams);
         List<Task> tasks = JSON.parseArray(params.toJSONString(), Task.class);
         // 鏁版嵁澶勭悊锛岃浆鍙憇erver
-        return CommonResponse.ok();
+        int success = 0;
+        StringBuilder errorMsg = new StringBuilder();
+        for (Task task : tasks) {
+            try {
+                if (wmsServerFeignClient == null) {
+                    log.warn("WmsServerFeignClient鏈敞鍏ワ紝鏃犳硶杩涜璋冪敤");
+                    return CommonResponse.error("鏈嶅姟鏈垵濮嬪寲");
+                }
+
+                JSONObject jsonObject = new JSONObject();
+                jsonObject.put("containerNo", task.getPalletId());
+                jsonObject.put("taskNo", task.getTaskNo());
+                jsonObject.put("transferStationNo", task.getStartStationId());
+                jsonObject.put("taskOrigin", "mes");
+
+                log.info("mes绌烘墭鍏ュ簱鍙傛暟锛� {}", JSON.toJSONString(jsonObject));
+
+                // 鐩存帴浼犻�掑疄浣撶被锛孎eign浼氳嚜鍔ㄥ簭鍒楀寲涓篔SON
+                R result = wmsServerFeignClient.emptyContainerWarehousing(jsonObject);
+
+                log.info("mes绌烘墭鍏ュ簱杩斿洖缁撴灉锛� {}", JSON.toJSONString(result));
+
+                if (result != null) {
+                    Integer code = (Integer) result.get("code");
+                    if (code != null && code == 200) {
+                        success++;
+                    } else {
+                        errorMsg.append((String) result.get("msg"));
+                    }
+                } else {
+                    return CommonResponse.error("绌烘墭鍏ュ簱鎵ц澶辫触锛氳繑鍥炵粨鏋滀负绌�");
+                }
+            } catch (Exception e) {
+                log.error("绌烘墭鍏ュ簱鎵ц澶辫触", e);
+                String errorMessage = WmsServerFeignClientFallback.filterErrorMessage(e);
+                errorMsg.append(errorMessage);
+            }
+        }
+
+        if (success == tasks.size()) {
+            return CommonResponse.ok();
+        } else {
+            return CommonResponse.error(errorMsg.toString());
+        }
     }
 
     // region 娴嬭瘯鎺ㄩ�佸姛鑳�
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/constant/WmsConstant.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/constant/WmsConstant.java
index 73da571..b47590e 100644
--- a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/constant/WmsConstant.java
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/entity/constant/WmsConstant.java
@@ -46,5 +46,15 @@
     //搴撳瓨鏌ヨ姹囨�伙紙ERP鎺ュ彛锛屽搴攐pen-api鐨�/inventory/summary锛�
     public static final String QUERY_INVENTORY_SUMMARY = "/rsf-server/erp/inventory/summary";
 
+    // 绌烘墭鍏ュ簱
+    public static final String EMPTY_PALLET_INBOUND = "/rsf-server/mes/in/emptyContainer/warehousing";     //pda/in/emptyContainer/warehousing
 
+    // 绌烘墭鍑哄簱
+    public static final String EMPTY_PALLET_OUTBOUND = "/rsf-server/mes/callForEmptyContainers";    //pda/callForEmptyContainers
+
+    // MES涓嬪彂AGV杩愯緭浠诲姟
+    public static final String MES_ADD_TRANSFER_TASK = "/rsf-server/wcs/mesCreateInTask";
+
+    // MES鍙栨秷AGV杩愯緭浠诲姟
+    public static final String MES_CANCEL_TRANSFER_TASK = "/rsf-server/wcs/mesCancelInTask";
 }
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/feign/wms/WmsServerFeignClient.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/feign/wms/WmsServerFeignClient.java
index 299c917..28c20d1 100644
--- a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/feign/wms/WmsServerFeignClient.java
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/feign/wms/WmsServerFeignClient.java
@@ -1,5 +1,6 @@
 package com.vincent.rsf.openApi.feign.wms;
 
+import com.alibaba.fastjson.JSONObject;
 import com.vincent.rsf.framework.common.R;
 import com.vincent.rsf.openApi.entity.constant.WmsConstant;
 import com.vincent.rsf.openApi.entity.phyz.InventoryQueryCondition;
@@ -39,4 +40,40 @@
      */
     @PostMapping(WmsConstant.QUERY_INVENTORY_SUMMARY)
     R queryInventorySummary(@RequestBody InventoryQueryCondition condition);
+
+    /**
+     * 绌烘墭鍑哄簱
+     *
+     * @param param
+     * @return
+     */
+    @PostMapping(WmsConstant.EMPTY_PALLET_OUTBOUND)
+    R callForEmptyContainers(@RequestBody JSONObject param);
+
+    /**
+     * 绌烘墭鍏ュ簱
+     *
+     * @param param
+     * @return
+     */
+    @PostMapping(WmsConstant.EMPTY_PALLET_INBOUND)
+    R emptyContainerWarehousing(@RequestBody JSONObject param);
+
+    /**
+     * mes涓嬪彂agv杩愯緭浠诲姟
+     *
+     * @param param
+     * @return
+     */
+    @PostMapping(WmsConstant.MES_ADD_TRANSFER_TASK)
+    R mesAddTask(@RequestBody JSONObject param);
+
+    /**
+     * mes鍙栨秷agv杩愯緭浠诲姟
+     *
+     * @param param
+     * @return
+     */
+    @PostMapping(WmsConstant.MES_CANCEL_TRANSFER_TASK)
+    R mesCancelTask(@RequestBody JSONObject param);
 }
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/feign/wms/fallback/WmsServerFeignClientFallback.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/feign/wms/fallback/WmsServerFeignClientFallback.java
index 2e33cf4..d6d375f 100644
--- a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/feign/wms/fallback/WmsServerFeignClientFallback.java
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/feign/wms/fallback/WmsServerFeignClientFallback.java
@@ -1,5 +1,6 @@
 package com.vincent.rsf.openApi.feign.wms.fallback;
 
+import com.alibaba.fastjson.JSONObject;
 import com.vincent.rsf.framework.common.R;
 import com.vincent.rsf.openApi.entity.phyz.InventoryQueryCondition;
 import com.vincent.rsf.openApi.feign.wms.WmsServerFeignClient;
@@ -47,6 +48,50 @@
         return R.error(errorMessage);
     }
 
+    @Override
+    public R callForEmptyContainers(JSONObject condition) {
+        return callForEmptyContainers(condition, null);
+    }
+
+    public R callForEmptyContainers(JSONObject condition, Throwable throwable) {
+        log.error("璋冪敤WMS Server绌烘墭鍑哄簱鎺ュ彛澶辫触锛岃Е鍙戦檷绾у鐞�", throwable);
+        String errorMessage = filterErrorMessage(throwable);
+        return R.error(errorMessage);
+    }
+
+    @Override
+    public R emptyContainerWarehousing(JSONObject condition) {
+        return emptyContainerWarehousing(condition, null);
+    }
+
+    public R emptyContainerWarehousing(JSONObject condition, Throwable throwable) {
+        log.error("璋冪敤WMS Server绌烘墭鍏ュ簱鎺ュ彛澶辫触锛岃Е鍙戦檷绾у鐞�", throwable);
+        String errorMessage = filterErrorMessage(throwable);
+        return R.error(errorMessage);
+    }
+
+    @Override
+    public R mesAddTask(JSONObject condition) {
+        return mesAddTask(condition, null);
+    }
+
+    public R mesAddTask(JSONObject condition, Throwable throwable) {
+        log.error("璋冪敤WMS Servermes涓嬪彂agv杩愯緭浠诲姟鎺ュ彛澶辫触锛岃Е鍙戦檷绾у鐞�", throwable);
+        String errorMessage = filterErrorMessage(throwable);
+        return R.error(errorMessage);
+    }
+
+    @Override
+    public R mesCancelTask(JSONObject condition) {
+        return mesCancelTask(condition, null);
+    }
+
+    public R mesCancelTask(JSONObject condition, Throwable throwable) {
+        log.error("璋冪敤WMS Servermes鍙栨秷agv杩愯緭浠诲姟鎺ュ彛澶辫触锛岃Е鍙戦檷绾у鐞�", throwable);
+        String errorMessage = filterErrorMessage(throwable);
+        return R.error(errorMessage);
+    }
+
     /**
      * 杩囨护閿欒娑堟伅涓殑URL锛屽彧淇濈暀閿欒绫诲瀷
      * @param throwable 寮傚父瀵硅薄锛堝彲閫夛級
diff --git a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/phyz/impl/MesReportServiceImpl.java b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/phyz/impl/MesReportServiceImpl.java
index 4393a85..66e82c7 100644
--- a/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/phyz/impl/MesReportServiceImpl.java
+++ b/rsf-open-api/src/main/java/com/vincent/rsf/openApi/service/phyz/impl/MesReportServiceImpl.java
@@ -215,8 +215,14 @@
             taskResult.setStatus(task.getStatus());
         } else if (params instanceof Map) {
             Map<String, Object> map = (Map<String, Object>) params;
-            taskResult.setTaskNo((String) map.get("TaskNo"));
-            taskResult.setStatus((Integer) map.get("Status"));
+            String taskNo = (String) map.get("taskNo");
+            String taskOrigin = (String) map.get("taskOrigin");
+            if (!"mes".equals(taskOrigin)) {
+                return CommonResponse.ok();
+            }
+
+            taskResult.setTaskNo(taskNo);
+            taskResult.setStatus(2);
         }
 
         MesReportOne<TaskResult> reportOne = new MesReportOne<>();
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/WcsController.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/WcsController.java
index 7c9c79a..4a04d52 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/WcsController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/WcsController.java
@@ -141,7 +141,7 @@
      */
     @ApiOperation("mes涓嬪彂绔欏埌绔�")
     @OperationLog("mes涓嬪彂绔欏埌绔�")
-    @PostMapping("/createInTask")
+    @PostMapping("/mesCreateInTask")
     public R mesCreateInTask(@RequestBody CreateInTaskParam params) {
         return wcsService.wcsCreateInTask(params);
     }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/mes/MesController.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/mes/MesController.java
index 6f37283..ce02626 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/mes/MesController.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/controller/mes/MesController.java
@@ -4,6 +4,10 @@
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.vincent.rsf.framework.common.R;
+import com.vincent.rsf.server.api.entity.params.CallForEmptyContainersParam;
+import com.vincent.rsf.server.api.entity.params.PdaGeneralParam;
+import com.vincent.rsf.server.api.service.InBoundService;
+import com.vincent.rsf.server.api.service.PdaOutStockService;
 import com.vincent.rsf.server.common.annotation.OperationLog;
 import com.vincent.rsf.server.manager.entity.Loc;
 import com.vincent.rsf.server.manager.entity.LocItem;
@@ -38,6 +42,10 @@
     private LocItemService locItemService;
     @Resource
     private AsnOrderService asnOrderService;
+    @Resource
+    private PdaOutStockService pdaOutStockService;
+    @Resource
+    private InBoundService inBoundService;
 
 
     /**
@@ -144,4 +152,17 @@
         }
     }
 
+    @PostMapping("/callForEmptyContainers")
+    @ApiOperation("mes鍛煎彨绌哄鍣�")
+    public R callForEmptyContainers(@RequestBody CallForEmptyContainersParam containerWaveParam) {
+
+        return pdaOutStockService.callForEmptyContainers(containerWaveParam, 52L);
+    }
+
+    @PostMapping("/in/emptyContainer/warehousing")
+    @ApiOperation("绌哄鍣ㄥ叆搴�")
+    public R emptyContainerWarehousing(@RequestBody PdaGeneralParam param) {
+        return inBoundService.generateTasks(param, 52L);
+    }
+
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/constant/RcsConstant.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/constant/RcsConstant.java
index 1527a51..a8f34f8 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/constant/RcsConstant.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/constant/RcsConstant.java
@@ -11,7 +11,7 @@
     //涓婃姤璁㈠崟淇℃伅
     public static String REPORT_ORDERS = "/rsf-open-api/erp/report/order";
 
-    public static String REPORT_TASKS = "/rsf-open-api/erp/report/task";
+    public static String REPORT_TASKS = "/rsf-open-api/mes/reportTaskExecute";
 
     //鐩樼偣搴撳瓨淇敼
     public static String CHECK_LOCITEM_UPDATE = "/rsf-open-api/erp/check/locitem/update";
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/CallForEmptyContainersParam.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/CallForEmptyContainersParam.java
index 9a37f0d..0edf94f 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/CallForEmptyContainersParam.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/CallForEmptyContainersParam.java
@@ -22,4 +22,7 @@
     @ApiModelProperty(value= "瀹瑰櫒绫诲瀷")
     private Long type;
 
+    @ApiModelProperty("浠诲姟鍙�")
+    private String taskNo;
+
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/PdaGeneralParam.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/PdaGeneralParam.java
index f048465..abf34df 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/PdaGeneralParam.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/entity/params/PdaGeneralParam.java
@@ -26,4 +26,9 @@
 
     private String locNo;
 
+    // 浠诲姟鏉ユ簮锛歮es erp
+    private String taskOrigin;
+    // 浠诲姟鍙�
+    private String taskNo;
+
 }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/InBoundServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/InBoundServiceImpl.java
index 4ac1630..a82c6c0 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/InBoundServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/InBoundServiceImpl.java
@@ -229,7 +229,8 @@
 //                throw new CoolException("璇ョ珯鐐瑰搴斿簱鍖烘湭鎵惧埌搴撲綅");
             }
 
-            String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_TASK_CODE, null);
+            String ruleCode = StringUtils.isBlank(param.getTaskNo()) ?
+                    SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_TASK_CODE, null) : param.getTaskNo();
             if (StringUtils.isBlank(ruleCode)) {
                 throw new CoolException("缂栫爜閿欒锛氳纭缂栫爜銆孲YS_TASK_CODE銆嶆槸鍚﹀凡鐢熸垚!!");
             }
@@ -252,6 +253,7 @@
                     .setOrgSite(station.getStationName())
                     .setBarcode(param.getContainerNo())
                     .setTargSite(stationName)
+                    .setTaskOrigin(StringUtils.isBlank(param.getTaskOrigin()) ? null : param.getTaskOrigin())
                     .setCreateBy(loginUserId)
                     .setUpdateBy(loginUserId);
             if (!taskService.save(task)) {
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaOutStockServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaOutStockServiceImpl.java
index 32cdab7..f6e571a 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaOutStockServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/api/service/impl/PdaOutStockServiceImpl.java
@@ -280,7 +280,7 @@
                 .setSiteNo(basStation.getStationName())
                 .setOrgLoc(loc.getId().toString());
         try{
-            locItemService.generateTaskEmpty(TaskResouceType.TASK_RESOUCE_STOCK_TYPE.val,locToTaskParams,loginUserId);
+            locItemService.generateTaskEmpty(TaskResouceType.TASK_RESOUCE_STOCK_TYPE.val,locToTaskParams,loginUserId, containerWaveParam.getTaskNo());
         } catch (Exception e){
             throw new CoolException(e.getMessage());
         }
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/common/security/SecurityConfig.java b/rsf-server/src/main/java/com/vincent/rsf/server/common/security/SecurityConfig.java
index b390c50..f40f0c5 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/common/security/SecurityConfig.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/common/security/SecurityConfig.java
@@ -56,7 +56,8 @@
             "/ws/**",
             "/wcs/**",
             "/monitor/**",
-            "/mcp/**"
+            "/mcp/**",
+            "/mes/**"
     };
 
     @Resource
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Task.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Task.java
index c5c7be2..81f7e45 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Task.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/entity/Task.java
@@ -154,6 +154,9 @@
     @ApiModelProperty(value= "鐘舵�� 1: 姝e父  0: 鍐荤粨  ")
     private Integer status;
 
+    @ApiModelProperty(value = "浠诲姟鏉ユ簮锛宮es銆乪rp")
+    private String taskOrigin;
+
     /**
      * 鏄惁鍒犻櫎 1: 鏄�  0: 鍚�  
      */
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskMissionSchedules.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskMissionSchedules.java
index f096f84..9044ee2 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskMissionSchedules.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskMissionSchedules.java
@@ -231,7 +231,7 @@
                         flowStepInstance.setStepOrder(j);
                         flowStepInstance.setStepCode(String.valueOf(snowflakeIdWorker.nextId()));
                         flowStepInstance.setWmsNowTaskStatus(flowStepTemplate.getWmsNowTaskStatus());
-                        flowStepInstance.setTaskNo(taskInstance.getTaskNo());
+                        flowStepInstance.setTaskNo(task.getTaskCode());
 
                         // 鍒ゆ柇鏄惁鏄渶鍚庝竴涓�
                         if (globalIndex < allFlowStepTemplates.size() - 1) {
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java
index d46b9d8..cdab99e 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/schedules/TaskSchedules.java
@@ -244,6 +244,7 @@
         completeInStock();
         complateOutStock();
         completeStock9999();
+        completeStock10000();
     }
 
 
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/LocItemService.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/LocItemService.java
index a7694f1..547a384 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/LocItemService.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/LocItemService.java
@@ -11,7 +11,7 @@
 public interface LocItemService extends IService<LocItem> {
 
     void generateTask(Short resouce, LocToTaskParams map, Long loginUserId) throws Exception;
-    void generateTaskEmpty(Short resouce, LocToTaskParams map, Long loginUserId) throws Exception;
+    void generateTaskEmpty(Short resouce, LocToTaskParams map, Long loginUserId, String taskNo) throws Exception;
 
     Task genMoveTask(LocToTaskParams map, Long loginUserId);
 
diff --git a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java
index 6b8cbcf..15505a1 100644
--- a/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java
+++ b/rsf-server/src/main/java/com/vincent/rsf/server/manager/service/impl/LocItemServiceImpl.java
@@ -65,7 +65,7 @@
     @Override
     @Synchronized
     @Transactional(rollbackFor = Exception.class)
-    public synchronized void generateTaskEmpty(Short resouce, LocToTaskParams map, Long loginUserId) throws Exception {
+    public synchronized void generateTaskEmpty(Short resouce, LocToTaskParams map, Long loginUserId, String taskNo) throws Exception {
         if (Objects.isNull(map.getSiteNo())) {
             throw new CoolException("鐩爣绔欑偣涓嶈兘涓虹┖锛�");
         }
@@ -88,7 +88,7 @@
         if (!locService.updateById(loc)) {
             throw new CoolException("搴撲綅鐘舵�佹洿鏂板け璐ワ紒锛�");
         }
-        String ruleCode = SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_TASK_CODE, null);
+        String ruleCode = StringUtils.isBlank(taskNo) ? SerialRuleUtils.generateRuleCode(SerialRuleCode.SYS_TASK_CODE, null) : taskNo;
         task.setOrgLoc(loc.getCode())
                 .setTaskCode(ruleCode)
                 .setResource(resouce)

--
Gitblit v1.9.1