From 371462edc6b3ee1de97c235d4a019b544badda0d Mon Sep 17 00:00:00 2001
From: chen.lin <1442464845@qq.com>
Date: 星期六, 14 二月 2026 22:09:37 +0800
Subject: [PATCH] AGV工作档界面和逻辑调整
---
src/main/java/com/zy/asrs/task/AgvScheduler.java | 75 ++++++++++++++++++++++++-------------
1 files changed, 49 insertions(+), 26 deletions(-)
diff --git a/src/main/java/com/zy/asrs/task/AgvScheduler.java b/src/main/java/com/zy/asrs/task/AgvScheduler.java
index 2d988a7..15ba6c8 100644
--- a/src/main/java/com/zy/asrs/task/AgvScheduler.java
+++ b/src/main/java/com/zy/asrs/task/AgvScheduler.java
@@ -27,6 +27,7 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
+import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
@@ -90,7 +91,7 @@
* 姣忔鍙鐞嗕竴涓换鍔★紝閬垮厤楂樺苟鍙戞墽琛�
* 浣跨敤AtomicBoolean纭繚鍗曠嚎绋嬫墽琛屽惊鐜�
*/
- @Scheduled(cron = "0/5 * * * * ? ")
+ @Scheduled(cron = "0/15 * * * * ? ")
private void allocateSite() {
if (!schedulerProperties.isEnabled()) {
log.debug("瀹氭椂浠诲姟allocateSite锛氳皟搴﹀櫒鏈惎鐢紝璺宠繃鎵ц");
@@ -276,7 +277,7 @@
if (!schedulerProperties.isEnabled()) {
return;
}
- List<Task> taskList = taskService.selectList(new EntityWrapper<Task>().eq("wrk_sts", 9).eq("is_deleted", 0));
+ List<Task> taskList = taskService.selectList(new EntityWrapper<Task>().in("wrk_sts", 9L,10L).eq("is_deleted", 0));
if (taskList.isEmpty()) {
return;
}
@@ -538,12 +539,33 @@
);
}
// 濡傛灉閫氳繃wrk_no娌℃壘鍒帮紝涓旀湁鏉$爜锛屽垯閫氳繃鏉$爜鏌ヨ
+ // 娉ㄦ剰锛氶�氳繃鏉$爜鏌ヨ鏃讹紝闇�瑕侀獙璇佸伐浣滄。鏄惁鐪熺殑宸插畬鎴愶紙閫氳繃wrk_no鍖归厤锛夛紝閬垮厤閲嶅鏉$爜瀵艰嚧璇垽
if (wrkMastLog == null && !Cools.isEmpty(agvTask.getBarcode())) {
- List<WrkMastLog> logList = wrkMastLogService.selectList(
- new EntityWrapper<WrkMastLog>().eq("barcode", agvTask.getBarcode())
- );
- if (!logList.isEmpty()) {
- wrkMastLog = logList.get(0); // 鍙栫涓�涓�
+ // 鏋勫缓鏌ヨ鏉′欢锛氭潯鐮佸尮閰嶏紝涓斿巻鍙叉。鍒涘缓鏃堕棿鍦ˋGV璁㈠崟鍒涘缓鏃堕棿涔嬪悗锛屼笖涓嶈秴杩嘇GV鍒涘缓鏃堕棿涔嬪悗6灏忔椂
+ Wrapper<WrkMastLog> logWrapper = new EntityWrapper<WrkMastLog>()
+
+ .eq("barcode", agvTask.getBarcode());
+ // 濡傛灉AGV璁㈠崟鏈夊垱寤烘椂闂达紝娣诲姞鏃堕棿杩囨护鏉′欢
+ if (agvTask.getAppeTime() != null) {
+ // 璁$畻AGV鍒涘缓鏃堕棿涔嬪悗6灏忔椂鐨勬椂闂�
+ Calendar calendar = Calendar.getInstance();
+ calendar.setTime(agvTask.getAppeTime());
+ calendar.add(Calendar.HOUR_OF_DAY, 6); // 鍔�6灏忔椂
+ Date endTime = calendar.getTime();
+ // 鏌ヨ鏉′欢锛氬巻鍙叉。鍒涘缓鏃堕棿 >= AGV璁㈠崟鍒涘缓鏃堕棿 涓� <= AGV鍒涘缓鏃堕棿涔嬪悗6灏忔椂
+ logWrapper = logWrapper.ge("appe_time", agvTask.getAppeTime())
+ .le("appe_time", endTime)
+ .eq("barcode", agvTask.getBarcode())
+ ;
+ }
+ List<WrkMastLog> logList = wrkMastLogService.selectList(logWrapper);
+ // 杩囨护锛氬彧淇濈暀宸ヤ綔鍙峰尮閰嶇殑鍘嗗彶妗o紝閬垮厤閲嶅鏉$爜瀵艰嚧璇垽
+ for (WrkMastLog log : logList) {
+ if (agvTask.getWrkNo() != null && log.getWrkNo() != null &&
+ log.getWrkNo().equals(agvTask.getWrkNo())) {
+ wrkMastLog = log;
+ break;
+ }
}
}
@@ -607,13 +629,11 @@
String displayTaskId = (agvTask.getWrkNo() != null) ? String.valueOf(agvTask.getWrkNo()) : String.valueOf(agvTask.getId());
// 濡傛灉璁㈠崟鍒涘缓瓒呰繃浜斿垎閽燂紝鏌ヨAGV璁㈠崟鐘舵��
if (shouldCheckAgvStatus) {
- String agvOrderStatus = queryAgvOrderStatus(agvTask, displayTaskId);
- if (agvOrderStatus != null) {
- // 鏍规嵁璁㈠崟鐘舵�佸鐞�
- boolean shouldComplete = processAgvOrderStatus(agvTask, agvOrderStatus, displayTaskId, now);
- if (shouldComplete) {
- completedTasks.add(agvTask);
- }
+ // queryAgvOrderStatus鍐呴儴宸茬粡璋冪敤processAgvOrderStatus杩涜褰掔被澶勭悊
+ // 杩斿洖true琛ㄧず搴旇瀹岀粨璁㈠崟锛屾坊鍔犲埌瀹屾垚鍒楄〃
+ boolean shouldComplete = queryAgvOrderStatus(agvTask, displayTaskId);
+ if (shouldComplete) {
+ completedTasks.add(agvTask);
}
}
@@ -638,12 +658,12 @@
}
/**
- * 鏌ヨAGV璁㈠崟鐘舵��
+ * 鏌ヨAGV璁㈠崟鐘舵�佸苟褰掔被澶勭悊
* @param agvTask AGV浠诲姟
* @param displayTaskId 鏄剧ず鐨勪换鍔D
- * @return 璁㈠崟鐘舵�侊紙Building/Created/Assigned/Failed/Done/Cancelled锛夛紝濡傛灉鏌ヨ澶辫触杩斿洖null
+ * @return true琛ㄧず搴旇瀹岀粨璁㈠崟锛宖alse琛ㄧず涓嶅簲璇ュ畬缁擄紙璺宠繃锛夛紝濡傛灉鏌ヨ澶辫触杩斿洖false
*/
- private String queryAgvOrderStatus(Task agvTask, String displayTaskId) {
+ private boolean queryAgvOrderStatus(Task agvTask, String displayTaskId) {
try {
// 鏋勫缓璁㈠崟ID锛屼紭鍏堜娇鐢╝gvWrkNo锛屽鏋滀负绌哄垯浣跨敤T+wrkNo锛堝悜鍚庡吋瀹癸級
String orderId = agvTask.getAgvWrkNo();
@@ -656,7 +676,7 @@
agvTask.setErrorMemo2(errorMsg);
agvTask.setErrorTime2(new Date());
taskService.updateById(agvTask);
- return null;
+ return false;
}
}
@@ -687,7 +707,7 @@
agvTask.setErrorMemo2(errorMsg);
agvTask.setErrorTime2(new Date());
taskService.updateById(agvTask);
- return null;
+ return false;
}
// 瑙f瀽鍝嶅簲
@@ -697,7 +717,7 @@
agvTask.setErrorMemo2(errorMsg);
agvTask.setErrorTime2(new Date());
taskService.updateById(agvTask);
- return null;
+ return false;
}
try {
@@ -712,7 +732,7 @@
agvTask.setErrorMemo2(errorMsg);
agvTask.setErrorTime2(new Date());
taskService.updateById(agvTask);
- return null;
+ return false;
}
// 鑾峰彇璁㈠崟淇℃伅
@@ -721,14 +741,17 @@
String status = entityValue.getString("status");
if (status != null) {
log.info("鏌ヨAGV璁㈠崟鐘舵�佹垚鍔� - 浠诲姟ID锛歿}锛岃鍗旾D锛歿}锛岀姸鎬侊細{}", displayTaskId, orderId, status);
- return status;
+ // 鏌ヨ鍚庝娇鐢╬rocessAgvOrderStatus鏂规硶褰掔被
+ Date now = new Date();
+ boolean shouldComplete = processAgvOrderStatus(agvTask, status, displayTaskId, now);
+ return shouldComplete;
} else {
String errorMsg = String.format("鏌ヨAGV璁㈠崟鐘舵�佸搷搴斾腑缂哄皯status瀛楁锛岃姹傦細%s锛屽搷搴旓細%s", requestBody, response);
log.warn("鏌ヨAGV璁㈠崟鐘舵�佸け璐� - 浠诲姟ID锛歿}锛岃鍗旾D锛歿}锛寋}", displayTaskId, orderId, errorMsg);
agvTask.setErrorMemo2(errorMsg);
agvTask.setErrorTime2(new Date());
taskService.updateById(agvTask);
- return null;
+ return false;
}
} else {
String errorMsg = String.format("鏌ヨAGV璁㈠崟鐘舵�佸搷搴斾腑缂哄皯entityValue瀛楁锛岃姹傦細%s锛屽搷搴旓細%s", requestBody, response);
@@ -736,7 +759,7 @@
agvTask.setErrorMemo2(errorMsg);
agvTask.setErrorTime2(new Date());
taskService.updateById(agvTask);
- return null;
+ return false;
}
} catch (com.alibaba.fastjson.JSONException e) {
String errorMsg = String.format("瑙f瀽AGV璁㈠崟鐘舵�佸搷搴擩SON澶辫触锛�%s锛岃姹傦細%s锛屽搷搴旓細%s", e.getMessage(), requestBody, response);
@@ -744,7 +767,7 @@
agvTask.setErrorMemo2(errorMsg);
agvTask.setErrorTime2(new Date());
taskService.updateById(agvTask);
- return null;
+ return false;
}
} catch (Exception e) {
String errorMsg = String.format("鏌ヨAGV璁㈠崟鐘舵�佸紓甯革細%s", e.getMessage());
@@ -752,7 +775,7 @@
agvTask.setErrorMemo2(errorMsg);
agvTask.setErrorTime2(new Date());
taskService.updateById(agvTask);
- return null;
+ return false;
}
}
--
Gitblit v1.9.1