ycl-pojo/src/main/java/com/ycl/platform/domain/result/HK/AttrRecognitionMonitorResult.java
@@ -8,7 +8,7 @@ * @author gonghl */ @Data public class AttrRecognitionMonitorResult { public class AttrRecognitionMonitorResult extends BaseResult{ /** * 卡口内码或采集设备内码,dataType为1时表示卡口内码,dataType为11时表示采集设备内码 ycl-pojo/src/main/java/com/ycl/platform/domain/result/HK/CarDetectResult.java
@@ -8,7 +8,7 @@ * @author gonghl */ @Data public class CarDetectResult { public class CarDetectResult extends BaseResult{ /** * 组织编号 ycl-pojo/src/main/java/com/ycl/platform/domain/result/HK/CodeByAreaResult.java
@@ -8,7 +8,7 @@ * @author gonghl */ @Data public class CodeByAreaResult { public class CodeByAreaResult extends BaseResult{ /** * 组织编号 ycl-pojo/src/main/java/com/ycl/platform/domain/result/HK/CoordinateByAreaResult.java
@@ -8,7 +8,7 @@ * @author gonghl */ @Data public class CoordinateByAreaResult { public class CoordinateByAreaResult extends BaseResult{ /** * 组织编号 ycl-pojo/src/main/java/com/ycl/platform/domain/result/HK/CriteriaResult.java
@@ -8,7 +8,7 @@ * @author gonghl */ @Data public class CriteriaResult { public class CriteriaResult extends BaseResult{ /** * 人脸评分低标准,例如:0.4 ycl-pojo/src/main/java/com/ycl/platform/domain/result/HK/CrossDetailResult.java
@@ -8,7 +8,7 @@ * @author gonghl */ @Data public class CrossDetailResult { public class CrossDetailResult extends BaseResult{ /** * 组织编号,用于查询该组织及其所有下级组织卡口异常情况。若不传,返回所有卡口异常详情。 ycl-pojo/src/main/java/com/ycl/platform/domain/result/HK/DataIntegrityMonitoringResult.java
@@ -8,7 +8,7 @@ * @author gonghl */ @Data public class DataIntegrityMonitoringResult { public class DataIntegrityMonitoringResult extends BaseResult{ /** * 卡口内码或采集设备内码,dataType为1时表示卡口内码,dataType为11时表示采集设备内码 ycl-pojo/src/main/java/com/ycl/platform/domain/result/HK/FaceDetectResult.java
@@ -8,7 +8,7 @@ * @author gonghl */ @Data public class FaceDetectResult { public class FaceDetectResult extends BaseResult{ /** * 组织编号 ycl-pojo/src/main/java/com/ycl/platform/domain/result/HK/FaceDeviceSamplingResult.java
@@ -8,7 +8,7 @@ * @author gonghl */ @Data public class FaceDeviceSamplingResult { public class FaceDeviceSamplingResult extends BaseResult{ /** * 设备名称 ycl-pojo/src/main/java/com/ycl/platform/domain/result/HK/MonitorResourceResult.java
@@ -9,7 +9,7 @@ * @author gonghl */ @Data public class MonitorResourceResult { public class MonitorResourceResult extends BaseResult{ /** * 关注资源列表 ycl-pojo/src/main/java/com/ycl/platform/domain/result/HK/MonitoringDetailResult.java
@@ -8,7 +8,7 @@ * @author gonghl */ @Data public class MonitoringDetailResult { public class MonitoringDetailResult extends BaseResult{ /** * 组织编号 ycl-pojo/src/main/java/com/ycl/platform/domain/result/HK/OrganizationTreeResult.java
@@ -10,7 +10,7 @@ * @author gonghl */ @Data public class OrganizationTreeResult { public class OrganizationTreeResult extends BaseResult{ /** * 组织列表 ycl-pojo/src/main/java/com/ycl/platform/domain/result/HK/PicAccessResult.java
@@ -8,7 +8,7 @@ * @author gonghl */ @Data public class PicAccessResult { public class PicAccessResult extends BaseResult{ /** * 数据类型为1时表示卡口内码,数据类型为2或11时表示人脸采集设备内码 ycl-pojo/src/main/java/com/ycl/platform/domain/result/HK/SnapshotDataMonitorResult.java
@@ -11,7 +11,10 @@ @Data @Document(collection = "snapshot_data_monitor") public class SnapshotDataMonitorResult extends BaseResult{ /** * 数据类型 */ private Integer dataType; /** * dataType为1:卡口内码 dataType为2或11:采集设备内码 */ ycl-pojo/src/main/java/com/ycl/platform/domain/result/HK/SnapshotDelayMonitorResult.java
@@ -8,7 +8,7 @@ * @author gonghl */ @Data public class SnapshotDelayMonitorResult { public class SnapshotDelayMonitorResult extends BaseResult{ /** * dataType为1:卡口内码 dataType为2或11:采集设备内码 ycl-pojo/src/main/java/com/ycl/platform/domain/result/HK/VehicleDeviceSamplingResult.java
@@ -8,7 +8,7 @@ * @author gonghl */ @Data public class VehicleDeviceSamplingResult { public class VehicleDeviceSamplingResult extends BaseResult{ /** * 卡口内码或采集设备内码,dataType为1时表示卡口内码,dataType为11时表示采集设备内码 ycl-pojo/src/main/java/com/ycl/platform/domain/result/UY/CameraResult.java
@@ -1,5 +1,6 @@ package com.ycl.platform.domain.result.UY; import com.ycl.platform.domain.result.HK.BaseResult; import lombok.Data; import java.util.Date; @@ -11,7 +12,7 @@ * @since 2024-4-19 11:33:34 */ @Data public class CameraResult { public class CameraResult{ /** * 设备编码,20位:中心编码、行业编码、设备类型、网络标识、设备序号,与联网平台/共享平台国标编码一致。 ycl-pojo/src/main/java/com/ycl/platform/domain/result/UY/OnlineResult.java
@@ -1,5 +1,6 @@ package com.ycl.platform.domain.result.UY; import com.ycl.platform.domain.result.HK.BaseResult; import lombok.Data; /** @@ -9,7 +10,7 @@ * @since 2024-4-19 11:37:30 */ @Data public class OnlineResult { public class OnlineResult{ /** * 行政区划编码 ycl-pojo/src/main/java/com/ycl/platform/domain/result/UY/OsdMonitorResult.java
@@ -1,5 +1,6 @@ package com.ycl.platform.domain.result.UY; import com.ycl.platform.domain.result.HK.BaseResult; import lombok.Data; import java.util.List; ycl-pojo/src/main/java/com/ycl/platform/domain/result/UY/RecordMetaDSumResult.java
@@ -1,15 +1,17 @@ package com.ycl.platform.domain.result.UY; import com.ycl.platform.domain.result.HK.BaseResult; import lombok.Data; import java.util.Date; /** * 录像可用性 * * @author gonghl */ @Data public class RecordMetaDSumResult { public class RecordMetaDSumResult{ /** * 行政区域名称 ycl-server/src/main/java/com/ycl/platform/controller/VehicleDataMonitorController.java
@@ -30,7 +30,7 @@ /** * 查询卡口过车数据一致性列表 */ @PreAuthorize("@ss.hasPermi('platform:platform:list')") @PreAuthorize("@ss.hasPermi('platform:platform:list')") @GetMapping("/list") public TableDataInfo list(VehicleDataMonitor vehicleDataMonitor) { startPage(); @@ -53,7 +53,7 @@ /** * 获取卡口过车数据一致性详细信息 */ @PreAuthorize("@ss.hasPermi('platform:platform:query')") @PreAuthorize("@ss.hasPermi('platform:platform:query')") @GetMapping(value = "/{id}") public AjaxResult getInfo(@PathVariable("id") Integer id) { return success(vehicleDataMonitorService.selectVehicleDataMonitorById(id)); @@ -62,7 +62,7 @@ /** * 新增卡口过车数据一致性 */ @PreAuthorize("@ss.hasPermi('platform:platform:add')") @PreAuthorize("@ss.hasPermi('platform:platform:add')") @Log(title = "卡口过车数据一致性", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody VehicleDataMonitor vehicleDataMonitor) { @@ -72,7 +72,7 @@ /** * 修改卡口过车数据一致性 */ @PreAuthorize("@ss.hasPermi('platform:platform:edit')") @PreAuthorize("@ss.hasPermi('platform:platform:edit')") @Log(title = "卡口过车数据一致性", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody VehicleDataMonitor vehicleDataMonitor) { @@ -82,7 +82,7 @@ /** * 删除卡口过车数据一致性 */ @PreAuthorize("@ss.hasPermi('platform:platform:remove')") @PreAuthorize("@ss.hasPermi('platform:platform:remove')") @Log(title = "卡口过车数据一致性", businessType = BusinessType.DELETE) @DeleteMapping("/{ids}") public AjaxResult remove(@PathVariable Integer[] ids) { ycl-server/src/main/java/com/ycl/task/HKTask.java
@@ -1,24 +1,24 @@ package com.ycl.task; import com.alibaba.fastjson2.JSONObject; import com.ycl.platform.domain.param.HK.FaceDeviceInspectionParam; import com.ycl.platform.domain.param.HK.SnapshotDataMonitorParam; import com.ycl.platform.domain.param.HK.VehicleDeviceInspectionParam; import com.ycl.platform.domain.result.HK.BaseResult; import com.ycl.platform.domain.result.HK.FaceDeviceInspectionResult; import com.ycl.platform.domain.result.HK.SnapshotDataMonitorResult; import com.ycl.platform.domain.result.HK.VehicleDeviceInspectionResult; import com.mongodb.client.result.DeleteResult; import com.ycl.platform.domain.param.HK.*; import com.ycl.platform.domain.result.HK.*; import com.ycl.platform.service.ICheckIndexCarService; import com.ycl.platform.service.ICheckIndexFaceService; import com.ycl.platform.service.ICheckIndexVideoService; import com.ycl.platform.service.IYwThresholdService; import com.ycl.utils.DateUtils; import constant.ApiConstants; import com.ycl.feign.HKClient; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; 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 org.springframework.util.unit.DataUnit; import java.text.SimpleDateFormat; import java.util.Date; @@ -46,10 +46,13 @@ public void VehicleDeviceInspectionTask() { log.info("开始执行车辆设备全检指标监测结果数据同步"); VehicleDeviceInspectionParam param = new VehicleDeviceInspectionParam(); param.setPageNO(ApiConstants.pageNo).setPageSize(ApiConstants.pageSize).setDate(getToday()); param.setPageNO(ApiConstants.pageNo).setPageSize(ApiConstants.pageSize).setDate(DateUtils.getDate()); JSONObject jsonObject = hkClient.VehicleDeviceInspection(param); List<VehicleDeviceInspectionResult> list = getDataList(jsonObject, VehicleDeviceInspectionResult.class, "车辆设备全检指标监测结果数据为空"); if (!CollectionUtils.isEmpty(list)) { //如果存在之前的数据先删除 Query query = new Query(Criteria.where("createTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date()))); DeleteResult result = mongoTemplate.remove(query, VehicleDeviceInspectionResult.class); //存放在mongo中 mongoTemplate.insert(list); //同步的数据进行工单阈值处理 @@ -62,13 +65,17 @@ public void FaceDeviceInspectionTask() { log.info("开始执行人脸设备全检指标监测结果数据同步"); FaceDeviceInspectionParam param = new FaceDeviceInspectionParam(); param.setPageNO(ApiConstants.pageNo).setPageSize(ApiConstants.pageSize).setDate(getToday()); param.setPageNO(ApiConstants.pageNo).setPageSize(ApiConstants.pageSize).setDate(DateUtils.getDate()); JSONObject jsonObject = hkClient.FaceDeviceInspection(param); List<FaceDeviceInspectionResult> list = getDataList(jsonObject, FaceDeviceInspectionResult.class, "人脸设备全检指标监测结果数据为空"); if (!CollectionUtils.isEmpty(list)) { //如果存在之前的数据先删除 Query query = new Query(Criteria.where("createTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date()))); DeleteResult result = mongoTemplate.remove(query, FaceDeviceInspectionResult.class); //存放在mongo中 mongoTemplate.insert(list); //同步的数据进行工单阈值处理 //TODO:可能有重复工单 ywThresholdService.faceCheck(list); } log.info("结束人脸设备全检指标监测结果数据同步"); @@ -80,28 +87,36 @@ log.info("开始执行抓拍数据量检测结果数据同步"); /** 车辆数据 */ SnapshotDataMonitorParam carParam = new SnapshotDataMonitorParam(); carParam.setPageNO(ApiConstants.pageNo).setPageSize(ApiConstants.pageSize).setDate(getToday()).setDataType(ApiConstants.HK_DATATYPE_CAR); carParam.setPageNO(ApiConstants.pageNo).setPageSize(ApiConstants.pageSize).setDate(DateUtils.getDate()).setDataType(ApiConstants.HK_DATATYPE_CAR); JSONObject carJsonObject = hkClient.SnapshotDataMonitor(carParam); List<SnapshotDataMonitorResult> carList = getDataList(carJsonObject, SnapshotDataMonitorResult.class, "车辆抓拍数据量检测结果数据"); if (!CollectionUtils.isEmpty(carList)) { //如果今天存在之前的数据先删除 Query query = new Query(Criteria .where("createTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())) .and("dataType").is(ApiConstants.HK_DATATYPE_CAR)); DeleteResult result = mongoTemplate.remove(query, SnapshotDataMonitorResult.class); //存放在mongo中 carList.forEach(item->item.setDataType(ApiConstants.HK_DATATYPE_CAR)); mongoTemplate.insert(carList); //TODO:车辆点位在线率 checkIndexCarService.siteOnline(carList); } /** 人脸数据 */ SnapshotDataMonitorParam faceParam = new SnapshotDataMonitorParam(); faceParam.setPageNO(ApiConstants.pageNo).setPageSize(ApiConstants.pageSize).setDate(getToday()).setDataType(ApiConstants.HK_DATATYPE_FACE); faceParam.setPageNO(ApiConstants.pageNo).setPageSize(ApiConstants.pageSize).setDate(DateUtils.getDate()).setDataType(ApiConstants.HK_DATATYPE_FACE); JSONObject faceJsonObject = hkClient.SnapshotDataMonitor(carParam); List list = getDataList(faceJsonObject, SnapshotDataMonitorResult.class, "人脸抓拍数据量检测结果数据为空"); if (!CollectionUtils.isEmpty(list)) { List<SnapshotDataMonitorResult> faceList = getDataList(faceJsonObject, SnapshotDataMonitorResult.class, "人脸抓拍数据量检测结果数据为空"); if (!CollectionUtils.isEmpty(faceList)) { //如果今天存在之前的数据先删除 Query query = new Query(Criteria .where("createTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())) .and("dataType").is(ApiConstants.HK_DATATYPE_FACE)); DeleteResult result = mongoTemplate.remove(query, SnapshotDataMonitorResult.class); //存放在mongo中 mongoTemplate.insert(list); //TODO:人脸点位在线率 checkIndexFaceService.siteOnline(list); carList.forEach(item->item.setDataType(ApiConstants.HK_DATATYPE_FACE)); mongoTemplate.insert(faceList); } //TODO:工单 log.info("结束抓拍数据量检测结果数据同步"); } @@ -109,11 +124,47 @@ //一机一档 public void task2() { //联网卡口设备目录一致率 } //采集设备属性监测结果(人脸) public void monitorDetailTask() { log.info("开始执行采集设备属性监测结果数据同步"); //采集设备属性监测结果 MonitoringDetailParam param = new MonitoringDetailParam(); param.setPageNO(ApiConstants.pageNo).setPageSize(ApiConstants.pageSize).setDate(DateUtils.getDate()); JSONObject jsonObject = hkClient.monitorDetail(param); List<MonitoringDetailResult> faceList = getDataList(jsonObject, MonitoringDetailResult.class, "采集设备属性监测结果数据为空"); if (!CollectionUtils.isEmpty(faceList)) { //如果今天存在之前的数据先删除 Query query = new Query(Criteria .where("createTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date()))); DeleteResult result = mongoTemplate.remove(query, SnapshotDataMonitorResult.class); //存放在mongo中 mongoTemplate.insert(faceList); } //TODO:工单处理 log.info("结束采集设备属性监测结果数据同步"); } //卡口属性监测结果 public void task3() { public void crossDetailTask() { log.info("开始执行卡口属性监测结果数据同步"); //车辆卡口信息采集准确率 CrossDetailParam param = new CrossDetailParam(); param.setPageNO(ApiConstants.pageNo).setPageSize(ApiConstants.pageSize).setDate(DateUtils.getDate()); JSONObject jsonObject = hkClient.crossDetail(param); List<CrossDetailResult> faceList = getDataList(jsonObject, CrossDetailResult.class, "卡口属性监测结果数据为空"); if (!CollectionUtils.isEmpty(faceList)) { //如果今天存在之前的数据先删除 Query query = new Query(Criteria .where("createTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date()))); DeleteResult result = mongoTemplate.remove(query, SnapshotDataMonitorResult.class); //存放在mongo中 mongoTemplate.insert(faceList); } //TODO:工单处理 log.info("结束卡口属性监测结果数据同步"); } //数据完整性监测结果 @@ -141,14 +192,6 @@ //车辆卡口信息采集准确率 //车辆卡口设备url可用性 } //获取当前日期 private String getToday() { Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String today = sdf.format(date); return today; } //解析数据