package com.ycl.task; import com.alibaba.fastjson2.JSONObject; import com.mongodb.client.result.DeleteResult; import com.ycl.feign.HkApiUtil; import com.ycl.feign.HkApiUtil; 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 java.util.Date; import java.util.List; //海康对接数据任务 @Slf4j @Component("HKTask") public class HKTask { @Autowired private MongoTemplate mongoTemplate; @Autowired private IYwThresholdService ywThresholdService; @Autowired private ICheckIndexFaceService checkIndexFaceService; @Autowired private ICheckIndexCarService checkIndexCarService; @Autowired private ICheckIndexVideoService checkIndexVideoService; //车辆设备全检指标监测结果 public void vehicleDeviceInspectionTask() { log.info("开始执行车辆设备全检指标监测结果数据同步"); // VehicleDeviceInspectionParam param = new VehicleDeviceInspectionParam(); // param.setPageNo(ApiConstants.PageNo); // param.setPageSize(ApiConstants.HKPageSize); // param.setDate(DateUtils.getDate()); // param.setDataType(ApiConstants.HK_DataType_CAR); // List list = HkApiUtil.sendAPI("/api/dqd/service/rs/v2/data/vehFullAmount/query", param, VehicleDeviceInspectionResult.class); // if (!CollectionUtils.isEmpty(list)) { // //如果存在之前的数据先删除 // Query query = new Query(Criteria.where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date()))); // DeleteResult result = mongoTemplate.remove(query, VehicleDeviceInspectionResult.class); // //存放在mongo中 // mongoTemplate.insertAll(list); // //同步的数据进行工单阈值处理 // ywThresholdService.carCheck(list); // } Query query = new Query(Criteria.where("mongoCreateTime").lt(DateUtils.getDayEnd(new Date()))); ywThresholdService.carCheck(mongoTemplate.find(query, VehicleDeviceInspectionResult.class)); log.info("结束车辆设备全检指标监测结果数据同步"); } //人脸设备全检指标监测结果 public void faceDeviceInspectionTask() { log.info("开始执行人脸设备全检指标监测结果数据同步"); // FaceDeviceInspectionParam param = new FaceDeviceInspectionParam(); // param.setPageNo(ApiConstants.PageNo); // param.setPageSize(ApiConstants.HKPageSize); // param.setDate(DateUtils.getDate()); // List list = HkApiUtil.sendAPI("/api/dqd/service/rs/v2/data/faceFullAmount/query", param, FaceDeviceInspectionResult.class); // if (!CollectionUtils.isEmpty(list)) { // //如果存在之前的数据先删除 // Query query = new Query(Criteria.where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date()))); // DeleteResult result = mongoTemplate.remove(query, FaceDeviceInspectionResult.class); // //存放在mongo中 // mongoTemplate.insertAll(list); // //同步的数据进行工单阈值处理 // //TODO:可能有重复工单 // ywThresholdService.faceCheck(list); // } Query query = new Query(Criteria.where("mongoCreateTime").lt(DateUtils.getDayEnd(new Date()))); ywThresholdService.faceCheck(mongoTemplate.find(query, FaceDeviceInspectionResult.class)); log.info("结束人脸设备全检指标监测结果数据同步"); } // 抓拍数据量监测结果 public void snapshotDataMonitorTask() { log.info("开始执行抓拍数据量检测结果数据同步"); /** 车辆数据 */ SnapshotDataMonitorParam carParam = new SnapshotDataMonitorParam(); carParam.setPageNo(ApiConstants.PageNo); carParam.setPageSize(ApiConstants.HKPageSize); carParam.setDate(DateUtils.getDate()); carParam.setDataType(ApiConstants.HK_DataType_CAR); List carList = HkApiUtil.sendAPI("/api/dqd/service/rs/v1/data/snapCountDetail/query", carParam, SnapshotDataMonitorResult.class); if (!CollectionUtils.isEmpty(carList)) { //如果今天存在之前的数据先删除 Query query = new Query(Criteria .where("mongoCreateTime").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.insertAll(carList); } /** 人脸数据 */ SnapshotDataMonitorParam faceParam = new SnapshotDataMonitorParam(); faceParam.setPageNo(ApiConstants.PageNo); faceParam.setPageSize(ApiConstants.HKPageSize); faceParam.setDate(DateUtils.getDate()); faceParam.setDataType(ApiConstants.HK_DataType_FACE); List faceList = HkApiUtil.sendAPI("/api/dqd/service/rs/v1/data/snapCountDetail/query", faceParam, SnapshotDataMonitorResult.class); if (!CollectionUtils.isEmpty(faceList)) { //如果今天存在之前的数据先删除 Query query = new Query(Criteria .where("mongoCreateTime").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中 carList.forEach(item -> item.setDataType(ApiConstants.HK_DataType_FACE)); mongoTemplate.insertAll(faceList); } //TODO:工单 log.info("结束抓拍数据量检测结果数据同步"); } //采集设备属性监测结果(人脸) public void monitorDetailTask() { log.info("开始执行采集设备属性监测结果数据同步"); //人脸卡口信息采集准确率 MonitoringDetailParam param = new MonitoringDetailParam(); param.setPageNo(ApiConstants.PageNo); param.setPageSize(ApiConstants.HKPageSize); param.setDate(DateUtils.getDate()); List faceList = HkApiUtil.sendAPI("/api/dqd/service/rs/v1/device/cameraExpDetailInfo/query", param, MonitoringDetailResult.class); if (!CollectionUtils.isEmpty(faceList)) { //如果今天存在之前的数据先删除 Query query = new Query(Criteria .where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date()))); DeleteResult result = mongoTemplate.remove(query, MonitoringDetailResult.class); //存放在mongo中 mongoTemplate.insertAll(faceList); } //TODO:工单处理 log.info("结束采集设备属性监测结果数据同步"); } //卡口属性监测结果 public void crossDetailTask() { log.info("开始执行卡口属性监测结果数据同步"); //车辆卡口信息采集准确率 CrossDetailParam param = new CrossDetailParam(); param.setPageNo(ApiConstants.PageNo); param.setPageSize(ApiConstants.HKPageSize); param.setDate(DateUtils.getDate()); List faceList = HkApiUtil.sendAPI("/api/dqd/service/rs/v1/device/crossExpDetailInfo/query", param, CrossDetailResult.class); if (!CollectionUtils.isEmpty(faceList)) { //如果今天存在之前的数据先删除 Query query = new Query(Criteria .where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date()))); DeleteResult result = mongoTemplate.remove(query, CrossDetailResult.class); //存放在mongo中 mongoTemplate.insertAll(faceList); } //TODO:工单处理 log.info("结束卡口属性监测结果数据同步"); } //数据完整性监测结果 public void dataIntegrityMonitoringTask() { log.info("开始执行数据完整性监测结果数据同步"); //车辆卡口设备抓拍数据完整性 DataIntegrityMonitoringParam param = new DataIntegrityMonitoringParam(); param.setPageNo(ApiConstants.PageNo); param.setPageSize(ApiConstants.HKPageSize); param.setDate(DateUtils.getDate()); param.setDataType(ApiConstants.HK_DataType_CAR); List faceList = HkApiUtil.sendAPI("/api/dqd/service/rs/v1/data/attributeIntegrity/query", param, DataIntegrityMonitoringResult.class); if (!CollectionUtils.isEmpty(faceList)) { //如果今天存在之前的数据先删除 Query query = new Query(Criteria .where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date()))); DeleteResult result = mongoTemplate.remove(query, DataIntegrityMonitoringResult.class); //存放在mongo中 mongoTemplate.insertAll(faceList); } //TODO:工单处理 log.info("结束数据完整性监测结果数据同步"); } //属性识别准确监测结果 public void attrRecognitionMonitorTask() { log.info("开始执行属性识别准确监测结果数据同步"); //车辆卡口设备抓拍数据准确性 AttrRecognitionParam param = new AttrRecognitionParam(); param.setPageNo(ApiConstants.PageNo); param.setPageSize(ApiConstants.HKPageSize); param.setDate(DateUtils.getDate()); param.setDataType(ApiConstants.HK_DataType_CAR); List faceList = HkApiUtil.sendAPI("/api/dqd/service/rs/v1/data/attributeRecognition/query", param, AttrRecognitionMonitorResult.class); if (!CollectionUtils.isEmpty(faceList)) { //如果今天存在之前的数据先删除 Query query = new Query(Criteria .where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date()))); DeleteResult result = mongoTemplate.remove(query, AttrRecognitionMonitorResult.class); //存放在mongo中 mongoTemplate.insertAll(faceList); } //TODO:工单处理 log.info("结束属性识别准确监测结果数据同步"); } //抓拍数据时延监测结果 public void snapshopDelayMonitorTask() { log.info("开始执行抓拍数据时延监测结果数据同步"); //车辆卡口设备抓拍数据上传及时性 /** 车辆数据 */ SnapshotDelayMonitorParam carParam = new SnapshotDelayMonitorParam(); carParam.setPageNo(ApiConstants.PageNo); carParam.setPageSize(ApiConstants.HKPageSize); carParam.setDate(DateUtils.getDate()); carParam.setDataType(ApiConstants.HK_DataType_CAR); List carList = HkApiUtil.sendAPI("/api/dqd/service/rs/v1/data/snapAgingDetail/query", carParam, SnapshotDelayMonitorResult.class); if (!CollectionUtils.isEmpty(carList)) { //如果今天存在之前的数据先删除 Query query = new Query(Criteria .where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())) .and("dataType").is(ApiConstants.HK_DataType_CAR)); DeleteResult result = mongoTemplate.remove(query, SnapshotDelayMonitorResult.class); //存放在mongo中 carList.forEach(item -> item.setDataType(ApiConstants.HK_DataType_CAR)); mongoTemplate.insertAll(carList); } /** 人脸数据 */ SnapshotDelayMonitorParam faceParam = new SnapshotDelayMonitorParam(); faceParam.setPageNo(ApiConstants.PageNo); faceParam.setPageSize(ApiConstants.HKPageSize); faceParam.setDate(DateUtils.getDate()); faceParam.setDataType(ApiConstants.HK_DataType_FACE); List faceList = HkApiUtil.sendAPI("/api/dqd/service/rs/v1/data/snapAgingDetail/query", faceParam, SnapshotDelayMonitorResult.class); if (!CollectionUtils.isEmpty(faceList)) { //如果今天存在之前的数据先删除 Query query = new Query(Criteria .where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())) .and("dataType").is(ApiConstants.HK_DataType_FACE)); DeleteResult result = mongoTemplate.remove(query, SnapshotDelayMonitorResult.class); //存放在mongo中 faceList.forEach(item -> item.setDataType(ApiConstants.HK_DataType_FACE)); mongoTemplate.insertAll(faceList); } //TODO:工单 log.info("结束抓拍数据时延监测结果数据同步"); } //图片访问监测结果 public void picAccessTask() { log.info("开始执行图片访问监测结果数据同步"); //车辆卡口信息采集准确率、车辆卡口设备url可用性 PicAccessParam param = new PicAccessParam(); param.setPageNo(ApiConstants.PageNo); param.setPageSize(ApiConstants.HKPageSize); param.setDate(DateUtils.getDate()); param.setDataType(ApiConstants.HK_DataType_CAR); List faceList = HkApiUtil.sendAPI("/api/dqd/service/rs/v1/data/picAccessDetail/query", param, PicAccessResult.class); if (!CollectionUtils.isEmpty(faceList)) { //如果今天存在之前的数据先删除 Query query = new Query(Criteria .where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date()))); DeleteResult result = mongoTemplate.remove(query, PicAccessResult.class); //存放在mongo中 mongoTemplate.insertAll(faceList); } //TODO:工单处理 log.info("结束图片访问监测结果数据同步"); } //车辆设备抽检指标监测结果 public void vehicleDeviceSamplingTask() { log.info("开始执行车辆设备抽检指标监测结果数据同步"); //车辆卡口信息采集准确率、车辆卡口设备url可用性 VehicleDeviceSamplingParam param = new VehicleDeviceSamplingParam(); param.setPageNo(ApiConstants.PageNo); param.setPageSize(ApiConstants.HKPageSize); param.setDate(DateUtils.getDate()); param.setDataType(ApiConstants.HK_DataType_CAR); List faceList = HkApiUtil.sendAPI("/api/dqd/service/rs/v2/data/vehSampleAmount/query", param, VehicleDeviceSamplingResult.class); if (!CollectionUtils.isEmpty(faceList)) { //如果今天存在之前的数据先删除 Query query = new Query(Criteria .where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date()))); DeleteResult result = mongoTemplate.remove(query, VehicleDeviceSamplingResult.class); //存放在mongo中 mongoTemplate.insertAll(faceList); } //TODO:工单处理 log.info("结束车辆设备抽检指标监测结果数据同步"); } //人脸设备抽检指标监测结果 public void faceDeviceSamplingTask() { log.info("开始执行人脸设备抽检指标监测结果数据同步"); FaceDeviceSamplingParam param = new FaceDeviceSamplingParam(); param.setPageNo(ApiConstants.PageNo); param.setPageSize(ApiConstants.HKPageSize); param.setDate(DateUtils.getDate()); List faceList = HkApiUtil.sendAPI("/api/dqd/service/rs/v2/data/faceSampleAmount/query", param, FaceDeviceSamplingResult.class); if (!CollectionUtils.isEmpty(faceList)) { //如果今天存在之前的数据先删除 Query query = new Query(Criteria .where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date()))); DeleteResult result = mongoTemplate.remove(query, FaceDeviceSamplingResult.class); //存放在mongo中 mongoTemplate.insertAll(faceList); } //TODO:工单处理 log.info("结束人脸设备抽检指标监测结果数据同步"); } //测试 public void test() { log.info("测试海康接口"); HkApiUtil.sendAPI("/api/dqd/service/rs/v2/data/faceDetect/query", new FaceDeviceSamplingParam(), Object.class); log.info("结束->{},调用成功"); } //测试 public void test1() { log.info("测试海康接口"); HkApiUtil.sendAPI("/api/dqd/service/rs/v1/device/coordinateExpInfo/query", new FaceDeviceSamplingParam(), Object.class); log.info("结束->{},调用成功"); } //测试 public void test2() { log.info("测试海康接口"); HkApiUtil.sendAPI("/api/dqd/service/rs/v1/device/gbCodeExpInfo/query", new FaceDeviceSamplingParam(), Object.class); log.info("结束->{},调用成功"); } //测试 public void test3() { log.info("测试海康接口"); HkApiUtil.sendAPI("/api/dqd/service/rs/v2/data/passDetect/query", new FaceDeviceSamplingParam(), Object.class); log.info("结束->{},调用成功"); } //解析数据 private List getDataList(JSONObject jsonObject, Class resultClass, String message) { if (jsonObject != null && ApiConstants.HKSuccessCode.equals(jsonObject.getString("code"))) { log.info("数据格式"+jsonObject); JSONObject data = jsonObject.getJSONObject("data"); if (data == null) { log.error(message, jsonObject); return null; } List list = data.getList("list", resultClass); if (CollectionUtils.isEmpty(list)) { log.error(message, data); return null; } return list; } else { log.error(message); } return null; } }