| | |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import java.util.List; |
| | | import java.util.Objects; |
| | | |
| | | // man_segment: start_time, end_time |
| | | /** |
| | | * alter table man_sta |
| | | * add capacity int null comment '槽位数' after angle; |
| | | * |
| | | * alter table man_sta |
| | | * add occ_cnt int null comment '占用数' after capacity; |
| | | * |
| | | * alter table man_sta |
| | | * add rsv_in_cnt int null comment '预约放货量' after occ_cnt; |
| | | * |
| | | * alter table man_sta |
| | | * add rsv_out_cnt int null comment '预约取货量' after rsv_in_cnt; |
| | | */ |
| | | @Slf4j |
| | | @Service |
| | | public class TransferStationHandler { |
| | |
| | | if (currSeg == null) { |
| | | throw new NullPointerException("segment is null in hasDelayAtSta."); |
| | | } |
| | | Long agvId = currSeg.getAgvId(); |
| | | // 判断AGV是否在滚动输送线前 |
| | | Code currentCode = agvDetailService.getCurrentCode(currSeg.getAgvId()); |
| | | Code currentCode = agvDetailService.getCurrentCode(agvId); |
| | | if (null == currentCode) { |
| | | return false; |
| | | } |
| | |
| | | } |
| | | long preEndTime = preSeg.getEndTime().getTime(); |
| | | long now = System.currentTimeMillis(); |
| | | Long agvId = currSeg.getAgvId(); |
| | | |
| | | // inbound |
| | | if (prePosType.equals(TaskPosDto.PosType.ORI_STA)) { |
| | | |
| | | // 背篓未满才等 |
| | | Integer backpack = agvService.getBackpack(agvId); |
| | | int countRemainingBackpack = segmentService.countRemainingBackpack(currSeg.getTravelId(), agvId); |
| | | if (countRemainingBackpack >= backpack) { |
| | | List<Integer> usedBackpacks = segmentService.selectUsedBackpacks(currSeg.getTravelId(), agvId); |
| | | if (usedBackpacks.size() >= backpack) { |
| | | return false; |
| | | } |
| | | |
| | | // sign waiting |
| | | if (currSeg.getRollerWaiting() == 0) { |
| | | currSeg.setRollerWaiting(1); |
| | | segmentService.updateById(currSeg); |
| | | } |
| | | |
| | | // timeout |
| | |
| | | return false; |
| | | } |
| | | |
| | | // sign waiting |
| | | if (currSeg.getRollerWaiting() == 0) { |
| | | currSeg.setRollerWaiting(1); |
| | | segmentService.updateById(currSeg); |
| | | } |
| | | |
| | | // timeout |
| | | return (now - preEndTime) < PLACE_DELAY_MS; |
| | | } |