From 55165693f541b63e059af1def45fb2f24c5ed31e Mon Sep 17 00:00:00 2001
From: LSH
Date: 星期三, 03 四月 2024 16:59:42 +0800
Subject: [PATCH] #
---
src/main/resources/mapper/BasRgvMapMapper.xml | 2
src/main/java/com/zy/asrs/utils/RouteUtils.java | 178 +++++++++++++++++++++++++++--------
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | 43 +++++++-
src/main/java/com/zy/asrs/entity/BasRgvMap.java | 18 +++
4 files changed, 193 insertions(+), 48 deletions(-)
diff --git a/src/main/java/com/zy/asrs/entity/BasRgvMap.java b/src/main/java/com/zy/asrs/entity/BasRgvMap.java
index 190dec9..ba76d36 100644
--- a/src/main/java/com/zy/asrs/entity/BasRgvMap.java
+++ b/src/main/java/com/zy/asrs/entity/BasRgvMap.java
@@ -38,6 +38,20 @@
private Integer endRoute;
/**
+ * 寮�濮嬭寖鍥�
+ */
+ @ApiModelProperty(value= "寮�濮嬭寖鍥�")
+ @TableField("start_route_other")
+ private Integer startRouteOther;
+
+ /**
+ * 缁撴潫鑼冨洿
+ */
+ @ApiModelProperty(value= "缁撴潫鑼冨洿")
+ @TableField("end_route_other")
+ private Integer endRouteOther;
+
+ /**
* 褰撳墠浣嶇疆
*/
@ApiModelProperty(value= "褰撳墠浣嶇疆")
@@ -67,7 +81,7 @@
public BasRgvMap() {}
- public BasRgvMap(Integer rgvNo, Integer startRoute, Integer endRoute, Integer nowRoute, Integer rgvStatus, Integer lockStartRoute, Integer lockEndRoute) {
+ public BasRgvMap(Integer rgvNo, Integer startRoute, Integer endRoute, Integer nowRoute, Integer rgvStatus, Integer lockStartRoute, Integer lockEndRoute, Integer startRouteOther, Integer endRouteOther) {
this.rgvNo = rgvNo;
this.startRoute = startRoute;
this.endRoute = endRoute;
@@ -75,6 +89,8 @@
this.rgvStatus = rgvStatus;
this.lockStartRoute = lockStartRoute;
this.lockEndRoute = lockEndRoute;
+ this.startRouteOther = startRouteOther;
+ this.endRouteOther = endRouteOther;
}
public Integer getRgvNoOther(){
diff --git a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
index 42c75b9..48de892 100644
--- a/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
+++ b/src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -3687,7 +3687,11 @@
return false;
}
List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
+ List<Integer> routeNear = RouteUtils.getRoute(basRgvMap.getStartRouteOther(), basRgvMap.getEndRouteOther());
basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
+ if (rgvProtocol.getRgvNo()==1){//鍒囨崲杩戣寖鍥�
+ route = routeNear;
+ }
List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);
for (WrkMastSta wrkMastSta : wrkMastStaList){
if (wrkMastSta.getType()!=1 || wrkMastSta.getWrkType()!=3){//1:婊$増 3锛氬彇鏀�
@@ -3719,7 +3723,7 @@
log.info(date+"鍙栨斁浠诲姟涓嬪彂锛氱洰鏍囩珯鐘舵�侊細"+basDevp);
boolean sign = rgvTakeFullAll(basRgvMap.getRgvNo(), wrkMastSta);
if (sign){
- boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd());
+ boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), wrkMastSta.getStaEnd(),rgvProtocol.getRgvNo()==1);
if (signMap){
wrkMastSta.setWrkSts(1);
try{
@@ -3776,6 +3780,10 @@
}
basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());//鑾峰彇娲诲姩鑼冨洿
+ List<Integer> routeNear = RouteUtils.getRoute(basRgvMap.getStartRouteOther(), basRgvMap.getEndRouteOther());
+ if (rgvProtocol.getRgvNo()==2){//鍒囨崲杩戣寖鍥�
+ route = routeNear;
+ }
List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);//鏌ヨ鍙墽琛屼换鍔�
for (WrkMastSta wrkMastSta : wrkMastStaList){
if (wrkMastSta.getType()!=2 || wrkMastSta.getWrkType()!=2){// 2:绌烘澘 || 宸ヤ綔绫诲瀷 1:鍙栵紙鍙犵洏锛� 2锛氭媶鐩� 5锛氭弧鍙� 6锛氭弧鏀�
@@ -3800,7 +3808,7 @@
continue;
}
if (sign){
- boolean signMap = rgvMapUpdate(basRgvMap, basRgvMap.getStartRoute(), wrkMastSta.getStaEnd());
+ boolean signMap = rgvMapUpdate(basRgvMap, basRgvMap.getStartRoute(), wrkMastSta.getStaEnd(),rgvProtocol.getRgvNo()==2);
if (signMap){
wrkMastSta.setWrkSts(2);
try{
@@ -3858,6 +3866,10 @@
}
basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());//鑾峰彇娲诲姩鑼冨洿
+ List<Integer> routeNear = RouteUtils.getRoute(basRgvMap.getStartRouteOther(), basRgvMap.getEndRouteOther());
+ if (rgvProtocol.getRgvNo()==2){//鍒囨崲杩戣寖鍥�
+ route = routeNear;
+ }
List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);//鏌ヨ鍙墽琛屼换鍔�
for (WrkMastSta wrkMastSta : wrkMastStaList){
if (wrkMastSta.getType()!=2 || wrkMastSta.getWrkType()!=6){// 2:绌烘澘 || 宸ヤ綔绫诲瀷 1:鍙栵紙鍙犵洏锛� 2锛氭媶鐩� 5锛氭弧鍙� 6锛氭弧鏀� 7:鎻愬崌
@@ -3882,7 +3894,7 @@
continue;
}
if (sign){
- boolean signMap = rgvMapUpdate(basRgvMap, basRgvMap.getStartRoute(), wrkMastSta.getStaEnd());
+ boolean signMap = rgvMapUpdate(basRgvMap, basRgvMap.getStartRoute(), wrkMastSta.getStaEnd(),rgvProtocol.getRgvNo()==2);
if (signMap){
wrkMastSta.setWrkSts(2);
try{
@@ -3936,6 +3948,10 @@
return false;
}
List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
+ List<Integer> routeNear = RouteUtils.getRoute(basRgvMap.getStartRouteOther(), basRgvMap.getEndRouteOther());
+ if (rgvProtocol.getRgvNo()==2){//鍒囨崲杩戣寖鍥�
+ route = routeNear;
+ }
basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);
for (WrkMastSta wrkMastSta : wrkMastStaList){
@@ -3972,7 +3988,7 @@
continue;
}
if (sign){
- boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), basRgvMap.getStartRoute());
+ boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), basRgvMap.getStartRoute(),rgvProtocol.getRgvNo()==2);
if (signMap){
wrkMastSta.setWrkSts(1);
try{
@@ -4027,6 +4043,10 @@
}
List<Integer> route = RouteUtils.getRoute(basRgvMap.getStartRoute(), basRgvMap.getEndRoute());
basRgvMap.setNowRoute(rgvProtocol.getRgvPosI()); //鏇存柊灏忚溅褰撳墠浣嶇疆绔欑偣鍙�
+ List<Integer> routeNear = RouteUtils.getRoute(basRgvMap.getStartRouteOther(), basRgvMap.getEndRouteOther());
+ if (rgvProtocol.getRgvNo()==2){//鍒囨崲杩戣寖鍥�
+ route = routeNear;
+ }
List<WrkMastSta> wrkMastStaList = wrkMastStaMapper.selectNoInterfereList(route, route);
WrkMast wrkMast = wrkMastMapper.selectBy122ManQu(122,110,15L);
if (!Cools.isEmpty(wrkMast)){
@@ -4053,7 +4073,7 @@
continue;
}
if (sign){
- boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), basRgvMap.getStartRoute());
+ boolean signMap = rgvMapUpdate(basRgvMap, wrkMastSta.getStaStart(), basRgvMap.getStartRoute(),rgvProtocol.getRgvNo()==2);
if (signMap){
wrkMastSta.setWrkSts(1);
try{
@@ -4118,7 +4138,8 @@
&& rgvProtocol.getStatusType2() == RgvStatusType.IDLE
) {
// if (rgvProtocol.getRgvPosI().equals(basRgvMap.getStartRoute())){
- if (!RouteUtils.RgvRunStaSign(rgvProtocol.getRgvPosI(),RouteUtils.RouteIndexFarMas(rgvProtocol.getRgvNo(),rgvRunSta[rgvProtocol.getRgvNo()-1]),rgvProtocol.getRgvNo())){
+// if (!RouteUtils.RgvRunStaSign(rgvProtocol.getRgvPosI(),RouteUtils.RouteIndexFarMas(rgvProtocol.getRgvNo(),rgvRunSta[rgvProtocol.getRgvNo()-1]),rgvProtocol.getRgvNo())){
+ if (!RouteUtils.RgvRunStaSign(rgvProtocol.getRgvPosI(),rgvRunSta[rgvProtocol.getRgvNo()-1],rgvProtocol.getRgvNo())){
if (rgvProtocol.getRgvNo()==1){
signRgv1 = false;
}else {
@@ -4205,7 +4226,7 @@
* 灏忚溅XY绉诲姩 閬胯
* */
public synchronized boolean rgvAvoidanceXY(Integer rgvId, Integer[] rgvRunSta){
- if (rgvId==1){
+ if (rgvId==2){
try{
// BasRgvMap basRgvMap = basRgvMapMapper.selectById(rgvId);
// 鍛戒护涓嬪彂鍖� --------------------------------------------------------------------------
@@ -4453,6 +4474,13 @@
/*
* 灏忚溅鍦板浘鏇存柊 鏇存柊閿�
* */
+ public synchronized boolean rgvMapUpdate(BasRgvMap basRgvMapCurrent,Integer staStart,Integer staEnd,boolean sign){
+ if (sign){
+ staStart = RouteUtils.RouteIndexFarMasOtherNearUpMap(basRgvMapCurrent.getRgvNo(),staStart);
+ staEnd = RouteUtils.RouteIndexFarMasOtherNearUpMap(basRgvMapCurrent.getRgvNo(),staEnd);
+ }
+ return rgvMapUpdate(basRgvMapCurrent,staStart,staEnd);
+ }
public synchronized boolean rgvMapUpdate(BasRgvMap basRgvMapCurrent,Integer staStart,Integer staEnd){
// List<Integer> integers = RouteUtils.RouteMapCurrentFar(basRgvMapCurrent.getNowRoute(),staStart,staEnd, basRgvMapCurrent.getLockStartRoute());
@@ -4469,6 +4497,7 @@
List<Integer> integers = RouteUtils.RouteMapCurrentFar(fallMerge, basRgvMapCurrent.getLockStartRoute());
Integer lockEndRoute = RouteUtils.RouteMapOtherFarStnNo(integers, basRgvMapCurrent.getLockStartRoute());//鍙︿竴鍙板皬杞﹀彲娲诲姩鏈�杩滀綅缃�
basRgvMapOther.setEndRoute(lockEndRoute);
+ basRgvMapOther.setEndRouteOther(RouteUtils.RouteIndexFarMasOtherNear(rgvNoOther,lockEndRoute));
basRgvMapMapper.updateById(basRgvMapOther);
return true;
}catch (Exception e){
diff --git a/src/main/java/com/zy/asrs/utils/RouteUtils.java b/src/main/java/com/zy/asrs/utils/RouteUtils.java
index a8050f7..f3b76fc 100644
--- a/src/main/java/com/zy/asrs/utils/RouteUtils.java
+++ b/src/main/java/com/zy/asrs/utils/RouteUtils.java
@@ -14,27 +14,33 @@
public class RouteUtils {
public static final List<Integer> MERGE_STA_NO_One = new ArrayList<Integer>() {{
- add(116);add(117);
+// add(116);add(117);
+ add(104);add(122);
}};
public static final List<Integer> MERGE_STA_NO_TWO = new ArrayList<Integer>() {{
- add(113);add(123);add(114);add(1142);
+// add(113);add(123);add(114);add(1142);
+ add(107);add(118);
}};
public static final List<Integer> MERGE_STA_NO_THREE = new ArrayList<Integer>() {{
- add(107);add(118);add(108);add(119);
+// add(107);add(118);add(108);add(119);
+ add(108);add(119);
}};
public static final List<Integer> MERGE_STA_NO_FOUR = new ArrayList<Integer>() {{
- add(110);add(120);add(111);add(121);
+// add(110);add(120);add(111);add(121);
+ add(110);add(120);
}};
public static final List<Integer> MERGE_STA_NO_FIVE = new ArrayList<Integer>() {{
- add(104);add(122);add(105);
+// add(104);add(122);add(105);
+ add(111);add(121);
}};
public static final List<Integer> MERGE_STA_NO_SIX = new ArrayList<Integer>() {{
- add(108);add(119);add(110);add(120);
+// add(108);add(119);add(110);add(120);
+ add(113);add(123);add(114);
}};
public static final List<Integer> MERGE_STA_NO_SEVEN = new ArrayList<Integer>() {{
@@ -71,38 +77,132 @@
return msgBuilder.toString();
}
}
-// /*
-// * 鑾峰彇骞叉秹鏈�杩滅珯鐐�
-// * */
-// public static Integer RouteIndexFarMas(int rgvNo,Integer staNo){
-// List<Integer> staFall = new ArrayList<>();
-// if (MERGE_STA_NO_SIX.contains(staNo)){
-// staFall = MERGE_STA_NO_SIX;
-// }else if (MERGE_STA_NO_One.contains(staNo)){
-// staFall = MERGE_STA_NO_One;
-// }else if (MERGE_STA_NO_TWO.contains(staNo)){
-// staFall = MERGE_STA_NO_TWO;
-// }else if (MERGE_STA_NO_THREE.contains(staNo)){
-// staFall = MERGE_STA_NO_THREE;
-// }else if (MERGE_STA_NO_FOUR.contains(staNo)){
-// staFall = MERGE_STA_NO_FOUR;
-// }else if (MERGE_STA_NO_FIVE.contains(staNo)){
-// staFall = MERGE_STA_NO_FIVE;
-// }else {
-// return staNo;
-// }
-//
-// int indexNo = 0;
-// if (rgvNo==1){
-// indexNo=staFall.size()-1;
-// }
-// return staFall.get(indexNo);
-// }
-
/*
* 鑾峰彇骞叉秹鏈�杩滅珯鐐�
* */
public static Integer RouteIndexFarMas(int rgvNo,Integer staNo){
+ List<Integer> staFall = new ArrayList<>();
+ if (MERGE_STA_NO_SIX.contains(staNo)){
+// staFall = MERGE_STA_NO_SIX;
+ if (rgvNo==1){
+ if (staNo==113){
+ return 123;
+ } else {
+ return 114;
+ }
+ }else {
+ if (staNo==114){
+ return 123;
+ } else {
+ return 113;
+ }
+ }
+ }else if (MERGE_STA_NO_One.contains(staNo)){
+ staFall = MERGE_STA_NO_One;
+ }else if (MERGE_STA_NO_TWO.contains(staNo)){
+ staFall = MERGE_STA_NO_TWO;
+ }else if (MERGE_STA_NO_THREE.contains(staNo)){
+ staFall = MERGE_STA_NO_THREE;
+ }else if (MERGE_STA_NO_FOUR.contains(staNo)){
+ staFall = MERGE_STA_NO_FOUR;
+ }else if (MERGE_STA_NO_FIVE.contains(staNo)){
+ staFall = MERGE_STA_NO_FIVE;
+ }else {
+ return staNo;
+ }
+
+ int indexNo = 0;
+ if (rgvNo==1){
+ indexNo=staFall.size()-1;
+ }
+ return staFall.get(indexNo);
+ }
+
+ public static Integer RouteIndexFarMasOtherNear(int rgvNo,Integer staNo){
+ if (rgvNo==1){
+ switch (staNo){
+ case 117: return 116;
+ case 116: return 1142;
+ case 1142:
+ case 114: return 114;
+ case 123: return 113;
+ case 113: return 121;
+ case 121: return 111;
+ case 111: return 110;
+ case 120:
+ case 110: return 119;
+ case 119:
+ case 108: return 118;
+ case 118:
+ case 107: return 105;
+ case 105:
+ case 122: return 122;
+ case 104: return 104;
+ case 102: return 102;
+ case 101: return 101;
+ default:
+ return 102;
+ }
+ }else {
+ switch (staNo){
+ case 117: return 117;
+ case 116: return 116;
+ case 1142: return 116;
+ case 114: return 116;
+ case 123: return 1142;
+ case 113: return 114;
+ case 121: return 113;
+ case 111: return 113;
+ case 120: return 121;
+ case 110: return 111;
+ case 119: return 110;
+ case 108: return 110;
+ case 118: return 119;
+ case 107: return 107;
+ case 105: return 107;
+ case 122: return 122;
+ case 104: return 104;
+ case 102: return 104;
+ case 101: return 102;
+ default:
+ return 116;
+ }
+ }
+ }
+
+ public static Integer RouteIndexFarMasOtherNearUpMap(int rgvNo,Integer staNo){
+// int ia = TRACK_POSITION_POSITIVE_SEQUENCE.indexOf(staNo);
+// int ib = TRACK_POSITION_REVERSE_SEQUENCE.indexOf(staNo);
+// if (ia<=ib){
+// return new Integer[]{RouteIndexFarMasReverse(1,runStaStart),RouteIndexFarMasReverse(2,runStaEnd)};
+// }else {
+// return new Integer[]{RouteIndexFarMasReverse(1,runStaEnd),RouteIndexFarMasReverse(2,runStaStart)};
+// }
+// if (ia<=ib){
+// return new Integer[]{TRACK_POSITION_POSITIVE_SEQUENCE.get(ia),TRACK_POSITION_POSITIVE_SEQUENCE.get(ib)};
+// }else {
+// return new Integer[]{TRACK_POSITION_POSITIVE_SEQUENCE.get(ib),TRACK_POSITION_POSITIVE_SEQUENCE.get(ia)};
+// }
+// if (rgvNo==1){
+// if (ia-2>=1){
+// return TRACK_POSITION_POSITIVE_SEQUENCE.get(ia-2);
+// }else {
+// return 102;
+// }
+ return RouteIndexFarMasOther(rgvNo,staNo);
+// }else {
+// if (ib-2>=1){
+// return TRACK_POSITION_REVERSE_SEQUENCE.get(ib-2);
+// }else {
+// return 116;
+// }
+// }
+ }
+//
+ /*
+ * 鑾峰彇骞叉秹鏈�杩滅珯鐐�
+ * */
+ public static Integer RouteIndexFarMasOther(int rgvNo,Integer staNo){
if (rgvNo==1){
switch (staNo){
case 101: return 102;
@@ -200,7 +300,7 @@
if (rgvNo==1) {
switch (staNo) {
case 101:
- case 102: return 0;
+ case 102: return 102;
case 104:
case 122:
case 105: return 102;
@@ -222,7 +322,7 @@
case 1142:
case 116:
case 117:
- return 0;
+ return 102;
default:
return 101;
}
@@ -231,7 +331,7 @@
case 117:
case 116:
case 1142:
- return 0;
+ return 116;
case 114:
case 123:
case 113:
@@ -253,7 +353,7 @@
return 107;
case 102:
case 101:
- return 0;
+ return 116;
default:
return 117;
}
@@ -500,8 +600,6 @@
// }else {
// return new Integer[]{TRACK_POSITION_POSITIVE_SEQUENCE.get(ib+1),TRACK_POSITION_POSITIVE_SEQUENCE.get(ia-1)};
// }
-
-
}
public static boolean RgvRunStaSign(Integer staBow,Integer runStaEnd,Integer rgvNo){
diff --git a/src/main/resources/mapper/BasRgvMapMapper.xml b/src/main/resources/mapper/BasRgvMapMapper.xml
index a4f5bae..f3541e8 100644
--- a/src/main/resources/mapper/BasRgvMapMapper.xml
+++ b/src/main/resources/mapper/BasRgvMapMapper.xml
@@ -11,6 +11,8 @@
<result column="rgv_status" property="rgvStatus" />
<result column="lock_start_route" property="lockStartRoute" />
<result column="lock_end_route" property="lockEndRoute" />
+ <result column="start_route_other" property="startRouteOther" />
+ <result column="end_route_other" property="endRouteOther" />
</resultMap>
--
Gitblit v1.9.1