| | |
| | | if (dualCommand.getTaskMode().intValue() == DualCrnTaskModeType.PICK.id) { |
| | | if (crnProtocol.getStatus().equals(DualCrnStatusType.IDLE.id)) { |
| | | send = true; |
| | | } else { |
| | | logDualCrnWaitLimited("pick_station1_" + crnProtocol.getCrnNo(), 3, |
| | | "[WCS Trace][双工位入库] 工位1取货命令等待发送。crnNo={}, idx={}, taskNo1={}, taskNo2={}, status1={}({}), status2={}({}), taskSend1={}, taskSend2={}, nextTaskMode={}", |
| | | crnProtocol.getCrnNo(), idx, crnProtocol.getTaskNo(), crnProtocol.getTaskNoTwo(), |
| | | crnProtocol.getStatus(), crnProtocol.getStatusType(), |
| | | crnProtocol.getStatusTwo(), crnProtocol.getStatusTypeTwo(), |
| | | crnProtocol.getTaskSend(), crnProtocol.getTaskSendTwo(), dualCommand.getTaskMode()); |
| | | } |
| | | } else if (dualCommand.getTaskMode().intValue() == DualCrnTaskModeType.PUT.id) { |
| | | if (crnProtocol.getStatus().equals(DualCrnStatusType.FETCH_COMPLETE.id)) { |
| | | send = true; |
| | | } else { |
| | | logDualCrnWaitLimited("put_station1_status_" + crnProtocol.getCrnNo(), 3, |
| | | "[WCS Trace][双工位入库] 工位1放货命令等待FETCH_COMPLETE。crnNo={}, idx={}, currentTaskNo={}, status1={}({}), status2={}({}), taskSend1={}, taskSend2={}, taskReceive1={}, taskReceive2={}, loaded1={}, loaded2={}", |
| | | crnProtocol.getCrnNo(), idx, dualCommand.getTaskNo(), |
| | | crnProtocol.getStatus(), crnProtocol.getStatusType(), |
| | | crnProtocol.getStatusTwo(), crnProtocol.getStatusTypeTwo(), |
| | | crnProtocol.getTaskSend(), crnProtocol.getTaskSendTwo(), |
| | | crnProtocol.getTaskReceive(), crnProtocol.getTaskReceiveTwo(), |
| | | crnProtocol.getLoaded(), crnProtocol.getLoadedTwo()); |
| | | } |
| | | } |
| | | } else { |
| | | logDualCrnWaitLimited("station1_tasksend_" + crnProtocol.getCrnNo(), 3, |
| | | "[WCS Trace][双工位入库] 工位1命令等待taskSend清零。crnNo={}, idx={}, taskSend1={}, taskSend2={}, status1={}({}), status2={}({}), nextTaskMode={}", |
| | | crnProtocol.getCrnNo(), idx, crnProtocol.getTaskSend(), crnProtocol.getTaskSendTwo(), |
| | | crnProtocol.getStatus(), crnProtocol.getStatusType(), |
| | | crnProtocol.getStatusTwo(), crnProtocol.getStatusTypeTwo(), dualCommand.getTaskMode()); |
| | | } |
| | | } else { |
| | | log.info("工位1任务==========>{}, 任务模式---->{}", crnProtocol.getTaskNo(), crnProtocol.getMode()); |
| | |
| | | if (dualCommand.getTaskMode().intValue() == DualCrnTaskModeType.PICK.id) { |
| | | if (crnProtocol.getStatusTwo().equals(DualCrnStatusType.IDLE.id)) { |
| | | send = true; |
| | | } else { |
| | | logDualCrnWaitLimited("pick_station2_" + crnProtocol.getCrnNo(), 3, |
| | | "[WCS Trace][双工位入库] 工位2取货命令等待发送。crnNo={}, idx={}, taskNo1={}, taskNo2={}, status1={}({}), status2={}({}), taskSend1={}, taskSend2={}, nextTaskMode={}", |
| | | crnProtocol.getCrnNo(), idx, crnProtocol.getTaskNo(), crnProtocol.getTaskNoTwo(), |
| | | crnProtocol.getStatus(), crnProtocol.getStatusType(), |
| | | crnProtocol.getStatusTwo(), crnProtocol.getStatusTypeTwo(), |
| | | crnProtocol.getTaskSend(), crnProtocol.getTaskSendTwo(), dualCommand.getTaskMode()); |
| | | } |
| | | } else if (dualCommand.getTaskMode().intValue() == DualCrnTaskModeType.PUT.id) { |
| | | if (crnProtocol.getStatusTwo().equals(DualCrnStatusType.FETCH_COMPLETE.id)) { |
| | | send = true; |
| | | } else { |
| | | logDualCrnWaitLimited("put_station2_status_" + crnProtocol.getCrnNo(), 3, |
| | | "[WCS Trace][双工位入库] 工位2放货命令等待FETCH_COMPLETE。crnNo={}, idx={}, currentTaskNo={}, status1={}({}), status2={}({}), taskSend1={}, taskSend2={}, taskReceive1={}, taskReceive2={}, loaded1={}, loaded2={}", |
| | | crnProtocol.getCrnNo(), idx, dualCommand.getTaskNo(), |
| | | crnProtocol.getStatus(), crnProtocol.getStatusType(), |
| | | crnProtocol.getStatusTwo(), crnProtocol.getStatusTypeTwo(), |
| | | crnProtocol.getTaskSend(), crnProtocol.getTaskSendTwo(), |
| | | crnProtocol.getTaskReceive(), crnProtocol.getTaskReceiveTwo(), |
| | | crnProtocol.getLoaded(), crnProtocol.getLoadedTwo()); |
| | | } |
| | | } |
| | | } else { |
| | | logDualCrnWaitLimited("station2_tasksend_" + crnProtocol.getCrnNo(), 3, |
| | | "[WCS Trace][双工位入库] 工位2命令等待taskSend清零。crnNo={}, idx={}, taskSend1={}, taskSend2={}, status1={}({}), status2={}({}), nextTaskMode={}", |
| | | crnProtocol.getCrnNo(), idx, crnProtocol.getTaskSend(), crnProtocol.getTaskSendTwo(), |
| | | crnProtocol.getStatus(), crnProtocol.getStatusType(), |
| | | crnProtocol.getStatusTwo(), crnProtocol.getStatusTypeTwo(), dualCommand.getTaskMode()); |
| | | } |
| | | } |
| | | |
| | |
| | | //等待下一个任务 |
| | | Object wait = redisUtil.get(RedisKeyType.DUAL_CRN_PICK_WAIT_NEXT_TASK.key + crnProtocol.getCrnNo()); |
| | | if (wait != null) { |
| | | logDualCrnWaitLimited("put_wait_lock_" + crnProtocol.getCrnNo(), 2, |
| | | "[WCS Trace][双工位入库] 放货命令被取货等待锁拦住。crnNo={}, idx={}, station={}, currentTaskNo={}, status1={}({}), status2={}({}), taskSend1={}, taskSend2={}", |
| | | crnProtocol.getCrnNo(), idx, station, dualCommand.getTaskNo(), |
| | | crnProtocol.getStatus(), crnProtocol.getStatusType(), |
| | | crnProtocol.getStatusTwo(), crnProtocol.getStatusTypeTwo(), |
| | | crnProtocol.getTaskSend(), crnProtocol.getTaskSendTwo()); |
| | | return; |
| | | } |
| | | |
| | |
| | | } |
| | | } |
| | | |
| | | private void logDualCrnWaitLimited(String lockKey, int seconds, String format, Object... arguments) { |
| | | String redisKey = RedisKeyType.LOG_LIMIT.key + "dual_crn_wait_" + lockKey; |
| | | try { |
| | | Object lock = redisUtil.get(redisKey); |
| | | if (lock != null) { |
| | | return; |
| | | } |
| | | redisUtil.set(redisKey, "lock", seconds); |
| | | } catch (Exception e) { |
| | | // 诊断日志不能影响主流程。 |
| | | } |
| | | News.info(format, arguments); |
| | | } |
| | | |
| | | public boolean sendComm(Integer taskNo, Integer current) { |
| | | //两个工位只允许放相同类型任务 |
| | | if (taskNo != null && taskNo > 0) { |