From 46d68076bfa7b706549e0420dfe09314024e3696 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期五, 22 十一月 2024 21:02:39 +0800
Subject: [PATCH] #读取地图文件优化
---
src/main/java/com/zy/asrs/utils/Utils.java | 108 +++++++++++++++++++++++++++++++++++++++++++++--------
1 files changed, 91 insertions(+), 17 deletions(-)
diff --git a/src/main/java/com/zy/asrs/utils/Utils.java b/src/main/java/com/zy/asrs/utils/Utils.java
index 938b141..da59ddd 100644
--- a/src/main/java/com/zy/asrs/utils/Utils.java
+++ b/src/main/java/com/zy/asrs/utils/Utils.java
@@ -9,38 +9,26 @@
import com.zy.asrs.entity.BasShuttle;
import com.zy.asrs.entity.LocMast;
import com.zy.asrs.entity.WrkMast;
-import com.zy.asrs.mapper.WrkMastMapper;
import com.zy.asrs.service.BasShuttleService;
import com.zy.asrs.service.LocMastService;
import com.zy.asrs.service.WrkMastService;
-import com.zy.asrs.service.impl.MainServiceImpl;
-import com.zy.common.model.NavigateNode;
-import com.zy.common.model.enums.NavigationMapType;
import com.zy.common.service.CommonService;
import com.zy.common.utils.NavigateMapData;
import com.zy.common.utils.NavigatePositionConvert;
-import com.zy.common.utils.NavigateUtils;
import com.zy.common.utils.ShuttleDispatchUtils;
import com.zy.core.DevpThread;
-import com.zy.core.Slave;
-import com.zy.core.cache.MessageQueue;
import com.zy.core.cache.SlaveConnection;
-import com.zy.core.enums.ShuttleRunDirection;
-import com.zy.core.enums.ShuttleTaskModeType;
import com.zy.core.enums.SlaveType;
+import com.zy.core.model.DevpSlave;
import com.zy.core.model.ShuttleSlave;
-import com.zy.core.model.Task;
-import com.zy.core.model.command.ShuttleAssignCommand;
-import com.zy.core.model.command.ShuttleCommand;
import com.zy.core.model.protocol.NyShuttleProtocol;
-import com.zy.core.model.protocol.ShuttleProtocol;
import com.zy.core.model.protocol.StaProtocol;
import com.zy.core.properties.SlaveProperties;
import com.zy.core.thread.NyShuttleThread;
-import com.zy.core.thread.ShuttleThread;
import java.text.DecimalFormat;
import java.util.*;
+import java.util.regex.Pattern;
/**
* Created by vincent on 2020/8/27
@@ -454,6 +442,7 @@
WrkMastService wrkMastService = SpringUtils.getBean(WrkMastService.class);
CommonService commonService = SpringUtils.getBean(CommonService.class);
ShuttleDispatchUtils shuttleDispatchUtils = SpringUtils.getBean(ShuttleDispatchUtils.class);
+ NavigateMapData navigateMapData = SpringUtils.getBean(NavigateMapData.class);
if (shuttleThread == null) {
return false;
@@ -463,15 +452,25 @@
return false;
}
- NavigateMapData mapData = new NavigateMapData(z);//鑾峰彇鍦板浘鏁版嵁
- int[][] data = mapData.getData(-1, null, currentShuttleId == null ? null : Utils.getShuttlePoints(0, z));//杞藉叆鍏ㄩ儴杞﹁締
+ navigateMapData.setLev(z);//鑾峰彇鍦板浘鏁版嵁
+ int[][] data = navigateMapData.getData(-1, null, currentShuttleId == null ? null : Utils.getShuttlePoints(0, z));//杞藉叆鍏ㄩ儴杞﹁締
+
+ int moveBay = 23;//閬胯璧峰鍒�
+ int bay = Utils.getBay(shuttleProtocol.getCurrentLocNo());//灏忚溅褰撳墠鍒�
+ if (bay > 1 && bay <= 30) {
+ moveBay = 23;
+ } else if (bay > 30 && bay <= 45) {
+ moveBay = 39;
+ } else if (bay > 45) {
+ moveBay = 50;
+ }
int distY = -1;
int distX = -1;
int distZ = -1;
//鑾峰彇閬胯搴撲綅
String distLocNo = null;
- for (int y = 20; y <= 56; y++) {
+ for (int y = moveBay; y <= 56; y++) {
boolean searchFlag = true;
for (int x = 10; x <= 11; x++) {
if (data[x][y] < 0 || data[x][y] == 66) {
@@ -491,6 +490,10 @@
LocMast distLocMast = locMastService.queryByLoc(locNo);
if (distLocMast == null) {
continue;
+ }
+
+ if (distLocMast.getLocSts().equals("X")) {
+ continue;//璋冭繃绂佺敤搴撲綅
}
//鍒ゆ柇璇ュ簱浣嶆槸鍚﹀瓨鍦ㄥ伐浣滄。
@@ -635,4 +638,75 @@
}
}
+ /**
+ * 鑾峰彇鍐呬晶鏂瑰悜鐨勫簱浣嶇粍
+ * @param locNo 搴撲綅鍙�
+ */
+ public static List<String> getGroupInnerLoc(String locNo){
+ int row = getRow(locNo);
+ int bay = getBay(locNo);
+
+ //(1,3,4,10,11)娌℃湁鍐呬晶鏂瑰悜搴撲綅缁�,(13,14,16)59鍒椾箣鍐呮病鏈夊唴渚ф柟鍚戝簱浣嶇粍
+ if (FIRST_GROUP_ROW_LIST.contains(row)) {//1鎺�
+ return new ArrayList<>();
+ }
+ if (SECOND_GROUP_ROW_LIST.contains(row)) {//3-4鎺�
+ return new ArrayList<>();
+ }
+ if (THIRD_GROUP_ROW_LIST.contains(row)) {//6-7鎺�
+ List<String> result = new ArrayList<>();
+ for (Integer row0 : THIRD_GROUP_ROW_LIST) {
+ if (row0 > row) {
+ result.add(zerofill(String.valueOf(row0), 2) + locNo.substring(2));
+ }
+ }
+ return result;
+ }
+ if (FOURTH_GROUP_ROW_LIST.contains(row)) {//8鎺�
+ return new ArrayList<>();
+ }
+ if (FIFTH_GROUP_ROW_LIST.contains(row)) {//10-11鎺�
+ return new ArrayList<>();
+ }
+ if (SIXTH_GROUP_ROW_LIST.contains(row) && (bay >= 59 && bay <= 61)) {//13-16鎺�59-61鍒楀唴渚ф柟鍚戝簱浣嶇粍
+ List<String> result = new ArrayList<>();
+ for (Integer row0 : SIXTH_GROUP_ROW_LIST) {
+ if (row0 > row) {
+ result.add(zerofill(String.valueOf(row0), 2) + locNo.substring(2));
+ }
+ }
+ return result;
+ }
+ if (SEVENTH_GROUP_ROW_LIST.contains(row) && bay < 59) {//13-14鎺�59鍒椾箣鍐呮病鏈夊唴渚ф柟鍚戝簱浣嶇粍
+ return new ArrayList<>();
+ }
+ if (EIGHTH_GROUP_ROW_LIST.contains(row) && bay < 59) {//16鎺�59鍒椾箣鍐呮病鏈夊唴渚ф柟鍚戝簱浣嶇粍
+ return new ArrayList<>();
+ }
+ throw new RuntimeException("搴撲綅瑙f瀽寮傚父");
+ }
+
+ /**
+ * 閫氳繃鍏ュ簱绔欑偣鍙疯幏鍙栨潯鐮佸櫒ID
+ */
+ public static Integer getBarcodeIdByStaNo(int staNo) {
+ SlaveProperties slaveProperties = SpringUtils.getBean(SlaveProperties.class);
+ for (DevpSlave devpSlave : slaveProperties.getDevp()) {
+ for (DevpSlave.Sta sta : devpSlave.getInSta()) {
+ if (sta.getStaNo().equals(staNo)) {
+ return sta.getBarcode();
+ }
+ }
+ }
+ return null;
+ }
+ /**
+ * 鍒ゆ柇瀛楃涓叉槸鍚︿负JSON鏍煎紡
+ */
+ public static boolean isJson(String jsonString) {
+ // JSON鏍煎紡鐨勬鍒欒〃杈惧紡
+ String pattern = "^\\{.*\\}$";
+ // 浣跨敤Pattern绫昏繘琛屾鍒欏尮閰�
+ return Pattern.matches(pattern, jsonString);
+ }
}
--
Gitblit v1.9.1