#
luxiaotao1123
2025-12-25 c66ae137f314075f261bb13a1158bbf8ea4bf645
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
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;
    }
 
}