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;
|
}
|
|
}
|