From 443dffce29daf6ed03b3c2137738925e315fb09f Mon Sep 17 00:00:00 2001
From: Pu Zhibing <393733352@qq.com>
Date: 星期一, 30 十二月 2024 20:16:52 +0800
Subject: [PATCH] 修改bug

---
 guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/PatrolTaskServiceImpl.java |  204 ++++++++++++++++++++++++++++----------------------
 1 files changed, 114 insertions(+), 90 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 931e25e..10c27df 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
@@ -35,7 +35,12 @@
 import java.text.SimpleDateFormat;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
+import java.util.Arrays;
 import java.util.List;
+import java.util.Map;
+import java.util.concurrent.LinkedBlockingQueue;
+import java.util.concurrent.ThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
 
 /**
  * @author zhibing.pu
@@ -65,91 +70,95 @@
 	 */
 	@Override
 	public void addPatrolTask(PatrolTaskVo vo, String userId) {
-		if(vo.getStartTime().isAfter(vo.getEndTime())){
+		if(vo.getType() == 1 && vo.getStartTime().isAfter(vo.getEndTime())){
 			throw new RuntimeException("结束时间不能小于开始时间");
 		}
-		//构建主数据
-		PatrolTask patrolTask = new PatrolTask();
-		BeanUtils.copyProperties(vo, patrolTask);
-		patrolTask.setCreateTime(LocalDateTime.now());
-		patrolTask.setCreateUserId(Integer.valueOf(userId));
-		this.insert(patrolTask);
-		if(vo.getType() == 2){
-			//实时任务,手动添加后续逻辑中需要的数据
-			LocalDateTime now = LocalDateTime.now();
-			vo.setWeeks("[" + now.getDayOfWeek().getValue() + "]");
-			vo.setStartTime(now);
-			vo.setExecutionTime(now.plusSeconds(5).format(DateTimeFormatter.ofPattern("HH:mm:ss")));
-			vo.setEndTime(now.plusSeconds(10));
-		}
-		String weeks = vo.getWeeks();
-		List<Integer> week = JSON.parseArray(weeks, Integer.class);
-		//构建明细任务
-		LocalDateTime startTime = vo.getStartTime();
-		LocalDateTime endTime = vo.getEndTime();
-		while (true){
-			if(startTime.compareTo(endTime) >= 0){
-				break;
-			}
-			int value = startTime.getDayOfWeek().getValue();
-			if(week.contains(value)){
-				TaskDetail taskDetail = new TaskDetail();
-				taskDetail.setCode(UUIDUtil.getTimeStr());
-				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:ss")));
-				taskDetail.setDelFlag(0);
-				taskDetailService.insert(taskDetail);
-				
-				//添加任务和车船关系数据
-				List<VehicleVo> vehicle = vo.getVehicle();
-				for (VehicleVo vehicleVo : vehicle) {
-					TaskDetailVehicles taskDetailVehicles = new TaskDetailVehicles();
-					taskDetailVehicles.setPatrolTaskId(patrolTask.getId());
-					taskDetailVehicles.setTaskDetailId(taskDetail.getId());
-					taskDetailVehicles.setVehicleId(vehicleVo.getVehicleId());
-					taskDetailVehicles.setVehicleNum(vehicleVo.getVehicleNum());
-					taskDetailVehicles.setVehicleType(vehicleVo.getVehicleType());
-					taskDetailVehicles.setVehicleIdUnique(vehicleVo.getVehicleId() + "_" + vehicleVo.getVehicleType());
-					taskDetailVehicles.setCompanyId(vehicleVo.getCompanyId());
-					taskDetailVehicles.setCompanyName(vehicleVo.getCompanyName());
-					taskDetailVehicles.setInspectPeriodStart(vehicleVo.getInspectPeriodStart());
-					taskDetailVehicles.setInspectPeriodEnd(vehicleVo.getInspectPeriodEnd());
-					taskDetailVehicles.setStatus(1);
-					taskDetailVehiclesService.insert(taskDetailVehicles);
-					
-					//添加任务车船视频通道关系数据
-					List<Integer> videoChannel = vo.getVideoChannel();
-					for (Integer s : videoChannel) {
-						TaskDetailVehiclesChannel taskDetailVehiclesChannel = new TaskDetailVehiclesChannel();
-						taskDetailVehiclesChannel.setPatrolTaskId(patrolTask.getId());
-						taskDetailVehiclesChannel.setTaskDetailId(taskDetail.getId());
-						taskDetailVehiclesChannel.setTaskDetailVehiclesId(taskDetailVehicles.getId());
-						taskDetailVehiclesChannel.setVideoChannel(s);
-						taskDetailVehiclesChannel.setSysStatus(1);
-						taskDetailVehiclesChannelService.insert(taskDetailVehiclesChannel);
+		ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(1, 1, 0L, TimeUnit.MILLISECONDS, new LinkedBlockingQueue<Runnable>());
+		threadPoolExecutor.execute(new Runnable() {
+			@Override
+			public void run() {
+				//构建主数据
+				PatrolTask patrolTask = new PatrolTask();
+				BeanUtils.copyProperties(vo, patrolTask);
+				patrolTask.setCreateTime(LocalDateTime.now());
+				patrolTask.setCreateUserId(Integer.valueOf(userId));
+				PatrolTaskServiceImpl.this.insert(patrolTask);
+				if(vo.getType() == 2){
+					//实时任务,手动添加后续逻辑中需要的数据
+					LocalDateTime now = LocalDateTime.now();
+					vo.setWeeks("[" + now.getDayOfWeek().getValue() + "]");
+					vo.setStartTime(now);
+					vo.setExecutionTime(now.plusSeconds(5).format(DateTimeFormatter.ofPattern("HH:mm")));
+					vo.setEndTime(now.plusSeconds(10));
+				}
+				String weeks = vo.getWeeks();
+				List<Integer> week = JSON.parseArray(weeks, Integer.class);
+				//构建明细任务
+				LocalDateTime startTime = vo.getStartTime();
+				LocalDateTime endTime = vo.getEndTime();
+				while (true){
+					if(startTime.compareTo(endTime) >= 0){
+						break;
 					}
-				}
-				
-				//添加定时任务
-				JobDataMap jobDataMap = new JobDataMap();
-				jobDataMap.put("id", taskDetail.getId());
-				SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
-				try {
-					quartzUtil.addSimpleQuartzTask(PatrolTaskJob.class,patrolTask.getName() + "_" + taskDetail.getId(), QuartzEnum.DEFAULT_GROUP.getValue(), jobDataMap
-							, sdf.parse(executionTime), 0, 0);
-				} catch (SchedulerException e) {
-					throw new RuntimeException(e);
-				} catch (ParseException e) {
-					throw new RuntimeException(e);
+					int value = startTime.getDayOfWeek().getValue();
+					if(week.contains(value)){
+						TaskDetail taskDetail = new TaskDetail();
+						taskDetail.setCode(UUIDUtil.getTimeStr());
+						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")));
+						taskDetail.setDelFlag(0);
+						taskDetailService.insert(taskDetail);
+						
+						//添加任务和车船关系数据
+						List<VehicleVo> vehicle = vo.getVehicle();
+						for (VehicleVo vehicleVo : vehicle) {
+							TaskDetailVehicles taskDetailVehicles = new TaskDetailVehicles();
+							taskDetailVehicles.setPatrolTaskId(patrolTask.getId());
+							taskDetailVehicles.setTaskDetailId(taskDetail.getId());
+							taskDetailVehicles.setVehicleId(vehicleVo.getVehicleId());
+							taskDetailVehicles.setVehicleNum(vehicleVo.getVehicleNum());
+							taskDetailVehicles.setVehicleType(vehicleVo.getVehicleType());
+							taskDetailVehicles.setVehicleIdUnique(vehicleVo.getVehicleId() + "_" + vehicleVo.getVehicleType());
+							taskDetailVehicles.setCompanyId(vehicleVo.getCompanyId());
+							taskDetailVehicles.setCompanyName(vehicleVo.getCompanyName());
+							taskDetailVehicles.setInspectPeriodStart(vehicleVo.getInspectPeriodStart());
+							taskDetailVehicles.setInspectPeriodEnd(vehicleVo.getInspectPeriodEnd());
+							taskDetailVehicles.setStatus(1);
+							taskDetailVehiclesService.insert(taskDetailVehicles);
+							
+							//添加任务车船视频通道关系数据
+							List<Integer> videoChannel = vo.getVideoChannel();
+							for (Integer s : videoChannel) {
+								TaskDetailVehiclesChannel taskDetailVehiclesChannel = new TaskDetailVehiclesChannel();
+								taskDetailVehiclesChannel.setPatrolTaskId(patrolTask.getId());
+								taskDetailVehiclesChannel.setTaskDetailId(taskDetail.getId());
+								taskDetailVehiclesChannel.setTaskDetailVehiclesId(taskDetailVehicles.getId());
+								taskDetailVehiclesChannel.setVideoChannel(s);
+								taskDetailVehiclesChannel.setSysStatus(1);
+								taskDetailVehiclesChannelService.insert(taskDetailVehiclesChannel);
+							}
+						}
+						
+						//添加定时任务
+						JobDataMap jobDataMap = new JobDataMap();
+						jobDataMap.put("id", taskDetail.getId());
+						SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+						try {
+							quartzUtil.addSimpleQuartzTask(PatrolTaskJob.class,patrolTask.getName() + "_" + taskDetail.getId(), QuartzEnum.DEFAULT_GROUP.getValue(), jobDataMap
+									, sdf.parse(executionTime), 0, 0);
+						} catch (SchedulerException e) {
+							throw new RuntimeException(e);
+						} catch (ParseException e) {
+							throw new RuntimeException(e);
+						}
+					}
+					//添加一天
+					startTime = startTime.plusDays(1);
 				}
 			}
-			//添加一天
-			startTime = startTime.plusDays(1);
-		}
-		
-		
+		});
 	}
 	
 	
@@ -185,7 +194,8 @@
 				Integer vehicleId = taskDetailVehicle.getVehicleId();
 				VehicleOnline vehicleOnline1 = null;
 				for (VehicleOnline vehicleOnline : vehicleOnlines2018) {
-					if(vehicleOnline.getVehicleId().equals(vehicleId) && vehicleOnline.getVehicleType().equals(vehicleType)){
+					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");
@@ -194,7 +204,8 @@
 				}
 				if(null == vehicleOnline1){
 					for (VehicleOnline vehicleOnline : vehicleOnlines203) {
-						if(vehicleOnline.getVehicleId().equals(vehicleId) && vehicleOnline.getVehicleType().equals(vehicleType)){
+						if(null != vehicleOnline.getVehicleId() && vehicleOnline.getVehicleId().equals(vehicleId) &&
+								null != vehicleOnline.getVehicleType() && vehicleOnline.getVehicleType().equals(vehicleType)){
 							vehicleOnline1 = vehicleOnline;
 							vehicleOnline1.setVehicleGpsProtocol(vehicleOnline.getVehicleGpsProtocol());
 							break;
@@ -217,6 +228,7 @@
 				String terminalId = vehicleOnline1.getTerminalId();
 				for (TaskDetailVehiclesChannel taskDetailVehiclesChannel : taskDetailVehiclesChannels) {
 					Integer videoChannel = taskDetailVehiclesChannel.getVideoChannel();
+					
 					if("1".equals(vehicleGpsProtocol)){
 						//2018 协议
 						String fileId = VideoGateway.cameraShot2018(terminalId, videoChannel, 0);
@@ -225,7 +237,7 @@
 							throw new RuntimeException();
 						}else{
 							//等待15秒
-							Thread.sleep(15000);
+							Thread.sleep(30000);
 							
 							String fileUrl = VideoGateway.getCameraShotByFileId2018(terminalId, fileId, 0);
 							if(null == fileUrl){
@@ -237,7 +249,7 @@
 									throw new Exception();
 								}else{
 									//等待15秒
-									Thread.sleep(15000);
+									Thread.sleep(30000);
 									
 									fileUrl = VideoGateway.getCameraShotByFileId2018(terminalId, fileId, 0);
 									if(null == fileUrl){
@@ -248,8 +260,11 @@
 										taskDetailVehiclesChannel.setSysCreateTime(LocalDateTime.now());
 										taskDetailVehiclesChannel.setArtificialStatus(1);
 										//开始调模型接口得出结果
-										boolean b = ImageModelUtil.modelCheck(fileUrl, ImageModelEnum.getImageModelEnum(patrolTask.getImageModel()));
+										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);
 									}
 								}
@@ -258,8 +273,11 @@
 								taskDetailVehiclesChannel.setSysCreateTime(LocalDateTime.now());
 								taskDetailVehiclesChannel.setArtificialStatus(1);
 								//开始调模型接口得出结果
-								boolean b = ImageModelUtil.modelCheck(fileUrl, ImageModelEnum.getImageModelEnum(patrolTask.getImageModel()));
+								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);
 							}
 						}
@@ -271,7 +289,7 @@
 							throw new Exception();
 						}else{
 							//等待15秒
-							Thread.sleep(15000);
+							Thread.sleep(30000);
 							
 							String fileUrl = VideoGateway.getCameraShotByFileId2023(fileId, 0);
 							if(null == fileUrl){
@@ -283,7 +301,7 @@
 									throw new Exception();
 								}else{
 									//等待15秒
-									Thread.sleep(15000);
+									Thread.sleep(30000);
 									
 									fileUrl = VideoGateway.getCameraShotByFileId2023(fileId, 0);
 									if(null == fileUrl){
@@ -294,8 +312,11 @@
 										taskDetailVehiclesChannel.setSysCreateTime(LocalDateTime.now());
 										taskDetailVehiclesChannel.setArtificialStatus(1);
 										//开始调模型接口得出结果
-										boolean b = ImageModelUtil.modelCheck(fileUrl, ImageModelEnum.getImageModelEnum(patrolTask.getImageModel()));
+										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);
 									}
 								}
@@ -304,8 +325,11 @@
 								taskDetailVehiclesChannel.setSysCreateTime(LocalDateTime.now());
 								taskDetailVehiclesChannel.setArtificialStatus(1);
 								//开始调模型接口得出结果
-								boolean b = ImageModelUtil.modelCheck(fileUrl, ImageModelEnum.getImageModelEnum(patrolTask.getImageModel()));
+								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);
 							}
 						}

--
Gitblit v1.7.1