xiangpei
2024-08-31 1aa2a59a237dbc4c58a5e3d09be2bfeaf1535c8b
Merge remote-tracking branch 'origin/master'
23个文件已修改
3个文件已删除
522 ■■■■■ 已修改文件
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CheckIndexVideo.java 16 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/result/HK/FaceDeviceSamplingResult.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/calculate/CarDataIntegrityCalculation.java 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/calculate/CarDeviceSampleCalculation.java 9 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/calculate/FaceSnapshotDataCalculation.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/calculate/IndexCalculationServe.java 49 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/calculate/MonitorRegistrationCalculation.java 6 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/calculate/PlatformOnlineCalculation.java 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/calculate/VideoOnlineCalculation.java 28 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/calculate/VideoOsdCalculation.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/calculate/VideoUsabilityCalculation.java 27 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/feign/HkApiUtil.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/controller/DataCenterController.java 50 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/CheckTemplateServiceImpl.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/task/ContractTask.java 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/task/HKTask.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/task/ImageResourceSecurityTask.java 79 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/task/OsdTask.java 9 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/task/RyTask.java 28 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/task/TestRequestJob.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/task/UYTask.java 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/task/VideoTask.java 61 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/application-dev.yml 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/mapper/zgyw/CheckIndexVideoMapper.xml 26 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/mapper/zgyw/CheckScoreMapper.xml 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/mapper/zgyw/PlatformOnlineMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/CheckIndexVideo.java
@@ -65,18 +65,18 @@
    private BigDecimal videoAvailable;
    /**
     * 标注正确率
     * 部级点位在线率
     */
    @Excel(name = "标注正确率")
    @TableField("annotation_accuracy")
    private BigDecimal annotationAccuracy;
    @Excel(name = "部级点位在线率")
    @TableField("ministry_site_online")
    private BigDecimal ministrySiteOnline;
    /**
     * 校时准确率
     * 部级巡检录像可用率
     */
    @Excel(name = "校时准确率")
    @TableField("timing_accuracy")
    private BigDecimal timingAccuracy;
    @Excel(name = "部级巡检录像可用率")
    @TableField("ministry_video_available")
    private BigDecimal ministryVideoAvailable;
    /**
     * 重点点位在线率
ycl-pojo/src/main/java/com/ycl/platform/domain/result/HK/FaceDeviceSamplingResult.java
@@ -60,7 +60,6 @@
    /**
     * 人脸合格性相关数据
     */
    //TODO:参数名修改看接口是否有参数
    private FaceEligibility faceEligibility;
    // 内嵌对象定义
ycl-server/src/main/java/com/ycl/calculate/CarDataIntegrityCalculation.java
@@ -1,19 +1,12 @@
package com.ycl.calculate;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ycl.platform.base.CheckIndex;
import com.ycl.platform.domain.entity.CheckIndexCar;
import com.ycl.platform.domain.entity.TMonitor;
import com.ycl.platform.domain.result.HK.CrossDetailResult;
import com.ycl.platform.domain.result.HK.DataIntegrityMonitoringResult;
import com.ycl.platform.domain.vo.TMonitorVO;
import com.ycl.platform.mapper.CheckIndexCarMapper;
import com.ycl.platform.mapper.TMonitorMapper;
import com.ycl.platform.service.ICheckIndexCarService;
import com.ycl.platform.service.ITMonitorService;
import com.ycl.system.mapper.SysConfigMapper;
import constant.ApiConstants;
import constant.CheckConstants;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -21,7 +14,10 @@
import utils.DateUtils;
import java.math.BigDecimal;
import java.util.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
@@ -112,7 +108,7 @@
    }
    /**
     * 车辆信息采集正确率
     * 车辆数据完整
     */
    private CheckIndexCar createOrUpdateCheckIndexCar(String key, AreaStats stats, List<CheckIndexCar> checkIndexCarList) {
        CheckIndexCar checkIndexCar = getCheckIndex(key, checkIndexCarList, CheckIndexCar.class);
ycl-server/src/main/java/com/ycl/calculate/CarDeviceSampleCalculation.java
@@ -23,7 +23,7 @@
import java.util.stream.Collectors;
/**
 * 计算车辆属性识别准确率、url可用性、大图可用性
 * 计算车辆抓拍数据准确性、url可用性、大图可用性
 * 车辆数据抽检接口
 * 获取分省厅、区域的map<k,v> k为deptId或者Province_deptId
 * 更新或新增
@@ -131,14 +131,15 @@
    }
    /**
     * 车辆信息采集正确率、url可用性、大图可用性
     * 车辆抓拍数据准确性、url可用性、大图可用性
     */
    private CheckIndexCar createOrUpdateCheckIndexCar(String key, AreaStats stats, List<CheckIndexCar> checkIndexCarList) {
        CheckIndexCar checkIndexCar = getCheckIndex(key, checkIndexCarList, CheckIndexCar.class);
        if (checkIndexCar == null) {
            return null;
        }
        //调用信息采集正确率计算方法
        log.info("key:{},车辆抓拍数据准确性:totalSites:{},importantTotalSites:{},accuracySites:{},importantAccuracySites:{}",key,stats.totalSites,stats.importantTotalSites,stats.accuracySites,stats.importantAccuracySites);
        //调用车辆抓拍数据准确性计算方法
        Map<String, Object> accuracyParam = new HashMap<>();
        accuracyParam.put("totalSites", stats.totalSites);
        accuracyParam.put("importantTotalSites", stats.importantTotalSites);
@@ -146,12 +147,14 @@
        accuracyParam.put("importantAccuracySites", stats.importantAccuracySites);
        BigDecimal dataAccuracy = dataAccuracy(accuracyParam);
        checkIndexCar.setVehicleCaptureAccuracy(dataAccuracy);
        log.info("url可用性: totalSites:{},urlQualifySites:{}",stats.totalSites,stats.urlUsabilitySites);
        //调用url可用性计算方法
        Map<String, Object> urlParam = new HashMap<>();
        urlParam.put("totalSites", stats.totalSites);
        urlParam.put("urlQualifySites", stats.urlUsabilitySites);
        BigDecimal urlUsability = urlUsability(urlParam);
        checkIndexCar.setVehicleUrlAvailability(urlUsability);
        log.info("大图可用性: totalSites:{},picUsabilitySites:{}",stats.totalSites,stats.picUsabilitySites);
        //调用大图可用性计算方法
        Map<String, Object> usabilityParam = new HashMap<>();
        usabilityParam.put("totalSites", stats.totalSites);
ycl-server/src/main/java/com/ycl/calculate/FaceSnapshotDataCalculation.java
@@ -36,7 +36,6 @@
 */
@Component
@Slf4j
//TODD:系统配置里的区分人脸和车辆、累加次数的概念、区县不少于40路,不达标市州的当月该项成绩不能得分。
public class FaceSnapshotDataCalculation extends IndexCalculationServe implements CalculationStrategy<SnapshotDataMonitorResult> {
    @Autowired
    private CheckIndexFaceMapper checkIndexFaceMapper;
ycl-server/src/main/java/com/ycl/calculate/IndexCalculationServe.java
@@ -44,7 +44,7 @@
    public BigDecimal monitorQualify(Map<String, Object> param) {
        BigDecimal totalMonitors = new BigDecimal((Integer) param.get("totalMonitors"));
        BigDecimal qualifyMonitor = new BigDecimal((Integer) param.get("qualifyMonitor"));
        return qualifyMonitor.divide(totalMonitors, 4, RoundingMode.HALF_UP);
        return BigDecimal.ZERO.compareTo(totalMonitors) == 0 ? BigDecimal.ZERO : qualifyMonitor.divide(totalMonitors, 4, RoundingMode.HALF_UP);
    }
    //一机一档注册率率
@@ -53,35 +53,35 @@
        BigDecimal totalSites = new BigDecimal((Integer) param.get("totalSites"));
        //正在用的档案数
        BigDecimal useSites = new BigDecimal((Integer) param.get("totalSites") - (Integer) param.get("newSites"));
        return useSites.divide(totalSites, 4, RoundingMode.HALF_UP);
        return BigDecimal.ZERO.compareTo(totalSites) == 0 ? BigDecimal.ZERO : useSites.divide(totalSites, 4, RoundingMode.HALF_UP);
    }
    //档案考核比
    public BigDecimal archivesRate(Map<String, Object> param) {
        BigDecimal allFiles = new BigDecimal((Integer) param.get("allFiles"));
        BigDecimal todayFiles = new BigDecimal((Integer) param.get("todayFiles"));
        return todayFiles.divide(allFiles, 4, RoundingMode.HALF_UP);
        return BigDecimal.ZERO.compareTo(todayFiles) == 0 ? BigDecimal.ZERO : todayFiles.divide(allFiles, 4, RoundingMode.HALF_UP);
    }
    //点位在线率
    public BigDecimal siteOnline(Map<String, Object> param) {
        BigDecimal totalSites = new BigDecimal((Integer) param.get("totalSites"));
        BigDecimal onlineSites = new BigDecimal((Integer) param.get("onlineSites"));
        return onlineSites.divide(totalSites, 4, RoundingMode.HALF_UP);
        return BigDecimal.ZERO.compareTo(totalSites) == 0 ? BigDecimal.ZERO : onlineSites.divide(totalSites, 4, RoundingMode.HALF_UP);
    }
    //视频Osd准确率
    public BigDecimal osdAccuracy(Map<String, Object> param) {
        BigDecimal totalSites = new BigDecimal((Integer) param.get("totalSites"));
        BigDecimal osdAccuracySites = new BigDecimal((Integer) param.get("osdAccuracySites"));
        return osdAccuracySites.divide(totalSites, 4, RoundingMode.HALF_UP);
        return BigDecimal.ZERO.compareTo(totalSites) == 0 ? BigDecimal.ZERO : osdAccuracySites.divide(totalSites, 4, RoundingMode.HALF_UP);
    }
    //视频时间合格率
    public BigDecimal osdTimeAccuracy(Map<String, Object> param) {
        BigDecimal totalSites = new BigDecimal((Integer) param.get("totalSites"));
        BigDecimal timeAccuracySites = new BigDecimal((Integer) param.get("timeAccuracySites"));
        return timeAccuracySites.divide(totalSites, 4, RoundingMode.HALF_UP);
        return BigDecimal.ZERO.compareTo(totalSites) == 0 ? BigDecimal.ZERO : timeAccuracySites.divide(totalSites, 4, RoundingMode.HALF_UP);
    }
    //目录一致率,每超过百分之1扣10%
@@ -91,6 +91,7 @@
        // 计算newSites占totalSites的百分比倍数
        BigDecimal percentage = newSites.divide(totalSites, 2, RoundingMode.DOWN).multiply(BigDecimal.valueOf(100));
        BigDecimal result = BigDecimal.ONE;
        //超过百分之1没,超过了才扣分
        if (BigDecimal.ONE.compareTo(percentage) <= 0) {
            result = result.subtract(percentage.multiply(new BigDecimal("0.1")));
        }
@@ -101,14 +102,14 @@
    public BigDecimal viewConnectStability(Map<String, Object> param) {
        BigDecimal totalDataSum = new BigDecimal((Integer) param.get("totalDataSum"));
        BigDecimal avgCount = (BigDecimal) param.get("avgCount");
        return avgCount.divide(totalDataSum, 4, RoundingMode.HALF_UP);
        return BigDecimal.ZERO.compareTo(totalDataSum) == 0 ? BigDecimal.ZERO : avgCount.divide(totalDataSum, 4, RoundingMode.HALF_UP);
    }
    //标注正确率
    public BigDecimal infoAccuracy(Map<String, Object> param) {
        BigDecimal totalSitesCount = new BigDecimal((Integer) param.get("totalSites"));
        BigDecimal qualifySiteCount = new BigDecimal((Integer) param.get("qualifySite"));
        return qualifySiteCount.divide(totalSitesCount, 4, RoundingMode.HALF_UP);
        return BigDecimal.ZERO.compareTo(totalSitesCount) == 0 ? BigDecimal.ZERO : qualifySiteCount.divide(totalSitesCount, 4, RoundingMode.HALF_UP);
    }
    //数据上传及时性
@@ -117,10 +118,9 @@
        BigDecimal delayCount1 = new BigDecimal((Integer) param.get("delayCount1"));
        BigDecimal delayCount2 = new BigDecimal((Integer) param.get("delayCount2"));
        BigDecimal delayCount3 = new BigDecimal((Integer) param.get("delayCount3"));
        BigDecimal result = BigDecimal.ONE.subtract(delayCount1.divide(totalCount, 10, RoundingMode.HALF_UP).multiply(BigDecimal.ONE)
        BigDecimal result = BigDecimal.ZERO.compareTo(totalCount) == 0 ? BigDecimal.ZERO : delayCount1.divide(totalCount, 10, RoundingMode.HALF_UP).multiply(BigDecimal.ONE)
                .add(delayCount2.divide(totalCount, 10, RoundingMode.HALF_UP).multiply(new BigDecimal("0.8")))
                .add(delayCount3.divide(totalCount, 10, RoundingMode.HALF_UP).multiply(new BigDecimal("0.6"))));
                .add(delayCount3.divide(totalCount, 10, RoundingMode.HALF_UP).multiply(new BigDecimal("0.6")));
        return result.setScale(4, RoundingMode.HALF_UP);
    }
@@ -130,9 +130,9 @@
        BigDecimal importantTotalSites = new BigDecimal((Integer) param.get("importantTotalSites"));
        BigDecimal integritySites = new BigDecimal((Integer) param.get("integritySites"));
        BigDecimal importantIntegritySites = new BigDecimal((Integer) param.get("importantIntegritySites"));
        BigDecimal result = integritySites.divide(totalSites, 10, RoundingMode.HALF_UP)
                .multiply(importantIntegritySites.divide(importantTotalSites, 10, RoundingMode.HALF_UP));
        return result.setScale(4, RoundingMode.HALF_UP);
        BigDecimal total = BigDecimal.ZERO.compareTo(totalSites) == 0 ? BigDecimal.ZERO : integritySites.divide(totalSites, 10, RoundingMode.HALF_UP);
        BigDecimal important = BigDecimal.ZERO.compareTo(importantTotalSites) == 0 ? BigDecimal.ZERO : importantIntegritySites.divide(importantTotalSites, 10, RoundingMode.HALF_UP);
        return total.multiply(important).setScale(4, RoundingMode.HALF_UP);
    }
    //车辆数据完整性
@@ -141,44 +141,44 @@
        BigDecimal importantTotalSites = new BigDecimal((Integer) param.get("importantTotalSites"));
        BigDecimal accuracySites = new BigDecimal((Integer) param.get("accuracySites"));
        BigDecimal importantAccuracySites = new BigDecimal((Integer) param.get("importantAccuracySites"));
        BigDecimal result = accuracySites.divide(totalSites, 10, RoundingMode.HALF_UP)
                .add(importantAccuracySites.divide(importantTotalSites, 10, RoundingMode.HALF_UP));
        return result.setScale(4, RoundingMode.HALF_UP);
        BigDecimal total = BigDecimal.ZERO.compareTo(totalSites) == 0 ? BigDecimal.ZERO : accuracySites.divide(totalSites, 10, RoundingMode.HALF_UP);
        BigDecimal important = BigDecimal.ZERO.compareTo(importantTotalSites) == 0 ? BigDecimal.ZERO : importantAccuracySites.divide(importantTotalSites, 10, RoundingMode.HALF_UP);
        return total.multiply(important).setScale(4, RoundingMode.HALF_UP);
    }
    //时钟准确性
    public BigDecimal clockAccuracy(Map<String, Object> param) {
        BigDecimal totalSitesCount = new BigDecimal((Integer) param.get("totalSites"));
        BigDecimal accuracySites = new BigDecimal((Integer) param.get("accuracySites"));
        return accuracySites.divide(totalSitesCount, 4, RoundingMode.HALF_UP);
        return BigDecimal.ZERO.compareTo(totalSitesCount) == 0 ? BigDecimal.ZERO : accuracySites.divide(totalSitesCount, 4, RoundingMode.HALF_UP);
    }
    //url可用性
    public BigDecimal urlUsability(Map<String, Object> param) {
        BigDecimal totalSitesCount = new BigDecimal((Integer) param.get("totalSites"));
        BigDecimal urlQualifySites = new BigDecimal((Integer) param.get("urlQualifySites"));
        return urlQualifySites.divide(totalSitesCount, 4, RoundingMode.HALF_UP);
        return BigDecimal.ZERO.compareTo(totalSitesCount) == 0 ? BigDecimal.ZERO : urlQualifySites.divide(totalSitesCount, 4, RoundingMode.HALF_UP);
    }
    //大图可用性
    public BigDecimal picUsability(Map<String, Object> param) {
        BigDecimal totalSitesCount = new BigDecimal((Integer) param.get("totalSites"));
        BigDecimal picUsabilitySites = new BigDecimal((Integer) param.get("picUsabilitySites"));
        return picUsabilitySites.divide(totalSitesCount, 4, RoundingMode.HALF_UP);
        return BigDecimal.ZERO.compareTo(totalSitesCount) == 0 ? BigDecimal.ZERO : picUsabilitySites.divide(totalSitesCount, 4, RoundingMode.HALF_UP);
    }
    //图片合格率
    public BigDecimal dataQualify(Map<String, Object> param) {
        BigDecimal totalSitesCount = new BigDecimal((Integer) param.get("totalSites"));
        BigDecimal picQualifySites = new BigDecimal((Integer) param.get("picQualifySites"));
        return picQualifySites.divide(totalSitesCount, 4, RoundingMode.HALF_UP);
        return BigDecimal.ZERO.compareTo(totalSitesCount) == 0 ? BigDecimal.ZERO : picQualifySites.divide(totalSitesCount, 4, RoundingMode.HALF_UP);
    }
    //录像可用率
    public BigDecimal videoUsability(Map<String, Object> param) {
        BigDecimal totalSites = new BigDecimal((Integer) param.get("totalSites"));
        BigDecimal usabilitySites = new BigDecimal((Integer) param.get("usabilitySites"));
        return usabilitySites.divide(totalSites, 4, RoundingMode.HALF_UP);
        return BigDecimal.ZERO.compareTo(totalSites) == 0 ? BigDecimal.ZERO : usabilitySites.divide(totalSites, 4, RoundingMode.HALF_UP);
    }
    //返回省厅国标码集合
@@ -199,7 +199,7 @@
        return CollectionUtils.isEmpty(commandImages) ? new ArrayList<>() : commandImages.stream().map(YwPoint::getSerialNumber).collect(Collectors.toList());
    }
    //返回重点指挥图像集合
    //返回部级点位集合
    public List<String> getDeptTag() {
        List<YwPoint> commandImages = pointMapper.selectByTag(null, null, null, Boolean.TRUE);
        return CollectionUtils.isEmpty(commandImages) ? new ArrayList<>() : commandImages.stream().map(YwPoint::getSerialNumber).collect(Collectors.toList());
@@ -207,7 +207,8 @@
    //返回monitor
    public List<String> getMonitorFromMongo() {
        Query query = new Query(Criteria.where("mongoCreateTime").gte(DateUtils.getDayStart(new Date())).lt(DateUtils.getDayEnd(new Date())));
        Date yesterday = DateUtils.addDays(new Date(), -1);
        Query query = new Query(Criteria.where("mongoCreateTime").gte(DateUtils.getDayStart(yesterday)).lt(DateUtils.getDayEnd(yesterday)));
        List<MonitorQualifyResult> oneMachineFileResults = mongoTemplate.find(query, MonitorQualifyResult.class);
        return CollectionUtils.isEmpty(oneMachineFileResults) ? new ArrayList<>() : oneMachineFileResults.stream().map(result -> result.getSerialNumber().getValue()).collect(Collectors.toList());
ycl-server/src/main/java/com/ycl/calculate/MonitorRegistrationCalculation.java
@@ -48,7 +48,7 @@
        int newSites = 0;
        //全年留存数
        int allFiles = 0;
        //当日档案数
        //当日档案数(凌晨计算的,实际取得是昨日的一机一档数量)
        int todayFiles = 0;
    }
@@ -110,7 +110,7 @@
    /**
     * 累计总点位数、在线点位数、重点点位数、重点点位在线数、指挥图像数、指挥图像在线数
     */
    private void updateAreaStats(Map<String, AreaStats> areaStatsMap, String key, TMonitorVO result, Map<String, TMonitor> newMonitors, List<String> todayMonitor) {
    private void updateAreaStats(Map<String, AreaStats> areaStatsMap, String key, TMonitorVO result, Map<String, TMonitor> newMonitors, List<String> yesterdayMonitor) {
        //返回对象的引用,如果不存在会放入新的key,value
        AreaStats stats = areaStatsMap.computeIfAbsent(key, k -> new AreaStats());
        stats.totalSites++;
@@ -118,7 +118,7 @@
        if (newMonitors.containsKey(result.getSerialNumber())) {
            stats.newSites++;
        }
        if (todayMonitor.contains(result.getSerialNumber())) {
        if (yesterdayMonitor.contains(result.getSerialNumber())) {
            stats.todayFiles++;
        }
    }
ycl-server/src/main/java/com/ycl/calculate/PlatformOnlineCalculation.java
@@ -8,6 +8,7 @@
import com.ycl.system.mapper.SysDeptMapper;
import constant.ApiConstants;
import constant.CheckConstants;
import enumeration.general.AreaDeptEnum;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -37,24 +38,27 @@
    @Override
    public void calculate(List<PlatformOnlineVO> list) {
        Map<String,Double> map = new HashMap<>();
        if (!CollectionUtils.isEmpty(list)) {
            //总离线时长
            int time = list.stream().map(PlatformOnlineVO::getTodayOutlineSed).reduce(0, Integer::sum);
            //离线时长转换位分钟然后取模
            int num = (time / 60) % 30;
            double score = Math.max(1 - num * 0.1, 0);
            for (PlatformOnlineVO platformOnlineVO : list) {
                String[] areas = platformOnlineVO.getArea().split(",");
                for (String area : areas) {
                    Integer deptId = AreaDeptEnum.fromCode(area).getDeptId();
                    //离线时长
                    Integer time = platformOnlineVO.getTodayOutlineSed();
                    //离线时长转换位分钟
                    int num = (time / 60) / 30;
                    double score = Math.max(1 - num * 0.1, 0);
                    map.put(deptId+"",score);
                    map.put(ApiConstants.Province + deptId,score);
                }
            }
            //是否已经存在当日数据
            List<CheckIndexVideo> checkIndexVideos = videoMapper.selectToday(DateUtils.getDate());
            //所有区域部门
            List<Long> deptIds = deptMapper.selectByParentId(207L);
            List<String> keys = new ArrayList<>();
            //准备区分省厅、区域的deptId list
            for (Long deptId : deptIds) {
                keys.add(deptId + "");
                keys.add(ApiConstants.Province + deptId);
            }
            List<CheckIndexVideo> videos = new ArrayList<>();
            keys.forEach(key -> {
            map.forEach((key,score) -> {
                //如果不存在就新增如果存在则复用
                CheckIndexVideo checkIndex = getCheckIndex(key, checkIndexVideos, CheckIndexVideo.class);
                if (checkIndex != null) {
ycl-server/src/main/java/com/ycl/calculate/VideoOnlineCalculation.java
@@ -29,7 +29,7 @@
import java.util.stream.Collectors;
/**
 * 计算视频设备点位在线率、重点点位在线率、重点指挥图像在线率
 * 计算视频设备点位在线率、重点点位在线率、重点指挥图像在线率、部级点位在线率
 * 图像监测诊断结果
 * 获取分省厅、区域的map<k,v> k为deptId或者Province_deptId
 * 循环map计算数据上传及时性
@@ -53,6 +53,8 @@
        int importantOnlineSites = 0;
        int commandSites = 0;
        int commandOnlineSites =0;
        int deptSites = 0;
        int deptOnlineSites = 0;
    }
    @Override
@@ -71,6 +73,8 @@
        List<String> important = getImportant();
        //重点指挥图像集合
        List<String> commandImage = getCommandImage();
        //获取部级点位集合
        List<String> deptTag = getDeptTag();
        Map<String, AreaStats> areaStatsMap = new HashMap<>();
        for (VideoOnlineResult result : list) {
@@ -78,12 +82,12 @@
            if (monitor == null) continue;
            String deptId = monitor.getDeptId().toString();
            updateAreaStats(areaStatsMap, deptId, result, important,commandImage);
            updateAreaStats(areaStatsMap, deptId, result, important,commandImage,deptTag);
            // 处理省厅数据
            if (!CollectionUtils.isEmpty(provinceIds) && provinceIds.contains(monitor.getSerialNumber())) {
                String provinceKey = ApiConstants.Province  + deptId;
                updateAreaStats(areaStatsMap, provinceKey, result, important,commandImage);
                updateAreaStats(areaStatsMap, provinceKey, result, important,commandImage,deptTag);
            }
        }
@@ -105,7 +109,7 @@
    /**
     * 累计总点位数、在线点位数、重点点位数、重点点位在线数、指挥图像数、指挥图像在线数
     */
    private void updateAreaStats(Map<String, AreaStats> areaStatsMap, String key, VideoOnlineResult result, List<String> important, List<String>  commandImage) {
    private void updateAreaStats(Map<String, AreaStats> areaStatsMap, String key, VideoOnlineResult result, List<String> important, List<String>  commandImage,List<String> deptTag) {
        //返回对象的引用,如果不存在会放入新的key,value
        AreaStats stats = areaStatsMap.computeIfAbsent(key, k -> new AreaStats());
        stats.totalSites++;
@@ -117,6 +121,9 @@
        if(commandImage.contains(result.getDeviceId())){
            stats.commandSites++;
        }
        if(deptTag.contains(result.getDeviceId())){
            stats.deptSites++;
        }
        if (ApiConstants.UY_OnlineSite_Online.equals(result.getStatus())){
            stats.onlineSites++;
            if(important.contains(result.getDeviceId())){
@@ -124,6 +131,9 @@
            }
            if(commandImage.contains(result.getDeviceId())){
                stats.commandOnlineSites++;
            }
            if(deptTag.contains(result.getDeviceId())){
                stats.deptOnlineSites++;
            }
        }
    }
@@ -172,6 +182,16 @@
        }else {
            log.info("指挥图像点位数为0");
        }
        //调用点位在线率计算方法 计算部级点位在线率
        if(stats.deptSites!=0) {
            Map<String, Object> deptParam = new HashMap<>();
            deptParam.put("totalSites", stats.deptSites);
            deptParam.put("onlineSites", stats.deptOnlineSites);
            BigDecimal deptOnline = siteOnline(deptParam);
            checkIndexVideo.setMinistrySiteOnline(deptOnline);
        }else {
            log.info("部级点位数为0");
        }
        return checkIndexVideo;
    }
}
ycl-server/src/main/java/com/ycl/calculate/VideoOsdCalculation.java
@@ -42,8 +42,6 @@
    //区域视频在线率的内部类
    private static class AreaStats {
        int totalSites = 0;
        int osdAccuracySites = 0;
        int timeAccuracySites = 0;
        int importantTotalSites = 0;
        int importantOsdAccuracySites = 0;
@@ -102,14 +100,7 @@
        //返回对象的引用,如果不存在会放入新的key,value
        AreaStats stats = areaStatsMap.computeIfAbsent(key, k -> new AreaStats());
        stats.totalSites++;
        //校验osd
        if (checkOsd(result)) {
            stats.osdAccuracySites++;
        }
        //校验时间偏差
        if (checkTime(result)) {
            stats.timeAccuracySites++;
        }
        //重点点位
        if (important.contains(result.getDeviceNo())) {
            stats.importantTotalSites++;
@@ -142,12 +133,7 @@
        if (checkIndexVideo == null) {
            return null;
        }
        //调用osd标注计算方法
        Map<String, Object> param = new HashMap<>();
        param.put("totalSites", stats.totalSites);
        param.put("osdAccuracySites", stats.osdAccuracySites);
        BigDecimal osdAccuracy = osdAccuracy(param);
        checkIndexVideo.setAnnotationAccuracy(osdAccuracy);
        //调用osd标注计算方法 计算重点osd标注
        Map<String, Object> importantParam = new HashMap<>();
        importantParam.put("totalSites", stats.importantTotalSites);
@@ -155,12 +141,6 @@
        BigDecimal imOsdAccuracy = osdAccuracy(importantParam);
        checkIndexVideo.setKeyAnnotationAccuracy(imOsdAccuracy);
        //调用osd时间准确率
        Map<String, Object> timeParam = new HashMap<>();
        timeParam.put("totalSites", stats.totalSites);
        timeParam.put("timeAccuracySites", stats.timeAccuracySites);
        BigDecimal osdTimeAccuracy = osdTimeAccuracy(timeParam);
        checkIndexVideo.setTimingAccuracy(osdTimeAccuracy);
        //调用osd时间准确率,计算重点
        Map<String, Object> importantTimeParam = new HashMap<>();
        importantTimeParam.put("totalSites", stats.importantTotalSites);
ycl-server/src/main/java/com/ycl/calculate/VideoUsabilityCalculation.java
@@ -49,6 +49,8 @@
        int usabilitySites = 0;
        int importantSites = 0;
        int importantUsabilitySites = 0;
        int deptSite =0;
        int depteUsabilitySites = 0;
    }
    @Override
@@ -65,19 +67,19 @@
        List<String> provinceIds = getProvince();
        //重点点位集合
        List<String> important = getImportant();
        List<String> deptTag = getDeptTag();
        Map<String, AreaStats> areaStatsMap = new HashMap<>();
        for (RecordMetaDSumResult result : list) {
            TMonitorVO monitor = monitorMap.get(result.getDeviceId());
            if (monitor == null) continue;
            String deptId = monitor.getDeptId().toString();
            updateAreaStats(areaStatsMap, deptId, result, important);
            updateAreaStats(areaStatsMap, deptId, result, important,deptTag);
            // 处理省厅数据
            if (!CollectionUtils.isEmpty(provinceIds) && provinceIds.contains(monitor.getSerialNumber())) {
                String provinceKey = ApiConstants.Province + deptId;
                updateAreaStats(areaStatsMap, provinceKey, result, important);
                updateAreaStats(areaStatsMap, provinceKey, result, important,deptTag);
            }
        }
@@ -99,18 +101,23 @@
    /**
     * 累计总点位数、在线点位数、重点点位数、重点点位在线数
     */
    private void updateAreaStats(Map<String, AreaStats> areaStatsMap, String key, RecordMetaDSumResult result, List<String> important) {
    private void updateAreaStats(Map<String, AreaStats> areaStatsMap, String key, RecordMetaDSumResult result, List<String> important,List<String> deptTag) {
        //返回对象的引用,如果不存在会放入新的key,value
        AreaStats stats = areaStatsMap.computeIfAbsent(key, k -> new AreaStats());
        stats.totalSites++;
        boolean flag = important.contains(result.getDeviceId());
        if(flag){
        if(important.contains(result.getDeviceId())){
            stats.importantSites++;
        }
        if(deptTag.contains(result.getDeviceId())){
            stats.deptSite++;
        }
        if (ApiConstants.UY_RecordStatus_Integrity.equals(result.getRecordStatus())){
            stats.usabilitySites++;
            if(flag){
            if(important.contains(result.getDeviceId())){
                stats.importantUsabilitySites++;
            }
            if(deptTag.contains(result.getDeviceId())){
                stats.depteUsabilitySites++;
            }
        }
    }
@@ -135,6 +142,12 @@
        importantParam.put("usabilitySites", stats.importantUsabilitySites);
        BigDecimal importantVideoUsability = videoUsability(importantParam);
        checkIndexVideo.setKeyVideoAvailable(importantVideoUsability);
        //调用录像可用率计算方法 计算部级录像可用率
        Map<String, Object> deptParam = new HashMap<>();
        deptParam.put("totalSites", stats.deptSite);
        deptParam.put("usabilitySites", stats.depteUsabilitySites);
        BigDecimal deptUseability = videoUsability(deptParam);
        checkIndexVideo.setMinistryVideoAvailable(deptUseability);
        return checkIndexVideo;
    }
}
ycl-server/src/main/java/com/ycl/feign/HkApiUtil.java
@@ -56,7 +56,6 @@
        // STEP5:组装请求参数
        String body = JSON.toJSONString(params);
        log.info("请求参数:{}",body);
        // STEP6:调用接口
        String result = null;// post请求application/json类型参数
        List<T> dataList = new ArrayList<>();
ycl-server/src/main/java/com/ycl/platform/controller/DataCenterController.java
@@ -54,17 +54,6 @@
    }
    /**
     * 视频:点位在线率
     *
     * @param query
     * @return
     */
    @GetMapping("/videoPointOnlineRate")
    public Result videoPointOnlineRate(DataCenterQuery query) {
        return dataCenterService.videoPointOnlineRate(query);
    }
    /**
     * 视频:一机一档注册率
     *
     * @param query
@@ -98,14 +87,36 @@
    }
    /**
     * 视频:录像可用率
     * 视频:点位在线率
     *
     * @param query
     * @return
     */
    @GetMapping("/videoAvailabilityRate")
    public Result videoAvailabilityRate(DataCenterQuery query) {
    @GetMapping("/videoPointOnlineRate")
    public Result videoPointOnlineRate(DataCenterQuery query) {
        return dataCenterService.videoPointOnlineRate(query);
    }
    /**
     * 视频:部级点位在线率
     *
     * @param query
     * @return
     */
    @GetMapping("/videoMinistrySiteOnline")
    public Result videoMinistrySiteOnline(DataCenterQuery query) {
        return dataCenterService.videoAvailabilityRate(query);
    }
    /**
     * 视频:部级巡检录像可用率
     *
     * @param query
     * @return
     */
    @GetMapping("/videoMinistryVideoAvailable")
    public Result videoMinistryVideoAvailable(DataCenterQuery query) {
        return dataCenterService.videoLabelingAccuracy(query);
    }
    /**
@@ -117,17 +128,6 @@
    @GetMapping("/videoImportantPointAvailabilityRate")
    public Result videoImportantPointAvailabilityRate(DataCenterQuery query) {
        return dataCenterService.videoImportantPointAvailabilityRate(query);
    }
    /**
     * 视频:标注正确率
     *
     * @param query
     * @return
     */
    @GetMapping("/videoLabelingAccuracy")
    public Result videoLabelingAccuracy(DataCenterQuery query) {
        return dataCenterService.videoLabelingAccuracy(query);
    }
    /**
ycl-server/src/main/java/com/ycl/platform/service/impl/CheckTemplateServiceImpl.java
@@ -249,7 +249,7 @@
        job.setConcurrent("1");
        job.setStatus(checkTemplateDTO.getStatus());
        job.setJobGroup("CHECK");
        job.setCronExpression("0 0 12 * * ?");
        job.setCronExpression("0 0 6 * * ?");
        job.setJobName(checkTemplateDTO.getTemplateName());
        int i = jobService.insertJob(job);
        return job;
ycl-server/src/main/java/com/ycl/task/ContractTask.java
@@ -445,8 +445,8 @@
                                for (CalculateRuleVO calculateRuleVO : ruleList) {
                                    Double max = calculateRuleVO.getMax();
                                    Double min = calculateRuleVO.getMin();
                                    //判断范围在哪个区间 //TODO:判断单位
                                    if (checkRange(min, max, BigDecimal.valueOf(result.getMissDuration()))) {
                                    //判断范围在哪个区间 单位是小时转换为分钟
                                    if (checkRange(min, max, BigDecimal.valueOf(result.getMissDuration()*60))) {
                                        if (calculateRuleVO.getNum() == null) {
                                            calculateRuleVO.setNum(1);
                                        } else {
ycl-server/src/main/java/com/ycl/task/HKTask.java
@@ -123,13 +123,14 @@
        faceParam.setDataType(ApiConstants.HK_DataType_FACE);
        List<SnapshotDataMonitorResult> faceList = HkApiUtil.sendAPI(host,appKey,appSecret,"/api/dqd/service/rs/v1/data/snapCountDetail/query", faceParam, SnapshotDataMonitorResult.class);
        if (!CollectionUtils.isEmpty(faceList)) {
            log.info("结果数据大小:{}",faceList.size());
            //如果今天存在之前的数据先删除
            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));
            faceList.forEach(item -> item.setDataType(ApiConstants.HK_DataType_FACE));
            mongoTemplate.insertAll(faceList);
        }
        log.info("结束抓拍数据量检测结果数据同步");
ycl-server/src/main/java/com/ycl/task/ImageResourceSecurityTask.java
File was deleted
ycl-server/src/main/java/com/ycl/task/OsdTask.java
@@ -1,14 +1,9 @@
package com.ycl.task;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.mongodb.client.result.DeleteResult;
import com.ycl.api.DH.module.LoginModule;
import com.ycl.api.DH.utils.DHApi;
import com.ycl.api.HK.HKApi;
import com.ycl.api.YS.YSApi;
import com.ycl.api.YS.YSInit;
import com.ycl.platform.domain.entity.TMonitor;
import com.ycl.platform.domain.result.OSDResult;
import com.ycl.platform.domain.result.UY.MonitorQualifyResult;
@@ -70,9 +65,7 @@
     */
    public void getOSD() {
        log.info("开始获取OSD");
//            YSApi.getOsd("51.95.66.42",YSUserName,YSPassword);
//        DHApi.getOsd("51.95.67.189",DHUserName,DHPassword);
//        YSApi.getOsd("51.95.66.42",YSUserName,YSPassword);
        //批量修改海康品牌集合
        List<String> hkList = new ArrayList<>();
        //批量修改大华品牌集合
ycl-server/src/main/java/com/ycl/task/RyTask.java
File was deleted
ycl-server/src/main/java/com/ycl/task/TestRequestJob.java
File was deleted
ycl-server/src/main/java/com/ycl/task/UYTask.java
@@ -222,4 +222,6 @@
        log.info("结束执行录像可用数据同步");
    }
}
ycl-server/src/main/java/com/ycl/task/VideoTask.java
@@ -3,22 +3,34 @@
import com.ycl.calculate.CalculationStrategy;
import com.ycl.factory.IndexCalculationFactory;
import com.ycl.platform.domain.entity.CheckIndexVideo;
import com.ycl.platform.domain.entity.ImageResourceSecurity;
import com.ycl.platform.domain.entity.ImageResourceSecurityDetail;
import com.ycl.platform.domain.result.UY.*;
import com.ycl.platform.domain.vo.PlatformOnlineVO;
import com.ycl.platform.domain.vo.TMonitorVO;
import com.ycl.platform.mapper.CheckIndexVideoMapper;
import com.ycl.platform.mapper.ImageResourceSecurityDetailMapper;
import com.ycl.platform.mapper.PlatformOnlineMapper;
import com.ycl.platform.mapper.TMonitorMapper;
import com.ycl.platform.service.IImageResourceSecurityService;
import com.ycl.utils.DateUtils;
import com.ycl.utils.DictUtils;
import constant.CalculationStrategyConstants;
import lombok.RequiredArgsConstructor;
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.transaction.annotation.Transactional;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
 * 视频计算考核指标任务
@@ -26,6 +38,7 @@
 */
@Slf4j
@Component("videoTask")
@RequiredArgsConstructor
public class VideoTask {
    @Autowired
    private MongoTemplate mongoTemplate;
@@ -33,6 +46,11 @@
    private PlatformOnlineMapper platformOnlineMapper;
    @Autowired
    private TMonitorMapper monitorMapper;
    private final IImageResourceSecurityService imageResourceSecurityService;
    private final CheckIndexVideoMapper checkIndexVideoMapper;
    private final ImageResourceSecurityDetailMapper imageResourceSecurityDetailMapper;
    private static final BigDecimal NUM = new BigDecimal("0.15");
    public void siteOnlineTask() {
        Date yesterday = DateUtils.addDays(new Date(), -1);
@@ -67,7 +85,6 @@
    public void oneMonitorQualifyTask(){
        //计算一机一档合格率
        Date yesterday = DateUtils.addDays(new Date(), -1);
        Query query = new Query();
        query.addCriteria(Criteria
                .where("mongoCreateTime").gte(DateUtils.getDayStart(yesterday)).lt(DateUtils.getDayEnd(yesterday)));
@@ -92,4 +109,46 @@
        calculator.calculate(results);
    }
    /**
     * 视频图像资源安全,需要排在平台在线率后面。
     */
    @Transactional
    public void videoSecurity() {
        ArrayList<ImageResourceSecurity> imageResourceSecurities = new ArrayList<>();
        List<CheckIndexVideo> list = checkIndexVideoMapper.selectAndDeptName();
        List<ImageResourceSecurityDetail> detail = imageResourceSecurityDetailMapper.getList();
        // 每个部门循环一次计算数据
        for (CheckIndexVideo checkIndexVideo : list) {
            ImageResourceSecurity imageResourceSecurity = new ImageResourceSecurity();
            imageResourceSecurity.setDeptId(checkIndexVideo.getDeptId());
            // 直接取指标
            imageResourceSecurity.setPlatformOnline(checkIndexVideo.getPlatformOnline());
            imageResourceSecurity.setPropertyAccuracy(checkIndexVideo.getMonitorQualification());
            // 获取当前部门的detail进行计算
            List<ImageResourceSecurityDetail> detailList = detail.stream().filter(imageResourceSecurityDetail -> Objects.equals(imageResourceSecurityDetail.getDeptId(), checkIndexVideo.getDeptId())).toList();
            int score = 100;
            int count = 0;
            // 循环detail计算
            for (ImageResourceSecurityDetail imageResourceSecurityDetail : detailList) {
                // 扣除分数
                score -= imageResourceSecurityDetail.getAlarmCategory().getScore();
                // 统计数量
                if (Integer.parseInt(imageResourceSecurityDetail.getAlarmLevel().getValue()) > 1) {
                    count++;
                }
            }
            imageResourceSecurity.setWeakPassword(BigDecimal.valueOf(score));
            // 获取字典值-总数
            int onlineAssetsTotal = Integer.parseInt(DictUtils.getDictValue("online_assets_total", checkIndexVideo.getDeptName()));
            imageResourceSecurity.setRiskProperty(BigDecimal.valueOf(count / onlineAssetsTotal));
            imageResourceSecurity.setCreateTime(DateUtils.getNowDate());
            imageResourceSecurities.add(imageResourceSecurity);
            // 更新指标数据
            checkIndexVideo.setImageResourceSecurity(imageResourceSecurity.getPlatformOnline().add(imageResourceSecurity.getPropertyAccuracy().add(imageResourceSecurity.getWeakPassword().add(imageResourceSecurity.getRiskProperty()))).multiply(NUM));
            checkIndexVideoMapper.updateById(checkIndexVideo);
        }
        imageResourceSecurityService.saveBatch(imageResourceSecurities);
    }
}
ycl-server/src/main/resources/application-dev.yml
@@ -37,9 +37,9 @@
spring:
  # 数据源配置
  datasource:
    url: jdbc:mysql://127.0.0.1/zgyw?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&allowMultiQueries=true&allowPublicKeyRetrieval=true
    url: jdbc:mysql://101.35.247.188/zgyw?useUnicode=true&characterEncoding=utf8&autoReconnect=true&useSSL=false&serverTimezone=GMT%2B8&rewriteBatchedStatements=true&allowMultiQueries=true&allowPublicKeyRetrieval=true
    username: root
    password: 123456
    password: ycl@202466
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
@@ -77,11 +77,11 @@
spring.data:
  redis:
    # 地址
#    host: 42.193.1.25
    host: 127.0.0.1
    host: 42.193.1.25
#    host: 127.0.0.1
    # 端口,默认为6379
    port: 6379
#    password: ycl2018
    password: ycl2018
#    password:
    # 数据库索引
    database: 0
ycl-server/src/main/resources/mapper/zgyw/CheckIndexVideoMapper.xml
@@ -15,8 +15,8 @@
        <result property="archivesRate"    column="archives_rate"    />
        <result property="siteOnline"    column="site_online"    />
        <result property="videoAvailable"    column="video_available"    />
        <result property="annotationAccuracy"    column="annotation_accuracy"    />
        <result property="timingAccuracy"    column="timing_accuracy"    />
        <result property="ministrySiteOnline"    column="ministry_site_online"    />
        <result property="ministryVideoAvailable"    column="ministry_video_available"    />
        <result property="keySiteOnline"    column="key_site_online"    />
        <result property="keyVideoAvailable"    column="key_video_available"    />
        <result property="keyAnnotationAccuracy"    column="key_annotation_accuracy"    />
@@ -26,7 +26,7 @@
    </resultMap>
    <sql id="selectCheckIndexVideoVo">
        select id, dept_id, create_time, examine_tag, platform_online, monitor_qualification, monitor_registration, archives_rate, site_online, video_available, annotation_accuracy, timing_accuracy, key_site_online, key_video_available, key_annotation_accuracy, key_timing_accuracy, key_command_image_online,image_resource_security from t_check_index_video
        select id, dept_id, create_time, examine_tag, platform_online, monitor_qualification, monitor_registration, archives_rate, site_online, video_available, ministry_site_online, ministry_video_available, key_site_online, key_video_available, key_annotation_accuracy, key_timing_accuracy, key_command_image_online,image_resource_security from t_check_index_video
    </sql>
    <select id="selectCheckIndexVideoList" parameterType="CheckIndexVideo" resultMap="CheckIndexVideoResult">
@@ -44,8 +44,8 @@
            <if test="archivesRate != null "> and archives_rate = #{archivesRate}</if>
            <if test="siteOnline != null "> and site_online = #{siteOnline}</if>
            <if test="videoAvailable != null "> and video_available = #{videoAvailable}</if>
            <if test="annotationAccuracy != null "> and annotation_accuracy = #{annotationAccuracy}</if>
            <if test="timingAccuracy != null "> and timing_accuracy = #{timingAccuracy}</if>
            <if test="ministrySiteOnline != null "> and ministry_site_online = #{ministrySiteOnline}</if>
            <if test="ministryVideoAvailable != null "> and ministry_video_available = #{ministryVideoAvailable}</if>
            <if test="keySiteOnline != null "> and key_site_online = #{keySiteOnline}</if>
            <if test="keyVideoAvailable != null "> and key_video_available = #{keyVideoAvailable}</if>
            <if test="keyAnnotationAccuracy != null "> and key_annotation_accuracy = #{keyAnnotationAccuracy}</if>
@@ -77,8 +77,8 @@
            <if test="archivesRate != null">archives_rate,</if>
            <if test="siteOnline != null">site_online,</if>
            <if test="videoAvailable != null">video_available,</if>
            <if test="annotationAccuracy != null">annotation_accuracy,</if>
            <if test="timingAccuracy != null">timing_accuracy,</if>
            <if test="ministrySiteOnline != null">ministry_site_online,</if>
            <if test="ministryVideoAvailable != null">ministry_video_available,</if>
            <if test="keySiteOnline != null">key_site_online,</if>
            <if test="keyVideoAvailable != null">key_video_available,</if>
            <if test="keyAnnotationAccuracy != null">key_annotation_accuracy,</if>
@@ -96,8 +96,8 @@
            <if test="archivesRate != null">#{archivesRate},</if>
            <if test="siteOnline != null">#{siteOnline},</if>
            <if test="videoAvailable != null">#{videoAvailable},</if>
            <if test="annotationAccuracy != null">#{annotationAccuracy},</if>
            <if test="timingAccuracy != null">#{timingAccuracy},</if>
            <if test="ministrySiteOnline != null">#{ministrySiteOnline},</if>
            <if test="ministryVideoAvailable != null">#{ministryVideoAvailable},</if>
            <if test="keySiteOnline != null">#{keySiteOnline},</if>
            <if test="keyVideoAvailable != null">#{keyVideoAvailable},</if>
            <if test="keyAnnotationAccuracy != null">#{keyAnnotationAccuracy},</if>
@@ -119,8 +119,8 @@
            <if test="archivesRate != null">archives_rate = #{archivesRate},</if>
            <if test="siteOnline != null">site_online = #{siteOnline},</if>
            <if test="videoAvailable != null">video_available = #{videoAvailable},</if>
            <if test="annotationAccuracy != null">annotation_accuracy = #{annotationAccuracy},</if>
            <if test="timingAccuracy != null">timing_accuracy = #{timingAccuracy},</if>
            <if test="ministrySiteOnline != null">ministry_site_online = #{ministrySiteOnline},</if>
            <if test="ministryVideoAvailable != null">ministry_video_available = #{ministryVideoAvailable},</if>
            <if test="keySiteOnline != null">key_site_online = #{keySiteOnline},</if>
            <if test="keyVideoAvailable != null">key_video_available = #{keyVideoAvailable},</if>
            <if test="keyAnnotationAccuracy != null">key_annotation_accuracy = #{keyAnnotationAccuracy},</if>
@@ -154,8 +154,8 @@
        IFNULL(ROUND(AVG(archives_rate * 100), 0), 0) AS archives_rate,
        IFNULL(ROUND(AVG(site_online * 100), 0), 0) AS site_online,
        IFNULL(ROUND(AVG(video_available * 100), 0), 0) AS video_available,
        IFNULL(ROUND(AVG(annotation_accuracy * 100), 0), 0) AS annotation_accuracy,
        IFNULL(ROUND(AVG(timing_accuracy * 100), 0), 0) AS timing_accuracy,
        IFNULL(ROUND(AVG(ministry_site_online * 100), 0), 0) AS ministry_site_online,
        IFNULL(ROUND(AVG(ministry_video_available * 100), 0), 0) AS ministry_video_available,
        IFNULL(ROUND(AVG(key_site_online * 100), 0), 0) AS key_site_online,
        IFNULL(ROUND(AVG(key_video_available * 100), 0), 0) AS key_video_available,
        IFNULL(ROUND(AVG(key_annotation_accuracy * 100), 0), 0) AS key_annotation_accuracy,
ycl-server/src/main/resources/mapper/zgyw/CheckScoreMapper.xml
@@ -3,7 +3,7 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.ycl.platform.mapper.CheckScoreMapper">
    <resultMap type="com.ycl.platform.domain.entity.CheckScore" id="CheckScoreResult">
        <result property="id"    column="id"    />
        <result property="score"    column="score"    />
@@ -35,13 +35,14 @@
            <if test="deptId != null "> and tcs.dept_id = #{deptId}</if>
            ${params.dataScope}
        </where>
        order by createTime desc;
    </select>
    <select id="selectCheckScoreById" parameterType="Long" resultMap="CheckScoreResult">
        <include refid="selectCheckScoreVo"/>
        where id = #{id}
    </select>
    <insert id="insertCheckScore" useGeneratedKeys="true" keyProperty="id">
        insert into t_check_score
        <trim prefix="(" suffix=")" suffixOverrides=",">
@@ -89,7 +90,7 @@
    </delete>
    <delete id="deleteCheckScoreByIds" parameterType="String">
        delete from t_check_score where id in
        delete from t_check_score where id in
        <foreach item="id" collection="array" open="(" separator="," close=")">
            #{id}
        </foreach>
@@ -168,4 +169,4 @@
        ORDER BY score DESC, tcs.dept_id
    </select>
</mapper>
</mapper>
ycl-server/src/main/resources/mapper/zgyw/PlatformOnlineMapper.xml
@@ -10,6 +10,7 @@
        <result column="today_outline_sed" property="todayOutlineSed" />
        <result column="update_time" property="updateTime" />
        <result column="create_time" property="createTime" />
        <result column="area" property="area" />
    </resultMap>
    <select id="getById" resultMap="BaseResultMap">
@@ -52,7 +53,7 @@
    <select id="yesterdayData" resultMap="BaseResultMap">
        select * from t_platform_online
        where create_date between #{startDate} and #{endDate}
        select po.*,p.area from t_platform_online po inner join t_platform p on po.platform_id = p.id
        where po.create_date between #{startDate} and #{endDate}
    </select>
</mapper>