package com.zy.acs.manager.core.service;
|
|
import com.zy.acs.manager.manager.entity.AgvDetail;
|
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
|
@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;
|
}
|
|
}
|