src/main/java/com/zy/asrs/entity/BasRgvMap.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/utils/RouteUtils.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/mapper/BasRgvMapMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
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(){ 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){ 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){ 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>