From 5b5bf0d3fb08926b700b9d9ef127eb86d3241725 Mon Sep 17 00:00:00 2001
From: TQS <56479841@qq.com>
Date: 星期三, 16 四月 2025 15:09:12 +0800
Subject: [PATCH] 添加小车定位失败日志打印
---
src/main/java/com/zy/asrs/utils/Utils.java | 546 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 545 insertions(+), 1 deletions(-)
diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java
index f463cff..dfb0cab 100644
--- a/src/main/java/com/zy/asrs/utils/Utils.java
+++ b/src/main/java/com/zy/asrs/utils/Utils.java
@@ -1,12 +1,16 @@
package com.zy.asrs.utils;
+import com.baomidou.mybatisplus.mapper.EntityWrapper;
import com.core.common.Arith;
import com.core.common.Cools;
-import com.zy.core.enums.SteABType;
+import com.core.common.SpringUtils;
+import com.zy.asrs.entity.LocMast;
+import com.zy.asrs.service.LocMastService;
import com.zy.core.properties.SlaveProperties;
import java.text.DecimalFormat;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
/**
@@ -216,12 +220,304 @@
}
/**
+ * 閫氳繃搴撲綅鍙疯幏鍙� 鎺�
+ */
+ public static short getRow(Integer staNo) {
+ switch (staNo){
+ case 107:
+ return 3;
+ case 207:
+ return 19;
+ case 112:
+ return 4;
+ case 212:
+ return 18;
+ }
+ throw new RuntimeException("绔欑偣瑙f瀽寮傚父");
+ }
+
+ /**
+ * 閫氳繃搴撲綅鍙疯幏鍙� 鍒�
+ */
+ public static short getBay(Integer staNo) {
+ switch (staNo){
+ case 107:
+ return 2;
+ case 207:
+ return 6;
+ case 112:
+ return 5;
+ case 212:
+ return 5;
+ }
+ throw new RuntimeException("绔欑偣瑙f瀽寮傚父");
+ }
+
+ /**
+ * 閫氳繃搴撲綅鍙疯幏鍙� 灞�
+ */
+ public static short getLev(Integer staNo) {
+ return 1;
+ }
+ public static Integer getStaNoConvertCentreOther2(Integer staNo){//鏀捐揣涓鸿幏鍙栬璧扮洰鏍囦綅
+ switch (staNo){
+ case 108:
+ return 111;
+ case 208:
+ return 211;
+ case 112:
+ return 114;
+ case 212:
+ return 214;
+ default:
+ return staNo;
+ }
+ }
+
+ public static Integer getStaNoConvertCentreOther3(Integer staNo,Integer staNoS){//鏀捐揣涓鸿幏鍙栬璧扮洰鏍囦綅
+ switch (staNoS){
+ case 113:
+ return 112;
+ case 213:
+ return 212;
+ default:
+ return staNo;
+ }
+ }
+
+ /**
* 閫氳繃鎺掑垪灞傛嫾鎺ュ嚭搴撲綅鍙�
*/
public static String append(int row, int bay, int lev) {
return zerofill(String.valueOf(row), 2) + zerofill(String.valueOf(bay), 3) + zerofill(String.valueOf(lev), 2);
}
+ /**
+ * 鑾峰彇 娣卞簱浣嶅搴旂殑娴呭簱浣嶇粍
+ */
+ public static List<String> getShallowLocs(String locNo){
+ int row = getRow(locNo);
+ switch (row){
+ case 1:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(2), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(3), 2) + locNo.substring(2));
+ }};
+ case 2:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(3), 2) + locNo.substring(2));
+ }};
+ case 3:
+ case 4:
+ return null;
+ 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(5), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(4), 2) + locNo.substring(2));
+ }};
+ case 7:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(6), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(5), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(4), 2) + locNo.substring(2));
+ }};
+ case 8:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(9), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(10), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(11), 2) + locNo.substring(2));
+ }};
+ case 9:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(10), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(11), 2) + locNo.substring(2));
+ }};
+ case 10:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(11), 2) + locNo.substring(2));
+ }};
+ case 11:
+ case 12:
+ return null;
+ 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(13), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(12), 2) + locNo.substring(2));
+ }};
+ case 15:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(16), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(17), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(18), 2) + locNo.substring(2));
+ }};
+ case 16:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(17), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(18), 2) + locNo.substring(2));
+ }};
+ case 17:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(18), 2) + locNo.substring(2));
+ }};
+ case 18:
+ case 19:
+ return null;
+ 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(20), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(19), 2) + locNo.substring(2));
+ }};
+ default:
+ throw new RuntimeException("搴撲綅瑙f瀽寮傚父");
+ }
+// String[] locsArr = null;
+// String locs="";
+// int row = getRow(deepLoc);
+// switch (row){
+// case 1:
+// locs += zerofill(String.valueOf(row+2),2) + deepLoc.substring(2);
+// locs += "," + zerofill(String.valueOf(row+1),2) + deepLoc.substring(2);
+// break;
+// case 2:
+// locs += zerofill(String.valueOf(row+1),2) + deepLoc.substring(2);
+// break;
+// case 5:
+// case 20:
+// locs += zerofill(String.valueOf(row-1),2) + deepLoc.substring(2);
+// break;
+// case 6:
+// case 14:
+// case 21:
+// locs += zerofill(String.valueOf(row-2),2) + deepLoc.substring(2);
+// locs += "," + zerofill(String.valueOf(row-1),2) + deepLoc.substring(2);
+// break;
+// case 7:
+// locs += zerofill(String.valueOf(row-3),2) + deepLoc.substring(2);
+// locs += "," + zerofill(String.valueOf(row-2),2) + deepLoc.substring(2);
+// locs += "," + zerofill(String.valueOf(row-1),2) + deepLoc.substring(2);
+// break;
+// case 8:
+// case 15:
+// locs += zerofill(String.valueOf(row+3),2) + deepLoc.substring(2);
+// locs += "," + zerofill(String.valueOf(row+2),2) + deepLoc.substring(2);
+// locs += "," + zerofill(String.valueOf(row+1),2) + deepLoc.substring(2);
+// break;
+// case 9:
+// case 16:
+// locs += zerofill(String.valueOf(row+2),2) + deepLoc.substring(2);
+// locs += "," + zerofill(String.valueOf(row+1),2) + deepLoc.substring(2);
+// break;
+// case 10:
+// case 17:
+// locs += zerofill(String.valueOf(row+1),2) + deepLoc.substring(2);
+// break;
+// case 13:
+// locs += zerofill(String.valueOf(row-1),2) + deepLoc.substring(2);
+// break;
+// }
+// if(!Cools.isEmpty(locs)){
+// locsArr = locs.split(",");
+// }
+// return locsArr;
+ }
+
+ /**
+ * 鑾峰彇褰撳墠搴撲綅宸烽亾鏈�澶栦晶搴撲綅鍙�
+ */
+ public static String getGroupOutermostLoc(String locNo) {
+ int row = getRow(locNo);
+ switch (row) {
+ case 1:
+ case 2:
+ case 3:
+ return zerofill(String.valueOf(3), 2) + locNo.substring(2);
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ return zerofill(String.valueOf(4), 2) + locNo.substring(2);
+ case 8:
+ case 9:
+ case 10:
+ case 11:
+ return zerofill(String.valueOf(11), 2) + locNo.substring(2);
+ case 12:
+ case 13:
+ case 14:
+ return zerofill(String.valueOf(12), 2) + locNo.substring(2);
+ case 15:
+ case 16:
+ case 17:
+ case 18:
+ return zerofill(String.valueOf(18), 2) + locNo.substring(2);
+ case 19:
+ case 20:
+ case 21:
+ return zerofill(String.valueOf(19), 2) + locNo.substring(2);
+ default:
+ throw new RuntimeException("搴撲綅瑙f瀽寮傚父");
+ }
+ }
+
+ /**
+ * 鑾峰彇 娴呭簱浣嶅搴旂殑娣卞簱浣嶇粍
+ */
+ public static String[] getDeepLocs(String shallowLoc){
+ String[] locsArr = null;
+ String locs="";
+ int row = getRow(shallowLoc);
+ switch (row){
+ case 2:
+ case 9:
+ case 16:
+ locs += zerofill(String.valueOf(row-1),2) + shallowLoc.substring(2);
+ break;
+ case 3:
+ case 10:
+ case 17:
+ locs += zerofill(String.valueOf(row-2),2) + shallowLoc.substring(2);
+ locs += "," + zerofill(String.valueOf(row-1),2) + shallowLoc.substring(2);
+ break;
+ case 4:
+ locs += zerofill(String.valueOf(row+3),2) + shallowLoc.substring(2);
+ locs += "," + zerofill(String.valueOf(row+2),2) + shallowLoc.substring(2);
+ locs += "," + zerofill(String.valueOf(row+1),2) + shallowLoc.substring(2);
+ break;
+ case 5:
+ case 12:
+ case 19:
+ locs += zerofill(String.valueOf(row+2),2) + shallowLoc.substring(2);
+ locs += "," + zerofill(String.valueOf(row+1),2) + shallowLoc.substring(2);
+ break;
+ case 6:
+ case 13:
+ case 20:
+ locs += zerofill(String.valueOf(row+1),2) + shallowLoc.substring(2);
+ break;
+ case 11:
+ case 18:
+ locs += zerofill(String.valueOf(row-3),2) + shallowLoc.substring(2);
+ locs += "," + zerofill(String.valueOf(row-2),2) + shallowLoc.substring(2);
+ locs += "," + zerofill(String.valueOf(row-1),2) + shallowLoc.substring(2);
+ break;
+ }
+ if(!Cools.isEmpty(locs)){
+ locsArr = locs.split(",");
+ }
+ return locsArr;
+ }
/**
* 褰撴绱㈠埌鍙屾繁搴撲綅鐨勬祬搴撲綅鏃讹紝濡傛灉娣卞簱浣嶆棤璐э紝鍒欐斁鍏ュ搴旂殑娣卞簱浣�
@@ -246,6 +542,25 @@
}
public static void main(String[] args) {
+// String shallowLocs = getShallowLocs("2100203");
+// String deepLocs = getDeepLocs("2100203");
+// System.out.println("shallowLocs ==>> " + shallowLocs);
+// System.out.println("deepLocs ==>> " + deepLocs);
+// String[] shallowArr = getShallowLocs("0300504");
+ List<String> shallowLocs = getShallowLocs("2100404");
+ String[] deepArr = getDeepLocs("1700203");
+ String outermostLoc = getGroupOutermostLoc("0701703");
+// if (shallowLocs.indexOf(',') >= 0) {
+// shallowArr = shallowLocs.split(",");
+// }
+// if (deepLocs.indexOf(',') >= 0) {
+// deepArr = deepLocs.split(",");
+// }
+
+ for(String str : deepArr){
+ System.out.println(str);
+ }
+
SlaveProperties slaveProperties = new SlaveProperties();
slaveProperties.setDoubleDeep(true);
List<Integer> list = new ArrayList<>();
@@ -256,4 +571,233 @@
System.out.println(deepRow);
}
+
+ public static List<String> getGroupInsideLoc(String locNo){
+ int row = getRow(locNo);
+ switch (row) {
+ case 1:
+ case 21:
+ case 14:
+ case 15:
+ case 7:
+ case 8:
+ return new ArrayList<>();
+ case 2:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(1), 2) + locNo.substring(2));
+ }};
+ case 3:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(1), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(2), 2) + locNo.substring(2));
+ }};
+ case 4:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(7), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(6), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(5), 2) + locNo.substring(2));
+ }};
+ case 5:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(7), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(6), 2) + locNo.substring(2));
+ }};
+ case 6:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(7), 2) + locNo.substring(2));
+ }};
+ case 9:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(8), 2) + locNo.substring(2));
+ }};
+ case 10:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(8), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(9), 2) + locNo.substring(2));
+ }};
+ case 11:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(8), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(9), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(10), 2) + locNo.substring(2));
+ }};
+ case 12:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(14), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(13), 2) + locNo.substring(2));
+ }};
+ case 13:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(14), 2) + locNo.substring(2));
+ }};
+ case 16:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(15), 2) + locNo.substring(2));
+ }};
+ case 17:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(15), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(16), 2) + locNo.substring(2));
+ }};
+ case 18:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(15), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(16), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(17), 2) + locNo.substring(2));
+ }};
+ case 19:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(21), 2) + locNo.substring(2));
+ add(zerofill(String.valueOf(20), 2) + locNo.substring(2));
+ }};
+ case 20:
+ return new ArrayList<String>() {{
+ add(zerofill(String.valueOf(21), 2) + locNo.substring(2));
+ }};
+ default:
+ throw new RuntimeException("搴撲綅瑙f瀽寮傚父");
+ }
+ }
+
+ /**
+ * 妫�娴嬪綋鍓嶅簱浣嶅唴渚у叾浠栧簱浣嶆槸鍚︿负D銆丗銆乆
+ * 杩斿洖true琛ㄧず鍐呬晶搴撲綅涓嶆槸DFX锛岃繑鍥瀎alse琛ㄧず鍐呬晶搴撲綅鏄疍FX
+ */
+ public static boolean checkInsideLocIsDFX(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("X")) {
+ //D銆丗銆乆(涓嶈兘閫夊畾杩欎釜澶栦晶搴撲綅)
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ /**
+ * 妫�娴嬪綋鍓嶅簱浣嶅唴渚у叾浠栧簱浣嶆槸鍚︿负D銆丗銆乆銆丱
+ * 杩斿洖true琛ㄧず鍐呬晶搴撲綅涓嶆槸DFXO锛岃繑鍥瀎alse琛ㄧず鍐呬晶搴撲綅鏄疍FXO
+ */
+ 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("X")
+ && !mast.getLocSts().equals("O")) {
+ //D銆丗銆乆(涓嶈兘閫夊畾杩欎釜澶栦晶搴撲綅)
+ return true;
+ }
+ }
+ }
+ Integer row = selectInSide(Utils.getRow(locNo));
+ if (row==0){
+ return true;
+ }
+ LocMast locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("row1", row).eq("bay1", Utils.getBay(locNo)).eq("lev1", Utils.getLev(locNo)));
+ if (Cools.isEmpty(locMast)) {
+ if (row==7 && Utils.getBay(locNo)<4){
+ locMast = locMastService.selectOne(new EntityWrapper<LocMast>().eq("row1", 6).eq("bay1", Utils.getBay(locNo)).eq("lev1", Utils.getLev(locNo)));
+ if (Cools.isEmpty(locMast)) {
+ return false;
+ }
+ }else {
+ return false;
+ }
+ }
+// if (!locMast.getLocSts().equals("F") && !locMast.getLocSts().equals("D") ){
+// if (locMast.getLocSts().equals("X")){
+// row = selectInSide2(row);
+// if (row==0){
+// return true;
+// }
+// LocMast locMast1 = locMastService.selectOne(new EntityWrapper<LocMast>().eq("row1", row).eq("bay1", Utils.getBay(locNo)).eq("lev1", Utils.getLev(locNo)));
+// if (!locMast1.getLocSts().equals("F") && !locMast1.getLocSts().equals("D") ){
+// return true;
+// }
+// } else {
+// return true;
+// }
+// }
+
+ return false;
+ }
+
+ public static Integer selectInSide(Integer row){
+ switch (row){
+ case 1:
+ case 2:
+ case 3:
+ row = 1;
+ break;
+ case 4:
+ case 5:
+ case 6:
+ case 7:
+ row = 7;
+ break;
+ case 8:
+ case 9:
+ case 10:
+ case 11:
+ row = 8;
+ break;
+ case 12:
+ case 13:
+ case 14:
+ row = 14;
+ break;
+ case 15:
+ case 16:
+ case 17:
+ case 18:
+ row = 15;
+ break;
+ case 19:
+ case 20:
+ case 21:
+ row = 21;
+ break;
+ default:
+ row = 0;
+ break;
+ }
+ return row;
+ }
+ public static Integer selectInSide2(Integer row){
+ switch (row){
+ case 1:
+ row = 2;
+ break;
+ case 7:
+ row = 6;
+ break;
+ case 8:
+ row = 9;
+ break;
+ case 14:
+ row = 13;
+ break;
+ case 15:
+ row = 16;
+ break;
+ case 21:
+ row = 20;
+ break;
+ default:
+ row = 0;
+ break;
+ }
+ return row;
+ }
+
}
--
Gitblit v1.9.1