zc
2025-10-17 b5dca159bc10a5f26fc06f8f139d4976d45407ae
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/MainService.java
@@ -1131,7 +1131,7 @@
                        // 检验方向
                        FuncSta chargeFuncSta = funcStaService.query(lastCode.getId(), FuncStaType.CHARGE.toString());
                        Double chargeDirection = Double.parseDouble(chargeFuncSta.getAngle());
                        if (!lastDirection.equals(chargeDirection)) {
                        if (!lastDirection.equals(chargeDirection)&&lastCode.getCornerBool()) {
                            actionList.add(new Action(
                                    null,    // 编号
                                    null,    // 总线
@@ -1288,7 +1288,6 @@
    }
    /**
     * 根据分片生成动作 ( 车辆可能已经做过一些任务了,正在等待下一段任务 )
     */
@@ -1322,11 +1321,14 @@
                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;
            boolean corner = false;
            for (int i = pathList.size(); i < 0; i++) {
                Code nextCode = codeService.getCacheByData(pathList.get(i));
                if (nextCode != null && nextCode.getCornerBool()) {
                    //lastCorner = pathList.get(i);
                    index = i;
                }
            }
@@ -1350,19 +1352,21 @@
                        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);
                            reverse = true;
                        } else {
                            nextDirection = mapService.calculateDirection(lastCode, nextCode, angleOffsetVal);
                        }else {
                            // 第一步:如果下一个方向正好是作业方向的相反方向,则重置下一个方向为作业方向,标记 reverse = true
                            if (nextDirection.equals((workDirection + 180) % 360)) {
                            if (!nextDirection.equals((workDirection+180) % 360)) {
                                nextDirection = workDirection;
                                reverse = true;
                            }
@@ -1708,7 +1712,7 @@
                        // 检验方向
                        FuncSta chargeFuncSta = funcStaService.query(lastCode.getId(), FuncStaType.CHARGE.toString());
                        Double chargeDirection = Double.parseDouble(chargeFuncSta.getAngle());
                        if (!lastDirection.equals(chargeDirection)) {
                        if (!lastDirection.equals(chargeDirection) && lastCode.getCornerBool()) {
                            actionList.add(new Action(
                                    null,    // 编号
                                    null,    // 总线
@@ -1851,7 +1855,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 +1864,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);
        }
    }