From 7758b9a294a4f35c2d2c56beca0ad4dcdd610169 Mon Sep 17 00:00:00 2001 From: zxl <763096477@qq.com> Date: 星期二, 13 五月 2025 11:20:15 +0800 Subject: [PATCH] (部级录像可用率,重点录像可用率,录像可用率)计算可用率bug修复,hk接口bug修复, --- ycl-server/src/main/resources/mapper/zgyw/DynamicColumnMapper.xml | 8 ++ ycl-server/src/main/java/com/ycl/task/HKTask.java | 8 ++ ycl-pojo/src/main/java/com/ycl/platform/domain/query/DataCenterQuery.java | 9 +++ ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java | 116 ++++++++++++++++++++++++++++++++++---- ycl-pojo/src/main/java/com/ycl/platform/domain/vo/DynamicColumnVO.java | 4 + ycl-server/src/main/java/com/ycl/platform/controller/DataCenterController.java | 6 ++ 6 files changed, 137 insertions(+), 14 deletions(-) diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/DataCenterQuery.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/DataCenterQuery.java index 3f98a2a..1c78898 100644 --- a/ycl-pojo/src/main/java/com/ycl/platform/domain/query/DataCenterQuery.java +++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/query/DataCenterQuery.java @@ -55,4 +55,13 @@ } } + /** + * 鏌ヨ鍔ㄦ�佸垪鏁版嵁id + */ + private Integer DyId; + /** + * 鏌ヨ鍔ㄦ�佸垪鏁版嵁value 鐢ㄤ簬鍖归厤鍊� + */ + private String DyValue; + } diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/DynamicColumnVO.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/DynamicColumnVO.java index 847e3fa..8e35ee2 100644 --- a/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/DynamicColumnVO.java +++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/vo/DynamicColumnVO.java @@ -33,6 +33,10 @@ /** value琛ㄧ殑id */ private Integer valueId; + + /** 瀛楁鐨刬d*/ + private Integer labelId; + public static DynamicColumnVO getVoByEntity(@NonNull DynamicColumn entity, DynamicColumnVO vo) { if(vo == null) { vo = new DynamicColumnVO(); diff --git a/ycl-server/src/main/java/com/ycl/platform/controller/DataCenterController.java b/ycl-server/src/main/java/com/ycl/platform/controller/DataCenterController.java index 615996a..41d4701 100644 --- a/ycl-server/src/main/java/com/ycl/platform/controller/DataCenterController.java +++ b/ycl-server/src/main/java/com/ycl/platform/controller/DataCenterController.java @@ -193,6 +193,12 @@ } + /** + * 褰曞儚鍙敤鐜囧鍑� + * @param response + * @param query + * @throws IOException + */ @PostMapping("/recordingAvailability/export") public void recordingAvailabilityExport(HttpServletResponse response,DataCenterQuery query) throws IOException { query.setTime(); 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 f2297b8..1397a1e 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 @@ -77,14 +77,35 @@ private static DecimalFormat DF = new DecimalFormat("#.####"); + + + public Map<String,List<DynamicColumnVO>> getDynamicByConditions(DataCenterQuery params,List<DynamicColumnVO> list){ + //鑾峰緱鍒板搴攊d锛屼笖鍖呭惈浼犲叆瀛楃涓� 鍔ㄦ�佸垪闆嗗悎 + List<DynamicColumnVO> likeFieldDynamicColumnVOList = list.stream() + .filter(dynamicColumnVO -> + dynamicColumnVO.getLabelId().equals(params.getDyId()) && + dynamicColumnVO.getColumnValue().contains(params.getDyValue()) + ).collect(Collectors.toList()); + //鑾峰緱婊¤冻鏉′欢鐨刬d闆嗗悎 + List<String> ids = likeFieldDynamicColumnVOList.stream().map(DynamicColumnVO::getRefStringId).toList(); + Map<String,List<DynamicColumnVO>> groupByRefStringIdMap = list.stream().collect(Collectors.groupingBy(DynamicColumnVO::getRefStringId)); + Set<String> removeSet = new HashSet<>(ids); + //绉婚櫎鎺変笉绗﹀悎鏉′欢鐨刱ey + groupByRefStringIdMap.keySet().retainAll(removeSet); + + return groupByRefStringIdMap; + } + @Override public void recordingAvailabilityExport(HttpServletResponse response,DataCenterQuery params) throws IOException { + List<String> likeFileds = Arrays.asList("deviceId", "deviceName"); Query query = MongoUtil.getQuery(params, "createTime", likeFileds, null); //涓嬫媺妗嗗綍鍍忔儏鍐垫煡璇㈡潯浠� if (params.getOption() != null) { query.addCriteria(Criteria.where("recordStatus").is(params.getOption())); } + MongoUtil.setNoPage(query, params, TIME_FIELD); List<RecordMetaDSumResult> resultList = mongoTemplate.find(query, RecordMetaDSumResult.class); //缈昏瘧琛屾斂鍖哄煙 resultList.forEach(item -> { @@ -92,8 +113,19 @@ AreaDeptEnum areaDeptEnum = AreaDeptEnum.fromCode(areaCode); if (areaDeptEnum != null) item.setArealayername(areaDeptEnum.getName()); }); + //鑾峰緱鍔ㄦ�佸垪鏁版嵁 List<DynamicColumnVO> dynamicColumnVOList = dynamicColumnMapper.getDynamicColumnByTableName(TableNameConstants.COLUMN_NAME_VIDEO); - Map<String,List<DynamicColumnVO>> groupByRefStringIdMap = dynamicColumnVOList.stream().collect(Collectors.groupingBy(DynamicColumnVO::getRefStringId)); + + //鍒ゆ柇鏄惁鏈夋煡璇㈡潯浠� + boolean conditions = false; + Map<String,List<DynamicColumnVO>> groupByRefStringIdMap = new HashMap<>(); + if (params.getDyId() != null && StringUtils.isNotEmpty(params.getDyValue())){ + conditions = true; + //鑾峰緱鍔ㄦ�佸垪闆嗗悎涓寘鍚簡鐨勫瓧绗︿覆鍊肩殑闆嗗悎 鍖哄垎澶у皬鍐� + groupByRefStringIdMap = getDynamicByConditions(params,dynamicColumnVOList); + }else{ + groupByRefStringIdMap = dynamicColumnVOList.stream().collect(Collectors.groupingBy(DynamicColumnVO::getRefStringId)); + } //鍥哄畾琛ㄥご LinkedHashSet<String> headers = new LinkedHashSet<>(); headers.add(RecordingAvailabilityHeaders.arealayername); @@ -115,21 +147,28 @@ headersList.addAll(dynamicsHeaders); headers.addAll(headersList); } - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); - SimpleDateFormat dateFormat2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - +// SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + //鏌ヨ鍒版湁鍔ㄦ�佸垪鏌ヨ鏉′欢 + //鑾峰緱瀵瑰簲鍔ㄦ�佸垪涓璻ef鐨勫璞d 涓� 鏌ヨ缁撴灉id杩囨护 + if (conditions){ + Map<String, List<DynamicColumnVO>> finalGroupByRefStringIdMap = groupByRefStringIdMap; + resultList = resultList.stream() + .filter(obj -> finalGroupByRefStringIdMap.containsKey(obj.getId())) + .collect(Collectors.toList()); + } + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); List<List<Object>> data = new ArrayList<>(); for (RecordMetaDSumResult result : resultList){ List<Object> row = new ArrayList<>(); row.add(result.getArealayername()); row.add(result.getArealayerno()); - row.add(dateFormat2.format(result.getCreateTime())); + row.add(dateFormat.format(result.getCreateTime())); row.add(result.getDeviceId()); row.add(result.getMissDuration()); row.add(result.getPlatId()); row.add(result.getRecordDuration()); row.add(result.getRecordStatusText()); - row.add(dateFormat2.format(result.getCreateTime())); + row.add(dateFormat.format(result.getCreateTime())); //娣诲姞鍔ㄦ�佸垪鏁版嵁 for (String header : headersList){ boolean flag = false; @@ -201,8 +240,23 @@ item.setOffLineTimeStr(offLineTime); } }); + + + List<DynamicColumnVO> dynamicColumnVOList = dynamicColumnMapper.getDynamicColumnByTableName(TableNameConstants.COLUMN_NAME_FACE_POINT); - Map<String,List<DynamicColumnVO>> groupByRefStringIdMap = dynamicColumnVOList.stream().collect(Collectors.groupingBy(DynamicColumnVO::getRefStringId)); + + + //鍒ゆ柇鏄惁鏈夋煡璇㈡潯浠� + boolean conditions = false; + Map<String,List<DynamicColumnVO>> groupByRefStringIdMap = new HashMap<>(); + if (params.getDyId() != null && StringUtils.isNotEmpty(params.getDyValue())){ + conditions = true; + //鑾峰緱鍔ㄦ�佸垪闆嗗悎涓寘鍚簡鐨勫瓧绗︿覆鍊肩殑闆嗗悎 鍖哄垎澶у皬鍐� + groupByRefStringIdMap = getDynamicByConditions(params,dynamicColumnVOList); + }else{ + groupByRefStringIdMap = dynamicColumnVOList.stream().collect(Collectors.groupingBy(DynamicColumnVO::getRefStringId)); + } + //鍥哄畾琛ㄥご LinkedHashSet<String> headers = new LinkedHashSet<>(); headers.add(PointOnlineHeaders.no); @@ -223,6 +277,13 @@ //浣跨敤閾捐〃淇濊瘉鍚庣画琛ュ厖鏁版嵁鏃惰幏鍙栨暟鎹『搴忎竴鑷� headersList.addAll(dynamicsHeaders); headers.addAll(headersList); + } + + if (conditions){ + Map<String, List<DynamicColumnVO>> finalGroupByRefStringIdMap = groupByRefStringIdMap; + resultList = resultList.stream() + .filter(obj -> finalGroupByRefStringIdMap.containsKey(obj.getNo())) + .collect(Collectors.toList()); } List<List<Object>> data = new ArrayList<>(); @@ -313,7 +374,16 @@ } }); List<DynamicColumnVO> dynamicColumnVOList = dynamicColumnMapper.getDynamicColumnByTableName(TableNameConstants.COLUMN_NAME_VIDEO_POINT); - Map<String,List<DynamicColumnVO>> groupByRefStringIdMap = dynamicColumnVOList.stream().collect(Collectors.groupingBy(DynamicColumnVO::getRefStringId)); + //鍒ゆ柇鏄惁鏈夋煡璇㈡潯浠� + boolean conditions = false; + Map<String,List<DynamicColumnVO>> groupByRefStringIdMap = new HashMap<>(); + if (params.getDyId() != null && StringUtils.isNotEmpty(params.getDyValue())){ + conditions = true; + //鑾峰緱鍔ㄦ�佸垪闆嗗悎涓寘鍚簡鐨勫瓧绗︿覆鍊肩殑闆嗗悎 鍖哄垎澶у皬鍐� + groupByRefStringIdMap = getDynamicByConditions(params,dynamicColumnVOList); + }else{ + groupByRefStringIdMap = dynamicColumnVOList.stream().collect(Collectors.groupingBy(DynamicColumnVO::getRefStringId)); + } //鍥哄畾琛ㄥご LinkedHashSet<String> headers = new LinkedHashSet<>(); headers.add(PointOnlineHeaders.no); @@ -334,6 +404,14 @@ //浣跨敤閾捐〃淇濊瘉鍚庣画琛ュ厖鏁版嵁鏃惰幏鍙栨暟鎹『搴忎竴鑷� headersList.addAll(dynamicsHeaders); headers.addAll(headersList); + } + + + if (conditions){ + Map<String, List<DynamicColumnVO>> finalGroupByRefStringIdMap = groupByRefStringIdMap; + resultList = resultList.stream() + .filter(obj -> finalGroupByRefStringIdMap.containsKey(obj.getNo())) + .collect(Collectors.toList()); } List<List<Object>> data = new ArrayList<>(); @@ -428,7 +506,16 @@ } }); List<DynamicColumnVO> dynamicColumnVOList = dynamicColumnMapper.getDynamicColumnByTableName(TableNameConstants.COLUMN_NAME_CAR_POINT); - Map<String,List<DynamicColumnVO>> groupByRefStringIdMap = dynamicColumnVOList.stream().collect(Collectors.groupingBy(DynamicColumnVO::getRefStringId)); + //鍒ゆ柇鏄惁鏈夋煡璇㈡潯浠� + boolean conditions = false; + Map<String,List<DynamicColumnVO>> groupByRefStringIdMap = new HashMap<>(); + if (params.getDyId() != null && StringUtils.isNotEmpty(params.getDyValue())){ + conditions = true; + //鑾峰緱鍔ㄦ�佸垪闆嗗悎涓寘鍚簡鐨勫瓧绗︿覆鍊肩殑闆嗗悎 鍖哄垎澶у皬鍐� + groupByRefStringIdMap = getDynamicByConditions(params,dynamicColumnVOList); + }else{ + groupByRefStringIdMap = dynamicColumnVOList.stream().collect(Collectors.groupingBy(DynamicColumnVO::getRefStringId)); + } //鍥哄畾琛ㄥご LinkedHashSet<String> headers = new LinkedHashSet<>(); headers.add(PointOnlineHeaders.no); @@ -449,6 +536,14 @@ //浣跨敤閾捐〃淇濊瘉鍚庣画琛ュ厖鏁版嵁鏃惰幏鍙栨暟鎹『搴忎竴鑷� headersList.addAll(dynamicsHeaders); headers.addAll(headersList); + } + + + if (conditions){ + Map<String, List<DynamicColumnVO>> finalGroupByRefStringIdMap = groupByRefStringIdMap; + resultList = resultList.stream() + .filter(obj -> finalGroupByRefStringIdMap.containsKey(obj.getNo())) + .collect(Collectors.toList()); } List<List<Object>> data = new ArrayList<>(); @@ -1284,9 +1379,6 @@ */ @Override public Result videoAvailabilityRate(DataCenterQuery params) { - - - List<String> likeFileds = Arrays.asList("deviceId", "deviceName"); Query query = MongoUtil.getQuery(params, "createTime", likeFileds, null); diff --git a/ycl-server/src/main/java/com/ycl/task/HKTask.java b/ycl-server/src/main/java/com/ycl/task/HKTask.java index 2c5b495..b9388dd 100644 --- a/ycl-server/src/main/java/com/ycl/task/HKTask.java +++ b/ycl-server/src/main/java/com/ycl/task/HKTask.java @@ -592,6 +592,7 @@ JSONObject labelJson = hkClient.getGetLabel(); Integer faceLabelId = null; Integer carLabelId = null; + Integer allLabelId = null; if (labelJson != null) { String code = labelJson.getString("code"); if (ApiConstants.HKSuccessCode.equals(code)){ @@ -603,6 +604,8 @@ faceLabelId = label.getId(); }else if ("鐪佸巺杞﹁締".equals(label.getLabelName())){ carLabelId = label.getId(); + }else if ("鍏ㄩ噺".equals(label.getLabelName())){ + allLabelId = label.getId(); } } log.error("鎵撳嵃hkResultLabels锛歿}",hkResultLabels); @@ -632,6 +635,10 @@ // param.setLabelId(); //------------榛樿鍙傛暟涓簄ull璇锋眰鍏ㄩ噺鏁版嵁 + if (allLabelId == null){ + allLabelId = -1; + } + param.setLabelId(allLabelId); JSONObject scoreJson = hkClient.getScoreNew(param); log.error("鍏ㄩ噺鏁版嵁"); if (scoreJson != null) { @@ -687,7 +694,6 @@ cars.add(car); faces.add(face); } - //璇锋眰鐪佸巺鏁版嵁 }else { log.error("璋冪敤娴峰悍鍏ㄩ噺鏁版嵁api澶辫触"); } diff --git a/ycl-server/src/main/resources/mapper/zgyw/DynamicColumnMapper.xml b/ycl-server/src/main/resources/mapper/zgyw/DynamicColumnMapper.xml index 09e36f3..8f82080 100644 --- a/ycl-server/src/main/resources/mapper/zgyw/DynamicColumnMapper.xml +++ b/ycl-server/src/main/resources/mapper/zgyw/DynamicColumnMapper.xml @@ -98,6 +98,7 @@ <result column="column_value" property="columnValue"/> <result column="ref_string_id" property="refStringId"/> <result column="value_id" property="valueId"/> + <result column="label_id" property="labelId"/> </resultMap> <select id="getDynamicColumnByTable" resultMap="dynamicColumnMap"> @@ -111,7 +112,12 @@ </select> <select id="getDynamicColumnByTableName" resultMap="dynamicColumnMap"> - select *,dcv.id as value_id + select *, + dc.prop_name, + dc.label_value, + dcv.column_value, + dcv.ref_string_id, + dcv.dynamic_column_id as label_id from t_dynamic_column_value dcv left join t_dynamic_column dc on dc.id = dcv.dynamic_column_id -- Gitblit v1.8.0