#
luxiaotao1123
2024-11-12 e6f1eb205862b834ba1747557a723fefff6ab881
#
3个文件已修改
1个文件已添加
70 ■■■■■ 已修改文件
zy-acs-common/src/main/java/com/zy/acs/common/constant/RedisConstant.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/common/config/SchedulerConfig.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AgvCmdService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-manager/src/main/java/com/zy/acs/manager/fake/AgvSimulatorTask.java 42 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
zy-acs-common/src/main/java/com/zy/acs/common/constant/RedisConstant.java
@@ -25,7 +25,7 @@
    public static final String DIGITAL_AGV_FLAG = "DIGITAL_AGV_FLAG";
    public static final int CMD_TIMEOUT_LIMIT = 5000;
    public static final int CMD_TIMEOUT_LIMIT = 10000;
    public static final String AGV_MAP_ASTAR_FLAG = "AGV_MAP_ASTAR_FLAG";
zy-acs-manager/src/main/java/com/zy/acs/manager/common/config/SchedulerConfig.java
New file
@@ -0,0 +1,23 @@
package com.zy.acs.manager.common.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
/**
 * Created by vincent on 11/12/2024
 */
@Configuration
@EnableScheduling
public class SchedulerConfig {
    @Bean
    public ThreadPoolTaskScheduler taskScheduler() {
        ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
        scheduler.setPoolSize(10);
        scheduler.setThreadNamePrefix("scheduled-task-");
        return scheduler;
    }
}
zy-acs-manager/src/main/java/com/zy/acs/manager/core/service/AgvCmdService.java
@@ -69,7 +69,8 @@
            } else {
                return BaseResult.error();
            }
        } catch (TimeoutException ex){
        } catch (TimeoutException e){
            log.error("AgvCmdService.requestProcess", e);
            return BaseResult.error();
        }
    }
zy-acs-manager/src/main/java/com/zy/acs/manager/fake/AgvSimulatorTask.java
@@ -126,34 +126,36 @@
     * @param action     当前动作
     */
    private void simulateRotating(Agv agv, AgvDetail agvDetail, Action action) throws InterruptedException {
//        Double agvAngle = agvDetail.getAgvAngle();
//        double actionAngle = Double.parseDouble(action.getParams());
//        double totalAngle = Double.parseDouble(action.getParams());
//        double stepAngle = 90.0;
//        double actionProgress = 0.0;
//
//        while (actionProgress < totalAngle) {
//            double angleToRotate = Math.min(stepAngle, totalAngle - actionProgress);
//            // 更新AGV的角度
//            double newAngle = (agvDetail.getAgvAngle() + angleToRotate) % 360;
//            agvDetail.setAgvAngle(newAngle);
//
//            // 模拟电量消耗
////            agvDetail.setVol(agvDetail.getVol() - 0.05 * (angleToRotate / 15.0)); // 根据角度消耗电量
//
//            agvDetailService.updateById(agvDetail);
//
//            Thread.sleep(1000);
//
//            actionProgress += angleToRotate;
//        }
        double actionAngle = Double.parseDouble(action.getParams());
        double totalAngle = Double.parseDouble(action.getParams()); // 假设Action有angle属性
        double stepAngle = 45.0; // 每秒旋转15度,具体值根据需求调整
        double actionProgress = 0.0;
        double newAngle = (agvDetail.getAgvAngle() + actionAngle) % 360;
        while (actionProgress < totalAngle) {
            double angleToRotate = Math.min(stepAngle, totalAngle - actionProgress);
            // 更新AGV的角度
            double newAngle = (agvDetail.getAgvAngle() + angleToRotate) % 360;
            agvDetail.setAgvAngle(newAngle);
            // 模拟电量消耗
//            agvDetail.setVol(agvDetail.getVol() - 0.05 * (angleToRotate / 15.0)); // 根据角度消耗电量
            // 更新AGV详细信息
            agvDetailService.updateById(agvDetail);
            // 模拟实际执行时间
            Thread.sleep(1000); // 每秒执行一次
        Thread.sleep(1000);
            actionProgress += angleToRotate;
        }
        // 动作完成,更新状态
        action.setActionSts(ActionStsType.FINISH.val());
        actionService.updateById(action);
    }