#
vincentlu
14 小时以前 766d5e2f27f90e096b4ce5ecfe28878b774efb10
#
1个文件已修改
34 ■■■■■ 已修改文件
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java 34 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java
@@ -945,10 +945,13 @@
                        String next = pathListPart.get(i);
                        Code nextCode = codeService.getCacheByData(next);
                        // 车头朝前的下一个行走方向
                        Double nextDirection = mapService.calculateDirection(lastCode, nextCode, angleOffsetVal);
                        // 反向角
                        final double oppLastDir = (lastDirection + 180) % 360;
                        // 是否倒退行走
                        boolean reverse = false;
                        // 巷道逻辑
                        if (!laneBuilder.isInitialized()) {
@@ -957,21 +960,16 @@
                        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())
                        );
                        boolean reverse = false;
                        Double lastLaneDir = laneService.getLaneDirection(lastLaneDto);
                        Double nextLaneDir = laneService.getLaneDirection(nextLaneDto);
                        // 巷道强制转弯,优先级 > workDirection
                        if (firstEnteringLane) {
//                            final double oppLaneDir = (laneDir + 180) % 360;
                            if (!lastDirection.equals(laneDir)) {
                        if (null != nextLaneDir) {
                            nextDirection = nextLaneDir;
                            if (!lastDirection.equals(nextDirection)) {
                                if (!lastCode.getCornerBool()) {
                                    throw new CoolException(agvNo + "号小车进入巷道需调整方向为 " + laneDir + "°,请推至转弯点手动调整");
                                    throw new CoolException(agvNo + "号小车进入巷道需调整方向为 " + nextDirection + "°,请推至转弯点手动调整");
                                }
                                // turn
                                actionList.add(new Action(
@@ -983,13 +981,21 @@
                                        ActionTypeType.TurnCorner.desc,    // 名称
                                        (double) mapService.spinDirection(lastCode).val,     // 属性值
                                        lastCode.getData(),    // 地面码
                                        String.valueOf(laneDir),   // 动作参数
                                        String.valueOf(nextDirection),   // 动作参数
                                        ActionTypeType.TurnCorner.val(),    // 动作类型
                                        actionPrepareSts,    // 动作进度
                                        agvId,    // AGV
                                        now    // 工作时间
                                ));
                                lastDirection = laneDir;
                                lastDirection = nextDirection;
                            }
                        } else if (null != lastLaneDir) {
                            nextDirection = lastLaneDir;
                            if (!lastDirection.equals(nextDirection)) {
                                if (!lastCode.getCornerBool()) {
                                    throw new CoolException(agvNo + "号小车离开巷道需调整方向为 " + nextDirection + "°,请推至转弯点手动调整");
                                }
                            }
                        } else {