From 7692db6072ef569b5734d218cb11fa82e80171d1 Mon Sep 17 00:00:00 2001
From: chen.llin <1442464845@qq.comm>
Date: 星期四, 22 一月 2026 17:12:17 +0800
Subject: [PATCH] agv出库逻辑调整
---
src/main/java/com/zy/asrs/task/handler/AgvHandler.java | 168 +++++++++++++++++++++-----------------------------------
1 files changed, 63 insertions(+), 105 deletions(-)
diff --git a/src/main/java/com/zy/asrs/task/handler/AgvHandler.java b/src/main/java/com/zy/asrs/task/handler/AgvHandler.java
index c346977..f6eaf9e 100644
--- a/src/main/java/com/zy/asrs/task/handler/AgvHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/AgvHandler.java
@@ -189,7 +189,7 @@
.in("wrk_sts", 7L, 8L)
.in("io_type", ioTypes)
.ne("id", task.getId()) // 鎺掗櫎褰撳墠浠诲姟鏈韩
- .andNew("(is_deleted = 0)")
+ .eq("is_deleted", 0) // 鎺掗櫎宸插垹闄ょ殑浠诲姟
);
int taskCount = allTasks != null ? allTasks.size() : 0;
@@ -267,7 +267,7 @@
.isNotNull("plc_str_time") // 鍙鏌ュ凡鏀跺埌AGV纭鐨勪换鍔★紙plc_str_time涓嶄负绌猴級
.in("io_type", ioTypes)
.ne("id", task.getId()) // 鎺掗櫎褰撳墠浠诲姟鏈韩
- .andNew("(is_deleted = 0)")
+ .eq("is_deleted", 0) // 鎺掗櫎宸插垹闄ょ殑浠诲姟
);
// 妫�鏌ュ苟鑷姩缁撴潫宸插畬鎴愬伐浣滄。鐨凙GV浠诲姟
@@ -368,7 +368,7 @@
.build()
.doPost();
// 鎵撳嵃杩斿洖鍙傛暟
- // log.info("{}鍛煎彨agv鎼繍 - 杩斿洖鍙傛暟锛歿}", namespace, response);
+ log.info("{}鍛煎彨agv鎼繍锛岃姹傚弬鏁般�寋}銆� - 杩斿洖鍙傛暟锛歿}", namespace,body, response);
// 妫�鏌ュ搷搴旀槸鍚︿负绌�
if (response == null || response.trim().isEmpty()) {
@@ -575,7 +575,8 @@
* @param taskTypeName 浠诲姟绫诲瀷鍚嶇О锛堢敤浜庢棩蹇楋級
* @return 浠嶇劧鏈夋晥鐨勬鍦ㄦ惉杩愮殑浠诲姟鍒楄〃锛堝凡瀹屾垚鐨勫凡琚Щ闄わ級
*/
- private List<Task> checkAndCompleteFinishedTasks(List<Task> transportingTasks, String taskTypeName) {
+ @Transactional(rollbackFor = Exception.class)
+ public List<Task> checkAndCompleteFinishedTasks(List<Task> transportingTasks, String taskTypeName) {
if (transportingTasks == null || transportingTasks.isEmpty()) {
return transportingTasks;
}
@@ -676,6 +677,8 @@
return validTasks;
}
+
+
/**
* 浠巑emo瀛楁涓幏鍙栭噸璇曟鏁�
* memo鏍煎紡锛氬鏋滃寘鍚�"retryCount:鏁板瓧"锛屽垯杩斿洖璇ユ暟瀛楋紝鍚﹀垯杩斿洖0
@@ -745,7 +748,7 @@
/**
* 鏋勯�犺姹傚唴瀹癸紙浠欏伐M4鏍煎紡锛�
*/
- private String getRequest(Task task, String nameSpace) {
+ public String getRequest(Task task, String nameSpace) {
JSONObject object = new JSONObject();
// taskId浣跨敤宸ヤ綔鍙凤紙wrk_no锛夛紝鏍煎紡锛歍 + 宸ヤ綔鍙�
// 濡傛灉宸ヤ綔鍙蜂负绌猴紝鍒欎娇鐢ㄤ换鍔D浣滀负澶囬��
@@ -793,6 +796,7 @@
return object.toJSONString();
}
+
/**
* 涓轰换鍔″垎閰嶇珯鐐癸紙瀹氭椂浠诲姟涓皟鐢級
* 娉ㄦ剰锛氬彧浼氬垎閰嶄竴涓珯鐐癸紝鎵惧埌绗竴涓鍚堟潯浠剁殑绔欑偣灏卞垎閰嶅苟閫�鍑�
@@ -800,16 +804,16 @@
* @return 濡傛灉鏃犳硶鍒嗛厤绔欑偣锛岃繑鍥為敊璇俊鎭紱濡傛灉鍒嗛厤鎴愬姛锛岃繑鍥瀗ull骞舵洿鏂皌ask鐨剆taNo
*/
@Transactional(rollbackFor = Exception.class)
- public String allocateSiteForTask(Task task) {
+ public String allocateSiteForTask(Task task) {
// taskId浣跨敤宸ヤ綔鍙凤紙wrk_no锛夛紝濡傛灉宸ヤ綔鍙蜂负绌哄垯浣跨敤浠诲姟ID
String displayTaskId = (task.getWrkNo() != null) ? String.valueOf(task.getWrkNo()) : String.valueOf(task.getId());
- log.debug("寮�濮嬩负浠诲姟ID锛歿}鍒嗛厤绔欑偣锛屼换鍔$被鍨嬶細{}锛屾満鍣ㄤ汉缁勶細{}",
+ log.debug("寮�濮嬩负浠诲姟ID锛歿}鍒嗛厤绔欑偣锛屼换鍔$被鍨嬶細{}锛屾満鍣ㄤ汉缁勶細{}",
displayTaskId, task.getIoType(), task.getInvWh());
// 鏍规嵁浠诲姟鐨刬nvWh锛堟満鍣ㄤ汉缁勶級鍒ゆ柇鏄笢渚ц繕鏄タ渚�
String robotGroup = task.getInvWh();
List<String> targetStations;
String groupKey;
-
+
if (robotGroup != null && robotGroup.equals(agvProperties.getRobotGroupEast())) {
// 涓滀晶绔欑偣
targetStations = agvProperties.getEastStations();
@@ -824,22 +828,22 @@
groupKey = "east";
log.warn("浠诲姟ID锛歿}鐨勬満鍣ㄤ汉缁剓}鏈瘑鍒紝浣跨敤榛樿涓滀晶绔欑偣", displayTaskId, robotGroup);
}
-
+
if (targetStations.isEmpty()) {
String errorMsg = "娌℃湁鍙敤鐨勭洰鏍囩珯鐐归厤缃�";
log.warn("浠诲姟ID锛歿}锛寋}", displayTaskId, errorMsg);
return errorMsg;
}
-
+
// 灏嗙珯鐐瑰瓧绗︿覆鍒楄〃杞崲涓烘暣鏁板垪琛�
List<Integer> siteIntList = targetStations.stream()
.map(Integer::parseInt)
.collect(Collectors.toList());
-
- log.info("浠诲姟ID锛歿}锛寋}绔欑偣缁勯厤缃殑绔欑偣锛歿}锛屽叡{}涓珯鐐�",
+
+ log.info("浠诲姟ID锛歿}锛寋}绔欑偣缁勯厤缃殑绔欑偣锛歿}锛屽叡{}涓珯鐐�",
displayTaskId, groupKey.equals("east") ? agvProperties.getEastDisplayName() : agvProperties.getWestDisplayName(),
targetStations, targetStations.size());
-
+
// 鍒ゆ柇鑳藉叆绔欑偣锛坕n_enable="Y"琛ㄧず鑳藉叆锛夛紝鎺掗櫎dev_no=0鐨勬棤鏁堢珯鐐�
List<BasDevp> allDevList = basDevpMapper.selectList(
new EntityWrapper<BasDevp>()
@@ -857,102 +861,45 @@
.append(",canining=").append(dev.getCanining()).append(")");
}
log.info("浠诲姟ID锛歿}锛屽�欓�夌珯鐐圭姸鎬侊細{}", displayTaskId, siteStatusInfo.toString());
-
+
List<Integer> sites = allDevList.stream()
.filter(dev -> "Y".equals(dev.getInEnable()))
.map(BasDevp::getDevNo)
.filter(devNo -> devNo != null && devNo != 0) // 鍐嶆杩囨护锛岀‘淇濅笉涓簄ull鎴�0
.collect(Collectors.toList());
-
+
// 妫�鏌ユ槸鍚︽湁绔欑偣涓嶅彲鐢紝濡傛灉鏈夛紝璇存槑闇�瑕佸湪鍙敤鐨勭珯鐐逛箣闂村钩鍧囧垎閰�
List<Integer> unavailableSites = new ArrayList<>(siteIntList);
unavailableSites.removeAll(sites);
if (!unavailableSites.isEmpty()) {
- log.info("浠诲姟ID锛歿}锛寋}绔欑偣缁勪腑鏈墈}涓珯鐐逛笉鍙敤锛坕n_enable!='Y'锛夛細{}锛屽皢鍦▄}涓彲鐢ㄧ珯鐐逛箣闂村钩鍧囧垎閰�",
+ log.info("浠诲姟ID锛歿}锛寋}绔欑偣缁勪腑鏈墈}涓珯鐐逛笉鍙敤锛坕n_enable!='Y'锛夛細{}锛屽皢鍦▄}涓彲鐢ㄧ珯鐐逛箣闂村钩鍧囧垎閰�",
displayTaskId, groupKey.equals("east") ? agvProperties.getEastDisplayName() : agvProperties.getWestDisplayName(),
unavailableSites.size(), unavailableSites, sites.size());
}
-
+
if (sites.isEmpty()) {
String errorMsg = "娌℃湁鑳藉叆绔欑偣锛坕n_enable='Y'锛�";
log.warn("浠诲姟ID锛歿}锛寋}锛屽�欓�夌珯鐐瑰垪琛細{}锛岀珯鐐圭姸鎬侊細{}", displayTaskId, errorMsg, targetStations, siteStatusInfo.toString());
return errorMsg;
}
-
+
// 鍏堟鏌ョ珯鐐归厤缃紙canining="Y"鍙叆锛夛紝鎺掗櫎dev_no=0鐨勬棤鏁堢珯鐐�
List<BasDevp> devListWithConfig = basDevpMapper.selectList(new EntityWrapper<BasDevp>()
.in("dev_no", sites)
.eq("in_enable", "Y")
.eq("canining", "Y")
+ .eq("loading", "N")
.ne("dev_no", 0) // 鎺掗櫎dev_no=0鐨勬棤鏁堢珯鐐�
);
-
- if (devListWithConfig.isEmpty()) {
- // 绔欑偣閰嶇疆涓嶅厑璁稿叆搴擄紙canining != "Y"锛夛紝鏆備笉鍒嗛厤锛岀瓑寰呴厤缃紑閫氾紙鍙湪瀹氭椂浠诲姟涓褰曟棩蹇楋級
- // 璁板綍姣忎釜绔欑偣鐨刢anining鐘舵��
- StringBuilder caniningStatusInfo = new StringBuilder();
- for (Integer siteNo : sites) {
- BasDevp dev = allDevList.stream()
- .filter(d -> d.getDevNo().equals(siteNo))
- .findFirst()
- .orElse(null);
- if (dev != null) {
- if (caniningStatusInfo.length() > 0) {
- caniningStatusInfo.append("; ");
- }
- caniningStatusInfo.append("绔欑偣").append(siteNo)
- .append("(canining=").append(dev.getCanining()).append(")");
- }
- }
- log.warn("浠诲姟ID锛歿}娌℃湁鍙叆绔欑偣锛堢珯鐐规湭寮�閫氬彲鍏ュ厑璁革細canining='Y'锛夛紝鏆備笉鍒嗛厤绔欑偣锛岀瓑寰呴厤缃紑閫氥�傝兘鍏ョ珯鐐瑰垪琛細{}锛宑anining鐘舵�侊細{}",
- displayTaskId, sites, caniningStatusInfo.toString());
- return null; // 杩斿洖null锛岃〃绀烘殏涓嶅垎閰嶏紝绛夊緟閰嶇疆寮�閫�
+
+ if (devListWithConfig==null || devListWithConfig.isEmpty()) {
+ log.warn("浠诲姟ID锛歿}娌℃湁鍙叆绔欑偣锛堢珯鐐规湭寮�閫氬彲鍏ュ厑璁革細canining='Y'锛夛紝鏆備笉鍒嗛厤绔欑偣锛岀瓑寰呴厤缃紑閫氥�傝兘鍏ョ珯鐐瑰垪琛細{}",
+ displayTaskId, sites);
+ return null;
}
-
- // 鑾峰彇娌℃湁鍑哄簱浠诲姟鐨勭珯鐐癸紙浠庡凡閰嶇疆鍙叆鐨勭珯鐐逛腑绛涢�夛級
- List<Integer> configuredSites = devListWithConfig.stream()
- .map(BasDevp::getDevNo)
- .collect(Collectors.toList());
- log.info("浠诲姟ID锛歿}锛屽凡閰嶇疆鍙叆绔欑偣鍒楄〃锛歿}", displayTaskId, configuredSites);
- List<Integer> canInSites = basDevpMapper.getCanInSites(configuredSites);
- if (canInSites.isEmpty()) {
- // 鎵�鏈夊凡閰嶇疆鍙叆鐨勭珯鐐归兘鏈夊嚭搴撲换鍔★紝鏆備笉鍒嗛厤锛岀瓑寰呬笅娆″畾鏃朵换鍔″啀灏濊瘯锛堝彧鍦ㄥ畾鏃朵换鍔′腑璁板綍鏃ュ織锛�
- log.warn("浠诲姟ID锛歿}娌℃湁鍙叆绔欑偣锛堣绛夊緟鍑哄簱瀹屾垚锛夛紝鏆備笉鍒嗛厤绔欑偣锛岀瓑寰呬笅娆″畾鏃朵换鍔″啀灏濊瘯銆傚凡閰嶇疆鍙叆绔欑偣鍒楄〃锛歿}", displayTaskId, configuredSites);
- return null; // 杩斿洖null锛岃〃绀烘殏涓嶅垎閰嶏紝绛夊緟涓嬫瀹氭椂浠诲姟鍐嶅皾璇�
- }
- log.info("浠诲姟ID锛歿}锛屾病鏈夊嚭搴撲换鍔$殑绔欑偣鍒楄〃锛歿}", displayTaskId, canInSites);
-
- // 瀵绘壘鍏ュ簱浠诲姟鏈�灏戠殑绔欑偣锛堜笖蹇呴』in_enable="Y"鑳藉叆 鍜� canining="Y"鍙叆锛夛紝鎺掗櫎dev_no=0鐨勬棤鏁堢珯鐐�
- List<BasDevp> devList = basDevpMapper.selectList(new EntityWrapper<BasDevp>()
- .in("dev_no", canInSites)
- .eq("in_enable", "Y")
- .eq("canining", "Y")
- .ne("dev_no", 0) // 鎺掗櫎dev_no=0鐨勬棤鏁堢珯鐐�
- ).stream()
- .filter(dev -> dev.getDevNo() != null && dev.getDevNo() != 0) // 鍐嶆杩囨护锛岀‘淇濅笉涓簄ull鎴�0
- .collect(Collectors.toList());
-
- if (devList.isEmpty()) {
- // 鐞嗚涓婁笉搴旇鍒拌繖閲岋紝鍥犱负鍓嶉潰宸茬粡妫�鏌ヨ繃浜嗭紝浣嗕负浜嗗畨鍏ㄨ捣瑙佽繕鏄繚鐣�
- String errorMsg = "娌℃湁鍙叆绔欑偣锛坕n_enable='Y'涓攃anining='Y'锛�";
- log.warn("浠诲姟ID锛歿}锛寋}锛屽彲鍏ョ珯鐐瑰垪琛細{}", displayTaskId, errorMsg, canInSites);
- return errorMsg;
- }
-
- // 璁板綍姣忎釜绔欑偣鐨勫叆搴撲换鍔℃暟
- StringBuilder siteInQtyInfo = new StringBuilder();
- for (BasDevp dev : devList) {
- if (siteInQtyInfo.length() > 0) {
- siteInQtyInfo.append("; ");
- }
- siteInQtyInfo.append("绔欑偣").append(dev.getDevNo())
- .append("(鍏ュ簱浠诲姟鏁�=").append(dev.getInQty()).append(")");
- }
- log.info("浠诲姟ID锛歿}锛屽彲鍏ョ珯鐐瑰強鍏跺叆搴撲换鍔℃暟锛歿}", displayTaskId, siteInQtyInfo.toString());
-
- // 鍏堟寜瑙勫垯鎺掑簭锛堝叆搴撲换鍔℃暟鎺掑簭锛�
- devList.sort(Comparator.comparing(BasDevp::getInQty));
-
+
+ // 鍏堟寜瑙勫垯鎺掑簭锛堝叆搴撲换鍔℃暟鎺掑簭锛�
+ devListWithConfig.sort(Comparator.comparing(BasDevp::getInQty));
// 鏍规嵁浠诲姟绫诲瀷纭畾瑕佹鏌ョ殑io_type鍒楄〃
Integer taskIoType = task.getIoType();
List<Integer> checkIoTypes = null;
@@ -968,7 +915,7 @@
taskTypeName = "鍑哄簱";
}
}
-
+
// 鍏堟煡璇gv宸ヤ綔妗d腑鏈鍒嗛厤绔欑偣鐨勭珯鐐�
// 鏌ヨagv宸ヤ綔妗d腑鎵�鏈夊凡鍒嗛厤绔欑偣鐨勪换鍔★紙sta_no涓嶄负绌恒�佷笉涓虹┖瀛楃涓层�佷笉涓�0锛�
final List<String> allocatedSiteNos;
@@ -992,15 +939,22 @@
} else {
allocatedSiteNos = new ArrayList<>();
}
-
+
// 浠庡彲鐢ㄧ珯鐐逛腑绛涢�夊嚭鏈鍒嗛厤鐨勭珯鐐�
- List<BasDevp> unallocatedSites = devList.stream()
+ List<BasDevp> unallocatedSites = devListWithConfig.stream()
.filter(dev -> {
String staNo = String.valueOf(dev.getDevNo());
return !allocatedSiteNos.contains(staNo);
})
.collect(Collectors.toList());
-
+ List<BasDevp> unallocatedSites2= new ArrayList<>();
+ for(int i=0;devListWithConfig.size()>i;i++){
+ unallocatedSites2.add(devListWithConfig.get(i));
+ }
+// if(unallocatedSites==null || unallocatedSites.isEmpty()){
+// unallocatedSites=unallocatedSites2;
+//
+// }
// 鍙娇鐢ㄦ湭鍒嗛厤绔欑偣
if (unallocatedSites.isEmpty()) {
// 鏈垎閰嶇珯鐐逛负绌猴細涓嶅垎閰嶇珯鐐�
@@ -1011,20 +965,20 @@
}
allocatedSitesInfo.append("绔欑偣").append(staNo).append("宸茶鍒嗛厤");
}
- log.warn("浠诲姟ID锛歿}锛屾墍鏈夊彲鐢ㄧ珯鐐归兘宸茶鍒嗛厤锛屾殏涓嶅垎閰嶇珯鐐癸紝绛夊緟涓嬫瀹氭椂浠诲姟鍐嶅皾璇曘�傚凡鍒嗛厤绔欑偣锛歿}",
+ log.warn("浠诲姟ID锛歿}锛屾墍鏈夊彲鐢ㄧ珯鐐归兘宸茶鍒嗛厤锛屾殏涓嶅垎閰嶇珯鐐癸紝绛夊緟涓嬫瀹氭椂浠诲姟鍐嶅皾璇曘�傚凡鍒嗛厤绔欑偣锛歿}",
displayTaskId, allocatedSitesInfo.length() > 0 ? allocatedSitesInfo.toString() : "鏃犺缁嗕俊鎭�");
return null; // 杩斿洖null锛岃〃绀烘殏涓嶅垎閰嶏紝绛夊緟涓嬫瀹氭椂浠诲姟鍐嶅皾璇�
}
-
+
// 瀛樺湪鏈垎閰嶇珯鐐癸細鏍规嵁閰嶇疆鐨勫垎閰嶇瓥鐣ラ�夋嫨鍏蜂綋绔欑偣
// 鍏堟寜瑙勫垯鎺掑簭锛堝叆搴撲换鍔℃暟鎺掑簭锛�
unallocatedSites.sort(Comparator.comparing(BasDevp::getInQty));
-
+
// 鏍规嵁閰嶇疆閫夋嫨鍒嗛厤绛栫暐锛岀‘瀹氫紭鍏堝垎閰嶇殑绔欑偣椤哄簭
List<BasDevp> orderedSites = new ArrayList<>();
String strategy = agvProperties.getSiteAllocation().getStrategy();
boolean enableRoundRobin = agvProperties.getSiteAllocation().isEnableRoundRobin();
-
+
// 璁板綍鏄惁浣跨敤杞绛栫暐锛屼互鍙婅疆璇㈣鏁板櫒锛堢敤浜庡湪鎴愬姛鍒嗛厤绔欑偣鍚庨�掑锛�
AtomicInteger roundRobinCounter = null;
int roundRobinStartIndex = 0;
@@ -1035,48 +989,48 @@
// 灏嗚疆璇㈤�変腑鐨勭珯鐐规斁鍦ㄦ渶鍓嶉潰
orderedSites.addAll(unallocatedSites.subList(roundRobinStartIndex, unallocatedSites.size()));
orderedSites.addAll(unallocatedSites.subList(0, roundRobinStartIndex));
- log.info("浠诲姟ID锛歿}锛屼娇鐢ㄨ疆璇㈠垎閰嶇瓥鐣ワ紝绔欑偣缁勶細{}锛岃疆璇㈣捣濮嬬储寮曪細{}锛屽�欓�夌珯鐐癸細{}锛堝叡{}涓湭鍒嗛厤绔欑偣锛�",
- displayTaskId, groupKey, roundRobinStartIndex,
- unallocatedSites.stream().map(d -> String.valueOf(d.getDevNo())).collect(Collectors.joining(",")),
+ log.info("浠诲姟ID锛歿}锛屼娇鐢ㄨ疆璇㈠垎閰嶇瓥鐣ワ紝绔欑偣缁勶細{}锛岃疆璇㈣捣濮嬬储寮曪細{}锛屽�欓�夌珯鐐癸細{}锛堝叡{}涓湭鍒嗛厤绔欑偣锛�",
+ displayTaskId, groupKey, roundRobinStartIndex,
+ unallocatedSites.stream().map(d -> String.valueOf(d.getDevNo())).collect(Collectors.joining(",")),
unallocatedSites.size());
} else if (unallocatedSites.size() > 1 && enableRoundRobin && "random".equals(strategy)) {
// 闅忔満鍒嗛厤锛氬厛闅忔満鎺掑簭鏈垎閰嶇珯鐐�
List<BasDevp> shuffledSites = new ArrayList<>(unallocatedSites);
Collections.shuffle(shuffledSites);
orderedSites.addAll(shuffledSites);
- log.info("浠诲姟ID锛歿}锛屼娇鐢ㄩ殢鏈哄垎閰嶇瓥鐣ワ紝鍊欓�夌珯鐐癸細{}",
+ log.info("浠诲姟ID锛歿}锛屼娇鐢ㄩ殢鏈哄垎閰嶇瓥鐣ワ紝鍊欓�夌珯鐐癸細{}",
displayTaskId, unallocatedSites.stream().map(d -> String.valueOf(d.getDevNo())).collect(Collectors.joining(",")));
} else {
// 榛樿锛氭寜鍏ュ簱浠诲姟鏁版帓搴忥紙宸茬粡鎺掑簭濂戒簡锛�
orderedSites = unallocatedSites;
}
-
+
// 鏃㈢劧宸茬粡绛涢�夊嚭浜嗘湭鍒嗛厤绔欑偣锛岀洿鎺ユ牴鎹垎閰嶇瓥鐣ラ�夋嫨绗竴涓珯鐐瑰嵆鍙�
// 鏈垎閰嶇珯鐐瑰湪AGV宸ヤ綔妗d腑閮芥病鏈夊凡鍒嗛厤鐨勪换鍔★紝鍙互鐩存帴鍒嗛厤
BasDevp selectedSite = orderedSites.get(0);
Integer endSite = selectedSite.getDevNo();
String staNo = String.valueOf(endSite);
-
- log.info("浠诲姟ID锛歿}锛屼粠{}涓湭鍒嗛厤绔欑偣涓�夋嫨绔欑偣{}锛堝叆搴撲换鍔℃暟锛歿}锛夛紝鍊欓�夌珯鐐癸細{}",
+
+ log.info("浠诲姟ID锛歿}锛屼粠{}涓湭鍒嗛厤绔欑偣涓�夋嫨绔欑偣{}锛堝叆搴撲换鍔℃暟锛歿}锛夛紝鍊欓�夌珯鐐癸細{}",
displayTaskId, orderedSites.size(), staNo, selectedSite.getInQty(),
orderedSites.stream().map(d -> String.valueOf(d.getDevNo())).collect(Collectors.joining(",")));
-
+
// 濡傛灉浣跨敤杞绛栫暐涓旀垚鍔熷垎閰嶇珯鐐癸紝閫掑杞璁℃暟鍣紙纭繚涓嬫浠庝笅涓�涓珯鐐瑰紑濮嬶級
if (roundRobinCounter != null && unallocatedSites.size() > 1) {
roundRobinCounter.getAndIncrement();
log.debug("浠诲姟ID锛歿}鎴愬姛鍒嗛厤鍒扮珯鐐箋}锛岃疆璇㈣鏁板櫒宸查�掑锛屼笅娆″皢浠庝笅涓�涓珯鐐瑰紑濮嬭疆璇�", displayTaskId, staNo);
}
-
+
// 妫�鏌ョ珯鐐规槸鍚︽湁鏁堬紙涓嶈兘涓�0鎴杗ull锛�
if (endSite == null || endSite == 0) {
String errorMsg = String.format("鍒嗛厤鐨勭珯鐐规棤鏁堬紙dev_no=%s锛�", endSite);
log.error("浠诲姟ID锛歿}锛寋}", displayTaskId, errorMsg);
return errorMsg;
}
-
+
// 鍏ュ簱鏆傚瓨+1
basDevpMapper.incrementInQty(endSite);
-
+
// 鏇存柊浠诲姟鐨勭珯鐐圭紪鍙凤紝骞剁‘淇濈姸鎬佷负7锛堝緟鍛煎彨AGV锛�
task.setStaNo(String.valueOf(endSite));
if (task.getWrkSts() == null || task.getWrkSts() != 7L) {
@@ -1084,11 +1038,10 @@
log.debug("浠诲姟ID锛歿}鍒嗛厤绔欑偣鏃讹紝鐘舵�佷笉鏄�7锛屽凡鏇存柊涓�7锛堝緟鍛煎彨AGV锛�", displayTaskId);
}
taskService.updateById(task);
-
+
log.info("浠诲姟ID锛歿}宸插垎閰嶇珯鐐癸細{}锛屾満鍣ㄤ汉缁勶細{}锛屼换鍔$被鍨嬶細{}", displayTaskId, endSite, robotGroup, taskTypeName);
return null; // 鍒嗛厤鎴愬姛锛岃繑鍥瀗ull
}
-
/**
* 鏍规嵁绔欑偣缂栧彿鍒ゆ柇鏈哄櫒浜虹粍
* @param staNo 绔欑偣缂栧彿
@@ -1113,6 +1066,7 @@
return agvProperties.getRobotGroupEast(); // 榛樿浣跨敤涓滀晶鏈哄櫒浜虹粍
}
}
+
/**
* 浠诲姟瀹屾垚杞巻鍙� 閲婃斁鏆傚瓨鐐�
@@ -1180,7 +1134,11 @@
log.info("agv浠诲姟妗h浆鍘嗗彶鎴愬姛锛歿}", taskIds);
}
+ @Transactional(rollbackFor = Exception.class)
+ public void moveTaskToHistory(Task agvTask) {
+ moveTaskToHistory(Collections.singletonList(agvTask));
+ }
/**
* 璐х墿鍒拌揪鍑哄簱鍙o紝鐢熸垚agv浠诲姟
*/
--
Gitblit v1.9.1