xiangpei
2024-08-29 3e9a6da99aae968123ee7bca352fc08becd7f1f2
ycl-server/src/main/java/com/ycl/calculate/VideoUsabilityCalculation.java
@@ -5,12 +5,14 @@
import com.ycl.platform.domain.entity.TMonitor;
import com.ycl.platform.domain.param.UY.RecordMetaDSumParam;
import com.ycl.platform.domain.result.UY.QueryVqdResult;
import com.ycl.platform.domain.result.UY.RecordMetaDSumResult;
import com.ycl.platform.domain.vo.TMonitorVO;
import com.ycl.platform.mapper.CheckIndexVideoMapper;
import com.ycl.platform.mapper.TMonitorMapper;
import com.ycl.platform.service.ICheckIndexVideoService;
import com.ycl.platform.service.ITMonitorService;
import constant.ApiConstants;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
@@ -32,7 +34,8 @@
 * 更新或新增
 */
@Component
public class VideoUsabilityCalculation extends IndexCalculationServe implements CalculationStrategy<RecordMetaDSumParam> {
@Slf4j
public class VideoUsabilityCalculation extends IndexCalculationServe implements CalculationStrategy<RecordMetaDSumResult> {
    @Autowired
    private CheckIndexVideoMapper checkIndexVideoMapper;
    @Autowired
@@ -49,13 +52,14 @@
    }
    @Override
    public void calculate(List<RecordMetaDSumParam> list) {
    public void calculate(List<RecordMetaDSumResult> list) {
        if (CollectionUtils.isEmpty(list)) {
            log.info("数据为空");
            return;
        }
        //获得国标码为key的设备map
        Map<String, TMonitorVO> monitorMap = monitorMapper.selectListByIds(list.stream().map(RecordMetaDSumParam::getDeviceId).collect(Collectors.toList()))
        Map<String, TMonitorVO> monitorMap = monitorMapper.selectListByIds(list.stream().map(RecordMetaDSumResult::getDeviceId).collect(Collectors.toList()))
                .stream().collect(Collectors.toMap(TMonitorVO::getSerialNumber, Function.identity()));
        //获取省厅国标码集合
        List<String> provinceIds = getProvince();
@@ -63,7 +67,7 @@
        List<String> important = getImportant();
        Map<String, AreaStats> areaStatsMap = new HashMap<>();
        for (RecordMetaDSumParam result : list) {
        for (RecordMetaDSumResult result : list) {
            TMonitorVO monitor = monitorMap.get(result.getDeviceId());
            if (monitor == null) continue;
@@ -95,7 +99,7 @@
    /**
     * 累计总点位数、在线点位数、重点点位数、重点点位在线数
     */
    private void updateAreaStats(Map<String, AreaStats> areaStatsMap, String key, RecordMetaDSumParam result, List<String> important) {
    private void updateAreaStats(Map<String, AreaStats> areaStatsMap, String key, RecordMetaDSumResult result, List<String> important) {
        //返回对象的引用,如果不存在会放入新的key,value
        AreaStats stats = areaStatsMap.computeIfAbsent(key, k -> new AreaStats());
        stats.totalSites++;
@@ -127,8 +131,8 @@
        checkIndexVideo.setVideoAvailable(videoUsability);
        //调用录像可用率计算方法 计算重点点位录像可用率
        Map<String, Object> importantParam = new HashMap<>();
        param.put("totalSites", stats.importantSites);
        param.put("usabilitySites", stats.importantUsabilitySites);
        importantParam.put("totalSites", stats.importantSites);
        importantParam.put("usabilitySites", stats.importantUsabilitySites);
        BigDecimal importantVideoUsability = videoUsability(importantParam);
        checkIndexVideo.setKeyVideoAvailable(importantVideoUsability);
        return checkIndexVideo;