From 5e38c75bc9c609d5e41bf817756ef8ed7a0f4851 Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期四, 21 八月 2025 15:28:27 +0800
Subject: [PATCH] *
---
src/main/java/com/zy/asrs/task/handler/BareBoardHandler.java | 101 ++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 89 insertions(+), 12 deletions(-)
diff --git a/src/main/java/com/zy/asrs/task/handler/BareBoardHandler.java b/src/main/java/com/zy/asrs/task/handler/BareBoardHandler.java
index 4b9c022..af19382 100644
--- a/src/main/java/com/zy/asrs/task/handler/BareBoardHandler.java
+++ b/src/main/java/com/zy/asrs/task/handler/BareBoardHandler.java
@@ -21,9 +21,7 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
+import java.util.*;
/**
* Created by Monkey D. Luffy on 2023.07.24
@@ -45,6 +43,14 @@
@Autowired
private BasCrnpService basCrnpService;
+ public static final List<Integer> rows1 = new ArrayList<Integer>() {{
+ add(1);add(5);add(9);add(13);add(17);add(21);
+ }};
+
+ public static final List<Integer> rows2 = new ArrayList<Integer>() {{
+ add(4);add(8);add(12);add(16);add(20);add(24);
+ }};
+
public ReturnT<String> start(Integer staNo) {
try {
if (!Cools.isEmpty(wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("io_type", 110).eq("sta_no", staNo)))){
@@ -53,18 +59,38 @@
// 鑾峰彇宸ヤ綔鍙�
int workNo = commonService.getWorkNo(WorkNoType.PAKOUT.type);
ArrayList<Integer> crns =new ArrayList<>();
- List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>().eq("crn_sts", 3).eq("out_enable", "Y").eq("wrk_no", 0));
- for (BasCrnp basCrnp : basCrnps){
- crns.add(basCrnp.getCrnNo());
- }
+
crns.add(1);
crns.add(2);
crns.add(3);
crns.add(4);
crns.add(5);
crns.add(6);
- boolean sign = true;
+
+ ArrayList<Integer> crnList =new ArrayList<>();
+ int[] crnCount = new int[6];
for (Integer crnNo : crns){
+ int crnCountD = locMastService.selectCount(new EntityWrapper<LocMast>().eq("loc_sts", "D").eq("crn_no", crnNo));
+ crnCount[crnNo-1] = crnCountD;
+ }
+ int[] sortedCrnNos = getSortedCrnNos(crnCount);
+ for (int crnNo : sortedCrnNos){
+ crnList.add(crnNo);
+ }
+ crnList.add(6);
+ crnList.add(1);
+ crnList.add(4);
+ crnList.add(3);
+ crnList.add(5);
+ crnList.add(2);
+
+// List<BasCrnp> basCrnps = basCrnpService.selectList(new EntityWrapper<BasCrnp>().eq("crn_sts", 3).eq("out_enable", "Y").eq("wrk_no", 0));
+// for (BasCrnp basCrnp : basCrnps){
+// crns.add(basCrnp.getCrnNo());
+// }
+
+ boolean sign = true;
+ for (Integer crnNo : crnList){
BasCrnp basCrnp = basCrnpService.selectById(crnNo);
if (basCrnp.getCrnSts()!=3 || !basCrnp.getOutEnable().equals("Y")){
continue;
@@ -72,11 +98,30 @@
sign = true;
// 鑾峰彇搴撲綅
LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts","D").eq("crn_no",crnNo));
-
if (Cools.isEmpty(locMast)) {
// throw new CoolException("搴撲腑鏃犵┖鏉匡紒锛侊紒");
sign=false;
}
+ if (sign){
+ if (rows1.contains(locMast.getRow1())){
+ LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", "D").eq("row1", locMast.getRow1() + 1)
+ .eq("bay1", locMast.getBay1()).eq("lev1", locMast.getLev1()));
+ if (!Cools.isEmpty(locMast1)) {
+ locMast = locMast1;
+ }
+ }else if (rows2.contains(locMast.getRow1())){
+ LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("loc_sts", "D").eq("row1", locMast.getRow1() - 1)
+ .eq("bay1", locMast.getBay1()).eq("lev1", locMast.getLev1()));
+ if (!Cools.isEmpty(locMast1)) {
+ locMast = locMast1;
+ }
+ }
+ }
+ if (sign && Cools.isEmpty(locMast)) {
+// throw new CoolException("搴撲腑鏃犵┖鏉匡紒锛侊紒");
+ sign=false;
+ }
+
if (sign && !locMast.getLocSts().equals("D")){
// throw new CoolException("鎵�閫夊簱浣嶅瓨鍦ㄧ姸鎬佷笉涓篋鐨勫簱浣嶏紝搴撲綅鍙凤細"+locMast.getLocNo()+" 銆佸綋鍓嶇姸鎬侊細"+locMast.getLocSts()+"-"+locMast.getLocSts$());
sign=false;
@@ -88,10 +133,17 @@
.eq("stn_no", staNo)
.eq("crn_no", locMast.getCrnNo());
StaDesc staDesc = staDescService.selectOne(wrapper);
- Integer sourceStaNo = staDesc.getCrnStn();
- if (Cools.isEmpty(sourceStaNo)) {
+ if (Cools.isEmpty(staDesc)) {
// throw new CoolException("妫�绱㈡簮绔欏け璐�");
sign = false;
+ }
+ Integer sourceStaNo = null;
+ if (sign){
+ sourceStaNo = staDesc.getCrnStn();
+ if (Cools.isEmpty(sourceStaNo)) {
+// throw new CoolException("妫�绱㈡簮绔欏け璐�");
+ sign = false;
+ }
}
if (sign){
Date now = new Date();
@@ -101,7 +153,7 @@
wrkMast.setIoTime(now);
wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID
wrkMast.setIoType(110); // 鍏ュ嚭搴撶姸鎬侊細 110.绌烘澘鍑哄簱
- wrkMast.setIoPri(10D);
+ wrkMast.setIoPri(99999999D);
wrkMast.setSourceStaNo(sourceStaNo); // 婧愮珯
wrkMast.setStaNo(staNo); // 鐩爣绔�
wrkMast.setCrnNo(locMast.getCrnNo());
@@ -143,4 +195,29 @@
}
return SUCCESS;
}
+
+ /**
+ * 鏍规嵁鍫嗗灈鏈烘暟閲忎粠澶у埌灏忔帓搴忥紝杩斿洖鎺掑簭鍚庣殑鍫嗗灈鏈哄彿
+ *
+ * @param crnCount 鍫嗗灈鏈烘暟閲忔暟缁勶紝绱㈠紩琛ㄧず鍫嗗灈鏈哄彿鍑� 1
+ * @return 鎺掑簭鍚庣殑鍫嗗灈鏈哄彿鏁扮粍
+ */
+ public static int[] getSortedCrnNos(int[] crnCount) {
+ // 鍒涘缓涓�涓垪琛紝瀛樺偍鍫嗗灈鏈哄彿鍜屽搴旂殑鍊�
+ List<Map.Entry<Integer, Integer>> list = new ArrayList<>();
+ for (int i = 0; i < crnCount.length; i++) {
+ list.add(new AbstractMap.SimpleEntry<>(i + 1, crnCount[i])); // 鍫嗗灈鏈哄彿浠� 1 寮�濮�
+ }
+
+ // 鏍规嵁鍊间粠澶у埌灏忔帓搴�
+ list.sort((entry1, entry2) -> entry2.getValue().compareTo(entry1.getValue()));
+
+ // 鎻愬彇鎺掑簭鍚庣殑鍫嗗灈鏈哄彿
+ int[] sortedCrnNos = new int[list.size()];
+ for (int i = 0; i < list.size(); i++) {
+ sortedCrnNos[i] = list.get(i).getKey();
+ }
+
+ return sortedCrnNos;
+ }
}
--
Gitblit v1.9.1