From 4ad1f324ab1fd2b51504afc00b43b4ee40f029c2 Mon Sep 17 00:00:00 2001 From: lsh <lsh@163.com> Date: 星期四, 20 二月 2025 09:40:03 +0800 Subject: [PATCH] # --- src/main/java/com/zy/asrs/task/handler/BareBoardHandler.java | 113 ++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 97 insertions(+), 16 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 f7ed8a3..feeeda6 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,34 +43,85 @@ @Autowired private BasCrnpService basCrnpService; - public ReturnT<String> start() { + 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", 213)))){ + if (!Cools.isEmpty(wrkMastService.selectOne(new EntityWrapper<WrkMast>().eq("io_type", 110).eq("sta_no", staNo)))){ return null; } // 鑾峰彇宸ヤ綔鍙� 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; + } 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; @@ -81,13 +130,20 @@ // 鑾峰彇婧愮珯 Wrapper<StaDesc> wrapper = new EntityWrapper<StaDesc>() .eq("type_no", 110) - .eq("stn_no", 213) + .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(); @@ -97,9 +153,9 @@ wrkMast.setIoTime(now); wrkMast.setWrkSts(11L); // 宸ヤ綔鐘舵�侊細11.鐢熸垚鍑哄簱ID wrkMast.setIoType(110); // 鍏ュ嚭搴撶姸鎬侊細 110.绌烘澘鍑哄簱 - wrkMast.setIoPri(10D); + wrkMast.setIoPri(99D); wrkMast.setSourceStaNo(sourceStaNo); // 婧愮珯 - wrkMast.setStaNo(213); // 鐩爣绔� + wrkMast.setStaNo(staNo); // 鐩爣绔� wrkMast.setCrnNo(locMast.getCrnNo()); wrkMast.setSourceLocNo(locMast.getLocNo()); // 婧愬簱浣� wrkMast.setFullPlt("N"); // 婊℃澘锛歒 @@ -139,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