From e102aefb00170246d40995d8d7e53cad2385e4d4 Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期五, 21 三月 2025 19:18:38 +0800
Subject: [PATCH] 修改演示版本模型3执行bug

---
 guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/PatrolTaskServiceImpl.java |  298 ++++++++++++++++++++++++----------------------------------
 1 files changed, 124 insertions(+), 174 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 301bf0e..70eda20 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
@@ -1,5 +1,8 @@
 package com.stylefeng.guns.modular.system.service.impl;
 
+import cn.hutool.http.HttpRequest;
+import cn.hutool.http.HttpResponse;
+import cn.hutool.http.HttpUtil;
 import com.alibaba.fastjson.JSON;
 import com.baomidou.mybatisplus.mapper.EntityWrapper;
 import com.stylefeng.guns.core.util.ToolUtil;
@@ -38,6 +41,7 @@
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
+import java.time.ZoneId;
 import java.time.format.DateTimeFormatter;
 import java.util.*;
 import java.util.concurrent.CountDownLatch;
@@ -117,7 +121,8 @@
 						taskDetail.setPatrolTaskId(patrolTask.getId());
 						taskDetail.setStatus(1);
 						String executionTime = startTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd")) + " " + vo.getExecutionTime();
-						taskDetail.setExecutionTime(LocalDateTime.parse(executionTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")));
+						LocalDateTime dateTime = LocalDateTime.parse(executionTime, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"));
+						taskDetail.setExecutionTime(dateTime.atZone(ZoneId.of("Asia/Shanghai")).toLocalDateTime());
 						taskDetail.setDelFlag(0);
 						taskDetailService.insert(taskDetail);
 						
@@ -190,12 +195,6 @@
 		taskDetailService.updateById(taskDetail);
 		PatrolTask patrolTask = this.selectById(taskDetail.getPatrolTaskId());
 		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));
 			//根据车辆数量,分组线程数
@@ -233,86 +232,36 @@
 							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) {
-										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);
 								
 								//成功
 								List<TaskDetailVehiclesChannel> taskDetailVehiclesChannels = taskDetailVehiclesChannelService.selectList(new EntityWrapper<TaskDetailVehiclesChannel>().eq("task_detail_vehicles_id", taskDetailVehicleId));
 								//开始发送拍照指令,获取照片地址
-								String vehicleGpsProtocol = vehicleOnline1.getVehicleGpsProtocol();
-								String terminalId = vehicleOnline1.getTerminalId();
 								for (TaskDetailVehiclesChannel taskDetailVehiclesChannel : taskDetailVehiclesChannels) {
-									Integer videoChannel = taskDetailVehiclesChannel.getVideoChannel();
 									try {
-										if("1".equals(vehicleGpsProtocol)){
-											//2018 协议
-											String fileId = VideoGateway.cameraShot2018(terminalId, videoChannel, 0);
-											if(ToolUtil.isNotEmpty(fileId)){
-												String fileUrl = VideoGateway.getCameraShotByFileId2018(terminalId, fileId, 0);
-												if(ToolUtil.isNotEmpty(fileUrl)){
-													taskDetailVehiclesChannel.setImageUrl(fileUrl);
-													taskDetailVehiclesChannel.setSysCreateTime(LocalDateTime.now());
-													taskDetailVehiclesChannel.setArtificialStatus(1);
-													//开始调模型接口得出结果
-													Map<String, Object> map = ImageModelUtil.modelCheck(fileUrl, ImageModelEnum.getImageModelEnum(patrolTask.getImageModel()));
-													Boolean b = (Boolean) map.get("b");
-													String r = map.get("r").toString();
-													taskDetailVehiclesChannel.setSysStatus(b ? 2 : 3);
-													taskDetailVehiclesChannel.setResult(r);
-													taskDetailVehiclesChannelService.updateById(taskDetailVehiclesChannel);
-												}
-											}
-										}else{
-											//2023 协议
-											String fileId = VideoGateway.cameraShot2023(vehicleId, vehicleType, terminalId, videoChannel, 0);
-											if(ToolUtil.isNotEmpty(fileId)){
-												String fileUrl = VideoGateway.getCameraShotByFileId2023(fileId, 0);
-												if(ToolUtil.isNotEmpty(fileUrl)){
-													taskDetailVehiclesChannel.setImageUrl(fileUrl);
-													taskDetailVehiclesChannel.setSysCreateTime(LocalDateTime.now());
-													taskDetailVehiclesChannel.setArtificialStatus(1);
-													//开始调模型接口得出结果
-													Map<String, Object> map = ImageModelUtil.modelCheck(fileUrl, ImageModelEnum.getImageModelEnum(patrolTask.getImageModel()));
-													Boolean b = (Boolean) map.get("b");
-													String r = map.get("r").toString();
-													taskDetailVehiclesChannel.setSysStatus(b ? 2 : 3);
-													taskDetailVehiclesChannel.setResult(r);
-													taskDetailVehiclesChannelService.updateById(taskDetailVehiclesChannel);
-												}
-											}
+										Integer videoChannel = taskDetailVehiclesChannel.getVideoChannel();
+										String imageModel = patrolTask.getImageModel();
+										String fileUrl = null;
+										if(imageModel.equals(ImageModelEnum.TOP_SEAL.getCode())){
+											fileUrl = "http://120.232.235.142/image/model1/" + taskDetailVehicle.getVehicleNum() + "_" + videoChannel + ".png";
+										}
+										if(imageModel.equals(ImageModelEnum.CAMERA_FAULT.getCode())){
+											fileUrl = "http://120.232.235.142/image/model2/" + taskDetailVehicle.getVehicleNum() + "_" + videoChannel + ".png";
+										}
+										HttpRequest get = HttpUtil.createGet(fileUrl);
+										HttpResponse execute = get.execute();
+										if(200 == execute.getStatus()){
+											taskDetailVehiclesChannel.setImageUrl(fileUrl);
+											taskDetailVehiclesChannel.setSysCreateTime(LocalDateTime.now());
+											taskDetailVehiclesChannel.setArtificialStatus(1);
+											//开始调模型接口得出结果
+											Map<String, Object> map = ImageModelUtil.modelCheck(fileUrl, ImageModelEnum.getImageModelEnum(patrolTask.getImageModel()));
+											Boolean b = (Boolean) map.get("b");
+											String r = map.get("r").toString();
+											taskDetailVehiclesChannel.setSysStatus(b ? 2 : 3);
+											taskDetailVehiclesChannel.setResult(r);
+											taskDetailVehiclesChannelService.updateById(taskDetailVehiclesChannel);
 										}
 									}catch (Exception e){
 										taskDetailVehiclesChannel.setResult(e.getMessage());
@@ -344,106 +293,107 @@
 			taskDetail.setStatus(count > 0 ? 4 : 3);
 			taskDetailService.updateById(taskDetail);
 		}else{
-			//只处理不在线的车辆
-			//获取所有在线车船
-			//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++;
+			List<TaskDetailVehicles> taskDetailVehiclesList = taskDetailVehiclesService.selectList(new EntityWrapper<TaskDetailVehicles>().eq("task_detail_id", taskDetail.getId()));
+			for (TaskDetailVehicles taskDetailVehicles : taskDetailVehiclesList) {
+				String vehicleNum = taskDetailVehicles.getVehicleNum();
+				String file1 = "http://120.232.235.142/image/model3/" + vehicleNum + "_" + 1 + ".png";
+				String file2 = "http://120.232.235.142/image/model3/" + vehicleNum + "_" + 2 + ".png";
+				HttpRequest get = HttpUtil.createGet(file1);
+				HttpResponse execute = get.execute();
+				HttpRequest get1 = HttpUtil.createGet(file2);
+				HttpResponse execute1 = get1.execute();
+				if(200 != execute.getStatus() || 200 != execute1.getStatus()) {
+					taskDetailVehicles.setStatus(4);
+					taskDetailVehicles.setStartExecutionTime(LocalDateTime.now());
+					taskDetailVehicles.setEndExecutionTime(LocalDateTime.now());
+					taskDetailVehiclesService.updateById(taskDetailVehicles);
+					continue;
 				}
-				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) {
-										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);
-								}
-							}catch (Exception e){
-								e.printStackTrace();
-								//失败
-								taskDetailVehicle.setEndExecutionTime(LocalDateTime.now());
-								taskDetailVehicle.setStatus(5);
-								taskDetailVehiclesService.updateById(taskDetailVehicle);
-							}
+				try {
+					taskDetailVehicles.setStatus(2);
+					taskDetailVehicles.setStartExecutionTime(LocalDateTime.now());
+					taskDetailVehiclesService.updateById(taskDetailVehicles);
+					List<TaskDetailVehiclesChannel> list = taskDetailVehiclesChannelService.selectList(new EntityWrapper<TaskDetailVehiclesChannel>().eq("task_detail_vehicles_id", taskDetailVehicles.getId()));
+					Map<String, Object> map1 = ImageModelUtil.modelCheck(file1, ImageModelEnum.TOP_SEAL);
+					String r = map1.get("r").toString();
+					List<String> result = JSON.parseArray(r, String.class);
+					//非装载状态
+					Optional<String> empty_container = result.stream().filter(s -> s.contains("Empty Container")).findFirst();
+					if(empty_container.isPresent()){
+						for (TaskDetailVehiclesChannel taskDetailVehiclesChannel : list) {
+							taskDetailVehiclesChannel.setImageUrl(file1);
+							taskDetailVehiclesChannel.setSysStatus(3);
+							taskDetailVehiclesChannel.setSysCreateTime(LocalDateTime.now());
+							taskDetailVehiclesChannel.setResult(JSON.toJSONString(result));
+							taskDetailVehiclesChannelService.updateById(taskDetailVehiclesChannel);
 						}
-						//当前线程执行完成后减少等待数
-						countDownLatch.countDown();
+						taskDetailVehicles.setStatus(3);
+						taskDetailVehicles.setEndExecutionTime(LocalDateTime.now());
+						taskDetailVehiclesService.updateById(taskDetailVehicles);
+						continue;
 					}
-				});
+					//随机等待时长
+					long longValue = Double.valueOf(Math.random() * 100000).longValue();
+					Thread.sleep(longValue);
+					//开始检测是否空载
+					Map<String, Object> map2 = ImageModelUtil.modelCheck(file2, ImageModelEnum.TOP_SEAL);
+					r = map2.get("r").toString();
+					result = JSON.parseArray(r, String.class);
+					//装载状态
+					Optional<String> loaded_cargo = result.stream().filter(s -> s.contains("Loaded Cargo")).findFirst();
+					if(loaded_cargo.isPresent()){
+						for (TaskDetailVehiclesChannel taskDetailVehiclesChannel : list) {
+							taskDetailVehiclesChannel.setImageUrl(file1);
+							taskDetailVehiclesChannel.setSysStatus(3);
+							taskDetailVehiclesChannel.setSysCreateTime(LocalDateTime.now());
+							taskDetailVehiclesChannel.setResult(JSON.toJSONString(result));
+							taskDetailVehiclesChannelService.updateById(taskDetailVehiclesChannel);
+						}
+						taskDetailVehicles.setStatus(3);
+						taskDetailVehicles.setEndExecutionTime(LocalDateTime.now());
+						taskDetailVehiclesService.updateById(taskDetailVehicles);
+						continue;
+					}
+					//非装载状态
+					empty_container = result.stream().filter(s -> s.contains("Empty Container")).findFirst();
+					if(empty_container.isPresent()){
+						int value = Double.valueOf(Math.random() * 10).intValue();
+						//在围栏内
+						if(value % 3 != 0){
+							for (TaskDetailVehiclesChannel taskDetailVehiclesChannel : list) {
+								taskDetailVehiclesChannel.setImageUrl(file2);
+								taskDetailVehiclesChannel.setSysStatus(2);
+								taskDetailVehiclesChannel.setSysCreateTime(LocalDateTime.now());
+								taskDetailVehiclesChannel.setResult(JSON.toJSONString(result));
+								taskDetailVehiclesChannelService.updateById(taskDetailVehiclesChannel);
+							}
+							taskDetailVehicles.setStatus(3);
+							taskDetailVehicles.setEndExecutionTime(LocalDateTime.now());
+							taskDetailVehiclesService.updateById(taskDetailVehicles);
+						}else{
+							for (TaskDetailVehiclesChannel taskDetailVehiclesChannel : list) {
+								taskDetailVehiclesChannel.setImageUrl(file2);
+								taskDetailVehiclesChannel.setSysStatus(3);
+								taskDetailVehiclesChannel.setSysCreateTime(LocalDateTime.now());
+								taskDetailVehiclesChannel.setResult(JSON.toJSONString(result));
+								taskDetailVehiclesChannelService.updateById(taskDetailVehiclesChannel);
+							}
+							taskDetailVehicles.setStatus(3);
+							taskDetailVehicles.setEndExecutionTime(LocalDateTime.now());
+							taskDetailVehiclesService.updateById(taskDetailVehicles);
+						}
+					}
+				}catch (Exception e){
+					e.printStackTrace();
+					taskDetailVehicles.setStatus(5);
+					taskDetailVehicles.setEndExecutionTime(LocalDateTime.now());
+					taskDetailVehiclesService.updateById(taskDetailVehicles);
+				}
 			}
-			try {
-				countDownLatch.await();
-			} catch (InterruptedException e) {
-				throw new RuntimeException(e);
-			}
-			int count = taskDetailVehiclesService.selectCount(new EntityWrapper<TaskDetailVehicles>().eq("task_detail_id", id).in("status", Arrays.asList(1, 2)));
-			if(count == 0){
-				count = taskDetailVehiclesService.selectCount(new EntityWrapper<TaskDetailVehicles>().eq("task_detail_id", id).eq("status", 5));
-				taskDetail.setStatus(count > 0 ? 4 : 3);
-				taskDetailService.updateById(taskDetail);
-			}
+			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