src/main/java/com/zy/common/utils/NavigateMapData.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/MainProcess.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/thread/NyShuttleThread.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/webapp/views/console.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/common/utils/NavigateMapData.java
@@ -245,6 +245,8 @@ ArrayList arrayList = JSON.parseObject(basMap.getData(), ArrayList.class); List<List<MapNode>> lists = filterMap(NavigationMapType.NONE.id, arrayList, lev, null, null);//获取全部地图数据 NavigateMapData mapData = new NavigateMapData(nodes.get(0).getZ()); List<List<MapNode>> realMap = mapData.getJsonData(-1, null, null);//获取完整地图(包括入库出库) for (NavigateNode node : nodes) { if (node.getZ() != lev) { continue; @@ -255,11 +257,10 @@ if (lock) { mapNode.setValue(-999);//禁用库位 }else { if (node.getX() == 11 || node.getX() == 19) { mapNode.setValue(3);//恢复库位,母轨道 }else { mapNode.setValue(0);//恢复库位,普通库位 } //获取原始节点数据 List<MapNode> rows = realMap.get(node.getX()); MapNode col = rows.get(node.getY()); mapNode.setValue(col.getValue());//恢复库位 } listX.set(node.getY(), mapNode); src/main/java/com/zy/core/MainProcess.java
@@ -69,7 +69,7 @@ // 异常信息记录 mainService.recErr(); // 入库 ===>> 空栈板初始化入库,叉车入库站放货 mainService.storeEmptyPlt(); // mainService.storeEmptyPlt(); // 出库 ===>> 工作档信息写入led显示器 mainService.ledExecute(); // 其他 ===>> LED显示器复位,显示默认信息 src/main/java/com/zy/core/thread/NyShuttleThread.java
@@ -176,6 +176,20 @@ //小车处于运行中,将标记置为true if (shuttleProtocol.getFree() == 0) { shuttleProtocol.setPakMk(true); }else { //小车处于等待确认且空闲状态,如有工作号则清空路径 if (shuttleProtocol.getTaskNo() != 0 && shuttleProtocol.getProtocolStatusType() == ShuttleProtocolStatusType.IDLE) { Object o = redisUtil.get("shuttle_wrk_no_" + shuttleProtocol.getTaskNo()); if (o != null) { ShuttleRedisCommand redisCommand = JSON.parseObject(o.toString(), ShuttleRedisCommand.class); ShuttleAssignCommand assignCommand = redisCommand.getAssignCommand(); NavigateMapData navigateMapData = new NavigateMapData(Utils.getLev(shuttleProtocol.getCurrentLocNo())); navigateMapData.writeNavigateNodeToRedisMap(assignCommand.getNodes(), false);//解锁路径 //删除redis redisUtil.del("shuttle_wrk_no_" + redisCommand.getWrkNo()); } } } //将四向穿梭车状态保存至数据库 @@ -411,7 +425,9 @@ //锁定路径,锁定当前路径和下一步路径 List<NavigateNode> nodes = command.getNodes(); if (nextNodes != null) { nodes.addAll(nextNodes); } navigateMapData.writeNavigateNodeToRedisMap(nodes, true);//所使用的路径进行锁定禁用 //可执行命令 @@ -455,8 +471,12 @@ }else { //已执行完成 //最后一段命令为移动命令,则暂缓删除redis等待清除路径时一次性删除 //最后一段命令为不是移动命令,则删除redis if (!command.getRequest().getBody().get("requestType").equals("move")) { //删除redis redisUtil.del("shuttle_wrk_no_" + redisCommand.getWrkNo()); } if (!assignCommand.getCharge()) { //对主线程抛出等待确认状态waiting @@ -573,7 +593,9 @@ if (basLift == null) { continue; } if (basLift.getPoint().equals(shuttleProtocol.getPoint())) { Integer liftX = basLift.getPoint$().getX(); Integer liftY = basLift.getPoint$().getY(); if (liftX.equals(shuttleProtocol.getPoint().getX()) && liftY.equals(shuttleProtocol.getPoint().getY())) { //小车在提升机内 //判断提升机是否空闲 LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftSlave.getId()); @@ -588,6 +610,8 @@ //提升机处于空闲,放行 return true; } }else { return true;//不在提升机内,放行 } } return false;//默认不放行 @@ -601,10 +625,16 @@ //检测路径是否可行走(检查路径锁定状态,检测路径是否有其他小车) //检测当前行走路径,和下一步路径 boolean checkPathIsAvailable = NavigateUtils.checkPathIsAvailable(currentNodes, shuttleProtocol.getShuttleNo().intValue(), Utils.getLev(shuttleProtocol.getCurrentLocNo())); if (nextNodes == null) { if (checkPathIsAvailable) { return true;//可行走 } }else { boolean checkPathIsAvailable2 = NavigateUtils.checkPathIsAvailable(nextNodes, shuttleProtocol.getShuttleNo().intValue(), Utils.getLev(shuttleProtocol.getCurrentLocNo())); if (checkPathIsAvailable && checkPathIsAvailable2) { return true;//可行走 } } ShuttleAssignCommand assignCommand = redisCommand.getAssignCommand(); NavigateNode currentTarget = currentNodes.get(currentNodes.size() - 1); src/main/webapp/views/console.html
@@ -37,13 +37,13 @@ <!-- 充电桩 --> <div class="item" style="font-size: 24px">⚡</div> </div> <div v-else-if="col.value < 0"> <!-- 禁止显示区域 --> <div class="item" style="visibility: hidden">{{idx}}</div> </div> <div v-else-if="col.value == -999"> <!-- 路径占用区域 --> <div class="item" style="background:#f83333;color: #fff;">{{idx}}</div> </div> <div v-else-if="col.value < 0"> <!-- 禁止显示区域 --> <div class="item" style="visibility: hidden">{{idx}}</div> </div> <div v-else> <div class="item" v-if="col.data.length > 0">{{col.data}}</div> @@ -356,6 +356,7 @@ this.getShuttleStateInfo() //获取四向穿梭车信息 this.getLiftStateInfo() //获取提升机信息 this.getSiteInfo() //获取输送站点数据 this.getMap(this.currentLev) //获取实时地图数据 }, 1000) }, //获取地图数据