From dea580dae4fe148acf766b68fd99f87510164b36 Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期一, 28 十月 2024 12:22:00 +0800 Subject: [PATCH] 录像翻译行政区域 --- ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java | 250 +++++++++++++++++++++++++++++++++++-------------- 1 files changed, 179 insertions(+), 71 deletions(-) diff --git a/ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java b/ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java index c3a37f7..fb05624 100644 --- a/ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java +++ b/ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java @@ -13,6 +13,7 @@ import com.ycl.platform.domain.result.HK.*; import com.ycl.platform.domain.result.SYS.TMonitorResult; import com.ycl.platform.domain.result.UY.*; +import com.ycl.platform.domain.vo.DataCenter.MonitorQualifyResultVO; import com.ycl.platform.domain.vo.PointDetailVO; import com.ycl.platform.mapper.ImageResourceSecurityDetailMapper; import com.ycl.platform.mapper.YwPointMapper; @@ -21,8 +22,10 @@ import com.ycl.system.page.PageUtil; import com.ycl.utils.DateUtils; import com.ycl.utils.MongoUtil; +import com.ycl.utils.bean.BeanUtils; import constant.ApiConstants; import constant.CheckConstants; +import enumeration.general.AreaDeptEnum; import lombok.RequiredArgsConstructor; import org.apache.commons.collections.CollectionUtils; import org.bson.Document; @@ -453,34 +456,40 @@ @Override public Result videoOneMachineDocumentRegister(DataCenterQuery params) { List<String> likeFileds = Arrays.asList("ip.showValue", "name.showValue", "serialNumber.showValue"); - Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null); - + List<Criteria> andCriteria = MongoUtil.getAndCriteria(params, TIME_FIELD, likeFileds, null); + Query query = new Query(); + Criteria and = new Criteria(); + if(params.getOption()!=null){ + if(params.getOption() ==1){ + andCriteria.add(Criteria.where("newDevice").is(Boolean.TRUE)); + }else if(params.getOption() ==-1){ + andCriteria.add(Criteria.where("newDevice").is(Boolean.FALSE)); + } + } + and.andOperator(andCriteria); + query = Query.query(and); long total = mongoTemplate.count(query, MonitorQualifyResult.class); MongoUtil.setPage(query, params, TIME_FIELD); List<MonitorQualifyResult> resultList = mongoTemplate.find(query, MonitorQualifyResult.class); - + List<MonitorQualifyResultVO> resultVOS = new ArrayList<>(); + for (MonitorQualifyResult result : resultList) { + MonitorQualifyResultVO vo = MonitorQualifyResult.getVO(result); + resultVOS.add(vo); + } // 缁熻鏁伴噺 MongoDatabase database = mongoTemplate.getDb(); MongoCollection<Document> collection = database.getCollection("uy_monitor_qualify"); - + //鎬绘暟 List<Document> dList1 = new ArrayList<>(2); - dList1.add(new Document("ip.error", new Document("$eq", Boolean.TRUE))); setTag(params, dList1); + Document totalFilter = new Document("$and",dList1); + //鏂拌澶囨暟 List<Document> dList2 = new ArrayList<>(2); - dList2.add(new Document("macdz.error", new Document("$eq", Boolean.TRUE))); setTag(params, dList2); - List<Document> dList3 = new ArrayList<>(2); - dList3.add(new Document("latitude.error", new Document("$eq", Boolean.TRUE))); - setTag(params, dList3); - List<Document> dList4 = new ArrayList<>(2); - dList4.add(new Document("longitude.error", new Document("$eq", Boolean.TRUE))); - setTag(params, dList4); - Document ipErrFilter = new Document("$and", dList1); - Document macdzErrFilter = new Document("$and", dList2); - Document latitudeErrFilter = new Document("$and", dList3); - Document longitudeErrFilter = new Document("$and", dList4); + dList2.add(new Document("newDevice",Boolean.TRUE)); + Document newFilter = new Document("$and",dList2); - List<Document> lists = Arrays.asList(ipErrFilter, macdzErrFilter, latitudeErrFilter, longitudeErrFilter); + List<Document> lists = Arrays.asList(totalFilter, newFilter); List<String> rList = lists.stream().map(filter -> { // 鏋勫缓鑱氬悎绠¢亾 List<Document> pipeline = Arrays.asList( @@ -499,11 +508,11 @@ return uniqueDeviceIdCount + ""; }).collect(Collectors.toList()); - Date now = new Date(); List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper()) .select(CheckIndexVideo::getMonitorRegistration) .eq(params.getDataType().equals(1), CheckIndexVideo::getExamineTag, CheckConstants.Examine_Tag_Province) - .between(CheckIndexVideo::getCreateTime, DateUtils.getDayStart(now), DateUtils.getDayEnd(now)) + .eq(params.getDataType().equals(2), CheckIndexVideo::getExamineTag, CheckConstants.Examine_Tag_Dept) + .between(CheckIndexVideo::getCreateTime, DateUtils.getDayStart(params.getStartTime()), DateUtils.getDayEnd(params.getEndTime())) .list(); BigDecimal onlineRate = BigDecimal.ZERO; if (CollectionUtils.isNotEmpty(videoList)) { @@ -514,7 +523,7 @@ rList.add(this.remove0(onlineRate)); HashMap<String, Object> map = new HashMap<>(); map.put("count", rList); - map.put("list", resultList); + map.put("list", resultVOS); return Result.ok().data(map).total(total); } @@ -527,34 +536,100 @@ @Override public Result videoOneMachineDocumentQualified(DataCenterQuery params) { List<String> likeFileds = Arrays.asList("ip.showValue", "name.showValue", "serialNumber.showValue"); - Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null); + List<Criteria> andCriteria = MongoUtil.getAndCriteria(params, TIME_FIELD, likeFileds, null); + Query query = new Query(); + Criteria and = new Criteria(); + and.andOperator(andCriteria); + query = Query.query(and); + if(params.getOption()!=null){ + if(params.getOption() ==1){ + andCriteria.add(Criteria.where("serialNumber.error").is(Boolean.FALSE)); + andCriteria.add(Criteria.where("name.error").is(Boolean.FALSE)); + andCriteria.add(Criteria.where("civilCode.error").is(Boolean.FALSE)); + andCriteria.add(Criteria.where("integrated_device.error").is(Boolean.FALSE)); + andCriteria.add(Criteria.where("jkdwlx.error").is(Boolean.FALSE)); + andCriteria.add(Criteria.where("latitude.error").is(Boolean.FALSE)); + andCriteria.add(Criteria.where("longitude.error").is(Boolean.FALSE)); + andCriteria.add(Criteria.where("macdz.error").is(Boolean.FALSE)); + andCriteria.add(Criteria.where("name.error").is(Boolean.FALSE)); + andCriteria.add(Criteria.where("sbzt.error").is(Boolean.FALSE)); + andCriteria.add(Criteria.where("sxjcjqy.error").is(Boolean.FALSE)); + andCriteria.add(Criteria.where("sxjgnlx.error").is(Boolean.FALSE)); + Criteria and2 = new Criteria(); + and2.andOperator(andCriteria); + query = Query.query(and2); + }else if(params.getOption() ==-1){ + Criteria c1 = Criteria.where("serialNumber.error").is(Boolean.TRUE); + Criteria c2 = Criteria.where("name.error").is(Boolean.TRUE); + Criteria c3 = Criteria.where("civilCode.error").is(Boolean.TRUE); + Criteria c4 = Criteria.where("integrated_device.error").is(Boolean.TRUE); + Criteria c5 = Criteria.where("jkdwlx.error").is(Boolean.TRUE); + Criteria c6 = Criteria.where("latitude.error").is(Boolean.TRUE); + Criteria c7 = Criteria.where("longitude.error").is(Boolean.TRUE); + Criteria c8 = Criteria.where("macdz.error").is(Boolean.TRUE); + Criteria c9 = Criteria.where("name.error").is(Boolean.TRUE); + Criteria c10 = Criteria.where("sbzt.error").is(Boolean.TRUE); + Criteria c11 = Criteria.where("sxjcjqy.error").is(Boolean.TRUE); + Criteria c12 = Criteria.where("sxjgnlx.error").is(Boolean.TRUE); + Criteria orOperator = new Criteria().orOperator(c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12); + orOperator.andOperator(andCriteria); + query = Query.query(orOperator); + } + } long total = mongoTemplate.count(query, MonitorQualifyResult.class); MongoUtil.setPage(query, params, TIME_FIELD); List<MonitorQualifyResult> resultList = mongoTemplate.find(query, MonitorQualifyResult.class); - + List<MonitorQualifyResultVO> resultVOS = new ArrayList<>(); + for (MonitorQualifyResult result : resultList) { + MonitorQualifyResultVO vo = MonitorQualifyResult.getVO(result); + resultVOS.add(vo); + } // 缁熻鏁伴噺 MongoDatabase database = mongoTemplate.getDb(); MongoCollection<Document> collection = database.getCollection("uy_monitor_qualify"); - + //鎬绘暟 List<Document> dList1 = new ArrayList<>(2); - dList1.add(new Document("ip.error", new Document("$eq", Boolean.TRUE))); setTag(params, dList1); + Document totalFilter = new Document("$and",dList1); + //鍚堟牸鏁� List<Document> dList2 = new ArrayList<>(2); - dList2.add(new Document("macdz.error", new Document("$eq", Boolean.TRUE))); - setTag(params, dList2); - List<Document> dList3 = new ArrayList<>(2); - dList3.add(new Document("latitude.error", new Document("$eq", Boolean.TRUE))); - setTag(params, dList3); - List<Document> dList4 = new ArrayList<>(2); - dList4.add(new Document("longitude.error", new Document("$eq", Boolean.TRUE))); - setTag(params, dList4); - Document ipErrFilter = new Document("$and", dList1); - Document macdzErrFilter = new Document("$and", dList2); - Document latitudeErrFilter = new Document("$and", dList3); - Document longitudeErrFilter = new Document("$and", dList4); + dList2.add(new Document("serialNumber.error",Boolean.FALSE)); + dList2.add(new Document("name.error",Boolean.FALSE)); + dList2.add(new Document("civilCode.error",Boolean.FALSE)); + dList2.add(new Document("integrated_device.error",Boolean.FALSE)); + dList2.add(new Document("jkdwlx.error",Boolean.FALSE)); + dList2.add(new Document("latitude.error",Boolean.FALSE)); + dList2.add(new Document("longitude.error",Boolean.FALSE)); + dList2.add(new Document("macdz.error",Boolean.FALSE)); + dList2.add(new Document("name.error",Boolean.FALSE)); + dList2.add(new Document("sbzt.error",Boolean.FALSE)); + dList2.add(new Document("sxjcjqy.error",Boolean.FALSE)); + dList2.add(new Document("sxjgnlx.error",Boolean.FALSE)); + setTag(params,dList2); + Document qualifyFilter = new Document("$and",dList2); + //涓嶅悎鏍兼暟 + Document mongoCreateTimeRange = new Document() + .append("$gte", params.getStartTime()) + .append("$lt", params.getEndTime()); + Document mongoCreateTime = new Document("mongoCreateTime", mongoCreateTimeRange); + List<Document> errorConditions = new ArrayList<>(); + errorConditions.add(new Document("serialNumber.error", new Document("$eq", Boolean.TRUE))); + errorConditions.add(new Document("name.error", new Document("$eq", Boolean.TRUE))); + errorConditions.add(new Document("civilCode.error", new Document("$eq", Boolean.TRUE))); + errorConditions.add(new Document("integrated_device.error", new Document("$eq", Boolean.TRUE))); + errorConditions.add(new Document("jkdwlx.error", new Document("$eq", Boolean.TRUE))); + errorConditions.add(new Document("latitude.error", new Document("$eq", Boolean.TRUE))); + errorConditions.add(new Document("longitude.error", new Document("$eq", Boolean.TRUE))); + errorConditions.add(new Document("macdz.error", new Document("$eq", Boolean.TRUE))); + errorConditions.add(new Document("name.error", new Document("$eq", Boolean.TRUE))); + errorConditions.add(new Document("sbzt.error", new Document("$eq", Boolean.TRUE))); + errorConditions.add(new Document("sxjcjqy.error", new Document("$eq", Boolean.TRUE))); + errorConditions.add(new Document("sxjgnlx.error", new Document("$eq", Boolean.TRUE))); + Document errorFilter = new Document("$or", errorConditions); + Document unQualifyFilter = new Document("$and", Arrays.asList(mongoCreateTime, errorFilter)); - List<Document> lists = Arrays.asList(ipErrFilter, macdzErrFilter, latitudeErrFilter, longitudeErrFilter); + List<Document> lists = Arrays.asList(totalFilter, qualifyFilter, unQualifyFilter); List<String> rList = lists.stream().map(filter -> { // 鏋勫缓鑱氬悎绠¢亾 List<Document> pipeline = Arrays.asList( @@ -573,11 +648,11 @@ return uniqueDeviceIdCount + ""; }).collect(Collectors.toList()); - Date now = new Date(); List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper()) .select(CheckIndexVideo::getMonitorQualification) .eq(params.getDataType().equals(1), CheckIndexVideo::getExamineTag, CheckConstants.Examine_Tag_Province) - .between(CheckIndexVideo::getCreateTime, DateUtils.getDayStart(now), DateUtils.getDayEnd(now)) + .eq(params.getDataType().equals(2), CheckIndexVideo::getExamineTag, CheckConstants.Examine_Tag_Dept) + .between(CheckIndexVideo::getCreateTime, DateUtils.getDayStart(params.getStartTime()), DateUtils.getDayEnd(params.getEndTime())) .list(); BigDecimal onlineRate = BigDecimal.ZERO; if (CollectionUtils.isNotEmpty(videoList)) { @@ -588,47 +663,50 @@ rList.add(this.remove0(onlineRate)); HashMap<String, Object> map = new HashMap<>(); map.put("count", rList); - map.put("list", resultList); + map.put("list", resultVOS); return Result.ok().data(map).total(total); } /** * 瑙嗛锛氭。妗堣�冩牳姣� - * + * 妗f鐣欏瓨鎬婚噺锛歮ongo瀛樼殑鎵�鏈夊幓閲嶅悗鐨勬。妗� + * 褰撴棩妗f锛氬綋鏃ョ殑妗f + * 妗f鑰冩牳姣� = 褰撴棩妗f/妗f鐣欏瓨鎬婚噺 * @param params - * @return + * @return1 */ @Override public Result videoAssessmentFileRatio(DataCenterQuery params) { List<String> likeFileds = Arrays.asList("ip.showValue", "name.showValue", "serialNumber.showValue"); - Query query = MongoUtil.getQuery(params, TIME_FIELD, likeFileds, null); - + List<Criteria> andCriteria = MongoUtil.getAndCriteria(params, TIME_FIELD, likeFileds, null); + Query query = new Query(); + Criteria and = new Criteria(); + and.andOperator(andCriteria); + query = Query.query(and); long total = mongoTemplate.count(query, MonitorQualifyResult.class); MongoUtil.setPage(query, params, TIME_FIELD); List<MonitorQualifyResult> resultList = mongoTemplate.find(query, MonitorQualifyResult.class); - + List<MonitorQualifyResultVO> resultVOS = new ArrayList<>(); + for (MonitorQualifyResult result : resultList) { + MonitorQualifyResultVO vo = MonitorQualifyResult.getVO(result); + resultVOS.add(vo); + } // 缁熻鏁伴噺 MongoDatabase database = mongoTemplate.getDb(); MongoCollection<Document> collection = database.getCollection("uy_monitor_qualify"); - + //鎬绘暟 List<Document> dList1 = new ArrayList<>(2); - dList1.add(new Document("ip.error", new Document("$eq", Boolean.TRUE))); - setTag(params, dList1); + DataCenterQuery totalParams = new DataCenterQuery(); + BeanUtils.copyProperties(params,totalParams); + totalParams.setStartTime(null); + setTag(totalParams, dList1); + Document totalFilter = new Document("$and",dList1); + //褰撴棩妗f鏁� List<Document> dList2 = new ArrayList<>(2); - dList2.add(new Document("macdz.error", new Document("$eq", Boolean.TRUE))); setTag(params, dList2); - List<Document> dList3 = new ArrayList<>(2); - dList3.add(new Document("latitude.error", new Document("$eq", Boolean.TRUE))); - setTag(params, dList3); - List<Document> dList4 = new ArrayList<>(2); - dList4.add(new Document("longitude.error", new Document("$eq", Boolean.TRUE))); - setTag(params, dList4); - Document ipErrFilter = new Document("$and", dList1); - Document macdzErrFilter = new Document("$and", dList2); - Document latitudeErrFilter = new Document("$and", dList3); - Document longitudeErrFilter = new Document("$and", dList4); + Document newFilter = new Document("$and",dList2); - List<Document> lists = Arrays.asList(ipErrFilter, macdzErrFilter, latitudeErrFilter, longitudeErrFilter); + List<Document> lists = Arrays.asList(totalFilter, newFilter); List<String> rList = lists.stream().map(filter -> { // 鏋勫缓鑱氬悎绠¢亾 List<Document> pipeline = Arrays.asList( @@ -647,10 +725,22 @@ return uniqueDeviceIdCount + ""; }).collect(Collectors.toList()); - rList.add("0%"); + List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper()) + .select(CheckIndexVideo::getArchivesRate) + .eq(params.getDataType().equals(1), CheckIndexVideo::getExamineTag, CheckConstants.Examine_Tag_Province) + .eq(params.getDataType().equals(2), CheckIndexVideo::getExamineTag, CheckConstants.Examine_Tag_Dept) + .between(CheckIndexVideo::getCreateTime, DateUtils.getDayStart(params.getStartTime()), DateUtils.getDayEnd(params.getEndTime())) + .list(); + BigDecimal onlineRate = BigDecimal.ZERO; + if (CollectionUtils.isNotEmpty(videoList)) { + BigDecimal sum = videoList.stream().map(CheckIndexVideo::getArchivesRate).reduce(BigDecimal.ZERO, BigDecimal::add); + BigDecimal count = BigDecimal.valueOf(videoList.size()); + onlineRate = sum.divide(count, 4, RoundingMode.HALF_UP).multiply(BigDecimal.valueOf(100)); + } + rList.add(this.remove0(onlineRate)); HashMap<String, Object> map = new HashMap<>(); map.put("count", rList); - map.put("list", resultList); + map.put("list", resultVOS); return Result.ok().data(map).total(total); } @@ -671,7 +761,12 @@ long total = mongoTemplate.count(query, RecordMetaDSumResult.class); MongoUtil.setPage(query, params, "createTime"); List<RecordMetaDSumResult> resultList = mongoTemplate.find(query, RecordMetaDSumResult.class); - + //缈昏瘧琛屾斂鍖哄煙 + resultList.forEach(item->{ + String areaCode = item.getArealayername().substring(0, 6); + AreaDeptEnum areaDeptEnum = AreaDeptEnum.fromCode(areaCode); + if(areaDeptEnum!=null) item.setArealayername(areaDeptEnum.getName()); + }); // 缁熻鏁伴噺 MongoDatabase database = mongoTemplate.getDb(); MongoCollection<Document> collection = database.getCollection("uy_record_meta_d_sum"); @@ -741,7 +836,12 @@ long total = mongoTemplate.count(query, RecordMetaDSumResult.class); MongoUtil.setPage(query, params, "createTime"); List<RecordMetaDSumResult> resultList = mongoTemplate.find(query, RecordMetaDSumResult.class); - + //缈昏瘧琛屾斂鍖哄煙 + resultList.forEach(item->{ + String areaCode = item.getArealayername().substring(0, 6); + AreaDeptEnum areaDeptEnum = AreaDeptEnum.fromCode(areaCode); + if(areaDeptEnum!=null) item.setArealayername(areaDeptEnum.getName()); + }); // 缁熻鏁伴噺 MongoDatabase database = mongoTemplate.getDb(); MongoCollection<Document> collection = database.getCollection("uy_record_meta_d_sum"); @@ -811,7 +911,12 @@ long total = mongoTemplate.count(query, RecordMetaDSumResult.class); MongoUtil.setPage(query, params, "createTime"); List<RecordMetaDSumResult> resultList = mongoTemplate.find(query, RecordMetaDSumResult.class); - + //缈昏瘧琛屾斂鍖哄煙 + resultList.forEach(item->{ + String areaCode = item.getArealayername().substring(0, 6); + AreaDeptEnum areaDeptEnum = AreaDeptEnum.fromCode(areaCode); + if(areaDeptEnum!=null) item.setArealayername(areaDeptEnum.getName()); + }); // 缁熻鏁伴噺 MongoDatabase database = mongoTemplate.getDb(); MongoCollection<Document> collection = database.getCollection("uy_record_meta_d_sum"); @@ -900,6 +1005,9 @@ List<String> likeFileds = Arrays.asList("deviceNo", "osdName"); List<Criteria> andCriteria = MongoUtil.getAndCriteria(params, "checkTime", likeFileds, 3); Query query = new Query(); + Criteria and = new Criteria(); + and.andOperator(andCriteria); + query = Query.query(and); //涓嬫媺妗嗘爣娉ㄦ纭煡璇㈡潯浠� if (params.getOption() != null) { if(params.getOption()==1) { @@ -908,9 +1016,9 @@ andCriteria.add(Criteria.where("osdProvinceCorrect").is(1)); andCriteria.add(Criteria.where("osdCityCorrect").is(1)); andCriteria.add(Criteria.where("osdPartCorrect").is(1)); - Criteria and = new Criteria(); - and.andOperator(andCriteria); - query = Query.query(and); + Criteria and2 = new Criteria(); + and2.andOperator(andCriteria); + query = Query.query(and2); }else if(params.getOption()==-1){ // 浣跨敤$or鏉′欢杩炴帴澶氫釜瀛楁妫�鏌ワ紝姣忎釜瀛楁妫�鏌ユ槸鍚︾瓑浜�-1 Criteria c1 = Criteria.where("osdNameCorrect").is(-1); @@ -2324,9 +2432,9 @@ } else if (params.getDataType().equals(2)) { dList.add(new Document("deptTag", new Document("$eq", Boolean.TRUE))); } - Document mongoCreateTimeRange = new Document() - .append("$gte", params.getStartTime()) - .append("$lt", params.getEndTime()); + Document mongoCreateTimeRange = new Document(); + if (params.getStartTime()!=null) mongoCreateTimeRange.append("$gte", params.getStartTime()); + if (params.getEndTime()!=null) mongoCreateTimeRange .append("$lt", params.getEndTime()); dList.add(new Document("mongoCreateTime", mongoCreateTimeRange)); } } -- Gitblit v1.8.0