Pu Zhibing
2025-03-03 042ab498ee53e8f3c7cecf52f733e8c1c162dfb5
修改模型3的bug
3个文件已修改
212 ■■■■ 已修改文件
guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/PatrolTaskServiceImpl.java 183 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TaskDetailServiceImpl.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns-admin/src/main/resources/application.yml 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/PatrolTaskServiceImpl.java
@@ -188,89 +188,87 @@
        }
        taskDetail.setStatus(2);
        taskDetailService.updateById(taskDetail);
        PatrolTask patrolTask = this.selectById(taskDetail.getPatrolTaskId());
        //获取所有在线车船
        //2018年协议车辆在线
        List<VehicleOnline> vehicleOnlines2018 = VideoGateway.queryRuntimeInfoByCache(0);
        //2023年协议车辆在线
        List<VehicleOnline> vehicleOnlines203 = VideoGateway.locationRealTimeInfoCache(0);
        //获取当前任务中的车船信息
        List<TaskDetailVehicles> taskDetailVehicles = taskDetailVehiclesService.selectList(new EntityWrapper<TaskDetailVehicles>().eq("task_detail_id", id));
        //根据车辆数量,分组线程数
        int num;
        int threadCount;
        if(taskDetailVehicles.size() <= maxThreadCount){
            threadCount = taskDetailVehicles.size();
            num = 1;
        }else{
            num = taskDetailVehicles.size() / maxThreadCount;
            if(taskDetailVehicles.size() % maxThreadCount > 0){
                num++;
        if(!patrolTask.getImageModel().equals(ImageModelEnum.CONSTRUCTION_WASTE_LOAD.getCode())){
            //获取所有在线车船
            //2018年协议车辆在线
            List<VehicleOnline> vehicleOnlines2018 = VideoGateway.queryRuntimeInfoByCache(0);
            //2023年协议车辆在线
            List<VehicleOnline> vehicleOnlines203 = VideoGateway.locationRealTimeInfoCache(0);
            //获取当前任务中的车船信息
            List<TaskDetailVehicles> taskDetailVehicles = taskDetailVehiclesService.selectList(new EntityWrapper<TaskDetailVehicles>().eq("task_detail_id", id));
            //根据车辆数量,分组线程数
            int num;
            int threadCount;
            if(taskDetailVehicles.size() <= maxThreadCount){
                threadCount = taskDetailVehicles.size();
                num = 1;
            }else{
                num = taskDetailVehicles.size() / maxThreadCount;
                if(taskDetailVehicles.size() % maxThreadCount > 0){
                    num++;
                }
                threadCount = taskDetailVehicles.size() / num;
                if(taskDetailVehicles.size() % num > 0){
                    threadCount++;
                }
            }
            threadCount = taskDetailVehicles.size() / num;
            if(taskDetailVehicles.size() % num > 0){
                threadCount++;
            }
        }
        //定义线程池
        ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(threadCount, threadCount, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>());
        //定义多线程阻塞
        CountDownLatch countDownLatch = new CountDownLatch(threadCount);
        for (int i = 0; i < threadCount; i++) {
            int start = i * num;
            int end = (i + 1) * num;
            if((i + 1) == threadCount){
                end = taskDetailVehicles.size();
            }
            List<TaskDetailVehicles> vehicles = taskDetailVehicles.subList(start, end);
            threadPoolExecutor.execute(new Runnable() {
                @Override
                public void run() {
                    for (TaskDetailVehicles taskDetailVehicle : vehicles) {
                        try {
                            taskDetailVehicle.setStartExecutionTime(LocalDateTime.now());
                            Integer taskDetailVehicleId = taskDetailVehicle.getId();
                            //车船类型:1 车辆设备 2 船舶设备
                            Integer vehicleType = taskDetailVehicle.getVehicleType();
                            //车船id
                            Integer vehicleId = taskDetailVehicle.getVehicleId();
                            VehicleOnline vehicleOnline1 = null;
                            for (VehicleOnline vehicleOnline : vehicleOnlines2018) {
                                if(null != vehicleOnline.getVehicleId() && vehicleOnline.getVehicleId().equals(vehicleId) &&
                                        null != vehicleOnline.getVehicleType() && vehicleOnline.getVehicleType().equals(vehicleType)){
                                    vehicleOnline1 = vehicleOnline;
                                    String vehicleGpsProtocol = vehicleOnline.getVehicleGpsProtocol();
                                    vehicleOnline1.setVehicleGpsProtocol("808-guangzhou".equals(vehicleGpsProtocol) ? "1" : "2");
                                    break;
                                }
                            }
                            if(null == vehicleOnline1){
                                for (VehicleOnline vehicleOnline : vehicleOnlines203) {
            //定义线程池
            ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(threadCount, threadCount, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>());
            //定义多线程阻塞
            CountDownLatch countDownLatch = new CountDownLatch(threadCount);
            for (int i = 0; i < threadCount; i++) {
                int start = i * num;
                int end = (i + 1) * num;
                if((i + 1) == threadCount){
                    end = taskDetailVehicles.size();
                }
                List<TaskDetailVehicles> vehicles = taskDetailVehicles.subList(start, end);
                threadPoolExecutor.execute(new Runnable() {
                    @Override
                    public void run() {
                        for (TaskDetailVehicles taskDetailVehicle : vehicles) {
                            try {
                                taskDetailVehicle.setStartExecutionTime(LocalDateTime.now());
                                Integer taskDetailVehicleId = taskDetailVehicle.getId();
                                //车船类型:1 车辆设备 2 船舶设备
                                Integer vehicleType = taskDetailVehicle.getVehicleType();
                                //车船id
                                Integer vehicleId = taskDetailVehicle.getVehicleId();
                                VehicleOnline vehicleOnline1 = null;
                                for (VehicleOnline vehicleOnline : vehicleOnlines2018) {
                                    if(null != vehicleOnline.getVehicleId() && vehicleOnline.getVehicleId().equals(vehicleId) &&
                                            null != vehicleOnline.getVehicleType() && vehicleOnline.getVehicleType().equals(vehicleType)){
                                        vehicleOnline1 = vehicleOnline;
                                        vehicleOnline1.setVehicleGpsProtocol(vehicleOnline.getVehicleGpsProtocol());
                                        String vehicleGpsProtocol = vehicleOnline.getVehicleGpsProtocol();
                                        vehicleOnline1.setVehicleGpsProtocol("808-guangzhou".equals(vehicleGpsProtocol) ? "1" : "2");
                                        break;
                                    }
                                }
                            }
                            //不在线
                            if(null == vehicleOnline1){
                                taskDetailVehicle.setEndExecutionTime(LocalDateTime.now());
                                taskDetailVehicle.setStatus(4);
                                if(null == vehicleOnline1){
                                    for (VehicleOnline vehicleOnline : vehicleOnlines203) {
                                        if(null != vehicleOnline.getVehicleId() && vehicleOnline.getVehicleId().equals(vehicleId) &&
                                                null != vehicleOnline.getVehicleType() && vehicleOnline.getVehicleType().equals(vehicleType)){
                                            vehicleOnline1 = vehicleOnline;
                                            vehicleOnline1.setVehicleGpsProtocol(vehicleOnline.getVehicleGpsProtocol());
                                            break;
                                        }
                                    }
                                }
                                //不在线
                                if(null == vehicleOnline1){
                                    taskDetailVehicle.setEndExecutionTime(LocalDateTime.now());
                                    taskDetailVehicle.setStatus(4);
                                    taskDetailVehiclesService.updateById(taskDetailVehicle);
                                    continue;
                                }
                                taskDetailVehicle.setVehicleGpsProtocol(vehicleOnline1.getVehicleGpsProtocol());
                                taskDetailVehicle.setTerminalId(vehicleOnline1.getTerminalId());
                                taskDetailVehicle.setStatus(2);
                                taskDetailVehiclesService.updateById(taskDetailVehicle);
                                continue;
                            }
                            taskDetailVehicle.setVehicleGpsProtocol(vehicleOnline1.getVehicleGpsProtocol());
                            taskDetailVehicle.setTerminalId(vehicleOnline1.getTerminalId());
                            taskDetailVehicle.setStatus(2);
                            taskDetailVehiclesService.updateById(taskDetailVehicle);
                            //非倾倒模型,建筑垃圾倾倒模型由网关接口触发判断执行结果
                            if(!patrolTask.getImageModel().equals(ImageModelEnum.CONSTRUCTION_WASTE_LOAD.getCode())){
                                //成功
                                List<TaskDetailVehiclesChannel> taskDetailVehiclesChannels = taskDetailVehiclesChannelService.selectList(new EntityWrapper<TaskDetailVehiclesChannel>().eq("task_detail_vehicles_id", taskDetailVehicleId));
                                //开始发送拍照指令,获取照片地址
@@ -328,28 +326,29 @@
                                taskDetailVehicle.setEndExecutionTime(LocalDateTime.now());
                                taskDetailVehicle.setStatus(3);
                                taskDetailVehiclesService.updateById(taskDetailVehicle);
                            }catch (Exception e){
                                e.printStackTrace();
                                //失败
                                taskDetailVehicle.setEndExecutionTime(LocalDateTime.now());
                                taskDetailVehicle.setStatus(5);
                                taskDetailVehiclesService.updateById(taskDetailVehicle);
                            }
                        }catch (Exception e){
                            e.printStackTrace();
                            //失败
                            taskDetailVehicle.setEndExecutionTime(LocalDateTime.now());
                            taskDetailVehicle.setStatus(5);
                            taskDetailVehiclesService.updateById(taskDetailVehicle);
                        }
                        //当前线程执行完成后减少等待数
                        countDownLatch.countDown();
                    }
                    //当前线程执行完成后减少等待数
                    countDownLatch.countDown();
                }
            });
                });
            }
            try {
                countDownLatch.await();
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
            int count = taskDetailVehiclesService.selectCount(new EntityWrapper<TaskDetailVehicles>().eq("task_detail_id", id).eq("status", 5));
            taskDetail.setStatus(count > 0 ? 4 : 3);
            taskDetailService.updateById(taskDetail);
        }
        try {
            countDownLatch.await();
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
        int count = taskDetailVehiclesService.selectCount(new EntityWrapper<TaskDetailVehicles>().eq("task_detail_id", id).eq("status", 5));
        taskDetail.setStatus(count > 0 ? 4 : 3);
        taskDetailService.updateById(taskDetail);
    }
    
    
guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/TaskDetailServiceImpl.java
@@ -86,11 +86,12 @@
     */
    @Override
    public void delTaskDetail(List<String> ids) {
        this.baseMapper.deleteBatchIds(ids);
        List<TaskDetail> taskDetails = this.selectBatchIds(ids);
        for (TaskDetail taskDetail : taskDetails) {
            JobKey jobKey = new JobKey(taskDetail.getId().toString());
            quartzUtil.deleteQuartzTask(jobKey);
            taskDetail.setDelFlag(1);
            this.updateById(taskDetail);
        }
    }
    
guns-admin/src/main/resources/application.yml
@@ -45,23 +45,23 @@
---
spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/vehicle_inspection?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai
    username: root
    password: 123456
    db-name: vehicle_inspection #用来搜集数据库的所有表
    filters: wall,mergeStat
#线上环境
#spring:
#  datasource:
#    url: jdbc:mysql://rm-m5e57gbu0gdv901ub.mysql.rds.aliyuncs.com:3306/vehicle_inspection?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai
#    username: vehicleInspection
#    password: SYzt1953123456
#    db-name: guns #用来搜集数据库的所有表
#    url: jdbc:mysql://127.0.0.1:3306/vehicle_inspection?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai
#    username: root
#    password: 123456
#    db-name: vehicle_inspection #用来搜集数据库的所有表
#    filters: wall,mergeStat
#线上环境
spring:
  datasource:
    url: jdbc:mysql://rm-m5e57gbu0gdv901ub.mysql.rds.aliyuncs.com:3306/vehicle_inspection?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=CONVERT_TO_NULL&useSSL=false&serverTimezone=Asia/Shanghai
    username: vehicleInspection
    password: SYzt1953123456
    db-name: guns #用来搜集数据库的所有表
    filters: wall,mergeStat
#多数据源情况的配置
guns: