#
luxiaotao1123
2025-12-25 c66ae137f314075f261bb13a1158bbf8ea4bf645
#
9个文件已修改
99 ■■■■ 已修改文件
zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/KernelScheduler.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TrafficService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TransferStationHandler.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/Segment.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/SegmentService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/StaService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/SegmentServiceImpl.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/StaServiceImpl.java 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/core/scheduler/KernelScheduler.java
@@ -120,7 +120,7 @@
                    );
                    for (Segment segment : segments) {
//                        long startTime = System.currentTimeMillis();
                        if (!transferStationHandler.isSegDelayAtSta(segment)) {
                        if (!transferStationHandler.hasDelayAtSta(segment)) {
                            trafficService.trigger(segment);
                        }
//                        log.info("traffic calculation spend {} ms", System.currentTimeMillis() - startTime);
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java
@@ -1196,6 +1196,7 @@
            for (Segment item : segmentList) {
                item.setGroupId(groupId);
                item.setState(SegmentStateType.RUNNING.toString());
                item.setStartTime(now);
                item.setUpdateTime(now);
                if (null != algoStartTime) {
                    item.setAlgoTime((int) (now.getTime() - algoStartTime.getTime()));
@@ -1556,6 +1557,7 @@
        // segment
        for (Segment segment : segmentList) {
            segment.setState(SegmentStateType.FINISH.toString());
            segment.setEndTime(now);
            segment.setUpdateTime(now);
            if (!segmentService.updateById(segment)) {
                log.error("Segment [{}] 更新失败 !!!", segment.getGroupId() + " - " + segment.getSerial());
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/TrafficService.java
@@ -96,7 +96,6 @@
            Travel travel = travelService.getById(segment.getTravelId());
            Agv agv = agvService.getById(travel.getAgvId());
            AgvDetail agvDetail = agvDetailService.selectByAgvId(travel.getAgvId());
            long endNode = segment.getEndNode();
            // valid ----------------------------------------------------
@@ -208,9 +207,9 @@
            }
            // checkout path
            Code startCode = codeService.getCacheById(agvDetail.getRecentCode());
            Code startCode = agvDetailService.getCurrentCode(travel.getAgvId());
            Code endCode = codeService.getCacheById(endNode);
            long startTime = System.currentTimeMillis();
//            long startTime = System.currentTimeMillis();
            List<String> pathList = this.checkoutPath(agv, startCode, endCode, segment);
//            System.out.println("checkoutPath: " + (System.currentTimeMillis() - startTime));
            if (Cools.isEmpty(pathList)) {
@@ -277,7 +276,7 @@
            mapService.lockPath(null, pathList, agv.getUuid());
            startTime = System.currentTimeMillis();
//            startTime = System.currentTimeMillis();
            mainService.generateAction(segment.getAgvId(), segmentList, pathList, now);
//            System.out.println("generateAction: " + (System.currentTimeMillis() - startTime));
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;
    }
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/entity/Segment.java
@@ -95,6 +95,18 @@
    private Integer algoTime;
    /**
     * 开始时间
     */
    @ApiModelProperty(value= "开始时间")
    private Date startTime;
    /**
     * 结束时间
     */
    @ApiModelProperty(value= "结束时间")
    private Date endTime;
    /**
     * 进度
     */
    @ApiModelProperty(value= "进度")
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/SegmentService.java
@@ -12,7 +12,7 @@
    Segment getNextStepOfInit(Long travelId, Integer serial);
    Segment getPreviousStepOfFinish(Long travelId, Integer serial, String memo);
    Segment getPreviousStepOfFinish(Long travelId, Integer serial);
    List<Segment> getJustWaitingSeg(Long agvId);
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/StaService.java
@@ -2,9 +2,12 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.zy.acs.manager.manager.entity.Sta;
import com.zy.acs.manager.manager.enums.StaTypeType;
public interface StaService extends IService<Sta> {
    Sta selectByStaNo(String staNo);
    Sta selectByCode(Long codeId, StaTypeType type);
}
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/SegmentServiceImpl.java
@@ -65,12 +65,12 @@
    }
    @Override
    public Segment getPreviousStepOfFinish(Long travelId, Integer serial, String memo) {
    public Segment getPreviousStepOfFinish(Long travelId, Integer serial) {
        return this.getOne(new LambdaQueryWrapper<Segment>()
                .eq(Segment::getTravelId, travelId)
                .eq(Segment::getSerial, serial - 1)
//                .eq(Segment::getState, SegmentStateType.FINISH.toString())
                .eq(Segment::getMemo, memo)
                .eq(Segment::getState, SegmentStateType.FINISH.toString())
                .orderByDesc(Segment::getId)
        );
    }
zy-acs-manager/src/main/java/com/zy/acs/manager/manager/service/impl/StaServiceImpl.java
@@ -2,17 +2,33 @@
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zy.acs.framework.common.Cools;
import com.zy.acs.manager.manager.entity.Sta;
import com.zy.acs.manager.manager.enums.StaTypeType;
import com.zy.acs.manager.manager.enums.StatusType;
import com.zy.acs.manager.manager.mapper.StaMapper;
import com.zy.acs.manager.manager.service.StaService;
import org.springframework.stereotype.Service;
import java.util.List;
@Service("staService")
public class StaServiceImpl extends ServiceImpl<StaMapper, Sta> implements StaService {
    @Override
    public Sta selectByStaNo(String staNo) {
        return this.getOne(new LambdaQueryWrapper<Sta>().eq(Sta::getStaNo, staNo));
        return this.getOne(new LambdaQueryWrapper<Sta>()
                .eq(Sta::getStaNo, staNo).eq(Sta::getStatus, StatusType.ENABLE.val));
    }
    @Override
    public Sta selectByCode(Long codeId, StaTypeType type) {
        if (Cools.isEmpty(codeId, type)) {
            return null;
        }
        List<Sta> list = this.list(new LambdaQueryWrapper<Sta>()
                .eq(Sta::getCode, codeId).eq(Sta::getStaType, type.val()).eq(Sta::getStatus, StatusType.ENABLE.val));
        return list.stream().findFirst().orElse(null);
    }
}