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