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