| | |
| | | import com.zy.asrs.entity.BasLift; |
| | | import com.zy.asrs.service.BasLiftService; |
| | | import com.zy.common.service.CommonService; |
| | | import com.zy.common.utils.NyLiftUtils; |
| | | import com.zy.common.utils.RedisUtil; |
| | | import com.zy.core.cache.MessageQueue; |
| | | import com.zy.core.cache.OutputQueue; |
| | | import com.zy.core.cache.SlaveConnection; |
| | | import com.zy.core.enums.LiftProtocolStatusType; |
| | | import com.zy.core.enums.NyLiftTaskModelType; |
| | | import com.zy.core.enums.RedisKeyType; |
| | | import com.zy.core.enums.SlaveType; |
| | | import com.zy.core.model.LiftSlave; |
| | | import com.zy.core.model.Task; |
| | | import com.zy.core.model.command.*; |
| | | import com.zy.core.model.protocol.LiftProtocol; |
| | | import com.zy.core.model.protocol.LiftStaProtocol; |
| | | import com.zy.core.properties.SlaveProperties; |
| | | import com.zy.core.thread.LiftThread; |
| | | import lombok.extern.slf4j.Slf4j; |
| | |
| | | vo.setDistAddress(liftProtocol.getDistAddress()); |
| | | vo.setCompleteTaskNo(liftProtocol.getCompleteTaskNo()); |
| | | vo.setShuttleNo(liftProtocol.getShuttleNo().intValue()); |
| | | vo.setToken(liftProtocol.getToken());//令牌 |
| | | } |
| | | return R.ok().add(list); |
| | | } |
| | |
| | | throw new CoolException("提升机不在线"); |
| | | } |
| | | |
| | | LiftAssignCommand assignCommand = new LiftAssignCommand(); |
| | | assignCommand.setLiftNo(liftSlave.getId().shortValue()); // 提升机编号 |
| | | assignCommand.setTaskNo((short) commonService.getWorkNo(3));//获取任务号 |
| | | assignCommand.setTaskMode(param.getLiftTaskMode().shortValue()); |
| | | assignCommand.setAuto(false);//手动模式 |
| | | assignCommand.setLev(param.getLev());//移动楼层 |
| | | if (param.getLiftTaskMode() == 1) { |
| | | //提升机升降楼层 |
| | | int workNo = commonService.getWorkNo(3);//获取任务号 |
| | | |
| | | if (MessageQueue.offer(SlaveType.Lift, liftSlave.getId(), new Task(3, assignCommand))) { |
| | | return R.ok(); |
| | | Integer startSta = null; |
| | | Integer targetSta = null; |
| | | for (LiftStaProtocol liftStaProtocol : liftThread.getLiftStaProtocols()) { |
| | | if (liftStaProtocol.getLev() == liftProtocol.getLev().intValue()) { |
| | | startSta = liftStaProtocol.getStaNo(); |
| | | } |
| | | |
| | | if (liftStaProtocol.getLev() == param.getLev()) { |
| | | targetSta = liftStaProtocol.getStaNo(); |
| | | } |
| | | } |
| | | |
| | | if (startSta == null || targetSta == null) { |
| | | throw new CoolException("起点或目标点不存在"); |
| | | } |
| | | |
| | | //获取提升机命令 |
| | | NyLiftCommand liftCommand = NyLiftUtils.getLiftCommand(liftProtocol.getLiftNo().intValue(), NyLiftTaskModelType.MOVE_CAR.id, startSta, targetSta, workNo); |
| | | ArrayList<NyLiftCommand> commands = new ArrayList<>(); |
| | | commands.add(liftCommand); |
| | | |
| | | //提交到线程去工作 |
| | | LiftAssignCommand assignCommand = new LiftAssignCommand(); |
| | | assignCommand.setCommands(commands); |
| | | assignCommand.setLiftNo(liftProtocol.getLiftNo()); |
| | | assignCommand.setTaskNo((short) workNo); |
| | | assignCommand.setAuto(false);//手动模式 |
| | | assignCommand.setTaskMode(NyLiftTaskModelType.MOVE_CAR.id.shortValue()); |
| | | |
| | | if (MessageQueue.offer(SlaveType.Lift, liftSlave.getId(), new Task(3, assignCommand))) { |
| | | return R.ok(); |
| | | } else { |
| | | throw new CoolException("命令下发失败"); |
| | | } |
| | | } else if (param.getLiftTaskMode() == 2) { |
| | | //移动托盘 |
| | | int workNo = commonService.getWorkNo(3);//获取任务号 |
| | | |
| | | // 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, param.getSourceStaNo(), param.getStaNo(), workNo); |
| | | ArrayList<NyLiftCommand> commands = new ArrayList<>(); |
| | | commands.add(liftCommand); |
| | | |
| | | //提交到线程去工作 |
| | | LiftAssignCommand assignCommand = new LiftAssignCommand(); |
| | | assignCommand.setCommands(commands); |
| | | assignCommand.setLiftNo(liftProtocol.getLiftNo()); |
| | | assignCommand.setTaskNo((short) workNo); |
| | | assignCommand.setAuto(false);//手动模式 |
| | | assignCommand.setTaskMode(NyLiftTaskModelType.MOVE_TRAY.id.shortValue()); |
| | | |
| | | if (MessageQueue.offer(SlaveType.Lift, liftSlave.getId(), new Task(3, assignCommand))) { |
| | | return R.ok(); |
| | | } else { |
| | | throw new CoolException("命令下发失败"); |
| | | } |
| | | } else if (param.getLiftTaskMode() == 0) { |
| | | //提升机复位 |
| | | liftProtocol.setToken(0); |
| | | liftProtocol.setProtocolStatusType(LiftProtocolStatusType.IDLE); |
| | | } else { |
| | | throw new CoolException("命令下发失败"); |
| | | throw new CoolException("未知命令"); |
| | | } |
| | | |
| | | } |
| | | } |
| | | return R.error(); |
| | |
| | | @PostMapping("/detl/update") |
| | | @ManagerAuth(memo = "修改数据") |
| | | public R liftUpdate(@RequestParam Integer liftNo, |
| | | @RequestParam Short workNo, |
| | | @RequestParam String pakMk){ |
| | | @RequestParam Short workNo, |
| | | @RequestParam String pakMk, |
| | | @RequestParam Integer token) { |
| | | LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, liftNo); |
| | | if (liftThread == null) { |
| | | return R.error("plc已掉线"); |
| | |
| | | if (pakMk != null) { |
| | | liftProtocol.setPakMk(pakMk.equals("Y")); |
| | | } |
| | | if (token != null) { |
| | | liftProtocol.setToken(token); |
| | | } |
| | | return R.ok(); |
| | | } |
| | | |
| | | @RequestMapping(value = "/command/query") |
| | | public R liftCommandQuery(@RequestParam("wrkNo") Integer wrkNo) { |
| | | Object o = redisUtil.get("lift_wrk_no_" + wrkNo); |
| | | Object o = redisUtil.get(RedisKeyType.LIFT.key + wrkNo); |
| | | if (o == null) { |
| | | return R.error(); |
| | | } |
| | |
| | | @RequestMapping(value = "/command/rollback") |
| | | public R liftCommandRollback(@RequestParam("wrkNo") Integer wrkNo |
| | | , @RequestParam("commandStep") Integer commandStep) { |
| | | Object o = redisUtil.get("lift_wrk_no_" + wrkNo); |
| | | Object o = redisUtil.get(RedisKeyType.LIFT.key + wrkNo); |
| | | if (o == null) { |
| | | return R.error(); |
| | | } |
| | | LiftRedisCommand redisCommand = JSON.parseObject(o.toString(), LiftRedisCommand.class); |
| | | redisCommand.setCommandStep(commandStep); |
| | | redisUtil.set("lift_wrk_no_" + wrkNo, JSON.toJSONString(redisCommand)); |
| | | redisUtil.set(RedisKeyType.LIFT.key + wrkNo, JSON.toJSONString(redisCommand)); |
| | | return R.ok(); |
| | | } |
| | | |
| | |
| | | public R liftCommandCompleteSwitch(@RequestParam("wrkNo") Integer wrkNo |
| | | , @RequestParam("commandStep") Integer commandStep |
| | | , @RequestParam("complete") Integer complete) { |
| | | Object o = redisUtil.get("lift_wrk_no_" + wrkNo); |
| | | Object o = redisUtil.get(RedisKeyType.LIFT.key + wrkNo); |
| | | if (o == null) { |
| | | return R.error(); |
| | | } |
| | |
| | | List<NyLiftCommand> commands = assignCommand.getCommands(); |
| | | NyLiftCommand command = commands.get(commandStep); |
| | | command.setComplete(complete != 0); |
| | | redisUtil.set("lift_wrk_no_" + wrkNo, JSON.toJSONString(redisCommand)); |
| | | redisUtil.set(RedisKeyType.LIFT.key + wrkNo, JSON.toJSONString(redisCommand)); |
| | | return R.ok(); |
| | | } |
| | | |
| | | //重启任务(命令) |
| | | @RequestMapping(value = "/command/restart") |
| | | public R liftCommandCompleteSwitch(@RequestParam("wrkNo") Integer wrkNo) { |
| | | Object o = redisUtil.get("lift_wrk_no_" + wrkNo); |
| | | Object o = redisUtil.get(RedisKeyType.LIFT.key + wrkNo); |
| | | if (o == null) { |
| | | return R.error(); |
| | | } |
| | |
| | | //删除任务(命令) |
| | | @RequestMapping(value = "/command/del") |
| | | public R liftCommandDel(@RequestParam("wrkNo") Integer wrkNo) { |
| | | Object o = redisUtil.get("lift_wrk_no_" + wrkNo); |
| | | Object o = redisUtil.get(RedisKeyType.LIFT.key + wrkNo); |
| | | if (o == null) { |
| | | return R.error(); |
| | | } |
| | | redisUtil.del("lift_wrk_no_" + wrkNo); |
| | | redisUtil.del(RedisKeyType.LIFT.key + wrkNo); |
| | | return R.ok(); |
| | | } |
| | | |