fuliqi
2024-07-31 1063437e610972bb3000bea8ffda6fdc70a25cdb
ycl-server/src/main/java/com/ycl/task/HKTask.java
@@ -2,9 +2,8 @@
import com.alibaba.fastjson2.JSONObject;
import com.mongodb.client.result.DeleteResult;
import com.ycl.calculate.CalculationStrategy;
import com.ycl.factory.IndexCalculationFactory;
import com.ycl.platform.domain.param.HK.*;
import com.ycl.platform.domain.result.BaseResult;
import com.ycl.platform.domain.result.HK.*;
import com.ycl.platform.service.ICheckIndexCarService;
import com.ycl.platform.service.ICheckIndexFaceService;
@@ -20,13 +19,11 @@
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;
import java.util.List;
//海康对接数据任务
@Slf4j
@Component("HKTask")
public class HKTask {
@@ -45,7 +42,7 @@
    private ICheckIndexVideoService checkIndexVideoService;
    //车辆设备全检指标监测结果
    public void VehicleDeviceInspectionTask() {
    public void vehicleDeviceInspectionTask() {
        log.info("开始执行车辆设备全检指标监测结果数据同步");
        VehicleDeviceInspectionParam param = new VehicleDeviceInspectionParam();
        param.setPageNO(ApiConstants.pageNo).setPageSize(ApiConstants.pageSize).setDate(DateUtils.getDate());
@@ -53,7 +50,7 @@
        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())));
            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.insert(list);
@@ -64,7 +61,7 @@
    }
    //人脸设备全检指标监测结果
    public void FaceDeviceInspectionTask() {
    public void faceDeviceInspectionTask() {
        log.info("开始执行人脸设备全检指标监测结果数据同步");
        FaceDeviceInspectionParam param = new FaceDeviceInspectionParam();
        param.setPageNO(ApiConstants.pageNo).setPageSize(ApiConstants.pageSize).setDate(DateUtils.getDate());
@@ -72,7 +69,7 @@
        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())));
            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.insert(list);
@@ -85,7 +82,7 @@
    //抓拍数据量监测结果
    public void SnapshotDataMonitorTask() {
    public void snapshotDataMonitorTask() {
        log.info("开始执行抓拍数据量检测结果数据同步");
        /** 车辆数据 */
        SnapshotDataMonitorParam carParam = new SnapshotDataMonitorParam();
@@ -95,11 +92,11 @@
        if (!CollectionUtils.isEmpty(carList)) {
            //如果今天存在之前的数据先删除
            Query query = new Query(Criteria
                    .where("createTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date()))
                    .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));
            carList.forEach(item -> item.setDataType(ApiConstants.HK_DATATYPE_CAR));
            mongoTemplate.insert(carList);
        }
@@ -111,28 +108,21 @@
        if (!CollectionUtils.isEmpty(faceList)) {
            //如果今天存在之前的数据先删除
            Query query = new Query(Criteria
                    .where("createTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date()))
                    .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));
            carList.forEach(item -> item.setDataType(ApiConstants.HK_DATATYPE_FACE));
            mongoTemplate.insert(faceList);
        }
        //TODO:工单
        log.info("结束抓拍数据量检测结果数据同步");
    }
    //一机一档
    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);
@@ -140,8 +130,8 @@
        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);
                    .where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())));
            DeleteResult result = mongoTemplate.remove(query, MonitoringDetailResult.class);
            //存放在mongo中
            mongoTemplate.insert(faceList);
        }
@@ -160,8 +150,8 @@
        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);
                    .where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())));
            DeleteResult result = mongoTemplate.remove(query, CrossDetailResult.class);
            //存放在mongo中
            mongoTemplate.insert(faceList);
        }
@@ -170,35 +160,148 @@
    }
    //数据完整性监测结果
    public void task4() {
    public void dataIntegrityMonitoringTask() {
        log.info("开始执行数据完整性监测结果数据同步");
        //车辆卡口设备抓拍数据完整性
        DataIntegrityMonitoringParam param = new DataIntegrityMonitoringParam();
        param.setPageNO(ApiConstants.pageNo).setPageSize(ApiConstants.pageSize).setDate(DateUtils.getDate()).setDataType(ApiConstants.HK_DATATYPE_CAR);
        JSONObject jsonObject = hkClient.DataIntegrityMonitoring(param);
        List<DataIntegrityMonitoringResult> faceList = getDataList(jsonObject, 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.insert(faceList);
        }
        //TODO:工单处理
        log.info("结束数据完整性监测结果数据同步");
    }
    //属性识别准确监测结果
    public void task5() {
        //车辆卡口设备抓拍数据完整性
    }
    public void attrRecognitionMonitorTask() {
        log.info("开始执行属性识别准确监测结果数据同步");
        //车辆卡口设备抓拍数据准确性
        AttrRecognitionParam param = new AttrRecognitionParam();
        param.setPageNO(ApiConstants.pageNo).setPageSize(ApiConstants.pageSize).setDate(DateUtils.getDate()).setDataType(ApiConstants.HK_DATATYPE_CAR);
        JSONObject jsonObject = hkClient.AttrRecognitionMonitor(param);
        List<AttrRecognitionMonitorResult> faceList = getDataList(jsonObject, 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.insert(faceList);
        }
        //TODO:工单处理
        log.info("结束属性识别准确监测结果数据同步");
    //车辆设备全检指标监测结果
    public void task6() {
        //车辆卡口设备时钟准确性
    }
    //抓拍数据时延监测结果
    public void task7() {
    public void snapshopDelayMonitorTask() {
        log.info("开始执行抓拍数据时延监测结果数据同步");
        //车辆卡口设备抓拍数据上传及时性
        /** 车辆数据 */
        SnapshotDelayMonitorParam carParam = new SnapshotDelayMonitorParam();
        carParam.setPageNO(ApiConstants.pageNo).setPageSize(ApiConstants.pageSize).setDate(DateUtils.getDate()).setDataType(ApiConstants.HK_DATATYPE_CAR);
        JSONObject carJsonObject = hkClient.SnapshotDelayMonitor(carParam);
        List<SnapshotDelayMonitorResult> carList = getDataList(carJsonObject, 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, SnapshotDelayMonitorParam.class);
            //存放在mongo中
            carList.forEach(item -> item.setDataType(ApiConstants.HK_DATATYPE_CAR));
            mongoTemplate.insert(carList);
        }
        /** 人脸数据 */
        SnapshotDelayMonitorParam faceParam = new SnapshotDelayMonitorParam();
        faceParam.setPageNO(ApiConstants.pageNo).setPageSize(ApiConstants.pageSize).setDate(DateUtils.getDate()).setDataType(ApiConstants.HK_DATATYPE_FACE);
        JSONObject faceJsonObject = hkClient.SnapshotDelayMonitor(faceParam);
        List<SnapshotDelayMonitorParam> faceList = getDataList(faceJsonObject, SnapshotDelayMonitorParam.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, SnapshotDelayMonitorParam.class);
            //存放在mongo中
            carList.forEach(item -> item.setDataType(ApiConstants.HK_DATATYPE_FACE));
            mongoTemplate.insert(faceList);
        }
        //TODO:工单
        log.info("结束抓拍数据时延监测结果数据同步");
    }
    //图片访问监测结果
    public void task8() {
        //车辆卡口信息采集准确率
    public void PicAccessTask() {
        log.info("开始执行图片访问监测结果数据同步");
        //车辆卡口信息采集准确率、车辆卡口设备url可用性
        PicAccessParam param = new PicAccessParam();
        param.setPageNO(ApiConstants.pageNo).setPageSize(ApiConstants.pageSize).setDate(DateUtils.getDate()).setDataType(ApiConstants.HK_DATATYPE_CAR);
        JSONObject jsonObject = hkClient.PicAccessMonitor(param);
        List<PicAccessResult> faceList = getDataList(jsonObject, 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.insert(faceList);
        }
        //TODO:工单处理
        log.info("结束图片访问监测结果数据同步");
    }
        //车辆卡口设备url可用性
    //人脸设备抽检指标监测结果
    public void Face() {
        log.info("开始执行人脸设备抽检指标监测结果数据同步");
        //车辆卡口信息采集准确率、车辆卡口设备url可用性
        FaceDeviceSamplingParam param = new FaceDeviceSamplingParam();
        param.setPageNO(ApiConstants.pageNo).setPageSize(ApiConstants.pageSize).setDate(DateUtils.getDate());
        JSONObject jsonObject = hkClient.FaceDeviceSampling(param);
        List<FaceDeviceSamplingResult> faceList = getDataList(jsonObject, 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.insert(faceList);
        }
        //TODO:工单处理
        log.info("结束人脸设备抽检指标监测结果数据同步");
    }
    //车辆设备抽检指标监测结果
    public void FaceDeviceSamplingTask() {
        log.info("开始执行车辆设备抽检指标监测结果数据同步");
        //车辆卡口信息采集准确率、车辆卡口设备url可用性
        FaceDeviceSamplingParam param = new FaceDeviceSamplingParam();
        param.setPageNO(ApiConstants.pageNo).setPageSize(ApiConstants.pageSize).setDate(DateUtils.getDate());
        JSONObject jsonObject = hkClient.FaceDeviceSampling(param);
        List<FaceDeviceSamplingResult> faceList = getDataList(jsonObject, 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.insert(faceList);
        }
        //TODO:工单处理
        log.info("结束人脸设备抽检指标监测结果数据同步");
    }
    //解析数据
    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);
@@ -208,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 {