‘liusuyi’
2023-08-05 c3b04f92b4c196644a80a912a601b5c29194f71b
增加线程池配置信息
修改雷达数据最近一次引导从redis获取
已修改5个文件
97 ■■■■ 文件已修改
ard-work/src/main/java/com/ruoyi/alarm/config/AsyncConfiguration.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/alarm/global/service/impl/GlobalAlarmServiceImpl.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/test/ReadAccessDatabase.java 21 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ruoyi-admin/src/main/resources/application-ard.yml 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ard-work/src/main/java/com/ruoyi/alarm/config/AsyncConfiguration.java
@@ -1,11 +1,14 @@
package com.ruoyi.alarm.config;
import com.google.errorprone.annotations.Var;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import java.util.concurrent.Executor;
import java.util.concurrent.ThreadPoolExecutor;
/**
 * @ClassName: AsyncConfiguration
@@ -17,44 +20,31 @@
@Configuration
@EnableAsync(proxyTargetClass = true)
public class AsyncConfiguration {
    @Bean("loginExecutor")
    public Executor executor(){
        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
        //配置核心线程数
        executor.setCorePoolSize(15);
        //配置最大线程数
        executor.setMaxPoolSize(30);
        //配置队列大小
        executor.setQueueCapacity(1000);
        //线程的名称前缀
        executor.setThreadNamePrefix("loginExecutor-");
        //线程活跃时间(秒)
        //executor.setKeepAliveSeconds(60);
        //等待所有任务结束后再关闭线程池
        executor.setWaitForTasksToCompleteOnShutdown(true);
        //设置拒绝策略
        //executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
        //执行初始化
        executor.initialize();
        return executor;
    }
    @Value("${ThreadPoolTask.corePoolSize}")
    Integer corePoolSize;
    @Value("${ThreadPoolTask.maxPoolSize}")
    Integer maxPoolSize;
    @Value("${ThreadPoolTask.keepAliveSeconds}")
    Integer keepAliveSeconds;
    @Value("${ThreadPoolTask.queueCapacity}")
    Integer queueCapacity;
    @Bean("alarmExecutor")
    public Executor alarmExecutor(){
        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
        //配置核心线程数
        executor.setCorePoolSize(15);
        executor.setCorePoolSize(corePoolSize);
        //配置最大线程数
        executor.setMaxPoolSize(30);
        executor.setMaxPoolSize(maxPoolSize);
        //配置队列大小
        executor.setQueueCapacity(1000);
        executor.setQueueCapacity(queueCapacity);
        //线程的名称前缀
        executor.setThreadNamePrefix("alarmExecutor-");
        //线程活跃时间(秒)
        //executor.setKeepAliveSeconds(60);
        executor.setKeepAliveSeconds(keepAliveSeconds);
        //等待所有任务结束后再关闭线程池
        executor.setWaitForTasksToCompleteOnShutdown(true);
        //设置拒绝策略
        //executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
        executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
        //执行初始化
        executor.initialize();
        return executor;
ard-work/src/main/java/com/ruoyi/alarm/global/service/impl/GlobalAlarmServiceImpl.java
@@ -544,14 +544,12 @@
                        //判断当前报警点5分钟内是否已引导
                        ardAlarmRadar.setGuideFlag(1);
                        ArdAlarmRadar AlarmRadar = ardAlarmRadarMapper.getArdAlarmRadarWithGuide(ardAlarmRadar);
                        // 结束时间
                        long etime = System.currentTimeMillis();
                        // 计算执行时间
                        log.info("查询API执行时长:"+(etime-stime)+"毫秒");
                       // ArdAlarmRadar AlarmRadar = ardAlarmRadarMapper.getArdAlarmRadarWithGuide(ardAlarmRadar);
                        ArdAlarmRadar AlarmRadar = redisCache.getCacheObject("global_alarm:guideNew");//从redis中取出最新引导的报警数据
                        if (StringUtils.isNull(AlarmRadar)) {
                            //5分钟内未引导直接入库
                            ardAlarmRadarMapper.insertArdAlarmRadar(ardAlarmRadar);
                            redisCache.setCacheObject("global_alarm:guideNew",ardAlarmRadar);//引导数据写入redis
                            //获取雷达所在塔上的大光电
                            String cameraIdWithTower = ardAlarmRadarMapper.getCameraByRadar(radarAlarmData.getRadarId());
                            if (StringUtils.isNotNull(cameraIdWithTower) && StringUtils.isNotEmpty(cameraIdWithTower)) {
@@ -563,7 +561,7 @@
                            ArdAlarmpointsWell ardAlarmpointsWell = ardAlarmpointsWellMapper.selectArdAlarmpointsWellByWellId(alarmpointName);
                            if (StringUtils.isNotNull(ardAlarmpointsWell) && StringUtils.isNotEmpty(ardAlarmpointsWell.getCameraId())) {
                                String cameraId = ardAlarmpointsWell.getCameraId();
                                if (cameraIdWithTower.equals(cameraId)) {
                                if (cameraId.equals(cameraIdWithTower)) {
                                    return;
                                }
                                log.info("获取到报警点关联的光电:" + cameraId);
@@ -578,6 +576,7 @@
                            if (count >= 3) {
                                ardAlarmRadar.setGuideFlag(1);
                                ardAlarmRadarMapper.insertArdAlarmRadar(ardAlarmRadar);
                                redisCache.setCacheObject("global_alarm:guideNew",ardAlarmRadar);//引导数据写入redis
                                //获取雷达所在塔上的大光电
                                String cameraIdWithTower = ardAlarmRadarMapper.getCameraByRadar(radarAlarmData.getRadarId());
                                if (StringUtils.isNotNull(cameraIdWithTower) && StringUtils.isNotEmpty(cameraIdWithTower)) {
@@ -601,6 +600,10 @@
                                ardAlarmRadarMapper.insertArdAlarmRadar(ardAlarmRadar);
                            }
                        }
                        // 结束时间
                        long etime = System.currentTimeMillis();
                        // 计算执行时间
                        log.info("查询API执行时长:"+(etime-stime)+"毫秒");
                    }
                    //endregion
@@ -736,8 +739,10 @@
    private Boolean IsEnableGuide(String cameraId) {
        boolean enabled = false;
        ArdCameras ardCameras = redisCache.getCacheObject(CacheConstants.CAMERA_LIST_KEY + cameraId);
        if (ardCameras.getCamAlarmGuideEnable().equals(1)) {
            enabled = true;
        if(ardCameras!=null) {
            if (ardCameras.getCamAlarmGuideEnable().equals(1)) {
                enabled = true;
            }
        }
        return enabled;
    }
ard-work/src/main/java/com/ruoyi/test/ReadAccessDatabase.java
@@ -15,17 +15,18 @@
public class ReadAccessDatabase {
    public static void main(String[] args) {
        // 多个数据库文件路径
        String[] dbPaths = {
                "D:\\mdb\\道路中心线.mdb",
                "D:\\mdb\\防风林-灌木.mdb",
                // 添加更多的数据库文件路径
        };
        // 遍历每个数据库文件
        for (String dbPath : dbPaths) {
            readDataFromAccessDatabase(dbPath);
        }
//        // 多个数据库文件路径
//        String[] dbPaths = {
//                "D:\\mdb\\道路中心线.mdb",
//                "D:\\mdb\\防风林-灌木.mdb",
//                // 添加更多的数据库文件路径
//        };
//
//        // 遍历每个数据库文件
//        for (String dbPath : dbPaths) {
//            readDataFromAccessDatabase(dbPath);
//        }
    }
    public static void readDataFromAccessDatabase(String dbPath) {
ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java
@@ -19,7 +19,7 @@
{
    public static void main(String[] args)
    {
        // System.setProperty("spring.devtools.restart.enabled", "false");
        System.setProperty("spring.devtools.restart.enabled", "false");//关闭热部署
        SpringApplication.run(RuoYiApplication.class, args);
        System.out.println("(♥◠‿◠)ノ゙  安瑞达4.0平台启动成功   ლ(´ڡ`ლ)゙  \n" +
                "      ___           ___                               \n" +
ruoyi-admin/src/main/resources/application-ard.yml
@@ -37,7 +37,14 @@
  clientId: m3
  username: admin
  password: xzx12345
  topic: apponekey
  topic: apponekey,radar
  timeout: 100
  keepalive: 60
  enabled: true
  enabled: true
#异步线程池配置
ThreadPoolTask:
  corePoolSize: 20
  maxPoolSize: 40
  keepAliveSeconds: 300
  queueCapacity: 50