| | |
| | | BigDecimal qualifyMonitor = new BigDecimal((Integer) param.get("qualifyMonitor")); |
| | | return qualifyMonitor.divide(totalMonitors, 4, RoundingMode.HALF_UP); |
| | | } |
| | | |
| | | //一机一档注册率率 |
| | | public BigDecimal monitorRegistration(Map<String, Object> param) { |
| | | //新+正在用的档案数 |
| | |
| | | BigDecimal useSites = new BigDecimal((Integer) param.get("totalSites") - (Integer) param.get("newSites")); |
| | | return useSites.divide(totalSites, 4, RoundingMode.HALF_UP); |
| | | } |
| | | |
| | | //档案考核比 |
| | | public BigDecimal archivesRate(Map<String, Object> param) { |
| | | BigDecimal allFiles = new BigDecimal((Integer) param.get("allFiles")); |
| | | BigDecimal todayFiles = new BigDecimal((Integer) param.get("todayFiles")); |
| | | return todayFiles.divide(allFiles, 4, RoundingMode.HALF_UP); |
| | | } |
| | | |
| | | //点位在线率 |
| | | public BigDecimal siteOnline(Map<String, Object> param) { |
| | | BigDecimal totalSites = new BigDecimal((Integer) param.get("totalSites")); |
| | | BigDecimal onlineSites = new BigDecimal((Integer) param.get("onlineSites")); |
| | | return onlineSites.divide(totalSites, 4, RoundingMode.HALF_UP); |
| | | } |
| | | |
| | | //视频Osd准确率 |
| | | public BigDecimal osdAccuracy(Map<String, Object> param) { |
| | | BigDecimal totalSites = new BigDecimal((Integer) param.get("totalSites")); |
| | | BigDecimal osdAccuracySites = new BigDecimal((Integer) param.get("osdAccuracySites")); |
| | | return osdAccuracySites.divide(totalSites, 4, RoundingMode.HALF_UP); |
| | | } |
| | | |
| | | //视频时间合格率 |
| | | public BigDecimal osdTimeAccuracy(Map<String, Object> param) { |
| | | BigDecimal totalSites = new BigDecimal((Integer) param.get("totalSites")); |
| | | BigDecimal timeAccuracySites = new BigDecimal((Integer) param.get("timeAccuracySites")); |
| | | return timeAccuracySites.divide(totalSites, 4, RoundingMode.HALF_UP); |
| | | } |
| | | |
| | | //目录一致率,每超过百分之1扣10% |
| | |
| | | // 计算newSites占totalSites的百分比倍数 |
| | | BigDecimal percentage = newSites.divide(totalSites, 2, RoundingMode.DOWN).multiply(BigDecimal.valueOf(100)); |
| | | BigDecimal result = BigDecimal.ONE; |
| | | if(BigDecimal.ONE.compareTo(percentage) <= 0 ){ |
| | | if (BigDecimal.ONE.compareTo(percentage) <= 0) { |
| | | result = result.subtract(percentage.multiply(new BigDecimal("0.1"))); |
| | | } |
| | | return result.max(BigDecimal.ZERO); |
| | | } |
| | | |
| | | //视图库对接稳定性 |
| | | public BigDecimal viewConnectStability(Map<String, Object> param) { |
| | | BigDecimal totalDataSum = new BigDecimal((Integer) param.get("totalDataSum")); |
| | | BigDecimal avgCount = new BigDecimal((Integer) param.get("avgCount")); |
| | | BigDecimal avgCount = (BigDecimal) param.get("avgCount"); |
| | | return avgCount.divide(totalDataSum, 4, RoundingMode.HALF_UP); |
| | | } |
| | | |
| | |
| | | BigDecimal delayCount2 = new BigDecimal((Integer) param.get("delayCount2")); |
| | | BigDecimal delayCount3 = new BigDecimal((Integer) param.get("delayCount3")); |
| | | |
| | | BigDecimal result = delayCount1.divide(totalCount, 10, RoundingMode.HALF_UP).multiply(BigDecimal.ONE) |
| | | BigDecimal result = BigDecimal.ONE.subtract(delayCount1.divide(totalCount, 10, RoundingMode.HALF_UP).multiply(BigDecimal.ONE) |
| | | .add(delayCount2.divide(totalCount, 10, RoundingMode.HALF_UP).multiply(new BigDecimal("0.8"))) |
| | | .add(delayCount3.divide(totalCount, 10, RoundingMode.HALF_UP).multiply(new BigDecimal("0.6"))); |
| | | .add(delayCount3.divide(totalCount, 10, RoundingMode.HALF_UP).multiply(new BigDecimal("0.6")))); |
| | | return result.setScale(4, RoundingMode.HALF_UP); |
| | | } |
| | | |
| | |
| | | BigDecimal integritySites = new BigDecimal((Integer) param.get("integritySites")); |
| | | BigDecimal importantIntegritySites = new BigDecimal((Integer) param.get("importantIntegritySites")); |
| | | BigDecimal result = integritySites.divide(totalSites, 10, RoundingMode.HALF_UP) |
| | | .add(importantIntegritySites.divide(importantTotalSites, 10, RoundingMode.HALF_UP)); |
| | | .multiply(importantIntegritySites.divide(importantTotalSites, 10, RoundingMode.HALF_UP)); |
| | | return result.setScale(4, RoundingMode.HALF_UP); |
| | | } |
| | | |
| | |
| | | List<YwPoint> commandImages = pointMapper.selectByTag(null, null, Boolean.TRUE); |
| | | return CollectionUtils.isEmpty(commandImages) ? new ArrayList<>() : commandImages.stream().map(YwPoint::getSerialNumber).collect(Collectors.toList()); |
| | | } |
| | | |
| | | //返回monitor |
| | | public List<String> getMonitorFromMongo() { |
| | | // 获取Calendar实例,默认使用当前时区和语言环境 |
| | | Calendar calendar = Calendar.getInstance(); |
| | | // 清除Calendar中的所有字段值,以避免它们对当前日期时间有影响 |
| | | calendar.clear(); |
| | | // 设置年份、月份(注意:月份是从0开始的,所以8月是7)、日期 |
| | | calendar.set(Calendar.YEAR, 2024); |
| | | calendar.set(Calendar.MONTH, Calendar.AUGUST); |
| | | calendar.set(Calendar.DAY_OF_MONTH, 13); |
| | | // Calendar.getTime()方法返回一个表示此Calendar时间值的Date对象 |
| | | Date date = calendar.getTime(); |
| | | Query query = new Query(Criteria.where("mongoCreateTime").gte(DateUtils.getDayStart(date)).lt(DateUtils.getDayEnd(date))); |
| | | // Query query = new Query(Criteria.where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date()))); |
| | | Query query = new Query(Criteria.where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date()))); |
| | | List<MonitorQualifyResult> oneMachineFileResults = mongoTemplate.find(query, MonitorQualifyResult.class); |
| | | |
| | | return CollectionUtils.isEmpty(oneMachineFileResults) ? new ArrayList<>() : oneMachineFileResults.stream().map(result -> result.getSerialNumber().getValue()).collect(Collectors.toList()); |
| | | } |
| | | |
| | | //检查是否存在当日数据 |
| | | public <T extends CheckIndex> T getCheckIndex(String key, List<T> checkIndexList, Class<T> clazz) { |
| | | T checkIndex; |
| | | |
| | | // 检查是否已存在今日数据 |
| | | Optional<T> existingIndex = checkIndexList.stream() |
| | | .filter(index -> key.equals(index.getDeptId().toString()) && |
| | | (key.startsWith(ApiConstants.Province) ? CheckConstants.Examine_Tag_Province.equals(index.getExamineTag()) |
| | | : CheckConstants.Examine_Tag_County.equals(index.getExamineTag()))) |
| | | .filter(index -> key.startsWith(ApiConstants.Province) ? |
| | | CheckConstants.Examine_Tag_Province.equals(index.getExamineTag()) && key.split("_")[1].equals(index.getDeptId().toString()) |
| | | : CheckConstants.Examine_Tag_County.equals(index.getExamineTag()) && key.equals(index.getDeptId().toString())) |
| | | .findFirst(); |
| | | |
| | | if (existingIndex.isPresent()) { |
| | |
| | | } |
| | | return checkIndex; |
| | | } |
| | | |
| | | } |