From 9d0d134447c84abcf34ddfda1f31099af7037c18 Mon Sep 17 00:00:00 2001 From: zxl <763096477@qq.com> Date: 星期四, 24 四月 2025 10:46:56 +0800 Subject: [PATCH] 录像可用率判断方式,海康的接口调整 --- ycl-server/src/main/java/com/ycl/task/HKTask.java | 404 +++++++++++++++++++++++++++++++++++----- ycl-pojo/src/main/java/com/ycl/platform/domain/param/HK/ScoreParam.java | 17 + ycl-server/src/main/java/com/ycl/feign/HKLabelName.java | 37 +++ ycl-server/src/main/java/com/ycl/feign/HKResultLabel.java | 23 ++ ycl-server/src/main/java/com/ycl/feign/HkResultInfo.java | 36 +++ ycl-server/src/main/java/com/ycl/platform/service/impl/DataCenterServiceImpl.java | 42 ++++ ycl-server/src/main/java/com/ycl/feign/HKClient.java | 12 + 7 files changed, 512 insertions(+), 59 deletions(-) diff --git a/ycl-pojo/src/main/java/com/ycl/platform/domain/param/HK/ScoreParam.java b/ycl-pojo/src/main/java/com/ycl/platform/domain/param/HK/ScoreParam.java index befd0e7..b7a8538 100644 --- a/ycl-pojo/src/main/java/com/ycl/platform/domain/param/HK/ScoreParam.java +++ b/ycl-pojo/src/main/java/com/ycl/platform/domain/param/HK/ScoreParam.java @@ -4,13 +4,16 @@ @Data public class ScoreParam extends BaseParam{ - //yyyy-MM-dd + //yyyy-MM-dd 绛� ID 涓虹┖锛岄粯璁ゆ煡璇㈠叏閲忔寚鏍囨垚缁� private String startDate; private String endDate; - //閲嶇偣鐐逛綅鏍囨敞 闈炲繀濉� 1閲嶇偣 0鍏ㄩ噺 榛樿鍏ㄩ噺 - private Integer focusFlag; - //浜鸿劯涓氬姟鏍戠紪鐮� - private String faceTree; - //杞﹁締涓氬姟鏍戠紪鐮� - private String carTree; +// //閲嶇偣鐐逛綅鏍囨敞 闈炲繀濉� 1閲嶇偣 0鍏ㄩ噺 榛樿鍏ㄩ噺 +// private Integer focusFlag; +// //浜鸿劯涓氬姟鏍戠紪鐮� +// private String faceTree; +// //杞﹁締涓氬姟鏍戠紪鐮� +// private String carTree; + + //鏍囩id 绛� ID 涓虹┖锛岄粯璁ゆ煡璇㈠叏閲忔寚鏍囨垚缁� + private Integer labelId; } diff --git a/ycl-server/src/main/java/com/ycl/feign/HKClient.java b/ycl-server/src/main/java/com/ycl/feign/HKClient.java index 92b19bf..c741e85 100644 --- a/ycl-server/src/main/java/com/ycl/feign/HKClient.java +++ b/ycl-server/src/main/java/com/ycl/feign/HKClient.java @@ -32,6 +32,18 @@ */ @GetMapping("/aaoo/api/third/score/get") JSONObject getScore(@SpringQueryMap ScoreParam param); + + /** + * 鑾峰彇娴峰悍鑰冩牳鎴愮哗鏂� + * 鑾峰彇娴峰悍鑰冩牳鎴愮哗 + * @return 鑰冩牳鎴愮哗 + */ + @GetMapping("/aaoo/api/v1/getCheckScore") + JSONObject getScoreNew(@SpringQueryMap ScoreParam param); + + @GetMapping("/aaoo/api/v1/getLabel") + JSONObject getGetLabel(); + // /** // * 鎸夊尯鍩熺粺璁$粡绾害寮傚父璁惧鎴栧崱鍙� // * 1銆佹牴鎹粍缁囧尯鍩熸瘡10鍒嗛挓姹囨�婚噰闆嗚澶�/鍗″彛缁忕含搴﹀紓甯告暟閲忋�� diff --git a/ycl-server/src/main/java/com/ycl/feign/HKLabelName.java b/ycl-server/src/main/java/com/ycl/feign/HKLabelName.java new file mode 100644 index 0000000..3f15ae8 --- /dev/null +++ b/ycl-server/src/main/java/com/ycl/feign/HKLabelName.java @@ -0,0 +1,37 @@ +package com.ycl.feign; + +import com.baomidou.mybatisplus.annotation.EnumValue; +import com.fasterxml.jackson.annotation.JsonValue; +import lombok.Data; +import lombok.Getter; + +@Getter +public enum HKLabelName { + faceButtStability2023("faceButtStability2023","浜鸿劯瑙嗗浘搴撳鎺ョǔ瀹氭��"), + faceDelay("faceDelay","璁惧鎶撴媿浜鸿劯鏁版嵁涓婁紶鍙婃椂鎬�"), + faceClockAccuracy("faceClockAccuracy","浜鸿劯璁惧鎶撴媿鍥剧墖鏃堕挓鍑嗙‘鎬�"), + faceOnlineRate("faceOnlineRate","浜鸿劯鐐逛綅鍦ㄧ嚎鐜�"), + faceCapturedPicturesEligibility("faceCapturedPicturesEligibility","浜鸿劯璁惧鎶撴媿鍥剧墖鍚堟牸鎬�"), + faceBigPictureAccess("faceBigPictureAccess","浜鸿劯鍗″彛璁惧鎶撴媿鏁版嵁澶у浘鍙敤鎬�"), + + carDelay("carDelay","杞﹁締鍗″彛璁惧鎶撴媿鏁版嵁涓婁紶鍙婃椂鎬�"), + carOnlineRate2023("carOnlineRate2023","杞﹁締鐐逛綅鍦ㄧ嚎鐜�"), + carButtStability2023("carButtStability2023","杞﹁締瑙嗗浘搴撳鎺ョǔ瀹氭��"), + carBigPictureAccess("carBigPictureAccess","杞﹁締鍗″彛璁惧鎶撴媿鏁版嵁澶у浘鍙敤鎬�"), + carCorrectRate("carCorrectRate","杞﹁締鍗″彛璁惧鎶撴媿鏁版嵁鍑嗙‘鎬�"), + carClockAccuracy("carClockAccuracy","杞﹁締鍗″彛璁惧鏃堕挓鍑嗙‘鎬�"), + carQualifiedRate("carQualifiedRate","杞﹁締鍗″彛璁惧鎶撴媿鏁版嵁瀹屾暣鎬�"), + carUrlOkRate("carUrlOkRate","杞﹁締鍗″彛璁惧url鍙敤鎬�"); + + + @EnumValue // 鏍囨槑璇ュ瓧娈靛瓨鍏ユ暟鎹簱 + @JsonValue // 鏍囨槑鍦ㄨ浆JSON鏃朵娇鐢ㄨ瀛楁锛屽嵆鍝嶅簲鏃� + private final String code; + + private final String desc; + + HKLabelName(String code, String desc) { + this.code = code; + this.desc = desc; + } +} diff --git a/ycl-server/src/main/java/com/ycl/feign/HKResultLabel.java b/ycl-server/src/main/java/com/ycl/feign/HKResultLabel.java new file mode 100644 index 0000000..e1a4c1a --- /dev/null +++ b/ycl-server/src/main/java/com/ycl/feign/HKResultLabel.java @@ -0,0 +1,23 @@ +package com.ycl.feign; + +import lombok.Data; + +import java.util.List; + +@Data +public class HKResultLabel { + //鏍囩 ID + private Integer id; + //鏍囩鍚嶇О + private String labelName; + //鏄惁鏄粯璁ゆ爣绛� 1鏄� 0鍚� + private Integer isDefault; + //鏀规爣绛惧叧鑱旂殑鑰冩牳鎸囨爣椤� + private List<String> relatedIndex; + + //鍏宠仈鎸囨爣鐨勫ぇ绫� + private List<String> relatedIndexCategory; + + //鏄惁鑷姩鑰冩牳 1涓鸿嚜鍔� 0涓烘墜鍔� + private Integer isAuto; +} diff --git a/ycl-server/src/main/java/com/ycl/feign/HkResultInfo.java b/ycl-server/src/main/java/com/ycl/feign/HkResultInfo.java new file mode 100644 index 0000000..7504b27 --- /dev/null +++ b/ycl-server/src/main/java/com/ycl/feign/HkResultInfo.java @@ -0,0 +1,36 @@ +package com.ycl.feign; + +import lombok.Data; + +@Data +public class HkResultInfo { + + //鎸囨爣id + private String indexCode; + //鍖哄幙缂栫爜 + private String areaCode; + //鍖哄幙鍚嶇О + private String areaName; + + //鎴愮哗 + private Double score; +// //寮傚父鏁� +// private Integer errorNum; +// //鎬绘暟 +// private Integer total; +// //姝g‘鐜� +// private String qualifiedRate; + //鎸囨爣鍚嶇О + private String checkCodeName; + //鎵规id + private Integer batchId; + + + +// private String scoreRuleDesc; + + + + + +} 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 9d9f588..0be079c 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 @@ -23,6 +23,7 @@ import com.ycl.platform.mapper.YwPointMapper; import com.ycl.platform.service.*; import com.ycl.system.Result; +import com.ycl.system.service.ISysConfigService; import com.ycl.utils.DateUtils; import com.ycl.utils.MongoUtil; import com.ycl.utils.StringUtils; @@ -1259,6 +1260,7 @@ return Result.ok().data(map).total(total); } + private final ISysConfigService configService; /** * 瑙嗛锛氬綍鍍忓彲鐢ㄧ巼 * @@ -1268,6 +1270,17 @@ @Override public Result videoAvailabilityRate(DataCenterQuery params) { + //鑾峰彇绯荤粺鍙傛暟 + String dictLabel = configService.selectConfigByKey("recording_min_time"); + + double recordingMinTime; + try { + recordingMinTime = Double.parseDouble(dictLabel) / 60; // 濡傛灉 dictLabel 鏄互灏忔椂涓哄崟浣嶏紝鍒欐棤闇�闄や互 60 + } catch (Exception e) { + log.error("閰嶇疆鐨勫垹闄ゆ椂闂磋寖鍥存牸寮忎笉姝g‘: {}", dictLabel, e); + recordingMinTime = 12.0; // 榛樿 12 灏忔椂锛堜互灏忔椂涓哄崟浣嶏級 + } + List<String> likeFileds = Arrays.asList("deviceId", "deviceName"); Query query = MongoUtil.getQuery(params, "createTime", likeFileds, null); //涓嬫媺妗嗗綍鍍忔儏鍐垫煡璇㈡潯浠� @@ -1315,6 +1328,32 @@ } return uniqueDeviceIdCount + ""; }).collect(Collectors.toList()); + + //璁$畻褰曞儚鍙敤鐜� + MongoDatabase databaes2 = mongoTemplate.getDb(); + MongoCollection<Document> collection2 = databaes2.getCollection("uy_record_meta_d_sum"); + + double finalRecordingMinTime = recordingMinTime; + + List<Document> documentList = new ArrayList<>(3); + setTag(params, documentList); + Document recording = new Document("recordDuration",new Document("$gte", finalRecordingMinTime)); + documentList.add(recording); + Document filter = new Document("$and", documentList); + // 鏋勫缓鑱氬悎绠¢亾 + List<Document> pipeline = Arrays.asList( + new Document("$match", filter), + // $group 鍘婚噸 + new Document("$group", new Document("_id", "$deviceId")), + new Document("$count", "uniqueDeviceIds") + ); + AggregateIterable<Document> result = collection2.aggregate(pipeline); + Integer uniqueDeviceIdCount = 0; + for (Document doc : result) { + uniqueDeviceIdCount = doc.getInteger("uniqueDeviceIds"); + break; // 涓嶉渶瑕佺户缁亶鍘嗭紝鍥犱负 $count 鍙細浜х敓涓�涓粨鏋� + } + log.error("鎵撳嵃锛歿}",uniqueDeviceIdCount); // List<CheckIndexVideo> videoList = new LambdaQueryChainWrapper<>(checkIndexVideoService.getBaseMapper()) // .select(CheckIndexVideo::getVideoAvailable) // .eq(params.getDataType().equals(1), CheckIndexVideo::getExamineTag, CheckConstants.Examine_Tag_Province) @@ -1338,12 +1377,11 @@ // 1锛氬畬鏁� 0锛氶棿姝� -1锛氬紓甯� | if (!StringUtils.isEmpty(resultCount.get(0)) && !"0".equals(resultCount.get(0))) { //resultCount.get(0) - onlineRate = new BigDecimal(resultCount.get(1)).divide(new BigDecimal(resultCount.get(0)), 3,RoundingMode.DOWN).multiply(new BigDecimal("100")); + onlineRate = new BigDecimal(resultCount.get(1)).divide(new BigDecimal(uniqueDeviceIdCount), 3,RoundingMode.DOWN).multiply(new BigDecimal("100")); } resultCount.add(this.remove0(onlineRate)); HashMap<String, Object> map = new HashMap<>(); - log.error("resultCount:{}",resultCount.get(3)); map.put("count", resultCount); map.put("list", resultList); return Result.ok().data(map).total(total); 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 c6cad22..a5ecce0 100644 --- a/ycl-server/src/main/java/com/ycl/task/HKTask.java +++ b/ycl-server/src/main/java/com/ycl/task/HKTask.java @@ -3,9 +3,7 @@ import com.alibaba.fastjson2.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.mongodb.client.result.DeleteResult; -import com.ycl.feign.HKClient; -import com.ycl.feign.HkApiUtil; -import com.ycl.feign.UYClient; +import com.ycl.feign.*; import com.ycl.platform.domain.entity.CheckIndexCar; import com.ycl.platform.domain.entity.CheckIndexFace; import com.ycl.platform.domain.entity.TMonitor; @@ -27,9 +25,11 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; +import org.springframework.cloud.client.loadbalancer.LoadBalancerRequestFactory; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.query.Criteria; import org.springframework.data.mongodb.core.query.Query; +import org.springframework.http.converter.StringHttpMessageConverter; import org.springframework.stereotype.Component; import org.springframework.util.CollectionUtils; @@ -78,6 +78,10 @@ private ICheckIndexFaceService faceService; @Autowired private CheckIndexFaceMapper faceMapper; + @Autowired + private StringHttpMessageConverter stringHttpMessageConverter; + @Autowired + private LoadBalancerRequestFactory loadBalancerRequestFactory; //杞﹁締璁惧鍏ㄦ鎸囨爣鐩戞祴缁撴灉 public void vehicleDeviceInspectionTask() { @@ -491,15 +495,135 @@ } //鑰冩牳鎴愮哗 - public void HkScoreTask() { +// public void HkScoreTask() { +// log.info("寮�濮嬫墽琛屾捣搴疯�冩牳鎴愮哗鏁版嵁"); +// //鍑嗗鏂板鎴栦慨鏀圭殑鏁版嵁 +// List<CheckIndexCar> cars = new ArrayList<>(); +// List<CheckIndexFace> faces = new ArrayList<>(); +// // 鏌ヨ鏄惁index琛ㄥ凡缁忓瓨鍦ㄤ粖鏃ユ暟鎹� +// List<CheckIndexFace> checkIndexFaceList = faceMapper.selectToday(utils.DateUtils.getDate()); +// List<CheckIndexCar> checkIndexCarList = carMapper.selectToday(utils.DateUtils.getDate()); +// +// SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); +// // 鑾峰彇褰撳墠鏃堕棿鐨凜alendar瀹炰緥 +// Calendar calendar = Calendar.getInstance(); +// // 璁剧疆鏃堕棿涓哄墠涓�澶� +// calendar.add(Calendar.DATE, -1); +// // 鑾峰彇鍓嶄竴澶╃殑Date瀵硅薄 +// Date yesterday = calendar.getTime(); +// //鍏堣姹傚叏閲忔暟鎹� +// ScoreParam param = new ScoreParam(); +// param.setStartDate(format.format(yesterday)); +// param.setEndDate(format.format(yesterday)); +//// param.setFocusFlag(ApiConstants.HK_FOCUS_FLAG_ALL); +//// param.setCarTree(carCode); +//// param.setFaceTree(faceCode); +// JSONObject scoreJson = hkClient.getScore(param); +// if (scoreJson != null) { +// String code = scoreJson.getString("code"); +// if (ApiConstants.HKSuccessCode.equals(code)) { +// List<HKScoreResult> data = scoreJson.getList("data", HKScoreResult.class); +// +// //鏍规嵁鏁版嵁杞崲涓篿ndex瀵硅薄 +// data.forEach(score -> { +// CheckIndexCar car = new CheckIndexCar(); +// CheckIndexFace face = new CheckIndexFace(); +// score2Index(score, car, face); +// car.setExamineTag(CheckConstants.Examine_Tag_County); +// face.setExamineTag(CheckConstants.Examine_Tag_County); +// Optional<CheckIndexCar> carFirst = checkIndexCarList.stream() +// .filter(index -> CheckConstants.Examine_Tag_County.equals(index.getExamineTag()) && car.getDeptId().equals(index.getDeptId())) +// .findFirst(); +// Optional<CheckIndexFace> faceFirst = checkIndexFaceList.stream() +// .filter(index -> CheckConstants.Examine_Tag_County.equals(index.getExamineTag()) && face.getDeptId().equals(index.getDeptId())) +// .findFirst(); +// if (carFirst.isPresent()) { +// car.setId(carFirst.get().getId()); +// } +// if (faceFirst.isPresent()) { +// face.setId(faceFirst.get().getId()); +// } +// cars.add(car); +// faces.add(face); +// }); +// } +// } +// +// //鍏堣姹傜渷鍘呮暟鎹� +// ScoreParam provinceParam = new ScoreParam(); +// provinceParam.setStartDate(format.format(yesterday)); +// provinceParam.setEndDate(format.format(yesterday)); +//// provinceParam.setFocusFlag(ApiConstants.HK_FOCUS_FLAG_ALL); +//// provinceParam.setCarTree(carProvinceCode); +//// provinceParam.setFaceTree(faceProvinceCode); +// JSONObject scoreProvinceJson = hkClient.getScore(provinceParam); +// if (scoreProvinceJson != null) { +// String code = scoreProvinceJson.getString("code"); +// if (ApiConstants.HKSuccessCode.equals(code)) { +// List<HKScoreResult> data = scoreProvinceJson.getList("data", HKScoreResult.class); +// +// //鏍规嵁鏁版嵁杞崲涓篿ndex瀵硅薄 +// data.forEach(score -> { +// CheckIndexCar car = new CheckIndexCar(); +// CheckIndexFace face = new CheckIndexFace(); +// score2Index(score, car, face); +// car.setExamineTag(CheckConstants.Examine_Tag_Province); +// face.setExamineTag(CheckConstants.Examine_Tag_Province); +// Optional<CheckIndexCar> carFirst = checkIndexCarList.stream() +// .filter(index -> CheckConstants.Examine_Tag_Province.equals(index.getExamineTag()) && car.getDeptId().equals(index.getDeptId())) +// .findFirst(); +// Optional<CheckIndexFace> faceFirst = checkIndexFaceList.stream() +// .filter(index -> CheckConstants.Examine_Tag_Province.equals(index.getExamineTag()) && face.getDeptId().equals(index.getDeptId())) +// .findFirst(); +// if (carFirst.isPresent()) { +// car.setId(carFirst.get().getId()); +// } +// if (faceFirst.isPresent()) { +// face.setId(faceFirst.get().getId()); +// } +// cars.add(car); +// faces.add(face); +// }); +// } +// } +// //瀛樻斁鎴愮哗鍒癿ysql锛屽鏋滃瓨鍦ㄥ垯鏇挎崲涓嶅瓨鍦ㄥ氨鏂板銆� +// if (!CollectionUtils.isEmpty(cars)) carService.saveOrUpdateBatch(cars); +// if (!CollectionUtils.isEmpty(faces)) faceService.saveOrUpdateBatch(faces); +// log.info("缁撴潫娴峰悍鑰冩牳鎴愮哗鏁版嵁"); +// } + + public void HkScoreTask(){ log.info("寮�濮嬫墽琛屾捣搴疯�冩牳鎴愮哗鏁版嵁"); + //鍏堟墽琛岃幏寰楁爣绛� 鍥犱负鍏ㄩ噺榛樿浼犲弬涓簄ull锛屼絾鏄渷鍘呮暟鎹渶瑕佽幏寰楁爣绛� + JSONObject labelJson = hkClient.getGetLabel(); + Integer faceLabelId = null; + Integer carLabelId = null; + if (labelJson != null) { + String code = labelJson.getString("code"); + if (ApiConstants.HKSuccessCode.equals(code)){ + //鑾峰緱label鑰冩牳鏍囩瀵硅薄 + List<HKResultLabel> hkResultLabels = labelJson.getList("data",HKResultLabel.class); + for (HKResultLabel label : hkResultLabels) { + if ("鐪佸巺浜鸿劯".equals(label.getLabelName())){ + faceLabelId = label.getId(); + }else if ("鐪佸巺杞﹁締".equals(label.getLabelName())){ + carLabelId = label.getId(); + } + } + log.error("鎵撳嵃hkResultLabels锛歿}",hkResultLabels); + + } + } + if (faceLabelId == null || carLabelId == null){ + log.error("娴峰悍鑾峰彇鐪佸巺鑰冩牳鏍囩涓簄ull"); + } + //鍑嗗鏂板鎴栦慨鏀圭殑鏁版嵁 List<CheckIndexCar> cars = new ArrayList<>(); List<CheckIndexFace> faces = new ArrayList<>(); // 鏌ヨ鏄惁index琛ㄥ凡缁忓瓨鍦ㄤ粖鏃ユ暟鎹� List<CheckIndexFace> checkIndexFaceList = faceMapper.selectToday(utils.DateUtils.getDate()); List<CheckIndexCar> checkIndexCarList = carMapper.selectToday(utils.DateUtils.getDate()); - SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); // 鑾峰彇褰撳墠鏃堕棿鐨凜alendar瀹炰緥 Calendar calendar = Calendar.getInstance(); @@ -507,23 +631,51 @@ calendar.add(Calendar.DATE, -1); // 鑾峰彇鍓嶄竴澶╃殑Date瀵硅薄 Date yesterday = calendar.getTime(); - //鍏堣姹傚叏閲忔暟鎹� + ScoreParam param = new ScoreParam(); - param.setStartDate(format.format(yesterday)); - param.setEndDate(format.format(yesterday)); - param.setFocusFlag(ApiConstants.HK_FOCUS_FLAG_ALL); - param.setCarTree(carCode); - param.setFaceTree(faceCode); - JSONObject scoreJson = hkClient.getScore(param); +// param.setStartDate(format.format(yesterday)); +// param.setEndDate(format.format(yesterday)); +// param.setLabelId(); + + //------------榛樿鍙傛暟涓簄ull璇锋眰鍏ㄩ噺鏁版嵁 + JSONObject scoreJson = hkClient.getScoreNew(param); + log.error("鍏ㄩ噺鏁版嵁"); if (scoreJson != null) { + List<HkResultInfo> allInfo = new ArrayList<>(); String code = scoreJson.getString("code"); - if (ApiConstants.HKSuccessCode.equals(code)) { - List<HKScoreResult> data = scoreJson.getList("data", HKScoreResult.class); - //鏍规嵁鏁版嵁杞崲涓篿ndex瀵硅薄 - data.forEach(score -> { + if (ApiConstants.HKSuccessCode.equals(code)){ + JSONObject data = scoreJson.getJSONObject("data"); + + Map<Integer,JSONObject> map = new HashMap<>(); + //鑾峰緱data 涓� batchId 鐨勬壒娆d瀵硅薄 鏀惧叆map涓� + for (String batchIdKey :data.keySet() ) { + JSONObject batch = data.getJSONObject(batchIdKey); + //浠ユ壒娆d涓簁ey 鏀惧叆 JSONObject瀵硅薄 + map.put(Integer.valueOf(batchIdKey),batch); + //鎵规id 涓� 鍚勫尯淇℃伅闆嗗悎 + log.error("鎵撳嵃鍑篸ata鍐呭涓壒娆d锛歿}锛屼互鍙婂搴旂殑缁撴灉info:{}",batchIdKey,batch); + } + //鑾峰緱鏈�澶х殑閿�� + Optional<Integer> maxKey = map.keySet().stream() + .max(Integer::compareTo); + if (maxKey.isPresent()) { + //鑾峰彇鏈�澶х殑key 鎺ュ彛杩斿洖鍐呭涓渶鏂扮殑鎵规 + Integer id = maxKey.get(); + //杩欎竴灞備负鑾峰緱 data -> 涓� 鎵规鏁扮粍涓� -> 鍖哄煙code鏁扮粍鐨刱ey + for (String areaCodeKey : map.get(id).keySet()) { + //瀛樻斁鏈�鏂版壒娆$殑鍐呭鍒癮llInfo闆嗗悎涓� + allInfo.addAll(map.get(id).getList(areaCodeKey,HkResultInfo.class)); + } + } + //瀵筧llInfo杩涜鍒嗙粍 鍒嗙粍鎸夊尯鍩焛d + Map<String, List<HkResultInfo>> groupedByAreaName = allInfo.stream() + .collect(Collectors.groupingBy(HkResultInfo::getAreaCode)); + for (Map.Entry<String, List<HkResultInfo>> entry : groupedByAreaName.entrySet()) { + log.error("鏈�鏂版壒娆″唴鏁版嵁:{}",groupedByAreaName.get(entry.getKey()).size()); + log.error("鏈�鏂版壒娆″唴size:{}",groupedByAreaName.get(entry.getKey())); CheckIndexCar car = new CheckIndexCar(); CheckIndexFace face = new CheckIndexFace(); - score2Index(score, car, face); + score3Index(groupedByAreaName.get(entry.getKey()), car, face,entry.getKey()); car.setExamineTag(CheckConstants.Examine_Tag_County); face.setExamineTag(CheckConstants.Examine_Tag_County); Optional<CheckIndexCar> carFirst = checkIndexCarList.stream() @@ -540,47 +692,128 @@ } cars.add(car); faces.add(face); - }); + } + //璇锋眰鐪佸巺鏁版嵁 + + + }else { + log.error("璋冪敤娴峰悍鍏ㄩ噺鏁版嵁api澶辫触"); } + } - //鍏堣姹傜渷鍘呮暟鎹� - ScoreParam provinceParam = new ScoreParam(); - provinceParam.setStartDate(format.format(yesterday)); - provinceParam.setEndDate(format.format(yesterday)); - provinceParam.setFocusFlag(ApiConstants.HK_FOCUS_FLAG_ALL); - provinceParam.setCarTree(carProvinceCode); - provinceParam.setFaceTree(faceProvinceCode); - JSONObject scoreProvinceJson = hkClient.getScore(provinceParam); - if (scoreProvinceJson != null) { - String code = scoreProvinceJson.getString("code"); - if (ApiConstants.HKSuccessCode.equals(code)) { - List<HKScoreResult> data = scoreProvinceJson.getList("data", HKScoreResult.class); + //------------鑾峰彇鐪佸巺鏁版嵁 + List<HkResultInfo> provincialList = new ArrayList<>(); - //鏍规嵁鏁版嵁杞崲涓篿ndex瀵硅薄 - data.forEach(score -> { - CheckIndexCar car = new CheckIndexCar(); - CheckIndexFace face = new CheckIndexFace(); - score2Index(score, car, face); - car.setExamineTag(CheckConstants.Examine_Tag_Province); - face.setExamineTag(CheckConstants.Examine_Tag_Province); - Optional<CheckIndexCar> carFirst = checkIndexCarList.stream() - .filter(index -> CheckConstants.Examine_Tag_Province.equals(index.getExamineTag()) && car.getDeptId().equals(index.getDeptId())) - .findFirst(); - Optional<CheckIndexFace> faceFirst = checkIndexFaceList.stream() - .filter(index -> CheckConstants.Examine_Tag_Province.equals(index.getExamineTag()) && face.getDeptId().equals(index.getDeptId())) - .findFirst(); - if (carFirst.isPresent()) { - car.setId(carFirst.get().getId()); + //鑾峰彇鐪佸巺浜鸿劯鏁版嵁 + if (faceLabelId != null){ + log.error("faceLabelId:{}",faceLabelId); + param.setLabelId(faceLabelId); + JSONObject faceJson = hkClient.getScoreNew(param); + log.error("鐪佸巺浜鸿劯鏁版嵁"); + if (faceJson != null) { + String code = scoreJson.getString("code"); + if (ApiConstants.HKSuccessCode.equals(code)){ + JSONObject data = scoreJson.getJSONObject("data"); + + Map<Integer,JSONObject> map = new HashMap<>(); + //鑾峰緱data 涓� batchId 鐨勬壒娆d瀵硅薄 鏀惧叆map涓� + for (String batchIdKey :data.keySet() ) { + JSONObject batch = data.getJSONObject(batchIdKey); + //浠ユ壒娆d涓簁ey 鏀惧叆 JSONObject瀵硅薄 + map.put(Integer.valueOf(batchIdKey),batch); + //鎵规id 涓� 鍚勫尯淇℃伅闆嗗悎 + log.error("鎵撳嵃鍑虹渷鍘呬汉鑴竏ata鍐呭涓壒娆d锛歿}锛屼互鍙婂搴旂殑缁撴灉info:{}",batchIdKey,batch); } - if (faceFirst.isPresent()) { - face.setId(faceFirst.get().getId()); + //鑾峰緱鏈�澶х殑閿�� + Optional<Integer> maxKey = map.keySet().stream() + .max(Integer::compareTo); + if (maxKey.isPresent()) { + //鑾峰彇鏈�澶х殑key 鎺ュ彛杩斿洖鍐呭涓渶鏂扮殑鎵规 + Integer id = maxKey.get(); + //杩欎竴灞備负鑾峰緱 data -> 涓� 鎵规鏁扮粍涓� -> 鍖哄煙code鏁扮粍鐨刱ey + for (String areaCodeKey : map.get(id).keySet()) { + //瀛樻斁鏈�鏂版壒娆$殑鍐呭鍒癮llInfo闆嗗悎涓� + provincialList.addAll(map.get(id).getList(areaCodeKey,HkResultInfo.class)); + } } - cars.add(car); - faces.add(face); - }); + + }else { + log.error("璋冪敤娴峰悍鐪佸巺浜鸿劯鏁版嵁api澶辫触"); + } + } + + + }else { + log.error("faceLabelId:涓虹┖涓嶆墽琛岃幏寰楃渷鍘呮暟鎹�"); } + //鑾峰彇鐪佸巺杞﹁締鏁版嵁 + if (carLabelId != null){ + log.error("carLabelId:{}",carLabelId); + param.setLabelId(carLabelId); + JSONObject carJson = hkClient.getScoreNew(param); + log.error("鐪佸巺杞﹁締鏁版嵁"); + if (carJson != null) { + String code = scoreJson.getString("code"); + if (ApiConstants.HKSuccessCode.equals(code)){ + JSONObject data = scoreJson.getJSONObject("data"); + + Map<Integer,JSONObject> map = new HashMap<>(); + //鑾峰緱data 涓� batchId 鐨勬壒娆d瀵硅薄 鏀惧叆map涓� + for (String batchIdKey :data.keySet() ) { + JSONObject batch = data.getJSONObject(batchIdKey); + //浠ユ壒娆d涓簁ey 鏀惧叆 JSONObject瀵硅薄 + map.put(Integer.valueOf(batchIdKey),batch); + //鎵规id 涓� 鍚勫尯淇℃伅闆嗗悎 + log.error("鎵撳嵃鍑虹渷鍘呮垚杈哾ata鍐呭涓壒娆d锛歿}锛屼互鍙婂搴旂殑缁撴灉info:{}",batchIdKey,batch); + } + //鑾峰緱鏈�澶х殑閿�� + Optional<Integer> maxKey = map.keySet().stream() + .max(Integer::compareTo); + if (maxKey.isPresent()) { + //鑾峰彇鏈�澶х殑key 鎺ュ彛杩斿洖鍐呭涓渶鏂扮殑鎵规 + Integer id = maxKey.get(); + //杩欎竴灞備负鑾峰緱 data -> 涓� 鎵规鏁扮粍涓� -> 鍖哄煙code鏁扮粍鐨刱ey + for (String areaCodeKey : map.get(id).keySet()) { + //瀛樻斁鏈�鏂版壒娆$殑鍐呭鍒癮llInfo闆嗗悎涓� + provincialList.addAll(map.get(id).getList(areaCodeKey,HkResultInfo.class)); + } + } + }else { + log.error("璋冪敤娴峰悍鐪佸巺杞﹁締鏁版嵁api澶辫触"); + } + } + }else { + log.error("carLabelId:涓虹┖涓嶆墽琛岃幏寰楃渷鍘呮暟鎹�"); + } + //鑾峰彇瀹屾暟鎹紑濮嬪垎缁� + Map<String,List<HkResultInfo>> provincialGroupedByAreaName = provincialList.stream() + .collect(Collectors.groupingBy(HkResultInfo::getAreaCode)); + for (Map.Entry<String, List<HkResultInfo>> entry : provincialGroupedByAreaName.entrySet()) { + log.error("鏈�鏂版壒娆″唴鐪佸巺鏁版嵁:{}",provincialGroupedByAreaName.get(entry.getKey()).size()); + log.error("鏈�鏂版壒娆″唴鐪佸巺size:{}",provincialGroupedByAreaName.get(entry.getKey())); + CheckIndexCar car = new CheckIndexCar(); + CheckIndexFace face = new CheckIndexFace(); + score3Index(provincialGroupedByAreaName.get(entry.getKey()), car, face,entry.getKey()); + car.setExamineTag(CheckConstants.Examine_Tag_Province); + face.setExamineTag(CheckConstants.Examine_Tag_Province); + Optional<CheckIndexCar> carFirst = checkIndexCarList.stream() + .filter(index -> CheckConstants.Examine_Tag_Province.equals(index.getExamineTag()) && car.getDeptId().equals(index.getDeptId())) + .findFirst(); + Optional<CheckIndexFace> faceFirst = checkIndexFaceList.stream() + .filter(index -> CheckConstants.Examine_Tag_Province.equals(index.getExamineTag()) && face.getDeptId().equals(index.getDeptId())) + .findFirst(); + if (carFirst.isPresent()) { + car.setId(carFirst.get().getId()); + } + if (faceFirst.isPresent()) { + face.setId(faceFirst.get().getId()); + } + cars.add(car); + faces.add(face); + } + //瀛樻斁鎴愮哗鍒癿ysql锛屽鏋滃瓨鍦ㄥ垯鏇挎崲涓嶅瓨鍦ㄥ氨鏂板銆� if (!CollectionUtils.isEmpty(cars)) carService.saveOrUpdateBatch(cars); if (!CollectionUtils.isEmpty(faces)) faceService.saveOrUpdateBatch(faces); @@ -621,6 +854,77 @@ face.setFacePictureAvailability(new BigDecimal(score.getDownCrossPictureQualityFaceScoreString() == null ? "1" : score.getDownCrossPictureQualityFaceScoreString())); } + private void score3Index(List<HkResultInfo> score, CheckIndexCar car, CheckIndexFace face,String areaCode){ + car.setCreateTime(new Date()); + car.setPublish(PublishType.PUBLISHED.getCode()); + face.setCreateTime(new Date()); + face.setPublish(PublishType.PUBLISHED.getCode()); + car.setDeptId(Long.parseLong(AreaDeptEnum.fromCode(areaCode).getDeptId() + "")); + face.setDeptId(Long.parseLong(AreaDeptEnum.fromCode(areaCode).getDeptId() + "")); + + for(HkResultInfo hkResultInfo : score){ + if (HKLabelName.carDelay.getCode().equals(hkResultInfo.getIndexCode())){ + //杞﹁締鍗″彛璁惧鎶撴媿鏁版嵁涓婁紶鍙婃椂鎬� + car.setVehicleUploadTimeliness(new BigDecimal(hkResultInfo.getScore() == null ? "1" : String.valueOf(hkResultInfo.getScore()))); + }else if (HKLabelName.carOnlineRate2023.getCode().equals(hkResultInfo.getIndexCode())){ + //杞﹁締鐐逛綅鍦ㄧ嚎鐜� + car.setSiteOnline(new BigDecimal(hkResultInfo.getScore() == null ? "1" : String.valueOf(hkResultInfo.getScore()))); + }else if (HKLabelName.carButtStability2023.getCode().equals(hkResultInfo.getIndexCode())){ + //杞﹁締瑙嗗浘搴撳鎺ョǔ瀹氭�� + car.setViewConnectStability(new BigDecimal(hkResultInfo.getScore() == null ? "1" : String.valueOf(hkResultInfo.getScore()))); + }else if (HKLabelName.carQualifiedRate.getCode().equals(hkResultInfo.getIndexCode())){ + //杞﹁締鍗″彛璁惧鎶撴媿鏁版嵁瀹屾暣鎬� + car.setVehicleCaptureIntegrity(new BigDecimal(hkResultInfo.getScore() == null ? "1" : String.valueOf(hkResultInfo.getScore()))); + }else if (HKLabelName.carCorrectRate.getCode().equals(hkResultInfo.getIndexCode())){ + //杞﹁締鍗″彛璁惧鎶撴媿鏁版嵁鍑嗙‘鎬� + car.setVehicleCaptureAccuracy(new BigDecimal(hkResultInfo.getScore() == null ? "1" : String.valueOf(hkResultInfo.getScore()))); + }else if (HKLabelName.carClockAccuracy.getCode().equals(hkResultInfo.getIndexCode())){ + //杞﹁締鍗″彛璁惧鏃堕挓鍑嗙‘鎬� + car.setVehicleTimingAccuracy(new BigDecimal(hkResultInfo.getScore() == null ? "1" : String.valueOf(hkResultInfo.getScore()))); + }else if (HKLabelName.carBigPictureAccess.getCode().equals(hkResultInfo.getIndexCode())){ + //杞﹁締鍗″彛璁惧鎶撴媿鏁版嵁澶у浘鍙敤鎬� + car.setVehiclePictureAvailability(new BigDecimal(hkResultInfo.getScore() == null ? "1" : String.valueOf(hkResultInfo.getScore()))); + }else if (HKLabelName.carUrlOkRate.getCode().equals(hkResultInfo.getIndexCode())){ + //杞﹁締鍗″彛璁惧url鍙敤鎬� + car.setVehicleUrlAvailability(new BigDecimal(hkResultInfo.getScore() == null ? "1" : String.valueOf(hkResultInfo.getScore()))); + }else if(HKLabelName.faceButtStability2023.getCode().equals(hkResultInfo.getIndexCode())){ + //浜鸿劯瑙嗗浘搴撳鎺ョǔ瀹氭�� + face.setViewConnectStability(new BigDecimal(hkResultInfo.getScore() == null ? "1" : String.valueOf(hkResultInfo.getScore()))); + }else if (HKLabelName.faceOnlineRate.getCode().equals(hkResultInfo.getIndexCode())){ + //浜鸿劯鐐逛綅鍦ㄧ嚎鐜� + face.setSiteOnline(new BigDecimal(hkResultInfo.getScore() == null ? "1" : String.valueOf(hkResultInfo.getScore()))); + }else if (HKLabelName.faceCapturedPicturesEligibility.getCode().equals(hkResultInfo.getIndexCode())){ + //浜鸿劯璁惧鎶撴媿鍥剧墖鍚堟牸鎬� + face.setFacePictureQualification(new BigDecimal(hkResultInfo.getScore() == null ? "1" : String.valueOf(hkResultInfo.getScore()))); + }else if (HKLabelName.faceClockAccuracy.getCode().equals(hkResultInfo.getIndexCode())){ + //浜鸿劯璁惧鎶撴媿鍥剧墖鏃堕挓鍑嗙‘鎬� + face.setFaceTimingAccuracy(new BigDecimal(hkResultInfo.getScore() == null ? "1" : String.valueOf(hkResultInfo.getScore()))); + }else if (HKLabelName.faceDelay.getCode().equals(hkResultInfo.getIndexCode())){ + //璁惧鎶撴媿浜鸿劯鏁版嵁涓婁紶鍙婃椂鎬� + face.setFaceUploadTimeliness(new BigDecimal(hkResultInfo.getScore() == null ? "1" : String.valueOf(hkResultInfo.getScore()))); + }else if (HKLabelName.faceBigPictureAccess.getCode().equals(hkResultInfo.getIndexCode())){ + //浜鸿劯鍗″彛璁惧鎶撴媿鏁版嵁澶у浘鍙敤鎬� + face.setFacePictureAvailability(new BigDecimal(hkResultInfo.getScore() == null ? "1" : String.valueOf(hkResultInfo.getScore()))); + } + } + //TODO:娌℃壘鍒拌�冩牳椤� 浜鸿劯鍗″彛淇℃伅閲囬泦鍑嗙‘鐜� + face.setFaceInformationCollectionAccuracy(new BigDecimal("1")); + //TODO:娌℃壘鍒拌�冩牳椤� 璁惧鐩綍涓�鑷寸巼 + face.setDeviceDirectoryConsistent(new BigDecimal("1")); + //TODO:娌℃壘鍒拌�冩牳椤� 杞﹁締鍗″彛淇℃伅閲囬泦鍑嗙‘鐜� + car.setVehicleInformationCollectionAccuracy(new BigDecimal("1")); + //TODO:娌℃壘鍒拌�冩牳椤� 鑱旂綉鍗″彛璁惧鐩綍涓�鑷寸巼 + car.setDeviceDirectoryConsistent(new BigDecimal("1")); + + + + } + + + + + + //瑙f瀽鏁版嵁 private <T> List<T> getDataList(JSONObject jsonObject, Class<T> resultClass, String message) { if (jsonObject != null && ApiConstants.HKSuccessCode.equals(jsonObject.getString("code"))) { -- Gitblit v1.8.0