Merge remote-tracking branch 'origin/Four-Way-Rack' into Four-Way-Rack
| | |
| | | |
| | | //对主线程抛出等待确认状态waiting |
| | | liftThread.setProtocolStatus(LiftProtocolStatusType.WAITING); |
| | | liftThread.commandFinished(taskNo);//调用完成后续指令(部分提升机有后续指令,实际情况看是否有真正实现方法) |
| | | redisUtil.del(DeviceRedisConstant.LIFT_WORK_FLAG + taskNo); |
| | | return false;//禁止再下发命令 |
| | | } |
| | |
| | | |
| | | public List<Motion> generateMotion(Task task) { |
| | | List<Motion> motionList = new ArrayList<>(); |
| | | // switch (Objects.requireNonNull(WorkZoneType.query(task.getTaskSts() == TaskStsType.NEW_INBOUND.sts ? task.getOriginSite() : task.getDestSite()))) { |
| | | // case FIRST_ZONE: |
| | | // motionList = this.generateFirstZoneMotion(task); |
| | | // break; |
| | | // default: |
| | | // } |
| | | motionList = this.generateFirstZoneMotion(task); |
| | | return motionList; |
| | | } |
| | |
| | | * 5.穿梭车入库至目标库位 |
| | | */ |
| | | if (task.getTaskSts() == TaskStsType.NEW_INBOUND.sts) { |
| | | // // lift |
| | | // LiftThread liftThread = liftDispatcher.queryLiftForTransport(task.getOriginSite()); |
| | | // LiftProtocol liftProtocol = liftThread.getStatus(); |
| | | // if (liftProtocol == null) { |
| | | // return motionList; |
| | | // } |
| | | // locNo |
| | | String destLoc = task.getDestLoc(); |
| | | |
| | | // shuttle |
| | | Device shuttleDevice = deviceService.getOne(new LambdaQueryWrapper<Device>() |
| | | .eq(Device::getDeviceNo, task.getShuttleNo()) |
| | | .eq(Device::getDeviceType, DeviceCtgType.SHUTTLE.val()) |
| | | .eq(Device::getHostId, task.getHostId()) |
| | | .eq(Device::getStatus, 1)); |
| | | if (shuttleDevice == null) { |
| | | return motionList; |
| | | } |
| | | ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, shuttleDevice.getId().intValue()); |
| | | ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); |
| | | if (shuttleProtocol == null || shuttleProtocol.getShuttleNo() == null) { |
| | | return motionList; |
| | | } |
| | | if (!shuttleThread.isIdle()) { |
| | | return motionList; |
| | | } |
| | | |
| | | String shuttleLocNo = shuttleProtocol.getCurrentLocNo(); |
| | | |
| | | //获取距离目标位置最近的空闲可换层提升机 |
| | | LiftThread liftThread = liftDispatcher.searchIdleLift(shuttleLocNo, task.getHostId(), true); |
| | | if (liftThread == null) { |
| | | return motionList; |
| | | } |
| | | Device transferLiftDevice = liftThread.getDevice(); |
| | | |
| | | LiftProtocol liftProtocol = liftThread.getStatus(); |
| | | if (liftProtocol == null || liftProtocol.getLiftNo() == null) { |
| | | return motionList; |
| | | } |
| | | |
| | | //检测穿梭车是否有任务绑定 |
| | | boolean shuttleResult = Utils.checkShuttleHasBinding(shuttleDevice); |
| | | if (shuttleResult) { |
| | | //存在任务,禁止解析 |
| | | return motionList; |
| | | } |
| | | |
| | | //检测提升机是否有任务绑定 |
| | | boolean liftResult = Utils.checkLiftHasBinding(Integer.parseInt(transferLiftDevice.getDeviceNo())); |
| | | if (liftResult) { |
| | | //存在任务,禁止解析 |
| | | return motionList; |
| | | } |
| | | |
| | | //获取小车待机库位 ==> 进提升机 |
| | | ShuttleStandby shuttleStandbyTo = shuttleStandbyService.getOne(new LambdaQueryWrapper<ShuttleStandby>() |
| | | .eq(ShuttleStandby::getDeviceId, transferLiftDevice.getId()) |
| | | .eq(ShuttleStandby::getDeviceLev, Utils.getLev(shuttleLocNo)) |
| | | .eq(ShuttleStandby::getStatus, 1)); |
| | | |
| | | //获取小车待机库位 ==> 出提升机 |
| | | ShuttleStandby shuttleStandbyFrom = shuttleStandbyService.getOne(new LambdaQueryWrapper<ShuttleStandby>() |
| | | .eq(ShuttleStandby::getDeviceId, transferLiftDevice.getId()) |
| | | .eq(ShuttleStandby::getDeviceLev, Utils.getLev(destLoc)) |
| | | .eq(ShuttleStandby::getStatus, 1)); |
| | | if (shuttleStandbyTo == null || shuttleStandbyFrom == null) { |
| | | return motionList; |
| | | } |
| | | |
| | | //穿梭车进提升机库位号 |
| | | String liftLocNoTo = shuttleStandbyTo.getDeviceLoc(); |
| | | |
| | | //穿梭车出提升机库位号 |
| | | String liftLocNoFrom = shuttleStandbyFrom.getDeviceLoc(); |
| | | |
| | | //穿梭车进提升机待机位库位号 |
| | | String standbyLocNoTo = shuttleStandbyTo.getDeviceStandbyLoc(); |
| | | |
| | | //穿梭车出提升机待机位库位号 |
| | | String standbyLocNoFrom = shuttleStandbyFrom.getDeviceStandbyLoc(); |
| | | |
| | | // shuttle |
| | | // ShuttleThread shuttleThread = shuttleDispatcher.queryShuttleWhichConvenient(task, Integer.parseInt(liftThread.getStatus().getLiftNo())); |
| | | // ShuttleThread shuttleThread = shuttleDispatcher.queryShuttleWhichConvenient(task, 1); |
| | | ShuttleThread shuttleThread = (ShuttleThread) SlaveConnection.get(SlaveType.Shuttle, 6); |
| | | if (Cools.isEmpty(shuttleThread)) { return motionList; } |
| | | ShuttleProtocol shuttleProtocol = shuttleThread.getStatus(); |
| | | // String shuttleLocNo = shuttleProtocol.getCurrentLocNo(); |
| | | String shuttleLocNo = "0100201"; |
| | | |
| | | // // conveyor |
| | | // DevpSlave devpSlave = conveyorDispatcher.queryByInBound(task.getSourceStaNo()); |
| | |
| | | |
| | | String shuttleLocNo = shuttleProtocol.getCurrentLocNo(); |
| | | |
| | | // lift |
| | | Device transferLiftDevice = Utils.getRecentTransferLift(shuttleLocNo, shuttleProtocol.getShuttleNo()); |
| | | if (transferLiftDevice == null) { |
| | | //获取距离目标位置最近的空闲可换层提升机 |
| | | LiftThread liftThread = liftDispatcher.searchIdleLift(shuttleLocNo, task.getHostId(), true); |
| | | if (liftThread == null) { |
| | | return motionList; |
| | | } |
| | | LiftThread liftThread = (LiftThread) SlaveConnection.get(SlaveType.Lift, transferLiftDevice.getId().intValue()); |
| | | Device transferLiftDevice = liftThread.getDevice(); |
| | | |
| | | LiftProtocol liftProtocol = liftThread.getStatus(); |
| | | if (liftProtocol == null || liftProtocol.getLiftNo() == null) { |
| | | return motionList; |
| | |
| | | MotionCtgType.SHUTTLE_MOVE_TO_LIFT |
| | | )); |
| | | |
| | | // 提升机搬车 至 输送线层 |
| | | // 提升机搬车 至 充电层 |
| | | motionList.addAll(kernelService.liftMoveShuttle( |
| | | MotionDto.build((dto -> { |
| | | dto.setLiftNo(transferLiftDevice.getId().intValue()); |
| | |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | |
| | | /** |
| | |
| | | assignCommand.setTaskNo(motion.getTaskNo()); |
| | | assignCommand.setCommands(list); |
| | | |
| | | LiftCommand command = new LiftCommand(); |
| | | List<LiftCommand> command = new ArrayList<>(); |
| | | switch (Objects.requireNonNull(MotionCtgType.get(motion.getMotionCtgEl()))){ |
| | | case LIFT_MOVE: |
| | | // 如果已经在目标层,那边层过滤 |
| | |
| | | } |
| | | |
| | | command = liftThread.getMoveCommand(motion.getTaskNo(), 0, Integer.parseInt(motion.getTarget()), LiftCommandModeType.MOVE); |
| | | list.add(command); |
| | | list.addAll(command); |
| | | return liftAction.assignWork(liftThread.getDevice(), assignCommand); |
| | | case LIFT_WITH_GOODS: |
| | | // if (liftProtocol.getHasTray()) { |
| | |
| | | // } |
| | | |
| | | command = liftThread.getPalletInOutCommand(motion.getTaskNo(), Integer.parseInt(motion.getOrigin()), Integer.parseInt(motion.getTarget()), motion.getOriDrt(), motion.getTarDrt(), LiftCommandModeType.PALLET_INOUT); |
| | | list.add(command); |
| | | list.addAll(command); |
| | | return liftAction.assignWork(liftThread.getDevice(), assignCommand); |
| | | case LIFT_WITH_SHUTTLE: |
| | | if (!liftProtocol.getHasCar()) { |
| | |
| | | } |
| | | |
| | | command = liftThread.getMoveWithShuttleCommand(motion.getTaskNo(), Integer.parseInt(motion.getOrigin()), Integer.parseInt(motion.getTarget()), LiftCommandModeType.MOVE_CAR); |
| | | list.add(command); |
| | | list.addAll(command); |
| | | return liftAction.assignWork(liftThread.getDevice(), assignCommand); |
| | | case LIFT_WITH_GOODS_AND_SHUTTLE: |
| | | return false; |
| | |
| | | } |
| | | })) { |
| | | //锁定提升机 |
| | | LiftCommand lockCommand = liftThread.getLockCommand(motion.getTaskNo(), true);//获取提升机锁定命令 |
| | | List<LiftCommand> lockCommand = liftThread.getLockCommand(motion.getTaskNo(), true);//获取提升机锁定命令 |
| | | |
| | | LiftAssignCommand liftAssignCommand = new LiftAssignCommand(); |
| | | liftAssignCommand.setLiftNo(liftThread.getStatus().getLiftNo()); |
| | | liftAssignCommand.setTaskNo(motion.getTaskNo()); |
| | | ArrayList<LiftCommand> list = new ArrayList<>(); |
| | | list.add(lockCommand); |
| | | list.addAll(lockCommand); |
| | | liftAssignCommand.setCommands(list); |
| | | |
| | | liftAction.assignWork(liftThread.getDevice(), liftAssignCommand); |
| | |
| | | } |
| | | })) { |
| | | //锁定提升机 |
| | | LiftCommand lockCommand = liftThread.getLockCommand(motion.getTaskNo(), true);//获取提升机锁定命令 |
| | | List<LiftCommand> lockCommand = liftThread.getLockCommand(motion.getTaskNo(), true);//获取提升机锁定命令 |
| | | if (lockCommand == null) { |
| | | return false; |
| | | } |
| | |
| | | liftAssignCommand.setLiftNo(liftThread.getStatus().getLiftNo()); |
| | | liftAssignCommand.setTaskNo(motion.getTaskNo()); |
| | | ArrayList<LiftCommand> list = new ArrayList<>(); |
| | | list.add(lockCommand); |
| | | list.addAll(lockCommand); |
| | | liftAssignCommand.setCommands(list); |
| | | |
| | | liftAction.assignWork(liftThread.getDevice(), liftAssignCommand); |
| | |
| | | } |
| | | })) { |
| | | //解锁提升机 |
| | | LiftCommand lockCommand = liftThread.getLockCommand(motion.getTaskNo(), false);//获取提升机解锁命令 |
| | | List<LiftCommand> lockCommand = liftThread.getLockCommand(motion.getTaskNo(), false);//获取提升机解锁命令 |
| | | |
| | | LiftAssignCommand liftAssignCommand = new LiftAssignCommand(); |
| | | liftAssignCommand.setLiftNo(liftThread.getStatus().getLiftNo()); |
| | | liftAssignCommand.setTaskNo(motion.getTaskNo()); |
| | | ArrayList<LiftCommand> list = new ArrayList<>(); |
| | | list.add(lockCommand); |
| | | list.addAll(lockCommand); |
| | | liftAssignCommand.setCommands(list); |
| | | |
| | | liftAction.assignWork(liftThread.getDevice(), liftAssignCommand); |
| | |
| | | |
| | | //判断小车是否已到位 |
| | | if (liftProtocol.getHasCar()) { |
| | | LiftCommand signalCommand = liftThread.getShuttleSignalCommand(motion.getTaskNo(), true);//获取小车已到位命令 |
| | | List<LiftCommand> signalCommand = liftThread.getShuttleSignalCommand(motion.getTaskNo(), true);//获取小车已到位命令 |
| | | if(signalCommand != null) { |
| | | boolean hasKey = redisUtil.hasKey(DeviceRedisConstant.COMMAND_TMP + motion.getTaskNo()); |
| | | if (!hasKey) { |
| | |
| | | liftAssignCommand.setLiftNo(liftThread.getStatus().getLiftNo()); |
| | | liftAssignCommand.setTaskNo(motion.getTaskNo()); |
| | | ArrayList<LiftCommand> list = new ArrayList<>(); |
| | | list.add(signalCommand); |
| | | list.addAll(signalCommand); |
| | | liftAssignCommand.setCommands(list); |
| | | liftAction.assignWork(liftThread.getDevice(), liftAssignCommand); |
| | | return false; |
| | |
| | | } |
| | | })) { |
| | | //解锁提升机 |
| | | LiftCommand lockCommand = liftThread.getLockCommand(motion.getTaskNo(), false);//获取提升机解锁命令 |
| | | List<LiftCommand> lockCommand = liftThread.getLockCommand(motion.getTaskNo(), false);//获取提升机解锁命令 |
| | | |
| | | LiftAssignCommand liftAssignCommand = new LiftAssignCommand(); |
| | | liftAssignCommand.setLiftNo(liftThread.getStatus().getLiftNo()); |
| | | liftAssignCommand.setTaskNo(motion.getTaskNo()); |
| | | ArrayList<LiftCommand> list = new ArrayList<>(); |
| | | list.add(lockCommand); |
| | | list.addAll(lockCommand); |
| | | liftAssignCommand.setCommands(list); |
| | | |
| | | liftAction.assignWork(liftThread.getDevice(), liftAssignCommand); |
| | |
| | | |
| | | //判断小车是否已离开 |
| | | if (!liftProtocol.getHasCar()) { |
| | | LiftCommand signalCommand = liftThread.getShuttleSignalCommand(motion.getTaskNo(), false);//获取小车已驾离命令 |
| | | List<LiftCommand> signalCommand = liftThread.getShuttleSignalCommand(motion.getTaskNo(), false);//获取小车已驾离命令 |
| | | if(signalCommand != null) { |
| | | boolean hasKey = redisUtil.hasKey(DeviceRedisConstant.COMMAND_TMP + motion.getTaskNo()); |
| | | if (!hasKey) { |
| | |
| | | liftAssignCommand.setLiftNo(liftThread.getStatus().getLiftNo()); |
| | | liftAssignCommand.setTaskNo(motion.getTaskNo()); |
| | | ArrayList<LiftCommand> list = new ArrayList<>(); |
| | | list.add(signalCommand); |
| | | list.addAll(signalCommand); |
| | | liftAssignCommand.setCommands(list); |
| | | liftAction.assignWork(liftThread.getDevice(), liftAssignCommand); |
| | | return false; |
| | |
| | | } |
| | | })) { |
| | | //解锁提升机 |
| | | LiftCommand lockCommand = liftThread.getLockCommand(motion.getTaskNo(), false);//获取提升机解锁命令 |
| | | List<LiftCommand> lockCommand = liftThread.getLockCommand(motion.getTaskNo(), false);//获取提升机解锁命令 |
| | | |
| | | LiftAssignCommand liftAssignCommand = new LiftAssignCommand(); |
| | | liftAssignCommand.setLiftNo(liftThread.getStatus().getLiftNo()); |
| | | liftAssignCommand.setTaskNo(motion.getTaskNo()); |
| | | ArrayList<LiftCommand> list = new ArrayList<>(); |
| | | list.add(lockCommand); |
| | | list.addAll(lockCommand); |
| | | liftAssignCommand.setCommands(list); |
| | | |
| | | liftAction.assignWork(liftThread.getDevice(), liftAssignCommand); |
| | |
| | | import com.zy.asrs.wcs.rcs.model.enums.SlaveType; |
| | | import com.zy.asrs.wcs.rcs.model.protocol.ShuttleProtocol; |
| | | import com.zy.asrs.wcs.rcs.service.DeviceService; |
| | | import com.zy.asrs.wcs.rcs.thread.LiftThread; |
| | | import com.zy.asrs.wcs.rcs.thread.ShuttleThread; |
| | | import com.zy.asrs.wcs.system.entity.Dict; |
| | | import com.zy.asrs.wcs.system.service.DictService; |
| | |
| | | continue; |
| | | } |
| | | |
| | | Device recentTransferLift = Utils.getRecentTransferLift(locNo, Integer.parseInt(device.getDeviceNo())); |
| | | if (recentTransferLift == null) { |
| | | //获取距离目标位置最近的空闲可换层提升机 |
| | | LiftThread liftThread = liftDispatcher.searchIdleLift(locNo, task.getHostId(), true); |
| | | if (liftThread == null) { |
| | | continue; |
| | | } |
| | | Device recentTransferLift = liftThread.getDevice(); |
| | | |
| | | //获取小车楼层提升机待机位 |
| | | ShuttleStandby shuttleStandby = shuttleStandbyService.getOne(new LambdaQueryWrapper<ShuttleStandby>() |
| | |
| | | return true;//有任务绑定 |
| | | } |
| | | |
| | | /** |
| | | * 获取距离目标库位最近的提升机 |
| | | */ |
| | | public static Device getRecentTransferLift(String locNo, Integer shuttleNo) { |
| | | BasLiftService basLiftService = SpringUtils.getBean(BasLiftService.class); |
| | | DeviceService deviceService = SpringUtils.getBean(DeviceService.class); |
| | | if (basLiftService == null) { |
| | | return null; |
| | | } |
| | | |
| | | Integer distance = Integer.MAX_VALUE; |
| | | Long liftDeviceId = null; |
| | | for (BasLift basLift : basLiftService.list(new LambdaQueryWrapper<BasLift>() |
| | | .eq(BasLift::getStatus, 1) |
| | | .eq(BasLift::getTransfer, 1))) { |
| | | int lev = Utils.getLev(locNo); |
| | | String liftLocNo = Utils.getLocNo(basLift.getRow(), basLift.getBay(), lev); |
| | | List<NavigateNode> nodeList = NavigateUtils.calc(locNo, liftLocNo, NavigationMapType.NONE.id, Utils.getShuttlePoints(shuttleNo, Utils.getLev(locNo))); |
| | | Integer originPathAllDistance = NavigateUtils.getOriginPathAllDistance(nodeList);//总距离 |
| | | if (originPathAllDistance < distance) { |
| | | distance = originPathAllDistance; |
| | | liftDeviceId = basLift.getDeviceId(); |
| | | } |
| | | } |
| | | |
| | | if (liftDeviceId == null) { |
| | | return null; |
| | | } |
| | | |
| | | Device device = deviceService.getById(liftDeviceId); |
| | | if (device == null) { |
| | | return null; |
| | | } |
| | | return device; |
| | | } |
| | | |
| | | } |
| | |
| | | import com.zy.asrs.wcs.rcs.model.enums.LiftProtocolStatusType; |
| | | import com.zy.asrs.wcs.rcs.model.protocol.LiftProtocol; |
| | | |
| | | import java.util.List; |
| | | |
| | | public interface LiftThread extends ThreadHandler{ |
| | | |
| | | LiftProtocol getStatus();//获取提升机状态 |
| | |
| | | |
| | | boolean isLock(ExecuteSupport support); |
| | | |
| | | boolean commandFinished(Integer taskNo); |
| | | |
| | | //***************获取命令***************** |
| | | LiftCommand getMoveCommand(Integer taskNo, Integer sourceLev, Integer targetLev, LiftCommandModeType mode);//提升机移动 |
| | | List<LiftCommand> getMoveCommand(Integer taskNo, Integer sourceLev, Integer targetLev, LiftCommandModeType mode);//提升机移动 |
| | | |
| | | LiftCommand getMoveWithShuttleCommand(Integer taskNo, Integer sourceLev, Integer targetLev, LiftCommandModeType mode);//载车移动 |
| | | List<LiftCommand> getMoveWithShuttleCommand(Integer taskNo, Integer sourceLev, Integer targetLev, LiftCommandModeType mode);//载车移动 |
| | | |
| | | LiftCommand getPalletInOutCommand(Integer taskNo, Integer sourceLev, Integer targetLev, Integer originSta, Integer targetSta, LiftCommandModeType mode);//托盘出入 |
| | | List<LiftCommand> getPalletInOutCommand(Integer taskNo, Integer sourceLev, Integer targetLev, Integer originSta, Integer targetSta, LiftCommandModeType mode);//托盘出入 |
| | | |
| | | LiftCommand getLockCommand(Integer taskNo, Boolean lock);//锁定/解锁提升机 |
| | | List<LiftCommand> getLockCommand(Integer taskNo, Boolean lock);//锁定/解锁提升机 |
| | | |
| | | LiftCommand getShuttleSignalCommand(Integer taskNo, Boolean signal);//小车已到位/已驶离信号 |
| | | List<LiftCommand> getShuttleSignalCommand(Integer taskNo, Boolean signal);//小车已到位/已驶离信号 |
| | | |
| | | } |
| | |
| | | } |
| | | |
| | | @Override |
| | | public boolean commandFinished(Integer taskNo) { |
| | | return false; |
| | | } |
| | | |
| | | @Override |
| | | public LiftCommand getMoveCommand(Integer taskNo, Integer sourceLev, Integer targetLev, LiftCommandModeType mode) { |
| | | public List<LiftCommand> getMoveCommand(Integer taskNo, Integer sourceLev, Integer targetLev, LiftCommandModeType mode) { |
| | | /** |
| | | * 任务类型 |
| | | * 1=移托盘;升降机将源站台托盘移到目标站台 |
| | |
| | | command.setMode(LiftCommandModeType.MOVE.id); |
| | | command.setOriginLev(sourceLev); |
| | | command.setTargetLev(targetLev); |
| | | return command; |
| | | |
| | | ArrayList<LiftCommand> list = new ArrayList<>(); |
| | | list.add(command); |
| | | return list; |
| | | } |
| | | |
| | | @Override |
| | | public LiftCommand getMoveWithShuttleCommand(Integer taskNo, Integer sourceLev, Integer targetLev, LiftCommandModeType mode) { |
| | | public List<LiftCommand> getMoveWithShuttleCommand(Integer taskNo, Integer sourceLev, Integer targetLev, LiftCommandModeType mode) { |
| | | return getMoveCommand(taskNo, sourceLev, targetLev, mode); |
| | | } |
| | | |
| | | @Override |
| | | public LiftCommand getPalletInOutCommand(Integer taskNo, Integer sourceLev, Integer targetLev, Integer originSta, Integer targetSta, LiftCommandModeType mode) { |
| | | public List<LiftCommand> getPalletInOutCommand(Integer taskNo, Integer sourceLev, Integer targetLev, Integer originSta, Integer targetSta, LiftCommandModeType mode) { |
| | | return getMoveCommand(taskNo, sourceLev, targetLev, mode); |
| | | } |
| | | |
| | | @Override |
| | | public LiftCommand getLockCommand(Integer taskNo, Boolean lock) { |
| | | public List<LiftCommand> getLockCommand(Integer taskNo, Boolean lock) { |
| | | return null; |
| | | } |
| | | |
| | | @Override |
| | | public LiftCommand getShuttleSignalCommand(Integer taskNo, Boolean signal) { |
| | | public List<LiftCommand> getShuttleSignalCommand(Integer taskNo, Boolean signal) { |
| | | return null; |
| | | } |
| | | |
| | |
| | | |
| | | import java.text.MessageFormat; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.ArrayList; |
| | | import java.util.Date; |
| | | import java.util.HashMap; |
| | | import java.util.List; |
| | | |
| | | @Slf4j |
| | | @SuppressWarnings("all") |
| | |
| | | return extend.getLock(); |
| | | } |
| | | |
| | | @Override |
| | | public boolean commandFinished(Integer taskNo) { |
| | | try { |
| | | LiftCommand command = getTaskClearCommand(); |
| | | String loginToken = requestLoginToken(); |
| | | if (loginToken == null) { |
| | | return false; |
| | | } |
| | | |
| | | HashMap<String, Object> headers = new HashMap<>(); |
| | | headers.put("Authorization", "Bearer " + loginToken); |
| | | |
| | | String response = new HttpHandler.Builder() |
| | | .setUri(API_URL) |
| | | .setPath("/RDS/lifterOperation") |
| | | .setHeaders(headers) |
| | | .setJson(command.getBody()) |
| | | .build() |
| | | .doPost(); |
| | | JSONObject jsonObject = JSON.parseObject(response); |
| | | Integer code = jsonObject.getInteger("code"); |
| | | if (code.equals(200)) { |
| | | return true; |
| | | } |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | //***************设备层通讯-不同厂商设备通讯方案不一致*************** |
| | | |
| | | //请求登录 |
| | |
| | | |
| | | //空载移动 |
| | | @Override |
| | | public LiftCommand getMoveCommand(Integer taskNo, Integer sourceLev, Integer targetLev, LiftCommandModeType mode) { |
| | | public List<LiftCommand> getMoveCommand(Integer taskNo, Integer sourceLev, Integer targetLev, LiftCommandModeType mode) { |
| | | int taskMode = 3;//空载移动 |
| | | |
| | | HashMap<String, Object> body = new HashMap<>(); |
| | |
| | | command.setMode(LiftCommandModeType.MOVE.id); |
| | | command.setOriginLev(0); |
| | | command.setTargetLev(targetLev); |
| | | return command; |
| | | |
| | | ArrayList<LiftCommand> list = new ArrayList<>(); |
| | | list.add(command); |
| | | list.addAll(getTaskClearCommand()); |
| | | return list; |
| | | } |
| | | |
| | | //载车移动 |
| | | @Override |
| | | public LiftCommand getMoveWithShuttleCommand(Integer taskNo, Integer sourceLev, Integer targetLev, LiftCommandModeType mode) { |
| | | public List<LiftCommand> getMoveWithShuttleCommand(Integer taskNo, Integer sourceLev, Integer targetLev, LiftCommandModeType mode) { |
| | | HashMap<String, Object> body = new HashMap<>(); |
| | | body.put("messageName", "lifterTask"); |
| | | body.put("msgTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); |
| | |
| | | command.setMode(LiftCommandModeType.MOVE.id); |
| | | command.setOriginLev(sourceLev); |
| | | command.setTargetLev(targetLev); |
| | | return command; |
| | | |
| | | ArrayList<LiftCommand> list = new ArrayList<>(); |
| | | list.add(command); |
| | | list.addAll(getTaskClearCommand()); |
| | | return list; |
| | | } |
| | | |
| | | //托盘出入 |
| | | @Override |
| | | public LiftCommand getPalletInOutCommand(Integer taskNo, Integer sourceLev, Integer targetLev, Integer originSta, Integer targetSta, LiftCommandModeType mode) { |
| | | public List<LiftCommand> getPalletInOutCommand(Integer taskNo, Integer sourceLev, Integer targetLev, Integer originSta, Integer targetSta, LiftCommandModeType mode) { |
| | | HashMap<String, Object> body = new HashMap<>(); |
| | | body.put("messageName", "lifterTask"); |
| | | body.put("msgTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); |
| | |
| | | command.setTargetLev(targetLev); |
| | | command.setOriginSta(originSta); |
| | | command.setTargetSta(targetSta); |
| | | return command; |
| | | |
| | | ArrayList<LiftCommand> list = new ArrayList<>(); |
| | | list.add(command); |
| | | list.addAll(getTaskClearCommand()); |
| | | return list; |
| | | } |
| | | |
| | | //锁定/解锁提升机 |
| | | @Override |
| | | public LiftCommand getLockCommand(Integer taskNo, Boolean lock) { |
| | | public List<LiftCommand> getLockCommand(Integer taskNo, Boolean lock) { |
| | | HashMap<String, Object> body = new HashMap<>(); |
| | | body.put("messageName", "lifterOperation"); |
| | | body.put("msgTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); |
| | |
| | | command.setLiftNo(Integer.valueOf(this.device.getDeviceNo())); |
| | | command.setBody(JSON.toJSONString(body)); |
| | | command.setMode(lock ? LiftCommandModeType.LOCK.id : LiftCommandModeType.UNLOCK.id); |
| | | return command; |
| | | |
| | | ArrayList<LiftCommand> list = new ArrayList<>(); |
| | | list.add(command); |
| | | return list; |
| | | } |
| | | |
| | | //小车已到位/已驶离信号 |
| | | @Override |
| | | public LiftCommand getShuttleSignalCommand(Integer taskNo, Boolean signal) { |
| | | public List<LiftCommand> getShuttleSignalCommand(Integer taskNo, Boolean signal) { |
| | | HashMap<String, Object> body = new HashMap<>(); |
| | | body.put("messageName", "lifterOperation"); |
| | | body.put("msgTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); |
| | |
| | | command.setLiftNo(Integer.valueOf(this.device.getDeviceNo())); |
| | | command.setBody(JSON.toJSONString(body)); |
| | | command.setMode(signal ? LiftCommandModeType.LOCK.id : LiftCommandModeType.UNLOCK.id); |
| | | return command; |
| | | |
| | | ArrayList<LiftCommand> list = new ArrayList<>(); |
| | | list.add(command); |
| | | return list; |
| | | } |
| | | |
| | | //获取提升机任务清除命令 |
| | | private LiftCommand getTaskClearCommand() { |
| | | private List<LiftCommand> getTaskClearCommand() { |
| | | HashMap<String, Object> body = new HashMap<>(); |
| | | body.put("messageName", "lifterOperation"); |
| | | body.put("msgTime", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date())); |
| | |
| | | command.setLiftNo(Integer.valueOf(this.device.getDeviceNo())); |
| | | command.setBody(JSON.toJSONString(body)); |
| | | command.setMode(LiftCommandModeType.RESET.id); |
| | | return command; |
| | | |
| | | ArrayList<LiftCommand> list = new ArrayList<>(); |
| | | list.add(command); |
| | | return list; |
| | | } |
| | | |
| | | /** |