| | |
| | | 24, |
| | | 5000, |
| | | TimeUnit.SECONDS, |
| | | new ArrayBlockingQueue<>(10), |
| | | new ArrayBlockingQueue<>(1000), |
| | | new ThreadPoolExecutor.CallerRunsPolicy() |
| | | ); |
| | | |
| | |
| | | * 同步品牌到mysql |
| | | */ |
| | | public void getOSD() { |
| | | log.info("开始获取OSD"); |
| | | //批量修改海康品牌集合 |
| | | List<String> hkList = new ArrayList<>(); |
| | | //批量修改大华品牌集合 |
| | |
| | | List<String> serialNumbers = oneMachineFileResults.stream().map(result -> result.getSerialNumber().getValue()).collect(Collectors.toList()); |
| | | |
| | | List<TMonitor> monitors = monitorMapper.selectByNumbers(serialNumbers); |
| | | monitors = monitors.stream().filter(monitor -> monitor.getId()<7000).collect(Collectors.toList()); |
| | | log.info("处理数据大小{}",monitors.size()); |
| | | for (TMonitor monitor : monitors) { |
| | | executorService.submit(() -> { |
| | | if (DeviceType.HK.getType().equals(monitor.getDeviceType())) { |
| | | //海康品牌 |
| | | OSDResult osd = HKApi.getOsdByIP(monitor.getIp(), HKUserName, HKPassword); |
| | | if (checkSuccess(osdResultList, monitor, osd)) return; |
| | | if (checkSuccess(osdResultList, monitor, osd)){ |
| | | log.info("海康调用成功"+osd); |
| | | return; |
| | | } |
| | | } else if (DeviceType.DH.getType().equals(monitor.getDeviceType())) { |
| | | //大华品牌 |
| | | OSDResult osd = DHApi.getOsd(monitor.getIp(), DHUserName, DHPassword); |
| | | if (checkSuccess(osdResultList, monitor, osd)) return; |
| | | if (checkSuccess(osdResultList, monitor, osd)) { |
| | | log.info("大华调用成功"+osd); |
| | | return; |
| | | } |
| | | } else if (DeviceType.YS.getType().equals(monitor.getDeviceType())) { |
| | | //TODO:宇视api |
| | | } |
| | |
| | | }); |
| | | } |
| | | executorService.shutdown(); |
| | | try { |
| | | // 等待所有任务完成,最多等待10秒(可以根据需要调整) |
| | | if (!executorService.awaitTermination(10, TimeUnit.SECONDS)) { |
| | | // 如果超时,尝试停止当前正在执行的任务 |
| | | executorService.shutdownNow(); |
| | | } |
| | | } catch (InterruptedException e) { |
| | | // 当前线程在等待过程中被中断 |
| | | executorService.shutdownNow(); |
| | | // 处理中断,例如重新抛出异常或记录日志 |
| | | Thread.currentThread().interrupt(); // 保持中断状态 |
| | | } |
| | | //结束api执行,开始校验 |
| | | List<OsdCheckResult> checkResults = new ArrayList<>(); |
| | | Map<String, TMonitor> monitorMap = monitors.stream().collect(Collectors.toMap(TMonitor::getSerialNumber, Function.identity())); |
| | |
| | | checkCorrect(osdResult, monitor, osdCheckResult); |
| | | checkResults.add(osdCheckResult); |
| | | } |
| | | log.info("结果数据大小:{}",checkResults.size()); |
| | | //结果存入mongo |
| | | if(CollectionUtils.isEmpty(checkResults)){ |
| | | if(!CollectionUtils.isEmpty(checkResults)){ |
| | | log.info("存入mongo"); |
| | | //如果今天存在之前的数据先删除 |
| | | Query pyQuery = new Query(Criteria |
| | | .where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date()))); |
| | |
| | | } |
| | | //修改数据库品牌 |
| | | if(!CollectionUtils.isEmpty(hkList)){ |
| | | log.info("修改品牌"); |
| | | monitorMapper.batchUpdateDeviceType(hkList,DeviceType.HK.getType()); |
| | | } |
| | | if(!CollectionUtils.isEmpty(dhList)){ |
| | | log.info("修改品牌"); |
| | | monitorMapper.batchUpdateDeviceType(dhList,DeviceType.DH.getType()); |
| | | } |
| | | //TODO:宇视 |