src/main/java/com/zy/asrs/controller/LiftController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/common/utils/NyLiftUtils.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/thread/LiftThread.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/zy/core/thread/NyShuttleThread.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/webapp/views/lift.html | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/zy/asrs/controller/LiftController.java
@@ -234,24 +234,14 @@ //移动托盘 int workNo = commonService.getWorkNo(3);//获取任务号 Integer startSta = null; Integer targetSta = null; for (LiftStaProtocol liftStaProtocol : liftThread.getLiftStaProtocols()) { if (liftStaProtocol.getStaNo() == param.getSourceStaNo()) { startSta = liftStaProtocol.getStaNo(); } if (liftStaProtocol.getLev() == param.getStaNo()) { targetSta = liftStaProtocol.getStaNo(); } } if (startSta == null || targetSta == null) { throw new CoolException("起点或目标点不存在"); LiftStaProtocol sourceLiftSta = NyLiftUtils.getLiftStaByStaNo(param.getSourceStaNo()); LiftStaProtocol liftSta = NyLiftUtils.getLiftStaByStaNo(param.getStaNo()); if (sourceLiftSta == null || liftSta == null) { throw new CoolException("源站或目标站不存在"); } //获取提升机命令 NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftProtocol.getLiftNo().intValue(), NyLiftTaskModelType.MOVE_TRAY.id, startSta, targetSta, workNo); NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftProtocol.getLiftNo().intValue(), NyLiftTaskModelType.MOVE_TRAY.id, sourceLiftSta.getStaNo(), liftSta.getStaNo(), workNo); ArrayList<NyLiftCommand> commands = new ArrayList<>(); commands.add(liftCommand); src/main/java/com/zy/asrs/service/impl/MainServiceImpl.java
@@ -928,12 +928,17 @@ break; case 110://110.小车移动中 ==> 111.小车移动完成 wrkMast.setWrkSts(111L); shuttleProtocol.setTaskNo(0); if (shuttleProtocol.getToken() == wrkMast.getWrkNo()) { //释放小车令牌 shuttleProtocol.setToken(0); } break; case 111: default: } if (wrkMastMapper.updateById(wrkMast) > 0) { if (wrkMast.getWrkSts() == 111) { // 保存工作主档历史档 if (wrkMastLocMapper.save(wrkMast.getWrkNo()) <= 0) { log.info("保存工作历史档[workNo={0}]失败", wrkMast.getWrkNo()); @@ -942,11 +947,8 @@ if (!wrkMastService.deleteById(wrkMast)) { log.info("删除工作主档[workNo={0}]失败", wrkMast.getWrkNo()); } break; default: } } if (wrkMastMapper.updateById(wrkMast) > 0) { //设置四向穿梭车为空闲状态 shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE); //源库位清零 @@ -959,6 +961,24 @@ } else { News.error("四向穿梭车已确认且任务完成状态,复位失败,但未找到工作档。四向穿梭车号={},工作号={}", shuttleProtocol.getShuttleNo(), shuttleProtocol.getTaskNo()); } }else { ShuttleAssignCommand assignCommand = shuttleProtocol.getAssignCommand(); if (!assignCommand.getAuto()) { //手动模式 //工作号清零 shuttleProtocol.setTaskNo(0); //设置四向穿梭车为空闲状态 shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.IDLE); //源库位清零 shuttleProtocol.setSourceLocNo(null); //目标库位清零 shuttleProtocol.setLocNo(null); //任务指令清零 shuttleProtocol.setAssignCommand(null); //清零令牌 shuttleProtocol.setToken(0); News.info("四向穿梭车已确认且任务完成状态,复位。四向穿梭车号={}", shuttleProtocol.getShuttleNo()); } } } src/main/java/com/zy/common/utils/NyLiftUtils.java
@@ -39,7 +39,7 @@ } for (LiftStaProtocol liftStaProtocol : liftThread.getLiftStaProtocols()) { if (liftStaProtocol.getStaNo() == staNo) { if (liftStaProtocol.getStaNo().equals(staNo)) { return liftStaProtocol; } } @@ -56,7 +56,7 @@ } for (LiftStaProtocol liftStaProtocol : liftThread.getLiftStaProtocols()) { if (liftStaProtocol.getStaNo() == staNo) { if (liftStaProtocol.getStaNo().equals(staNo)) { return liftStaProtocol; } } @@ -72,7 +72,7 @@ } for (LiftStaProtocol liftStaProtocol : liftThread.getLiftStaProtocols()) { if (liftStaProtocol.getLev() == lev) { if (liftStaProtocol.getLev().equals(lev)) { return liftStaProtocol; } } src/main/java/com/zy/core/thread/LiftThread.java
@@ -132,7 +132,7 @@ //提升机处于未运行、就绪、标记true、有任务号 if (!liftProtocol.getBusy() && liftProtocol.getPakMk() && !liftProtocol.getPakMk() && liftProtocol.getTaskNo() != 0) { //还有未完成的命令 executeWork(liftProtocol.getTaskNo()); @@ -184,7 +184,13 @@ //已完成任务号 liftProtocol.setCompleteTaskNo(siemensS7Net.getByteTransform().TransInt16(result1.Content, 6)); //当前楼层 liftProtocol.setLev(siemensS7Net.getByteTransform().TransInt16(result1.Content, 8)); short lev = siemensS7Net.getByteTransform().TransInt16(result1.Content, 8); if (lev >=5 && lev <= 7) { lev += 2; } else if (lev >= 8 && lev <= 10) { lev += 4; } liftProtocol.setLev(lev); //将提升机状态保存至数据库 BasLiftService liftService = SpringUtils.getBean(BasLiftService.class); @@ -358,7 +364,7 @@ News.info("提升机命令下发成功,提升机号={},任务数据={}", command.getLiftNo(), JSON.toJSON(command)); //将标记置为false(防止重发) liftProtocol.setPakMk(false); liftProtocol.setPakMk(true); //保存数据到数据库做流水 BasLiftOptService liftOptService = SpringUtils.getBean(BasLiftOptService.class); src/main/java/com/zy/core/thread/NyShuttleThread.java
@@ -95,7 +95,7 @@ //四向穿梭车空闲、有任务、标记为true、存在任务指令,需要执行任务的下一条指令 if (shuttleProtocol.getFree() == ShuttleStatusType.IDLE.id && shuttleProtocol.getTaskNo() != 0 && shuttleProtocol.getPakMk()) { && !shuttleProtocol.getPakMk()) { //执行下一步指令 executeWork(shuttleProtocol.getTaskNo().shortValue()); } @@ -173,9 +173,9 @@ //非自动状态时间计时 shuttleProtocol.setErrTime(jsonObject.getInteger("errTime")); //小车处于运行中,将标记置为true //小车处于运行中,将标记置为false if (shuttleProtocol.getFree() == 0) { shuttleProtocol.setPakMk(true); shuttleProtocol.setPakMk(false); } //将四向穿梭车状态保存至数据库 @@ -355,8 +355,12 @@ } NavigateMapData navigateMapData = new NavigateMapData(Utils.getLev(shuttleProtocol.getCurrentLocNo())); //取出命令 NyShuttleHttpCommand command = commands.get(commandStep);//当前命令 NyShuttleHttpCommand command = null; if (commandStep < commands.size()) { command = commands.get(commandStep);//当前命令 } if (commandStep != 0) { //判断上一条指令是否完成 NyShuttleHttpCommand lastCommand = commands.get(commandStep - 1); @@ -369,7 +373,9 @@ lastCommand.setComplete(true); //解锁锁定路径,上一条路径和当前路径 List<NavigateNode> nodes = lastCommand.getNodes(); nodes.addAll(command.getNodes()); if (command != null) { nodes.addAll(command.getNodes()); } navigateMapData.writeNavigateNodeToRedisMap(nodes, false);//解锁路径 } }else { @@ -395,7 +401,7 @@ }else { shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING_WAITING); } News.info("四向穿梭车任务执行下发完成等待执行结束,穿梭车号={},任务数据={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command)); News.info("四向穿梭车任务执行下发完成等待执行结束,穿梭车号={},任务数据={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(commands)); return false;//禁止再下发命令 } @@ -441,7 +447,7 @@ News.info("四向穿梭车命令下发成功,穿梭车号={},任务数据={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command)); //将标记置为false(防止重发) shuttleProtocol.setPakMk(false); shuttleProtocol.setPakMk(true); //保存数据到数据库做流水 BasShuttleOptService shuttleOptService = SpringUtils.getBean(BasShuttleOptService.class); @@ -463,33 +469,42 @@ shuttleOptService.insert(opt); } //判断数据是否执行完成 if (commandStep < commands.size() - 1) { //更新redis数据 //步序增加 commandStep++; redisCommand.setCommandStep(commandStep); //任务数据保存到redis redisUtil.set("shuttle_wrk_no_" + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand)); }else { //已执行完成 commandStep++; //更新redis数据 redisCommand.setCommandStep(commandStep); //任务数据保存到redis redisUtil.set("shuttle_wrk_no_" + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand)); commandStep++; // //最后一段命令为移动命令,则暂缓删除redis等待清除路径时一次性删除 // //最后一段命令为不是移动命令,则删除redis // if (!command.getRequest().getBody().get("requestType").equals("move")) { // //删除redis // redisUtil.del("shuttle_wrk_no_" + redisCommand.getWrkNo()); // } // //判断数据是否执行完成 // if (commandStep < commands.size() - 1) { // commandStep++; // //更新redis数据 // redisCommand.setCommandStep(commandStep); // //任务数据保存到redis // redisUtil.set("shuttle_wrk_no_" + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand)); // }else { // //已执行完成 // // if (!assignCommand.getCharge()) { // //对主线程抛出等待确认状态waiting // shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.WAITING); // }else { // shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING_WAITING); // } // News.info("四向穿梭车任务执行下发完成等待执行结束,穿梭车号={},任务数据={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command)); } // commandStep = commands.size(); // //更新redis数据 // redisCommand.setCommandStep(commandStep); // //任务数据保存到redis // redisUtil.set("shuttle_wrk_no_" + redisCommand.getWrkNo(), JSON.toJSONString(redisCommand)); //// //最后一段命令为移动命令,则暂缓删除redis等待清除路径时一次性删除 //// //最后一段命令为不是移动命令,则删除redis //// if (!command.getRequest().getBody().get("requestType").equals("move")) { //// //删除redis //// redisUtil.del("shuttle_wrk_no_" + redisCommand.getWrkNo()); //// } //// //// if (!assignCommand.getCharge()) { //// //对主线程抛出等待确认状态waiting //// shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.WAITING); //// }else { //// shuttleProtocol.setProtocolStatus(ShuttleProtocolStatusType.CHARGING_WAITING); //// } //// News.info("四向穿梭车任务执行下发完成等待执行结束,穿梭车号={},任务数据={}", shuttleProtocol.getShuttleNo(), JSON.toJSON(command)); // } return true; } src/main/webapp/views/lift.html
@@ -354,7 +354,9 @@ http.post(baseUrl+"/lift/operator/lift", { liftNo: $('input[name="liftSelect"]:checked').val(), liftTaskMode: liftTaskMode, lev: $("#liftLev").val() lev: $("#liftLev").val(), sourceStaNo: $("#sourceStaNo").val(), staNo: $("#staNo").val() }, function (res) { layer.msg(res.msg, {icon: 1}); });