#
vincentlu
6 天以前 7c893c661975dd03600113d84d3d5fadd33d1cb2
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java
@@ -90,7 +90,7 @@
    @Autowired
    private SegmentService segmentService;
    @Autowired
    private TrafficService trafficService;
    private LaneService laneService;
    @Autowired
    private AgvModelService agvModelService;
    @Autowired
@@ -907,6 +907,7 @@
            AgvModel agvModel = agvModelService.getByAgvId(agvId);
            Double workDirection = agvModel.getWorkDirection();
            final double oppWorkDir = (workDirection + 180) % 360;
            boolean backupAction = null != agvModel.getBackupAction() && agvModel.getBackupActionBool();
            boolean needUndocking = null != agvModel.getNeedUndocking() && agvModel.getNeedUndockingBool();
            AgvSpeedType agvSpeedType = AgvSpeedType.query(agvModel.getTravelSpeed());
@@ -947,9 +948,24 @@
                        Double nextDirection = mapService.calculateDirection(lastCode, nextCode, angleOffsetVal);
                        // 反向角
                        final double oppWorkDir = (workDirection + 180) % 360;
                        final double oppLastDir = (lastDirection + 180) % 360;
                        // 巷道逻辑
                        if (!laneBuilder.isInitialized()) {
                            throw new BusinessException("lanes are not initialized");
                        }
                        LaneDto lastLaneDto = laneBuilder.search(lastCode.getData());
                        LaneDto nextLaneDto = laneBuilder.search(nextCode.getData());
                        // 进入巷道角度
                        Double laneDir = laneService.getLaneDirection(nextLaneDto);
                        // 第一次进入此巷道
                        boolean firstEnteringLane = null != laneDir && (
                                            lastLaneDto == null
                                        || !Objects.equals(lastLaneDto.getHashCode(), nextLaneDto.getHashCode())
                        );
                        // 如果下一个方向正好是作业方向的相反方向,则重置下一个方向为作业方向,标记 reverse = true
                        boolean reverse = false;
                        if (nextDirection.equals(oppWorkDir)) {