From 046b7c8c7a1307be3d0693ef66e4fbac1e8d24a9 Mon Sep 17 00:00:00 2001 From: Pu Zhibing <393733352@qq.com> Date: 星期五, 21 三月 2025 15:25:49 +0800 Subject: [PATCH] 修改演示版本模型3执行bug --- guns-admin/src/main/java/com/stylefeng/guns/modular/system/service/impl/PatrolTaskServiceImpl.java | 191 ++++++++++++++++++++++++----------------------- 1 files changed, 96 insertions(+), 95 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 ae12f9c..5271e49 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 @@ -291,106 +291,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