| | |
| | | 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 |
| | |
| | | */ |
| | | @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); |
| | | } |
| | | |
| | | |
| | | }); |
| | | } |
| | | |
| | | |
| | |
| | | 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"); |
| | |
| | | } |
| | | 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; |
| | |
| | | String terminalId = vehicleOnline1.getTerminalId(); |
| | | for (TaskDetailVehiclesChannel taskDetailVehiclesChannel : taskDetailVehiclesChannels) { |
| | | Integer videoChannel = taskDetailVehiclesChannel.getVideoChannel(); |
| | | |
| | | if("1".equals(vehicleGpsProtocol)){ |
| | | //2018 协议 |
| | | String fileId = VideoGateway.cameraShot2018(terminalId, videoChannel, 0); |
| | |
| | | throw new RuntimeException(); |
| | | }else{ |
| | | //等待15秒 |
| | | Thread.sleep(15000); |
| | | Thread.sleep(30000); |
| | | |
| | | String fileUrl = VideoGateway.getCameraShotByFileId2018(terminalId, fileId, 0); |
| | | if(null == fileUrl){ |
| | |
| | | throw new Exception(); |
| | | }else{ |
| | | //等待15秒 |
| | | Thread.sleep(15000); |
| | | Thread.sleep(30000); |
| | | |
| | | fileUrl = VideoGateway.getCameraShotByFileId2018(terminalId, fileId, 0); |
| | | if(null == fileUrl){ |
| | |
| | | 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); |
| | | } |
| | | } |
| | |
| | | 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); |
| | | } |
| | | } |
| | |
| | | throw new Exception(); |
| | | }else{ |
| | | //等待15秒 |
| | | Thread.sleep(15000); |
| | | Thread.sleep(30000); |
| | | |
| | | String fileUrl = VideoGateway.getCameraShotByFileId2023(fileId, 0); |
| | | if(null == fileUrl){ |
| | |
| | | throw new Exception(); |
| | | }else{ |
| | | //等待15秒 |
| | | Thread.sleep(15000); |
| | | Thread.sleep(30000); |
| | | |
| | | fileUrl = VideoGateway.getCameraShotByFileId2023(fileId, 0); |
| | | if(null == fileUrl){ |
| | |
| | | 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); |
| | | } |
| | | } |
| | |
| | | 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); |
| | | } |
| | | } |