| | |
| | | private BasLiftOptService basLiftOptService; |
| | | |
| | | public synchronized boolean assignWork(Integer liftNo, LiftAssignCommand assignCommand) { |
| | | ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo); |
| | | if (forkLiftThread == null) { |
| | | return false; |
| | | } |
| | | |
| | | ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus(); |
| | | if (forkLiftProtocol == null) { |
| | | return false; |
| | | } |
| | | |
| | | LiftRedisCommand redisCommand = new LiftRedisCommand(); |
| | | redisCommand.setLiftNo(assignCommand.getLiftNo());//提升机号 |
| | | redisCommand.setWrkNo(assignCommand.getTaskNo());//工作号 |
| | | redisCommand.setCommandStep(0);//命令执行步序 |
| | | redisCommand.setAssignCommand(assignCommand);//命令 |
| | | //任务数据保存到redis |
| | | if (redisUtil.set(RedisKeyType.FORK_LIFT_WORK_FLAG.key + assignCommand.getTaskNo(), JSON.toJSONString(redisCommand))) { |
| | | forkLiftThread.setSyncTaskNo(assignCommand.getTaskNo().intValue()); |
| | | return true; |
| | | } |
| | | // ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo); |
| | | // if (forkLiftThread == null) { |
| | | // return false; |
| | | // } |
| | | // |
| | | // ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus(); |
| | | // if (forkLiftProtocol == null) { |
| | | // return false; |
| | | // } |
| | | // |
| | | // LiftRedisCommand redisCommand = new LiftRedisCommand(); |
| | | // redisCommand.setLiftNo(assignCommand.getLiftNo());//提升机号 |
| | | // redisCommand.setWrkNo(assignCommand.getTaskNo());//工作号 |
| | | // redisCommand.setCommandStep(0);//命令执行步序 |
| | | // redisCommand.setAssignCommand(assignCommand);//命令 |
| | | // //任务数据保存到redis |
| | | // if (redisUtil.set(RedisKeyType.FORK_LIFT_WORK_FLAG.key + assignCommand.getTaskNo(), JSON.toJSONString(redisCommand))) { |
| | | // forkLiftThread.setSyncTaskNo(assignCommand.getTaskNo().intValue()); |
| | | // return true; |
| | | // } |
| | | return false; |
| | | } |
| | | |
| | | public synchronized boolean executeWork(Integer liftNo, Integer taskNo) { |
| | | Object obj = redisUtil.get(RedisKeyType.FORK_LIFT_WORK_FLAG.key + taskNo); |
| | | if (obj == null) { |
| | | return false; |
| | | } |
| | | |
| | | // WrkMast wrkMast = wrkMastService.selectByWorkNo(taskNo); |
| | | // if (wrkMast == null) { |
| | | // Object obj = redisUtil.get(RedisKeyType.FORK_LIFT_WORK_FLAG.key + taskNo); |
| | | // if (obj == null) { |
| | | // return false; |
| | | // } |
| | | |
| | | LiftRedisCommand redisCommand = JSON.parseObject(obj.toString(), LiftRedisCommand.class); |
| | | if (redisCommand == null) { |
| | | return false; |
| | | } |
| | | |
| | | ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo); |
| | | if (forkLiftThread == null) { |
| | | return false; |
| | | } |
| | | |
| | | ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus(); |
| | | if (forkLiftProtocol == null) { |
| | | return false; |
| | | } |
| | | |
| | | List<ForkLiftCommand> commands = redisCommand.getAssignCommand().getCommands(); |
| | | if (commands.isEmpty()) { |
| | | return false; |
| | | } |
| | | |
| | | LiftAssignCommand assignCommand = redisCommand.getAssignCommand(); |
| | | int commandStep = redisCommand.getCommandStep(); |
| | | |
| | | if (commandStep == 0) { |
| | | //取出命令 |
| | | ForkLiftCommand command = commands.get(commandStep); |
| | | |
| | | //判断提升机是否空闲 |
| | | if (!forkLiftThread.isDeviceIdle()) { |
| | | return false; |
| | | } |
| | | |
| | | // 下发命令 |
| | | CommandResponse response = write(command, liftNo); |
| | | |
| | | //保存命令日志 |
| | | BasLiftOpt basLiftOpt = new BasLiftOpt(); |
| | | basLiftOpt.setWrkNo(taskNo); |
| | | basLiftOpt.setLiftNo(liftNo); |
| | | basLiftOpt.setCommand(JSON.toJSONString(command)); |
| | | basLiftOpt.setSystemStatus(JSON.toJSONString(forkLiftProtocol)); |
| | | basLiftOpt.setDeviceWrk(String.valueOf(command.getTaskNo())); |
| | | basLiftOpt.setSendTime(new Date());//指令下发时间 |
| | | //保存命令流水 |
| | | basLiftOptService.insert(basLiftOpt); |
| | | |
| | | if (!response.getResult()) { |
| | | News.error("货叉提升机命令下发失败,提升机号={},任务数据={}", command.getLiftNo(), JSON.toJSON(command)); |
| | | return false; |
| | | } else { |
| | | News.info("货叉提升机命令下发成功,提升机号={},任务数据={}", command.getLiftNo(), JSON.toJSON(command)); |
| | | } |
| | | |
| | | commandStep++; |
| | | //更新redis数据 |
| | | redisCommand.setCommandStep(commandStep); |
| | | // 更新redis数据 |
| | | redisUtil.set(RedisKeyType.FORK_LIFT_WORK_FLAG.key + taskNo, JSON.toJSONString(redisCommand)); |
| | | } |
| | | // |
| | | //// WrkMast wrkMast = wrkMastService.selectByWorkNo(taskNo); |
| | | //// if (wrkMast == null) { |
| | | //// return false; |
| | | //// } |
| | | // |
| | | // LiftRedisCommand redisCommand = JSON.parseObject(obj.toString(), LiftRedisCommand.class); |
| | | // if (redisCommand == null) { |
| | | // return false; |
| | | // } |
| | | // |
| | | // ForkLiftThread forkLiftThread = (ForkLiftThread) SlaveConnection.get(SlaveType.ForkLift, liftNo); |
| | | // if (forkLiftThread == null) { |
| | | // return false; |
| | | // } |
| | | // |
| | | // ForkLiftProtocol forkLiftProtocol = forkLiftThread.getStatus(); |
| | | // if (forkLiftProtocol == null) { |
| | | // return false; |
| | | // } |
| | | // |
| | | // List<ForkLiftCommand> commands = redisCommand.getAssignCommand().getCommands(); |
| | | // if (commands.isEmpty()) { |
| | | // return false; |
| | | // } |
| | | // |
| | | // LiftAssignCommand assignCommand = redisCommand.getAssignCommand(); |
| | | // int commandStep = redisCommand.getCommandStep(); |
| | | // |
| | | // if (commandStep == 0) { |
| | | // //取出命令 |
| | | // ForkLiftCommand command = commands.get(commandStep); |
| | | // |
| | | // //判断提升机是否空闲 |
| | | // if (!forkLiftThread.isDeviceIdle()) { |
| | | // return false; |
| | | // } |
| | | // |
| | | // // 下发命令 |
| | | // CommandResponse response = write(command, liftNo); |
| | | // |
| | | // //保存命令日志 |
| | | // BasLiftOpt basLiftOpt = new BasLiftOpt(); |
| | | // basLiftOpt.setWrkNo(taskNo); |
| | | // basLiftOpt.setLiftNo(liftNo); |
| | | // basLiftOpt.setCommand(JSON.toJSONString(command)); |
| | | // basLiftOpt.setSystemStatus(JSON.toJSONString(forkLiftProtocol)); |
| | | // basLiftOpt.setDeviceWrk(String.valueOf(command.getTaskNo())); |
| | | // basLiftOpt.setSendTime(new Date());//指令下发时间 |
| | | // //保存命令流水 |
| | | // basLiftOptService.insert(basLiftOpt); |
| | | // |
| | | // if (!response.getResult()) { |
| | | // News.error("货叉提升机命令下发失败,提升机号={},任务数据={}", command.getLiftNo(), JSON.toJSON(command)); |
| | | // return false; |
| | | // } else { |
| | | // News.info("货叉提升机命令下发成功,提升机号={},任务数据={}", command.getLiftNo(), JSON.toJSON(command)); |
| | | // } |
| | | // |
| | | // commandStep++; |
| | | // //更新redis数据 |
| | | // redisCommand.setCommandStep(commandStep); |
| | | // // 更新redis数据 |
| | | // redisUtil.set(RedisKeyType.FORK_LIFT_WORK_FLAG.key + taskNo, JSON.toJSONString(redisCommand)); |
| | | // } |
| | | |
| | | return true; |
| | | } |