package com.zy.acs.manager.core.service; import com.zy.acs.manager.manager.entity.Code; import com.zy.acs.manager.manager.entity.Segment; import com.zy.acs.manager.manager.entity.Sta; import com.zy.acs.manager.manager.enums.StaTypeType; import com.zy.acs.manager.manager.service.*; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.Date; // 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 { @Autowired private SegmentService segmentService; @Autowired private AgvService agvService; @Autowired private AgvDetailService agvDetailService; @Autowired private CodeService codeService; @Autowired private StaService staService; /** * */ // return is need wait public boolean hasDelayAtSta(Segment segment) { if (segment == null) { throw new NullPointerException("segment is null in hasDelayAtSta."); } // 判断AGV是否在滚动输送线前 Code currentCode = agvDetailService.getCurrentCode(segment.getAgvId()); if (null == currentCode) { return false; } Sta rollerSta = staService.selectByCode(currentCode.getId(), StaTypeType.ROLLER); if (null == rollerSta) { return false; } // 如果为第一个segment(没有previous segment),则不需要等待 Segment preSeg = segmentService.getPreviousStepOfFinish(segment.getTravelId(), segment.getSerial()); if (preSeg == null) { return false; } Date preSegEndTime = preSeg.getEndTime(); if (null == preSegEndTime) { return false; } Date now = new Date(); return false; } }