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