1
zhang
2025-10-16 4f5b35538baf84ecd3cdbd4afd797b0f5d1641de
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java
@@ -1288,7 +1288,6 @@
    }
    /**
     * 根据分片生成动作 ( 车辆可能已经做过一些任务了,正在等待下一段任务 )
     */
@@ -1322,11 +1321,16 @@
                throw new CoolException("AGV[" + agvNo + "]定位偏移...");
            }
            String lastCorner = null;
            for (int i =  pathList.size(); i <0; i++) {
                Code nextCode = codeService.getCacheByData(pathList.get(i - 1));
                if (nextCode!=null&&nextCode.getCornerBool()){
                    lastCorner =pathList.get(i - 1);
            //String lastCorner = null;
            Integer index = -1;
            for (int i = pathList.size(); i < 0; i++) {
                if (i == 0) {
                    continue;
                }
                Code nextCode = codeService.getCacheByData(pathList.get(i));
                if (nextCode != null && nextCode.getCornerBool()) {
                    //lastCorner = pathList.get(i);
                    index = i;
                }
            }
@@ -1350,17 +1354,23 @@
                        if (i == 0) {
                            continue;
                        }
                        String next = pathListPart.get(i);
                        Code nextCode = codeService.getCacheByData(next);
                        Double nextDirection = mapService.calculateDirection(lastCode, nextCode, angleOffsetVal);
                        Double nextDirection;
                        boolean reverse = false;
                        if (lastCorner.equals(lastCode)){
                            // DOTO
                        if (index >= i) {
                            // DOTO 添加转弯
                            Code endCode = codeService.getCacheByData(pathList.get(pathList.size() - 1));
                            nextDirection = mapService.calculateDirection(lastCode, endCode, angleOffsetVal);
                            if (nextDirection.equals((workDirection + 180) % 360)) {
                                nextDirection = workDirection;
                                reverse = true;
                            }
                        }else {
                        } else {
                            nextDirection = mapService.calculateDirection(lastCode, nextCode, angleOffsetVal);
                            // 第一步:如果下一个方向正好是作业方向的相反方向,则重置下一个方向为作业方向,标记 reverse = true
                            if (nextDirection.equals((workDirection + 180) % 360)) {
                                nextDirection = workDirection;
@@ -1851,7 +1861,7 @@
            log.info("{}号Agv动作组装完成,指令数量:{}", agvNo, newActionList.size());
        } catch (Exception e) {
            log.error("mainService.generateAction", e);
            log.error("mainService.generateActionV2", e);
            TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
            if (!Cools.isEmpty(pathList)) {
@@ -1860,7 +1870,7 @@
                mapDataDispatcher.clearDynamicMatrixByCodeList(null, codeMatrixIdxList);
            }
            throw new RuntimeException("generateAction method caught an exception, rolling back transaction.", e);
            throw new RuntimeException("generateActionV2 method caught an exception, rolling back transaction.", e);
        }
    }