From b51e3b3d5bb721cec65952498d1c2c882d1a01d6 Mon Sep 17 00:00:00 2001
From: pang.jiabao <pang_jiabao@163.com>
Date: 星期一, 15 十二月 2025 17:14:22 +0800
Subject: [PATCH] wms功能完善
---
src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java | 240 ++++++++++++++++++++++++++++++++++++++++++------------------
1 files changed, 168 insertions(+), 72 deletions(-)
diff --git a/src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java
index baffd2c..66ed864 100644
--- a/src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/RcsServiceImpl.java
@@ -1,6 +1,7 @@
package com.zy.asrs.service.impl;
import com.alibaba.excel.util.StringUtils;
+import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.zy.asrs.entity.*;
@@ -39,6 +40,8 @@
@Value("${mes.defaultUserId}")
public long defaultUserId;
+ @Resource
+ private BasStationService basStationService;
@Resource
private MesService mesService;
@@ -155,6 +158,9 @@
// region 娴峰悍RCS锛孉GV
+ @Resource
+ private ApiLogService apiLogService;
+
/**
* 2.1.2浠诲姟涓嬪彂鎺ュ彛
* 鍘傚锛氭捣閲忋�佸崕鏅�
@@ -163,23 +169,47 @@
* @param rcsFactory 1 娴峰悍锛�2 鍗庢檽锛�
* @return
*/
- public int submitTask(RcsTaskSubmit rcsTaskSubmit, int rcsFactory){
- return 1;
+ public RcsReturn submitTask(RcsTaskSubmit rcsTaskSubmit, int rcsFactory){
+ RcsReturn rcsReturn = new RcsReturn();
+ boolean success = false;
+ String url = rcsFactory == 2 ? HX_URL : HIK_URL + "api/robot/controller/task/submit";
+ String response = "";
+ try {
+ response = sendPost(url, JSONObject.toJSONString(rcsTaskSubmit));
+ if (!StringUtils.isEmpty(response) && response.contains("code")) {
+ rcsReturn = JSONObject.parseObject(response, RcsReturn.class);
+ if ("SUCCESS".equals(rcsReturn.getCode())) {
+ // 妯℃嫙杩斿洖
+// rcsReturn.setCode("SUCCESS");
+// JSONObject jsonObject = new JSONObject();
+// jsonObject.put("robotTaskCode","2025121301");
+// rcsReturn.setData(jsonObject);
+ success = true;
-// String url = rcsFactory == 2 ? HX_URL :HIK_URL + "api/robot/controller/task/submit";
-// String response = sendPost(url, rcsTaskSubmit.toString());
-// if (!StringUtils.isEmpty(response) && response.contains("code")){
-// RcsReturn rcsReturn = JSONObject.parseObject(response, RcsReturn.class);
-// if("SUCCESS".equals(rcsReturn.getCode())) {
-// JSONObject data = rcsReturn.getData();
-// String robotTaskCode = data.getString("robotTaskCode");
-// if (robotTaskCode.equals(rcsTaskSubmit.getRobotTaskCode())){
-// return 1;
-// }
-// }
-// }
-//
-// return 0;
+ log.info("鍛煎彨agv鎼繍鎴愬姛锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", url, JSON.toJSONString(rcsTaskSubmit), response);
+ } else {
+ log.error("鍛煎彨agv鎼繍澶辫触锛乽rl锛歿}锛況equest锛歿}锛況esponse锛歿}", url, JSON.toJSONString(rcsTaskSubmit), response);
+ }
+ }
+ } catch (Exception e) {
+ log.error("鍛煎彨agv鎼繍寮傚父", e);
+ } finally {
+ try {
+ // 淇濆瓨鎺ュ彛鏃ュ織
+ apiLogService.save(
+ "鍛煎彨agv鎼繍",
+ url,
+ null,
+ "127.0.0.1",
+ JSON.toJSONString(rcsTaskSubmit),
+ response,
+ success
+ );
+ } catch (Exception e) {
+ log.error("鍛煎彨agv鎼繍淇濆瓨鎺ュ彛鏃ュ織寮傚父", e);
+ }
+ }
+ return rcsReturn;
}
/**
@@ -192,7 +222,7 @@
public int continueTask(RcsTaskContinue rcsTaskContinue, int rcsFactory){
String url = rcsFactory == 2 ? HX_URL :HIK_URL + "api/robot/controller/task/extend/continue";
- String response = sendPost(url, rcsTaskContinue.toString());
+ String response = sendPost(url, JSONObject.toJSONString(rcsTaskContinue));
if (!StringUtils.isEmpty(response) && response.contains("code")){
RcsReturn rcsReturn = JSONObject.parseObject(response, RcsReturn.class);
if("SUCCESS".equals(rcsReturn.getCode())) {
@@ -217,7 +247,7 @@
public int cancelTask(RcsTaskCancel rcsTaskCancel, int rcsFactory){
String url = rcsFactory == 2 ? HX_URL :HIK_URL + "api/robot/controller/task/cancel";
- String response = sendPost(url, rcsTaskCancel.toString());
+ String response = sendPost(url, JSONObject.toJSONString(rcsTaskCancel));
if (!StringUtils.isEmpty(response) && response.contains("code")){
RcsReturn rcsReturn = JSONObject.parseObject(response, RcsReturn.class);
if("SUCCESS".equals(rcsReturn.getCode())) {
@@ -242,7 +272,7 @@
private int notifyEqpt(RcsEqptNotify rcsEqptNotify, int rcsFactory){
String url = rcsFactory == 2 ? HX_URL :HIK_URL + "api/wcs/robot/eqpt/notify";
- String response = sendPost(url, rcsEqptNotify.toString());
+ String response = sendPost(url, JSONObject.toJSONString(rcsEqptNotify));
if (!StringUtils.isEmpty(response) && response.contains("code")){
RcsReturn rcsReturn = JSONObject.parseObject(response, RcsReturn.class);
if("SUCCESS".equals(rcsReturn.getCode())) {
@@ -274,9 +304,43 @@
// start : 浠诲姟寮�濮嬶紱outbin : 璧板嚭鍌ㄤ綅锛沞nd : 浠诲姟瀹屾垚
String method = values.getString("method");
String carrierType = values.getString("carrierType");
+ Date now = new Date();
try {
- if ("Q3".equals(carrierType) || "Q8".equals(carrierType)) { //AGV
+ if (singleRobotCode.equals("14") || singleRobotCode.equals("15")) { // 涓ゅ彴CTU搴撴満鍣ㄤ汉缂栧彿
+ WrkMast wrkMast = wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("task_no", robotTaskCode));
+ if(wrkMast != null) {
+ Integer ioType = wrkMast.getIoType();
+ switch (Objects.requireNonNull(RcsRetMethodEnum.getEnum(method))) {
+ case TASK_START: {
+ if (ioType == 1 || ioType == 10 || ioType == 53) {
+ wrkMast.setCrnStrTime(now);
+ wrkMast.setModiTime(now);
+ wrkMastService.updateById(wrkMast);
+ } else if (ioType == 101 || ioType == 110 || ioType == 103) {
+
+ } else {
+ log.error("{}ioType{}涓嶅湪end鍙嶉澶勭悊涓�", wrkMast.getWrkNo(), ioType);
+ }
+ }
+ break;
+ case TASK_END: {
+ if (ioType == 1 || ioType == 10 || ioType == 53) {
+ wrkMast.setWrkSts(4L);
+ wrkMast.setCrnEndTime(now);
+ wrkMast.setModiTime(now);
+ wrkMastService.updateById(wrkMast);
+ } else if (ioType == 101 || ioType == 110 || ioType == 103) {
+
+ } else {
+ log.error("{}ioType{}涓嶅湪end鍙嶉澶勭悊涓�", wrkMast.getWrkNo(), ioType);
+ }
+ }
+ break;
+ default:
+ }
+ }
+ } else { //AGV
EntityWrapper<Task> wrapper = new EntityWrapper<>();
wrapper.eq("task_no", robotTaskCode);
Task task = taskService.selectOne(wrapper);
@@ -292,6 +356,17 @@
switch (Objects.requireNonNull(RcsRetMethodEnum.getEnum(method))) {
case TASK_START: {
+ if(memo.getString("TransType").equals("05") || memo.getString("TransType").equals("01")) {
+ BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", task.getSourceStaNo()));
+ if(station.getLocSts().equals("R")) {
+ station.setLocSts("O");
+ station.setBarcode("");
+ station.setModiTime(new Date());
+ basStationService.updateById(station);
+ } else {
+ log.error("agv鍥炶皟start,鎺ラ┏鐐圭姸鎬佷笉涓篟,agv浠诲姟鍙凤細{},鐘舵�侊細{}",task.getTaskNo(),task.getWrkSts());
+ }
+ }
task.setWrkSts(302L); // 301 浠诲姟涓嬪彂銆�302 浠诲姟鎵ц銆�303 浠诲姟涓柇銆�304 浠诲姟缁撴潫
task.setModiTime(new Date());
task.setModiUser(defaultUserId);
@@ -300,12 +375,28 @@
// case TASK_OUT_BIN: {} break;
case TASK_END: {
// 鏇存柊浠诲姟鐘舵�佺瓑鍐呴儴閫昏緫
- task.setWrkSts(304L); // 301 浠诲姟涓嬪彂銆�302 浠诲姟鎵ц銆�303 浠诲姟涓柇銆�304 浠诲姟缁撴潫
+ if(memo.getString("TransType").equals("06") || memo.getString("TransType").equals("02")) {
+ // 06涓嬪垁鏉ョ殑绌哄垁鏋堕渶瑕佸洖鍘伙紝02鏉ョ殑瑕佷笂鍒�05鐨勭┖鍒�鏋朵笂婊″悗闇�瑕佸洖鍘伙紝pda涓婂仛浠诲姟杞崲
+ task.setWrkSts(305L); // 305.浠诲姟杞崲
+ BasStation station = basStationService.selectOne(new EntityWrapper<BasStation>().eq("dev_no", task.getStaNo()));
+ if(station.getLocSts().equals("S")) {
+ station.setLocSts("F");
+ station.setModiTime(new Date());
+ basStationService.updateById(station);
+ } else {
+ log.error("agv鍥炶皟end,鎺ラ┏鐐圭姸鎬佷笉涓篠,agv浠诲姟鍙凤細{},鐘舵�侊細{}",task.getTaskNo(),task.getWrkSts());
+ }
+ } else {
+ task.setWrkSts(304L); // 301 浠诲姟涓嬪彂銆�302 浠诲姟鎵ц銆�303 浠诲姟涓柇銆�304 浠诲姟缁撴潫
+ }
task.setModiTime(new Date());
task.setModiUser(defaultUserId);
taskService.updateById(task);
// 浠诲姟瀹屾垚
mesService.reporterTask(rcsReporterTask);
+
+ // 鏇存柊鎺ラ┏浣嶇疆鐘舵��
+
// EntityWrapper<TaskDetl> wapper2 = new EntityWrapper<>();
// wapper2.eq("wrk_no", task.getWrkNo())
@@ -353,7 +444,7 @@
TransArrivalStation arrivalStation = new TransArrivalStation();
arrivalStation.setTaskno(robotTaskCode);
arrivalStation.setTaskname(memo.getString("taskName"));
- arrivalStation.setTuoPanId(taskDetl == null || taskDetl.getZpallet() == null ? "" : taskDetl.getZpallet());
+// arrivalStation.setTuoPanId(taskDetl == null || taskDetl.getZpallet() == null ? "" : taskDetl.getZpallet());
arrivalStation.setDaotype(memo.getString("TransType"));
arrivalStation.setProductLineId(memo.getString("ProductLineId"));
// arrivalStation.setStationId(task.getStaNo());
@@ -379,53 +470,54 @@
} break;
default: {} break;
}
- } else if ("CTU".equals(carrierType)) { //CTU
- EntityWrapper<WrkMast> wrapper = new EntityWrapper<>();
- wrapper.eq("task_no", robotTaskCode);
- WrkMast task = wrkMastService.selectOne(wrapper);
- if (task == null || !task.getTaskNo().equals(robotTaskCode)) {
- rcsReturn.setCode("Err_RobotCodeNotMatch");
- rcsReturn.setMessage("");
- JSONObject data = new JSONObject();
- data.put("robotTaskCode", robotTaskCode);
- rcsReturn.setData(data);
- return rcsReturn;
- }
-// JSONObject memo = JSONObject.parseObject(task.getMemo());
-
- switch (Objects.requireNonNull(RcsRetMethodEnum.getEnum(method))) {
- case TASK_START: {
-// task.setWrkSts(302L); // 301 浠诲姟涓嬪彂銆�302 浠诲姟鎵ц銆�303 浠诲姟涓柇銆�304 浠诲姟缁撴潫
+ }
+// else if ("CTU".equals(carrierType)) { //CTU
+// EntityWrapper<WrkMast> wrapper = new EntityWrapper<>();
+// wrapper.eq("task_no", robotTaskCode);
+// WrkMast task = wrkMastService.selectOne(wrapper);
+// if (task == null || !task.getTaskNo().equals(robotTaskCode)) {
+// rcsReturn.setCode("Err_RobotCodeNotMatch");
+// rcsReturn.setMessage("");
+// JSONObject data = new JSONObject();
+// data.put("robotTaskCode", robotTaskCode);
+// rcsReturn.setData(data);
+// return rcsReturn;
+// }
+//// JSONObject memo = JSONObject.parseObject(task.getMemo());
+//
+// switch (Objects.requireNonNull(RcsRetMethodEnum.getEnum(method))) {
+// case TASK_START: {
+//// task.setWrkSts(302L); // 301 浠诲姟涓嬪彂銆�302 浠诲姟鎵ц銆�303 浠诲姟涓柇銆�304 浠诲姟缁撴潫
+//// task.setModiTime(new Date());
+//// task.setModiUser(defaultUserId);
+//// taskService.updateById(task);
+// } break;
+//// case TASK_OUT_BIN: {} break;
+// case TASK_END: {
+// // 鏇存柊浠诲姟鐘舵�佺瓑鍐呴儴閫昏緫
+// long wrkSts = task.getWrkSts(); // 1.鍏ュ簱锛�101.鍑哄簱锛�
+// if (task.getIoType() == 1) {
+// wrkSts = 4L;
+// } else if (task.getIoType() == 101) {
+// wrkSts = 14L;
+// }
+//
+// task.setWrkSts(wrkSts); // 4.鍏ュ簱瀹屾垚锛�14.宸插嚭搴撴湭纭锛�
// task.setModiTime(new Date());
// task.setModiUser(defaultUserId);
-// taskService.updateById(task);
- } break;
-// case TASK_OUT_BIN: {} break;
- case TASK_END: {
- // 鏇存柊浠诲姟鐘舵�佺瓑鍐呴儴閫昏緫
- long wrkSts = task.getWrkSts(); // 1.鍏ュ簱锛�101.鍑哄簱锛�
- if (task.getIoType() == 1) {
- wrkSts = 4L;
- } else if (task.getIoType() == 101) {
- wrkSts = 14L;
- }
-
- task.setWrkSts(wrkSts); // 4.鍏ュ簱瀹屾垚锛�14.宸插嚭搴撴湭纭锛�
- task.setModiTime(new Date());
- task.setModiUser(defaultUserId);
- wrkMastService.updateById(task);
-
- // TODO锛氫换鍔″畬鎴愯Е鍙戝嚭鍏ュ簱鍙樻洿鎿嶄綔
-
-
-// // 鍏ュ簱瀹屾垚
-// mesService.inFeedback(memo.getString("OrderNo"));
-// // 鍑哄簱瀹屾垚
-// mesService.outFeedback(memo.getString("OrderNo"));
- } break;
- default: {} break;
- }
- }
+// wrkMastService.updateById(task);
+//
+// // TODO锛氫换鍔″畬鎴愯Е鍙戝嚭鍏ュ簱鍙樻洿鎿嶄綔
+//
+//
+//// // 鍏ュ簱瀹屾垚
+//// mesService.inFeedback(memo.getString("OrderNo"));
+//// // 鍑哄簱瀹屾垚
+//// mesService.outFeedback(memo.getString("OrderNo"));
+// } break;
+// default: {} break;
+// }
+// }
// 杩斿洖RCS
rcsReturn.setCode("SUCCESS");
@@ -553,11 +645,15 @@
log.info("sendPost - {} - {}", url, param);
URL realUrl = new URL(url);
URLConnection conn = realUrl.openConnection();
- conn.setRequestProperty("accept", "*/*");
- conn.setRequestProperty("connection", "Keep-Alive");
- conn.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)");
- conn.setRequestProperty("Accept-Charset", "utf-8");
- conn.setRequestProperty("Content-Type", "application/json;charset=utf-8");
+ conn.setRequestProperty("Content-Type", "application/json");
+ conn.setRequestProperty("Content-Length", "<calculated when request is sent>");
+ conn.setRequestProperty("Host", "<calculated when request is sent>");
+ conn.setRequestProperty("Accept", "*/*");
+ conn.setRequestProperty("Accept-Encoding", "gzip, deflate, br");
+ conn.setRequestProperty("Connection", "keep-alive");
+
+ conn.setRequestProperty("X-lr-request-id", String.valueOf(new Date().getTime()));
+ conn.setRequestProperty("X-lr-version", "4.3");
conn.setConnectTimeout(5000);
conn.setReadTimeout(5000);
conn.setDoOutput(true);
--
Gitblit v1.9.1