#
luxiaotao1123
2025-12-25 c66ae137f314075f261bb13a1158bbf8ea4bf645
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TransferStationHandler.java
@@ -1,21 +1,60 @@
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.service.SegmentService;
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;
    public boolean isSegDelayAtSta(Segment segment) {
    /**
     *
     */
    // 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;
    }