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