From d1480e6c40cbcaf7e0dd6349153a461a3635bee3 Mon Sep 17 00:00:00 2001
From: lsh <lsh@163.com>
Date: 星期一, 19 八月 2024 09:04:39 +0800
Subject: [PATCH] #优化
---
src/main/java/com/zy/asrs/utils/Utils.java | 494 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 489 insertions(+), 5 deletions(-)
diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java
index 1921ffb..1705301 100644
--- a/src/main/java/com/zy/asrs/utils/Utils.java
+++ b/src/main/java/com/zy/asrs/utils/Utils.java
@@ -5,7 +5,10 @@
import com.core.common.Cools;
import com.core.common.SpringUtils;
import com.core.exception.CoolException;
+import com.zy.asrs.entity.LocDetl;
import com.zy.asrs.entity.LocMast;
+import com.zy.asrs.entity.param.StockOutParam;
+import com.zy.asrs.service.BasCrnpService;
import com.zy.asrs.service.LocMastService;
import com.zy.common.properties.SlaveProperties;
@@ -348,6 +351,219 @@
}
}
+ /**
+ * 鑾峰彇鍐呬晶宸烽亾搴撲綅缁�
+ */
+ public static List<String> getGroupInsideRoadwayLoc(String locNo){
+ int row = getRow(locNo);
+ ArrayList<String> list = new ArrayList<>();
+ switch (row) {
+ case 1:
+ case 2:
+ case 3:
+ list.add(zerofill(String.valueOf(1), 2) + locNo.substring(2));
+ list.add(zerofill(String.valueOf(2), 2) + locNo.substring(2));
+ Collections.reverse(list);
+ return list;
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ list.add(zerofill(String.valueOf(5), 2) + locNo.substring(2));
+ list.add(zerofill(String.valueOf(6), 2) + locNo.substring(2));
+ list.add(zerofill(String.valueOf(7), 2) + locNo.substring(2));
+ return list;
+ case 8:
+ case 9:
+ case 10:
+ case 11:
+ list.add(zerofill(String.valueOf(8), 2) + locNo.substring(2));
+ list.add(zerofill(String.valueOf(9), 2) + locNo.substring(2));
+ list.add(zerofill(String.valueOf(10), 2) + locNo.substring(2));
+ Collections.reverse(list);
+ return list;
+ case 12:
+ case 13:
+ case 14:
+ list.add(zerofill(String.valueOf(13), 2) + locNo.substring(2));
+ list.add(zerofill(String.valueOf(14), 2) + locNo.substring(2));
+ return list;
+ case 15:
+ case 16:
+ case 17:
+ case 18:
+ list.add(zerofill(String.valueOf(15), 2) + locNo.substring(2));
+ list.add(zerofill(String.valueOf(16), 2) + locNo.substring(2));
+ list.add(zerofill(String.valueOf(17), 2) + locNo.substring(2));
+ Collections.reverse(list);
+ return list;
+ case 19:
+ case 20:
+ case 21:
+ list.add(zerofill(String.valueOf(20), 2) + locNo.substring(2));
+ list.add(zerofill(String.valueOf(21), 2) + locNo.substring(2));
+ return list;
+ default:
+ throw new RuntimeException("搴撲綅瑙f瀽寮傚父");
+ }
+ }
+
+ // 鑾峰彇搴撲綅鍓嶄晶鍏ㄩ儴鍗曞搧鍖哄煙搴撲綅缁�(涓嶅寘鍚渶澶栦晶搴撲綅楂橀鍖哄煙)
+ public static List<String> getGroupOuterSingleLoc(String locNo){
+ int row = getRow(locNo);
+ switch (row) {
+ case 1:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(2), 2) + locNo.substring(2));
+ }};
+ case 2:
+ case 3:
+ return new ArrayList<>();
+ case 4:
+ case 5:
+ return new ArrayList<>();
+ case 6:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(5), 2) + locNo.substring(2));
+ }};
+ case 7:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(5), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(6), 2) + locNo.substring(2));
+ }};
+ case 8:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(10), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(9), 2) + locNo.substring(2));
+ }};
+ case 9:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(10), 2) + locNo.substring(2));
+ }};
+ case 10:
+ case 11:
+ return new ArrayList<>();
+ case 12:
+ case 13:
+ return new ArrayList<>();
+ case 14:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(13), 2) + locNo.substring(2));
+ }};
+ case 15:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(17), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(16), 2) + locNo.substring(2));
+ }};
+ case 16:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(17), 2) + locNo.substring(2));
+ }};
+ case 17:
+ case 18:
+ return new ArrayList<>();
+ case 19:
+ case 20:
+ return new ArrayList<>();
+ case 21:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(20), 2) + locNo.substring(2));
+ }};
+ default:
+ throw new RuntimeException("搴撲綅瑙f瀽寮傚父");
+ }
+ }
+
+ // 鑾峰彇搴撲綅鍓嶄晶鍏ㄩ儴浣庨鍖哄煙搴撲綅缁�
+ public static List<String> getGroupOuterSingleLocLowFrequency(String locNo){
+ int row = getRow(locNo);
+ switch (row) {
+ case 1:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(3), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(2), 2) + locNo.substring(2));
+ }};
+ case 2:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(3), 2) + locNo.substring(2));
+ }};
+ case 3:
+ case 4:
+ return new ArrayList<>();
+ case 5:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(4), 2) + locNo.substring(2));
+ }};
+ case 6:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(4), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(5), 2) + locNo.substring(2));
+ }};
+ case 7:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(4), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(5), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(6), 2) + locNo.substring(2));
+ }};
+ case 8:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(11), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(10), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(9), 2) + locNo.substring(2));
+ }};
+ case 9:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(11), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(10), 2) + locNo.substring(2));
+ }};
+ case 10:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(11), 2) + locNo.substring(2));
+ }};
+ case 11:
+ case 12:
+ return new ArrayList<>();
+ case 13:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(12), 2) + locNo.substring(2));
+ }};
+ case 14:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(12), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(13), 2) + locNo.substring(2));
+ }};
+ case 15:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(18), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(17), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(16), 2) + locNo.substring(2));
+ }};
+ case 16:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(18), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(17), 2) + locNo.substring(2));
+ }};
+ case 17:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(18), 2) + locNo.substring(2));
+ }};
+ case 18:
+ case 19:
+ return new ArrayList<>();
+ case 20:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(19), 2) + locNo.substring(2));
+ }};
+ case 21:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(19), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(20), 2) + locNo.substring(2));
+ }};
+ default:
+ throw new RuntimeException("搴撲綅瑙f瀽寮傚父");
+ }
+ }
+
// 娉ㄦ剰椤哄簭
public static List<String> getGroupOuterLoc(String locNo){
int row = getRow(locNo);
@@ -542,7 +758,7 @@
if (sign) {
break;
}
- List<String> groupInsideLoc = Utils.getGroupLoc(locNo);
+ List<String> groupInsideLoc = Utils.getGroupOuterSingleLoc(locNo);
if (!Cools.isEmpty(groupInsideLoc)) {
for (String insideLoc : groupInsideLoc) {
if (locNos.contains(insideLoc)) {
@@ -552,7 +768,7 @@
if (locMast != null) {
if (!locMast.getLocSts().equals("O") && !locMast.getLocSts().equals("R")) {
sign = true;
- th = "搴撲綅鍙凤細" + locNo + " 娴呭簱浣嶆湁闈炵┖搴撲綅锛�";
+ th = "搴撲綅鍙凤細" + locNo + " 娴呭簱浣嶆湁闈炵┖搴撲綅" + locMast.getLocNo() + "锛�";
break;
}
}
@@ -586,6 +802,28 @@
}
/**
+ * 妫�娴嬪綋鍓嶅簱浣嶅唴渚у叾浠栧簱浣嶆槸鍚︿负D銆丗銆乆銆丱
+ * 杩斿洖true琛ㄧず鍐呬晶搴撲綅涓嶆槸DFX锛岃繑鍥瀎alse琛ㄧず鍐呬晶搴撲綅鏄疍FX
+ */
+ public static boolean checkInsideLocIsDFXO(String locNo) {
+ LocMastService locMastService = SpringUtils.getBean(LocMastService.class);
+ List<String> insideLoc = Utils.getGroupInsideLoc(locNo);
+ if (insideLoc.size() > 0) {
+ List<LocMast> insideLocMast = locMastService.selectByLocNos(insideLoc);
+ for (LocMast mast : insideLocMast) {
+ if (!mast.getLocSts().equals("D")
+ && !mast.getLocSts().equals("F")
+ && !mast.getLocSts().equals("O")
+ && !mast.getLocSts().equals("X")) {
+ //D銆丗銆乆銆丱(涓嶈兘閫夊畾杩欎釜澶栦晶搴撲綅)
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ /**
* 妫�娴嬪綋鍓嶅簱浣嶅唴渚у叾浠栧簱浣嶆槸鍚︿负D銆丗銆乆銆丼
* 杩斿洖true琛ㄧず鍐呬晶搴撲綅涓嶆槸DFX锛岃繑鍥瀎alse琛ㄧず鍐呬晶搴撲綅鏄疍FX
*/
@@ -607,9 +845,255 @@
return false;
}
- public static void main(String[] args) {
- List<String> groupLoc = Utils.getGroupLoc("1300801");
- System.out.println(groupLoc);
+ /**
+ * 闅忔満鑾峰彇鍙敤涓旀湁绌哄簱浣嶇殑鍫嗗灈鏈哄彿
+ */
+ public static Integer getRandomCrnNo(List<Integer> crnNos, Short locType1) {
+ BasCrnpService basCrnpService = SpringUtils.getBean(BasCrnpService.class);
+ LocMastService locMastService = SpringUtils.getBean(LocMastService.class);
+ Random random = new Random();
+ //鍙敤鍫嗗灈鏈簂ist
+ ArrayList<Integer> normalCrnNos = new ArrayList<>();
+ for (Integer crnNo : crnNos) {
+ List<LocMast> emptyLocMast = locMastService.findEmptyLocMast(locType1, crnNo);
+ if (basCrnpService.checkSiteError(crnNo, true) && emptyLocMast.size() > 0) {
+ normalCrnNos.add(crnNo);
+ }
+ }
+ if (normalCrnNos.size() == 0) {
+ throw new CoolException("娌℃湁鍙敤鍫嗗灈鏈�");
+ }
+ //闅忔満鍙敤鍫嗗灈鏈哄彿
+ Integer randomCrnNo = normalCrnNos.get(random.nextInt(normalCrnNos.size()));
+ return randomCrnNo;
}
+ //public static void main(String[] args) {
+ // List<String> groupLoc = Utils.getGroupLoc("1300801");
+ // System.out.println(groupLoc);
+ //}
+
+ public static Double getIoPri(String locNo){
+ switch (Utils.getRow(locNo)){
+ case 3:
+ case 4:
+ case 11:
+ case 12:
+ case 18:
+ case 19:
+ return 21.0;
+ case 2:
+ case 5:
+ case 10:
+ case 13:
+ case 17:
+ case 20:
+ return 19.0;
+ case 1:
+ case 6:
+ case 9:
+ case 14:
+ case 16:
+ case 21:
+ return 17.0;
+ default:
+ return 15.0;
+ }
+ }
+
+ public static List<String> getLocNosSort(List<String> locNos){
+ List<String> locSort = new ArrayList<>();
+ for (String loc : locNos){
+ if (getIoPri(loc).equals(15.0)){
+ locSort.add(loc);
+ }
+ }
+ for (String loc : locNos){
+ if (getIoPri(loc).equals(17.0)){
+ locSort.add(loc);
+ }
+ }
+ for (String loc : locNos){
+ if (getIoPri(loc).equals(19.0)){
+ locSort.add(loc);
+ }
+ }
+ for (String loc : locNos){
+ if (getIoPri(loc).equals(21.0)){
+ locSort.add(loc);
+ }
+ }
+ return locSort;
+ }
+
+ public static List<StockOutParam.LocDetl> getStockOutParamLocDetlSort(List<StockOutParam.LocDetl> locNos){
+ List<StockOutParam.LocDetl> locSort = new ArrayList<>();
+ for (StockOutParam.LocDetl loc : locNos){
+ if (getIoPri(loc.getLocNo()).equals(15.0)){
+ locSort.add(loc);
+ }
+ }
+ for (StockOutParam.LocDetl loc : locNos){
+ if (getIoPri(loc.getLocNo()).equals(17.0)){
+ locSort.add(loc);
+ }
+ }
+ for (StockOutParam.LocDetl loc : locNos){
+ if (getIoPri(loc.getLocNo()).equals(19.0)){
+ locSort.add(loc);
+ }
+ }
+ for (StockOutParam.LocDetl loc : locNos){
+ if (getIoPri(loc.getLocNo()).equals(21.0)){
+ locSort.add(loc);
+ }
+ }
+ return locSort;
+ }
+
+ public static boolean getLocNoWeighting(List<String> locNos,String locNo){
+ boolean sign=false;
+ for (String loc : locNos){
+ if (getBay(loc)==getBay(locNo) && getLev(loc)==getLev(locNo) && getRowWeighting(loc)==getRowWeighting(locNo)){
+ sign = true;
+ break;
+ }
+ }
+ return sign;
+ }
+
+
+ public static int getRowWeighting(String locNo){
+ switch (Utils.getRow(locNo)){
+ case 1:
+ case 2:
+ case 3:
+ return 123;
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ return 456;
+ case 8:
+ case 9:
+ case 10:
+ case 11:
+ return 891011;
+ case 12:
+ case 13:
+ case 14:
+ return 121314;
+ case 15:
+ case 16:
+ case 17:
+ case 18:
+ return 15161718;
+ case 19:
+ case 20:
+ case 21:
+ case 22:
+ default:
+ return 19202122;
+ }
+ }
+
+ public static void main(String[] args) {
+ ArrayList<String> locS = new ArrayList<String>();
+ locS.add("1902501");
+ locS.add("2102501");
+ locS.add("1802301");
+ locS.add("1800101");
+ locS.add("0300102");
+ locS.add("0100102");
+ List<String> innermostSideLoc = getInnermostSideLoc(locS, true);
+ System.out.println(innermostSideLoc);
+ }
+
+ public static List<String> getInnermostSideLoc(List<String> locS, boolean pakin){
+ ArrayList<String> listLoc = new ArrayList<>();
+ ArrayList<String> listLocRBL = new ArrayList<>();
+ for (String locNo : locS){
+ if (!listLocRBL.contains(Utils.getInnermostSideLocRBL(locNo, pakin))){
+ listLocRBL.add(Utils.getInnermostSideLocRBL(locNo, pakin));
+ listLoc.add(locNo);
+ }else {
+ for (String loc1 : listLoc){
+ if (Utils.getInnermostSideLocRBL(locNo, pakin).equals(Utils.getInnermostSideLocRBL(loc1, pakin))){
+ if (!pakin){
+ if (Utils.getRow(loc1)>17 && Utils.getRow(locNo)>Utils.getRow(loc1) ){
+ listLoc.remove(loc1);
+ listLoc.add(locNo);
+ break;
+ }else if ( Utils.getRow(loc1)<18 && Utils.getRow(locNo)<Utils.getRow(loc1)){
+ listLoc.remove(loc1);
+ listLoc.add(locNo);
+ break;
+ }
+ }else {
+ if ( Utils.getRow(loc1)<4 && Utils.getRow(locNo)>Utils.getRow(loc1)){
+ listLoc.remove(loc1);
+ listLoc.add(locNo);
+ break;
+ } else if (Utils.getRow(loc1)>3 && Utils.getRow(loc1)<8 && Utils.getRow(locNo)<Utils.getRow(loc1) ){
+ listLoc.remove(loc1);
+ listLoc.add(locNo);
+ break;
+ } else if (Utils.getRow(loc1)>7 && Utils.getRow(loc1)<12 && Utils.getRow(locNo)>Utils.getRow(loc1) ){
+ listLoc.remove(loc1);
+ listLoc.add(locNo);
+ break;
+ } else if (Utils.getRow(loc1)>11 && Utils.getRow(loc1)<15 && Utils.getRow(locNo)<Utils.getRow(loc1) ){
+ listLoc.remove(loc1);
+ listLoc.add(locNo);
+ break;
+ } else if (Utils.getRow(loc1)>14 && Utils.getRow(loc1)<19 && Utils.getRow(locNo)>Utils.getRow(loc1) ){
+ listLoc.remove(loc1);
+ listLoc.add(locNo);
+ break;
+ } else if ( Utils.getRow(loc1)>18 && Utils.getRow(locNo)<Utils.getRow(loc1)){
+ listLoc.remove(loc1);
+ listLoc.add(locNo);
+ break;
+ }
+ }
+ }
+ }
+ }
+ }
+ return listLoc;
+ }
+
+ public static String getInnermostSideLocRBL(String locNo, boolean pakin){
+ int row = Utils.getRow(locNo);
+ if (row <= 3) {
+ row = 3;
+ } else if (row <= 7) {
+ row = 4;
+ } else if (row <= 11) {
+ row = 11;
+ } else if (row <= 14) {
+ row = 12;
+ } else if (row <= 18) {
+ row = 18;
+ } else {
+ row = 19;
+ }
+ return ""+row+Utils.getBay(locNo)+Utils.getLev(locNo);
+
+ //if (row <3){
+ // return ""+33+Utils.getBay(locNo)+Utils.getLev(locNo);
+ //}else if (row>30){
+ // return ""+31+Utils.getBay(locNo)+Utils.getLev(locNo);
+ //}
+ //if (row<18 && row>1){
+ // row=1;
+ //}else if (row < 31 && row>17){
+ // row=2;
+ //}
+ //if (pakin){
+ // row=3-row;
+ //}
+ //return ""+row+Utils.getBay(locNo)+Utils.getLev(locNo);
+
+ }
}
--
Gitblit v1.9.1