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