| | |
| | | success = true; |
| | | break; |
| | | case ORI_STA: |
| | | // load from sta |
| | | sta = staService.getById(currTask.getOriSta()); |
| | | boolean reserveWaitingOk = staReserveService.waitingStaReserve(sta, currTask, 1, StaReserveType.OUT); |
| | | if (!reserveWaitingOk) { |
| | | // reserve to be waiting |
| | | if (!staReserveService.waitingStaReserve(sta, currTask, 1, StaReserveType.OUT)) { |
| | | break; |
| | | } |
| | | |
| | | boolean permit = conveyorStationService.allowAgvWork(sta, currTask, currSeg, StaReserveType.OUT); |
| | | if (!permit) { |
| | | // convey plc valid |
| | | if (!conveyorStationService.allowAgvWork(sta, currTask, currSeg, StaReserveType.OUT)) { |
| | | // reserve rollback |
| | | staReserveService.rollbackWaitingToReserved(sta, currTask, StaReserveType.OUT); |
| | | break; |
| | | } |
| | | |
| | | success = true; |
| | | break; |
| | | case DEST_STA: |
| | | // place sta |
| | | // place to sta |
| | | sta = staService.getById(currTask.getDestSta()); |
| | | success = staReserveService.waitingStaReserve(sta, currTask, 1, StaReserveType.IN); |
| | | // reserve to be waiting |
| | | if (!staReserveService.waitingStaReserve(sta, currTask, 1, StaReserveType.IN)) { |
| | | break; |
| | | } |
| | | // convey plc valid |
| | | if (!conveyorStationService.allowAgvWork(sta, currTask, currSeg, StaReserveType.OUT)) { |
| | | // reserve rollback |
| | | staReserveService.rollbackWaitingToReserved(sta, currTask, StaReserveType.OUT); |
| | | break; |
| | | } |
| | | success = true; |
| | | break; |
| | | default: |
| | | log.error("agv[{}] has wrong posType [{}], segment [{}]", protocol.getAgvNo(), posType.toString(), currSeg.getId()); |
| | | break; |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | } catch (Exception e) { |
| | | log.error("agv[{}] failed to deal with action request, qrCode={}", agv.getUuid(), agv_06_up.getVal(), e); |
| | | } |
| | |
| | | |
| | | Boolean waitingStaReserve(Sta sta, Task task, Integer qty, StaReserveType type); |
| | | |
| | | Boolean rollbackWaitingToReserved(Sta sta, Task currTask, StaReserveType staReserveType); |
| | | Boolean rollbackWaitingToReserved(Sta sta, Task task, StaReserveType staReserveType); |
| | | |
| | | |
| | | void confirmStaReserve(Sta sta, Task task, Integer qty, StaReserveType type); |
| | |
| | | qty = Optional.ofNullable(qty).orElse(DEFAULT_QTY); |
| | | |
| | | // update reserve to be waiting state |
| | | int changed = this.baseMapper.updateStateToWaiting(sta.getId() |
| | | , task.getId() |
| | | int changed = this.baseMapper.updateStateToWaiting(task.getId() |
| | | , sta.getId() |
| | | , type.toString() |
| | | , StaReserveStateType.WAITING.toString() |
| | | , WAITING_EXPIRE_TIME |
| | |
| | | if (Cools.isEmpty(list)) { |
| | | return false; |
| | | } |
| | | |
| | | StaReserve reserve = list.get(0); |
| | | |
| | | StaReserveStateType stateType = StaReserveStateType.of(reserve.getState()); |
| | |
| | | } |
| | | |
| | | @Override |
| | | public Boolean rollbackWaitingToReserved(Sta sta, Task currTask, StaReserveType staReserveType) { |
| | | |
| | | rollbackWaitingToReserved |
| | | |
| | | return null; |
| | | public Boolean rollbackWaitingToReserved(Sta sta, Task task, StaReserveType type) { |
| | | int changed = this.baseMapper.updateStateBackToWaiting( |
| | | task.getId() |
| | | , sta.getId() |
| | | , type.toString() |
| | | , StaReserveStateType.RESERVED.toString() |
| | | , WAITING_EXPIRE_TIME |
| | | ); |
| | | return changed > 0; |
| | | } |
| | | |
| | | @Override |
| | |
| | | <update id="updateStateBackToWaiting"> |
| | | UPDATE man_sta_reserve |
| | | SET state = #{state}, |
| | | expire_time = DATE_ADD(NOW(), INTERVAL (#{reservedExtendMs} * 1000) MICROSECOND), |
| | | expire_time = DATE_ADD(NOW(), INTERVAL #{extendMs} MILLISECOND), |
| | | update_time = NOW() |
| | | WHERE task_id = #{taskId} |
| | | AND sta_id = #{staId} |