From 042ab498ee53e8f3c7cecf52f733e8c1c162dfb5 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期一, 03 三月 2025 10:39:47 +0800 Subject: [PATCH] 修改模型3的bug --- guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/PatrolTaskServiceImpl.java | 183 ++++++++++++++++++++++----------------------- 1 files changed, 91 insertions(+), 92 deletions(-) diff --git a/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/PatrolTaskServiceImpl.java b/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/PatrolTaskServiceImpl.java index 643f990..fe751f3 100644 --- a/guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/PatrolTaskServiceImpl.java +++ b/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); + } -- Gitblit v1.7.1