ycl-common/src/main/java/constant/ApiConstants.java
@@ -5,7 +5,8 @@ */ public class ApiConstants { //成功状态码 public final static String successCode = "0"; public final static String HKSuccessCode = "0"; public final static Integer UYSuccessCode = 200; public final static Integer pageNo = 1; public final static Integer pageSize = 5000; //请求参数dataType-卡口过车 ycl-pojo/src/main/java/com/ycl/platform/domain/param/UY/OneMachineFileParam.java
File was renamed from ycl-pojo/src/main/java/com/ycl/platform/domain/param/UY/CameraParam.java @@ -12,7 +12,7 @@ @Data @Accessors(chain = true) public class CameraParam { public class OneMachineFileParam { /** * 分页 ycl-pojo/src/main/java/com/ycl/platform/domain/result/BaseResult.java
@@ -2,6 +2,7 @@ import lombok.Data; import org.bson.types.ObjectId; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.annotation.Id; import java.util.Date; @@ -9,9 +10,10 @@ @Data public class BaseResult { @Id private ObjectId id; private ObjectId mongoId; /** * 数据日期 */ private Date createTime; @CreatedDate private Date mongoCreateTime; } ycl-pojo/src/main/java/com/ycl/platform/domain/result/HK/AttrRecognitionMonitorResult.java
@@ -10,7 +10,7 @@ * @author gonghl */ @Data @Document(collection = "attr_recognition_monitor") @Document(collection = "hk_attr_recognition_monitor") public class AttrRecognitionMonitorResult extends BaseResult { /** ycl-pojo/src/main/java/com/ycl/platform/domain/result/HK/CarDetectResult.java
@@ -10,7 +10,7 @@ * @author gonghl */ @Data @Document(collection = "car_detect") @Document(collection = "hk_car_detect") public class CarDetectResult extends BaseResult { /** ycl-pojo/src/main/java/com/ycl/platform/domain/result/HK/CodeByAreaResult.java
@@ -10,7 +10,7 @@ * @author gonghl */ @Data @Document(collection = "code_by_area") @Document(collection = "hk_code_by_area") public class CodeByAreaResult extends BaseResult { /** ycl-pojo/src/main/java/com/ycl/platform/domain/result/HK/CoordinateByAreaResult.java
@@ -10,7 +10,7 @@ * @author gonghl */ @Data @Document(collection = "coordinate_by_area") @Document(collection = "hk_coordinate_by_area") public class CoordinateByAreaResult extends BaseResult { /** ycl-pojo/src/main/java/com/ycl/platform/domain/result/HK/CriteriaResult.java
@@ -10,7 +10,7 @@ * @author gonghl */ @Data @Document(collection = "criteria") @Document(collection = "hk_criteria") public class CriteriaResult extends BaseResult { /** ycl-pojo/src/main/java/com/ycl/platform/domain/result/HK/CrossDetailResult.java
@@ -10,7 +10,7 @@ * @author gonghl */ @Data @Document(collection = "cross_detail") @Document(collection = "hk_cross_detail") public class CrossDetailResult extends BaseResult { /** ycl-pojo/src/main/java/com/ycl/platform/domain/result/HK/DataIntegrityMonitoringResult.java
@@ -10,7 +10,7 @@ * @author gonghl */ @Data @Document(collection = "data_integrity_monitoring") @Document(collection = "hk_data_integrity_monitoring") public class DataIntegrityMonitoringResult extends BaseResult { /** ycl-pojo/src/main/java/com/ycl/platform/domain/result/HK/FaceDetectResult.java
@@ -10,7 +10,7 @@ * @author gonghl */ @Data @Document(collection = "face_detect") @Document(collection = "hk_face_detect") public class FaceDetectResult extends BaseResult { /** ycl-pojo/src/main/java/com/ycl/platform/domain/result/HK/FaceDeviceInspectionResult.java
@@ -10,7 +10,7 @@ * @author gonghl */ @Data @Document(collection = "face_device_inspection") @Document(collection = "hk_face_device_inspection") public class FaceDeviceInspectionResult extends BaseResult { /** ycl-pojo/src/main/java/com/ycl/platform/domain/result/HK/FaceDeviceSamplingResult.java
@@ -10,7 +10,7 @@ * @author gonghl */ @Data @Document(collection = "face_device_sampling") @Document(collection = "hk_face_device_sampling") public class FaceDeviceSamplingResult extends BaseResult { /** ycl-pojo/src/main/java/com/ycl/platform/domain/result/HK/MonitorResourceResult.java
@@ -11,7 +11,7 @@ * @author gonghl */ @Data @Document(collection = "monitor_resource") @Document(collection = "hk_monitor_resource") public class MonitorResourceResult extends BaseResult { /** ycl-pojo/src/main/java/com/ycl/platform/domain/result/HK/MonitoringDetailResult.java
@@ -10,7 +10,7 @@ * @author gonghl */ @Data @Document(collection = "monitoring_detail") @Document(collection = "hk_monitoring_detail") public class MonitoringDetailResult extends BaseResult { /** ycl-pojo/src/main/java/com/ycl/platform/domain/result/HK/OrganizationTreeResult.java
@@ -12,7 +12,7 @@ * @author gonghl */ @Data @Document(collection = "organization_tree") @Document(collection = "hk_organization_tree") public class OrganizationTreeResult extends BaseResult { /** ycl-pojo/src/main/java/com/ycl/platform/domain/result/HK/PicAccessResult.java
@@ -10,7 +10,7 @@ * @author gonghl */ @Data @Document(collection = "pic_access") @Document(collection = "hk_pic_access") public class PicAccessResult extends BaseResult { /** ycl-pojo/src/main/java/com/ycl/platform/domain/result/HK/SnapshotDataMonitorResult.java
@@ -10,7 +10,7 @@ * @author gonghl */ @Data @Document(collection = "snapshot_data_monitor") @Document(collection = "hk_snapshot_data_monitor") public class SnapshotDataMonitorResult extends BaseResult { /** * 数据类型 ycl-pojo/src/main/java/com/ycl/platform/domain/result/HK/SnapshotDelayMonitorResult.java
@@ -10,7 +10,7 @@ * @author gonghl */ @Data @Document(collection = "snapshop_delay_monitor") @Document(collection = "hk_snapshop_delay_monitor") public class SnapshotDelayMonitorResult extends BaseResult { private Integer dataType; /** ycl-pojo/src/main/java/com/ycl/platform/domain/result/HK/VehicleDeviceInspectionResult.java
@@ -10,7 +10,7 @@ * @author gonghl */ @Data @Document(collection = "vehicle_device_inspection") @Document(collection = "hk_vehicle_device_inspection") public class VehicleDeviceInspectionResult extends BaseResult { /** ycl-pojo/src/main/java/com/ycl/platform/domain/result/HK/VehicleDeviceSamplingResult.java
@@ -10,7 +10,7 @@ * @author gonghl */ @Data @Document(collection = "vehicle_device_sampling") @Document(collection = "hk_vehicle_device_sampling") public class VehicleDeviceSamplingResult extends BaseResult { /** ycl-pojo/src/main/java/com/ycl/platform/domain/result/UY/OneMachineFileResult.java
@@ -1,6 +1,8 @@ package com.ycl.platform.domain.result.UY; import com.ycl.platform.domain.result.BaseResult; import lombok.Data; import org.springframework.data.mongodb.core.mapping.Document; import java.util.Date; @@ -11,7 +13,8 @@ * @since 2024-4-19 11:33:34 */ @Data public class OneMachineFileResult { @Document(collection = "uy_one_machine_file") public class OneMachineFileResult extends BaseResult { /** * 设备编码,20位:中心编码、行业编码、设备类型、网络标识、设备序号,与联网平台/共享平台国标编码一致。 ycl-pojo/src/main/java/com/ycl/platform/domain/result/UY/OnlineResult.java
@@ -1,6 +1,8 @@ package com.ycl.platform.domain.result.UY; import com.ycl.platform.domain.result.BaseResult; import lombok.Data; import org.springframework.data.mongodb.core.mapping.Document; /** * 点位在线率 @@ -9,7 +11,8 @@ * @since 2024-4-19 11:37:30 */ @Data public class OnlineResult{ @Document(collection = "uy_online") public class OnlineResult extends BaseResult { /** * 行政区划编码 ycl-pojo/src/main/java/com/ycl/platform/domain/result/UY/OsdMonitorResult.java
@@ -1,6 +1,8 @@ package com.ycl.platform.domain.result.UY; import com.ycl.platform.domain.result.BaseResult; import lombok.Data; import org.springframework.data.mongodb.core.mapping.Document; import java.util.List; @@ -11,7 +13,8 @@ * @since 2024-4-19 11:52:09 */ @Data public class OsdMonitorResult { @Document(collection = "uy_osd_monitor") public class OsdMonitorResult extends BaseResult { /** * 区域路径信息 ycl-pojo/src/main/java/com/ycl/platform/domain/result/UY/QueryVqdResult.java
@@ -1,12 +1,15 @@ package com.ycl.platform.domain.result.UY; import com.ycl.platform.domain.result.BaseResult; import lombok.Data; import org.springframework.data.mongodb.core.mapping.Document; /** * 图像监测诊断结果 */ @Data public class QueryVqdResult { @Document(collection = "uy_query_vqd") public class QueryVqdResult extends BaseResult { /** * */ ycl-pojo/src/main/java/com/ycl/platform/domain/result/UY/RecordMetaDSumResult.java
@@ -1,6 +1,8 @@ package com.ycl.platform.domain.result.UY; import com.ycl.platform.domain.result.BaseResult; import lombok.Data; import org.springframework.data.mongodb.core.mapping.Document; import java.util.Date; @@ -10,7 +12,8 @@ * @author gonghl */ @Data public class RecordMetaDSumResult{ @Document(collection = "uy_record_meta_d_sum") public class RecordMetaDSumResult extends BaseResult { /** * 行政区域名称 ycl-pojo/src/main/java/com/ycl/platform/domain/result/UY/VideoQualityResult.java
@@ -1,12 +1,15 @@ package com.ycl.platform.domain.result.UY; import com.ycl.platform.domain.result.BaseResult; import lombok.Data; import org.springframework.data.mongodb.core.mapping.Document; /** * 视频图像质量 */ @Data public class VideoQualityResult { @Document(collection = "uy_video_quality") public class VideoQualityResult extends BaseResult { /** 行政区划编码 */ private String arealayernoCode; /** 行政区划名称 */ ycl-pojo/src/main/java/com/ycl/platform/domain/vo/DataCenter/ImportantCmdImageVO.java
@@ -14,15 +14,33 @@ @Data public class ImportantCmdImageVO { /** 在线数量 */ private Integer onlineNum; /** 区域路径信息 */ private String arealayerPath; /** 抽查总数 */ private Integer selectedTotal; /** */ private String arealayernoCode; /** 重点指挥图像在线率 */ private BigDecimal rate; /** */ private String arealayernoName; /** 月份 */ private Date month; /** */ private String binaryTenantId; /** */ private Integer blur; /** */ private Integer blurRaw; /** */ private Integer blurThreshold; /** */ private Integer color; /** */ private Integer colorRaw; /** */ private Integer colorThreshold; } ycl-pojo/src/main/java/com/ycl/platform/domain/vo/DataCenter/LabeledCorrectlyVO.java
@@ -14,15 +14,39 @@ @Data public class LabeledCorrectlyVO { /** 正确数量 */ private Integer correctNum; /** 区域路径信息 */ private String arealayerPath; /** 抽查总数 */ private Integer selectedTotal; /** 区域名称 */ private String arealayername; /** 标注正确率 */ private BigDecimal rate; /** 区域编码 */ private String arealayerno; /** 月份 */ private Date month; /** 设备ID */ private String deviceId; /** 设备名称 */ private String deviceName; /** 图片上的字幕时间和摄像机拉码流时间差是否大于最大值 */ private String diff; /** 图片上的字幕时间和摄像机拉码流时间差,单位(秒), -1 表示未知 */ private Integer diffTime; /** ip */ private String ip; /** 图片 ocr 识别结果 */ private String ocrResult; /** 图片地址 */ private String imgPath; /** 状态码,0:正常 */ private String statusCode; /** 图片上的字幕时间和摄像机拉码流时间差,单位(秒) */ private String osdFormat; } ycl-pojo/src/main/java/com/ycl/platform/domain/vo/DataCenter/VideoUseableVO.java
@@ -14,14 +14,38 @@ @Data public class VideoUseableVO { /** 当月认定的考核档案数 */ private Integer currentMonthDocumentNum; private String id; /** 全年留存档案数 */ private Integer fullYearDocumentNum; /** 行政区域名称 */ private String arealayername; private BigDecimal rate; /** 行政区域ID */ private String arealayerno; /** 月份 */ private Date month; /** 创建时间 */ private Date createTime; /** 摄像机ID */ private String deviceId; /** 摄像机名称 */ private String deviceName; /** 缺失时长 */ private Double missDuration; /** 国标平台ID */ private String platId; /** 录像时长 */ private Double recordDuration; /** 录像完整状态 1:完整 0:间歇 -1:异常 */ private Integer recordStatus; /** 统计时间 */ private Date statTime; /** 租户ID */ private String tenantId; } ycl-server/src/main/java/com/ycl/feign/UYClient.java
@@ -8,7 +8,6 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestParam; /** * @author gonghl @@ -22,11 +21,11 @@ /** * 一机一档 * * @param cameraParam 请求参数 * @param oneMachineFileParam 请求参数 * @return 查询摄像机清单集合 */ @GetMapping("/VIID/Cameras") JSONObject cameraList(@SpringQueryMap CameraParam cameraParam); JSONObject oneMachineFile(@SpringQueryMap OneMachineFileParam oneMachineFileParam); /** * 点位在线 @@ -65,5 +64,5 @@ * @return */ @GetMapping("/api/v1/app/report/vqd/detail/list") JSONObject queryVqdResult(@SpringQueryMap VideoQualityParam param); JSONObject videoQuality(@SpringQueryMap VideoQualityParam param); } ycl-server/src/main/java/com/ycl/task/HKTask.java
@@ -301,7 +301,7 @@ //解析数据 private <T> List<T> getDataList(JSONObject faceJsonObject, Class<T> resultClass, String message) { if (faceJsonObject != null && ApiConstants.successCode.equals(faceJsonObject.getString("code"))) { if (faceJsonObject != null && ApiConstants.HKSuccessCode.equals(faceJsonObject.getString("code"))) { JSONObject data = faceJsonObject.getJSONObject("data"); if (data == null) { log.error(message, faceJsonObject); @@ -311,11 +311,6 @@ if (CollectionUtils.isEmpty(list)) { log.error(message, data); return null; } for (T t : list) { if (t instanceof BaseResult) { ((BaseResult) t).setCreateTime(new Date()); } } return list; } else { ycl-server/src/main/java/com/ycl/task/UYTask.java
@@ -1,15 +1,28 @@ package com.ycl.task; import com.ycl.platform.domain.param.UY.OnlineParam; import com.ycl.platform.service.IYwThresholdService; import com.alibaba.fastjson2.JSONObject; import com.mongodb.client.result.DeleteResult; import com.ycl.feign.UYClient; import com.ycl.platform.domain.param.UY.OneMachineFileParam; import com.ycl.platform.domain.param.UY.QueryVqdParam; import com.ycl.platform.domain.param.UY.RecordMetaDSumParam; import com.ycl.platform.domain.result.UY.OneMachineFileResult; import com.ycl.platform.domain.result.UY.QueryVqdResult; import com.ycl.platform.domain.result.UY.RecordMetaDSumResult; import com.ycl.platform.service.IYwThresholdService; import com.ycl.utils.DateUtils; import constant.ApiConstants; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; 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.stereotype.Component; import org.springframework.util.CollectionUtils; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; @Slf4j @@ -23,45 +36,106 @@ @Autowired private IYwThresholdService ywThresholdService; private final static Integer pageNo = 1; private final static Integer pageSize = 5000; //成功状态码 private final static String successCode = "0"; //车辆设备全检指标监测结果 public void VehicleDeviceInspectionTask() { log.info("开始执行车辆设备全检指标监测结果数据同步"); log.info("结束车辆设备全检指标监测结果数据同步"); } public void FaceDeviceInspectionTask() { log.info("开始执行人脸设备全检指标监测结果数据同步"); log.info("结束人脸设备全检指标监测结果数据同步"); } @Value("${youYun.tenantId}") private String tenantId; //一机一档 public void task1() { public void monitorTask() { //一机一档合格率 // 一机一档注册率 // 档案考核比 log.info("开始执行一机一档数据同步"); OneMachineFileParam param = new OneMachineFileParam(); JSONObject jsonObject = uyClient.oneMachineFile(param); if (jsonObject != null) { JSONObject cameraList = jsonObject.getJSONObject("CameraList"); if (cameraList != null) { List<OneMachineFileResult> data = cameraList.getList("data", OneMachineFileResult.class); if (!CollectionUtils.isEmpty(data)) { //如果今天存在之前的数据先删除 Query query = new Query(Criteria .where("createTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date()))); DeleteResult result = mongoTemplate.remove(query, OneMachineFileResult.class); //存放在mongo中 mongoTemplate.insert(data); } else { log.error("一机一档数据为空{}", cameraList); } } else { log.error("一机一档数据为空{}", jsonObject); } } else { log.error("一机一档数据为空"); } log.info("结束执行一机一档数据同步"); } //图像监测诊断结果 public void queryVqdResultTask() { //点位在线率 //视频图像质量 log.info("开始执行图像监测诊断结果数据同步"); QueryVqdParam param = new QueryVqdParam(); param.setTenantId(tenantId); JSONObject jsonObject = uyClient.queryVqdResult(param); if (jsonObject != null) { Integer statusCode = jsonObject.getInteger("statusCode"); if (ApiConstants.UYSuccessCode.equals(statusCode)) { JSONObject data = jsonObject.getJSONObject("data"); if (data != null) { List<QueryVqdResult> records = data.getList("records", QueryVqdResult.class); if (!CollectionUtils.isEmpty(records)) { //如果今天存在之前的数据先删除 Query query = new Query(Criteria .where("createTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date()))); DeleteResult result = mongoTemplate.remove(query, QueryVqdResult.class); //存放在mongo中 mongoTemplate.insert(records); } else { log.error("图像监测诊断结果数据为空{}", data); } } else { log.error("图像监测诊断结果数据为空{}", jsonObject); } } else { log.error("图像监测诊断结果请求失败{}", jsonObject); } } else { log.error("图像监测诊断结果数据为空"); } log.info("结束执行图像监测诊断结果数据同步"); } //录像可用 public void task3() { public void recordMetaDSumTask() { //录像可用率 log.info("开始执行录像可用数据同步"); RecordMetaDSumParam param = new RecordMetaDSumParam(); JSONObject jsonObject = uyClient.recordMetaDSumList(param); if (jsonObject != null) { if (jsonObject.getBoolean("success")) { JSONObject data = jsonObject.getJSONObject("data"); if (data != null) { List<RecordMetaDSumResult> records = data.getList("records", RecordMetaDSumResult.class); if (!CollectionUtils.isEmpty(records)) { //如果今天存在之前的数据先删除 Query query = new Query(Criteria .where("createTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date()))); DeleteResult result = mongoTemplate.remove(query, RecordMetaDSumResult.class); //存放在mongo中 mongoTemplate.insert(records); } else { log.error("录像可用数据为空{}", data); } } else { log.error("录像可用数据为空{}", jsonObject); } } else { log.error("录像可用数据为空{}", jsonObject); } } else { log.error("录像可用数据为空"); } log.info("结束执行录像可用数据同步"); } }