fuliqi
2024-07-29 d3e6b7687905d820427d65565d099cff3808b13e
点位在线接口TODO
14个文件已修改
1个文件已添加
6个文件已删除
1309 ■■■■ 已修改文件
ycl-common/src/main/java/constant/ApiConstants.java 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/TMonitorVideo.java 350 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-pojo/src/main/java/com/ycl/platform/domain/result/HK/SnapshotDataMonitorResult.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/controller/TMonitorVideoController.java 98 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorVideoMapper.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/ICheckIndexCarService.java 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/ICheckIndexFaceService.java 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/ITMonitorService.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/ITMonitorVideoService.java 62 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/CheckIndexCarServiceImpl.java 126 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/CheckIndexFaceServiceImpl.java 46 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/CheckScoreServiceImpl.java 38 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorVideoServiceImpl.java 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/platform/service/impl/YwThresholdServiceImpl.java 10 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/system/mapper/SysDeptMapper.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/task/HKTask.java 147 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/task/UYTask.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/java/com/ycl/web/HKClient.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/mapper/system/SysDeptMapper.xml 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-server/src/main/resources/mapper/zgyw/TMonitorVideoMapper.xml 161 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ycl-common/src/main/java/constant/ApiConstants.java
New file
@@ -0,0 +1,27 @@
package constant;
/**
 * 海康优云请求参数常量
 */
public class ApiConstants {
    //成功状态码
    public final static String successCode = "0";
    public final static Integer pageNo = 1;
    public final static Integer pageSize = 5000;
    //请求参数dataType-卡口过车
    public final static Integer HK_DATATYPE_CAR = 1;
    //请求参数dataType-人脸数据
    public final static Integer HK_DATATYPE_FACE = 2;
    //抓拍数据量监测结果 正常
    public final static Integer HK_SnapCount_ResultType_Normal = 1;
    //抓拍数据量监测结果 无数据
    public final static Integer HK_SnapCount_ResultType_Null = 2;
    //抓拍数据量监测结果 数据突降
    public final static Integer HK_SnapCount_ResultType_Descent = 3;
    //请求参数dataType 数据量少
    public final static Integer HK_DATATYPE_ResultType_Low = 4;
}
ycl-pojo/src/main/java/com/ycl/platform/domain/entity/TMonitorVideo.java
File was deleted
ycl-pojo/src/main/java/com/ycl/platform/domain/result/HK/SnapshotDataMonitorResult.java
@@ -1,6 +1,7 @@
package com.ycl.platform.domain.result.HK;
import lombok.Data;
import org.springframework.data.mongodb.core.mapping.Document;
/**
 * 抓拍数据量监测结果
@@ -8,7 +9,8 @@
 * @author gonghl
 */
@Data
public class SnapshotDataMonitorResult {
@Document(collection = "snapshot_data_monitor")
public class SnapshotDataMonitorResult extends BaseResult{
    /**
     * dataType为1:卡口内码   dataType为2或11:采集设备内码
ycl-server/src/main/java/com/ycl/platform/controller/TMonitorVideoController.java
File was deleted
ycl-server/src/main/java/com/ycl/platform/mapper/TMonitorVideoMapper.java
File was deleted
ycl-server/src/main/java/com/ycl/platform/service/ICheckIndexCarService.java
@@ -1,20 +1,21 @@
package com.ycl.platform.service;
import com.ycl.platform.domain.entity.CheckIndexCar;
import com.ycl.platform.domain.result.HK.SnapshotDataMonitorResult;
import java.util.List;
/**
 * 车辆指标概率数据Service接口
 *
 *
 * @author ruoyi
 * @date 2024-04-29
 */
public interface ICheckIndexCarService
public interface ICheckIndexCarService
{
    /**
     * 查询车辆指标概率数据
     *
     *
     * @param id 车辆指标概率数据主键
     * @return 车辆指标概率数据
     */
@@ -22,7 +23,7 @@
    /**
     * 查询车辆指标概率数据列表
     *
     *
     * @param checkIndexCar 车辆指标概率数据
     * @return 车辆指标概率数据集合
     */
@@ -30,7 +31,7 @@
    /**
     * 新增车辆指标概率数据
     *
     *
     * @param checkIndexCar 车辆指标概率数据
     * @return 结果
     */
@@ -38,7 +39,7 @@
    /**
     * 修改车辆指标概率数据
     *
     *
     * @param checkIndexCar 车辆指标概率数据
     * @return 结果
     */
@@ -46,7 +47,7 @@
    /**
     * 批量删除车辆指标概率数据
     *
     *
     * @param ids 需要删除的车辆指标概率数据主键集合
     * @return 结果
     */
@@ -54,9 +55,15 @@
    /**
     * 删除车辆指标概率数据信息
     *
     *
     * @param id 车辆指标概率数据主键
     * @return 结果
     */
    public int deleteCheckIndexCarById(Long id);
    /**
     * 计算车辆点位在线率
     * @param list
     */
    void siteOnline(List<SnapshotDataMonitorResult> list);
}
ycl-server/src/main/java/com/ycl/platform/service/ICheckIndexFaceService.java
@@ -1,20 +1,21 @@
package com.ycl.platform.service;
import com.ycl.platform.domain.entity.CheckIndexFace;
import com.ycl.platform.domain.result.HK.SnapshotDataMonitorResult;
import java.util.List;
/**
 * 人脸指标概率数据Service接口
 *
 *
 * @author ruoyi
 * @date 2024-04-29
 */
public interface ICheckIndexFaceService
public interface ICheckIndexFaceService
{
    /**
     * 查询人脸指标概率数据
     *
     *
     * @param id 人脸指标概率数据主键
     * @return 人脸指标概率数据
     */
@@ -22,7 +23,7 @@
    /**
     * 查询人脸指标概率数据列表
     *
     *
     * @param checkIndexFace 人脸指标概率数据
     * @return 人脸指标概率数据集合
     */
@@ -30,7 +31,7 @@
    /**
     * 新增人脸指标概率数据
     *
     *
     * @param checkIndexFace 人脸指标概率数据
     * @return 结果
     */
@@ -38,7 +39,7 @@
    /**
     * 修改人脸指标概率数据
     *
     *
     * @param checkIndexFace 人脸指标概率数据
     * @return 结果
     */
@@ -46,7 +47,7 @@
    /**
     * 批量删除人脸指标概率数据
     *
     *
     * @param ids 需要删除的人脸指标概率数据主键集合
     * @return 结果
     */
@@ -54,9 +55,16 @@
    /**
     * 删除人脸指标概率数据信息
     *
     *
     * @param id 人脸指标概率数据主键
     * @return 结果
     */
    public int deleteCheckIndexFaceById(Long id);
    /**
     * 计算人脸点位在线率
     * @param list
     */
    void siteOnline(List<SnapshotDataMonitorResult> list);
}
ycl-server/src/main/java/com/ycl/platform/service/ITMonitorService.java
@@ -1,5 +1,6 @@
package com.ycl.platform.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ycl.platform.domain.entity.TMonitor;
import com.ycl.platform.domain.vo.TMonitorVO;
@@ -12,7 +13,7 @@
 * @author ruoyi
 * @date 2024-03-04
 */
public interface ITMonitorService
public interface ITMonitorService extends IService<TMonitor>
{
    /**
     * 查询设备资产
ycl-server/src/main/java/com/ycl/platform/service/ITMonitorVideoService.java
File was deleted
ycl-server/src/main/java/com/ycl/platform/service/impl/CheckIndexCarServiceImpl.java
@@ -1,96 +1,180 @@
package com.ycl.platform.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.ycl.platform.domain.entity.CheckIndexCar;
import com.ycl.platform.domain.entity.TMonitor;
import com.ycl.platform.domain.result.HK.SnapshotDataMonitorResult;
import com.ycl.platform.mapper.CheckIndexCarMapper;
import com.ycl.platform.service.ICheckIndexCarService;
import com.ycl.platform.service.ITMonitorService;
import com.ycl.system.entity.SysDept;
import com.ycl.system.mapper.SysDeptMapper;
import constant.ApiConstants;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import utils.DateUtils;
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;
/**
 * 车辆指标概率数据Service业务层处理
 *
 *
 * @author ruoyi
 * @date 2024-04-29
 */
@Service
public class CheckIndexCarServiceImpl implements ICheckIndexCarService
{
public class CheckIndexCarServiceImpl implements ICheckIndexCarService {
    @Autowired
    private CheckIndexCarMapper checkIndexCarMapper;
    @Autowired
    private ITMonitorService monitorService;
    @Autowired
    private SysDeptMapper deptMapper;
    /**
     * 查询车辆指标概率数据
     *
     *
     * @param id 车辆指标概率数据主键
     * @return 车辆指标概率数据
     */
    @Override
    public CheckIndexCar selectCheckIndexCarById(Long id)
    {
    public CheckIndexCar selectCheckIndexCarById(Long id) {
        return checkIndexCarMapper.selectCheckIndexCarById(id);
    }
    /**
     * 查询车辆指标概率数据列表
     *
     *
     * @param checkIndexCar 车辆指标概率数据
     * @return 车辆指标概率数据
     */
    @Override
    public List<CheckIndexCar> selectCheckIndexCarList(CheckIndexCar checkIndexCar)
    {
    public List<CheckIndexCar> selectCheckIndexCarList(CheckIndexCar checkIndexCar) {
        return checkIndexCarMapper.selectCheckIndexCarList(checkIndexCar);
    }
    /**
     * 新增车辆指标概率数据
     *
     *
     * @param checkIndexCar 车辆指标概率数据
     * @return 结果
     */
    @Override
    public int insertCheckIndexCar(CheckIndexCar checkIndexCar)
    {
    public int insertCheckIndexCar(CheckIndexCar checkIndexCar) {
        checkIndexCar.setCreateTime(DateUtils.getNowDate());
        return checkIndexCarMapper.insertCheckIndexCar(checkIndexCar);
    }
    /**
     * 修改车辆指标概率数据
     *
     *
     * @param checkIndexCar 车辆指标概率数据
     * @return 结果
     */
    @Override
    public int updateCheckIndexCar(CheckIndexCar checkIndexCar)
    {
    public int updateCheckIndexCar(CheckIndexCar checkIndexCar) {
        return checkIndexCarMapper.updateCheckIndexCar(checkIndexCar);
    }
    /**
     * 批量删除车辆指标概率数据
     *
     *
     * @param ids 需要删除的车辆指标概率数据主键
     * @return 结果
     */
    @Override
    public int deleteCheckIndexCarByIds(Long[] ids)
    {
    public int deleteCheckIndexCarByIds(Long[] ids) {
        return checkIndexCarMapper.deleteCheckIndexCarByIds(ids);
    }
    /**
     * 删除车辆指标概率数据信息
     *
     *
     * @param id 车辆指标概率数据主键
     * @return 结果
     */
    @Override
    public int deleteCheckIndexCarById(Long id)
    {
    public int deleteCheckIndexCarById(Long id) {
        return checkIndexCarMapper.deleteCheckIndexCarById(id);
    }
    /**
     * 计算车辆点位在线率、视图库对接稳定性
     *
     * @param list
     */
    @Override
    public void siteOnline(List<SnapshotDataMonitorResult> list) {
        //设备id
        List<String> deviceIds = list.stream().map(SnapshotDataMonitorResult::getExternalIndexCode).collect(Collectors.toList());
        if (!CollectionUtils.isEmpty(deviceIds)) {
            // 用于存储每个区域统计信息的辅助类
            class AreaStats {
                //点位总数
                int totalSites = 0;
                //离线点位数
                int offlineSites = 0;
                //总抓拍量
                int totalDataSum = 0;
            }
            List<TMonitor> monitors = monitorService.list(new QueryWrapper<TMonitor>().in("serial_number", deviceIds));
            Map<String, AreaStats> areaStatsMap = new HashMap<>();
            //获得所有区县deptId
            List<Long> deptIds = deptMapper.selectByParentId(207L);
            deptIds.forEach(deptId -> areaStatsMap.put(deptId + "", new AreaStats()));
            //转换为map
            //TODO:分省厅市局
            List<String> provinceIds = new ArrayList<>();
            Map<String, TMonitor> monitorMap = monitors.stream().collect(Collectors.toMap(TMonitor::getSerialNumber, Function.identity()));
            for (SnapshotDataMonitorResult result : list) {
                TMonitor monitor = monitorMap.get(result.getExternalIndexCode());
                AreaStats areaStats = areaStatsMap.get(monitor.getDeptId() + "");
                String serialNumber = monitor.getSerialNumber();
                //无数据
                if (ApiConstants.HK_SnapCount_ResultType_Null == result.getResultType()) {
                    //区域离线点位数
                    areaStats.offlineSites++;
                } else {
                    //区域总抓拍量
                    areaStats.totalSites += result.getDataCount();
                }
                //区域点位总数
                areaStats.totalDataSum++;
                //是否是省厅数据
                if (!CollectionUtils.isEmpty(provinceIds)) {
                    if (provinceIds.contains(serialNumber)) {
                        //省厅数据
                        AreaStats provinceStats = areaStatsMap.get("Province_" + monitor.getDeptId());
                        //无数据
                        if (ApiConstants.HK_SnapCount_ResultType_Null == result.getResultType()) {
                            //区域离线点位数
                            provinceStats.offlineSites++;
                        } else {
                            //区域总抓拍量
                            provinceStats.totalSites += result.getDataCount();
                        }
                        //区域点位总数
                        provinceStats.totalDataSum++;
                        areaStatsMap.put("Province_" + monitor.getDeptId(), areaStats);
                    }
                }
                areaStatsMap.put(monitor.getDeptId() + "", areaStats);
            }
            areaStatsMap.forEach((k, v) -> {
                if (k.startsWith("Province_")) {
                }
            });
            CheckIndexCar checkIndexCar = new CheckIndexCar();
        }
    }
}
ycl-server/src/main/java/com/ycl/platform/service/impl/CheckIndexFaceServiceImpl.java
@@ -1,6 +1,7 @@
package com.ycl.platform.service.impl;
import com.ycl.platform.domain.entity.CheckIndexFace;
import com.ycl.platform.domain.result.HK.SnapshotDataMonitorResult;
import com.ycl.platform.mapper.CheckIndexFaceMapper;
import com.ycl.platform.service.ICheckIndexFaceService;
import org.springframework.beans.factory.annotation.Autowired;
@@ -11,86 +12,89 @@
/**
 * 人脸指标概率数据Service业务层处理
 *
 *
 * @author ruoyi
 * @date 2024-04-29
 */
@Service
public class CheckIndexFaceServiceImpl implements ICheckIndexFaceService
{
public class CheckIndexFaceServiceImpl implements ICheckIndexFaceService {
    @Autowired
    private CheckIndexFaceMapper checkIndexFaceMapper;
    /**
     * 查询人脸指标概率数据
     *
     *
     * @param id 人脸指标概率数据主键
     * @return 人脸指标概率数据
     */
    @Override
    public CheckIndexFace selectCheckIndexFaceById(Long id)
    {
    public CheckIndexFace selectCheckIndexFaceById(Long id) {
        return checkIndexFaceMapper.selectCheckIndexFaceById(id);
    }
    /**
     * 查询人脸指标概率数据列表
     *
     *
     * @param checkIndexFace 人脸指标概率数据
     * @return 人脸指标概率数据
     */
    @Override
    public List<CheckIndexFace> selectCheckIndexFaceList(CheckIndexFace checkIndexFace)
    {
    public List<CheckIndexFace> selectCheckIndexFaceList(CheckIndexFace checkIndexFace) {
        return checkIndexFaceMapper.selectCheckIndexFaceList(checkIndexFace);
    }
    /**
     * 新增人脸指标概率数据
     *
     *
     * @param checkIndexFace 人脸指标概率数据
     * @return 结果
     */
    @Override
    public int insertCheckIndexFace(CheckIndexFace checkIndexFace)
    {
    public int insertCheckIndexFace(CheckIndexFace checkIndexFace) {
        checkIndexFace.setCreateTime(DateUtils.getNowDate());
        return checkIndexFaceMapper.insertCheckIndexFace(checkIndexFace);
    }
    /**
     * 修改人脸指标概率数据
     *
     *
     * @param checkIndexFace 人脸指标概率数据
     * @return 结果
     */
    @Override
    public int updateCheckIndexFace(CheckIndexFace checkIndexFace)
    {
    public int updateCheckIndexFace(CheckIndexFace checkIndexFace) {
        return checkIndexFaceMapper.updateCheckIndexFace(checkIndexFace);
    }
    /**
     * 批量删除人脸指标概率数据
     *
     *
     * @param ids 需要删除的人脸指标概率数据主键
     * @return 结果
     */
    @Override
    public int deleteCheckIndexFaceByIds(Long[] ids)
    {
    public int deleteCheckIndexFaceByIds(Long[] ids) {
        return checkIndexFaceMapper.deleteCheckIndexFaceByIds(ids);
    }
    /**
     * 删除人脸指标概率数据信息
     *
     *
     * @param id 人脸指标概率数据主键
     * @return 结果
     */
    @Override
    public int deleteCheckIndexFaceById(Long id)
    {
    public int deleteCheckIndexFaceById(Long id) {
        return checkIndexFaceMapper.deleteCheckIndexFaceById(id);
    }
    /**
     * 计算人脸点位在线率
     *
     * @param list
     */
    @Override
    public void siteOnline(List<SnapshotDataMonitorResult> list) {
    }
}
ycl-server/src/main/java/com/ycl/platform/service/impl/CheckScoreServiceImpl.java
@@ -45,7 +45,7 @@
/**
 * 考核积分明细Service业务层处理
 *
 *
 * @author ruoyi
 * @date 2024-04-22
 */
@@ -71,7 +71,7 @@
    private ISysDeptService deptService;
    /**
     * 查询考核积分指标
     *
     *
     * @param id 考核积分主键
     * @return 考核积分
     */
@@ -126,7 +126,7 @@
    /**
     * 查询考核积分卡片列表
     *
     *
     * @param checkScore 考核积分
     * @return 考核积分
     */
@@ -232,38 +232,6 @@
        mysheet.add(e3);
        ExcelUtilManySheet<List<ExcelExp>> util = new ExcelUtilManySheet<>(mysheet);
        util.exportExcelManySheet(response,mysheet);
        //导单sheet的方式
//        switch (CheckScoreType.fromValue(examineCategory)){
//            case CHECK_SCORE_TYPE_CAR:
//                //查车辆
//                List<CheckIndexCar> checkIndexCars = indexCarService.selectCheckIndexCarList(new CheckIndexCar());
//                export(response, depts, checkIndexCars,CheckIndexCar.class);
//                break;
//            case CHECK_SCORE_TYPE_FACE:
//                // 查人脸
//                List<CheckIndexFace> checkIndexFaces = indexFaceService.selectCheckIndexFaceList(new CheckIndexFace());
//                export(response, depts, checkIndexFaces,CheckIndexFace.class);
//                break;
//            case CHECK_SCORE_TYPE_VIDEO:
//                // 查视频
//                List<CheckIndexVideo> checkIndexVideos = indexVideoService.selectCheckIndexVideoList(new CheckIndexVideo());
//                export(response, depts, checkIndexVideos,CheckIndexVideo.class);
//                break;
//        }
    }
    private <T extends CheckIndex> void export(HttpServletResponse response, List<BaseSelect> depts, List<T> checkIndexes,Class<T> checkIndexClass) {
        //暂时没用,如果数据过大,在server层翻译,避免连表
        checkIndexes.forEach(checkIndex->{
            Optional<BaseSelect> first = depts.stream().filter(baseSelect -> checkIndex.getDeptId().equals(Long.valueOf(baseSelect.getId()+""))).findFirst();
            if(first.isPresent()){
                checkIndex.setDeptName(first.get().getValue());
            }
        });
        ExcelUtil<T> util = new ExcelUtil<T>(checkIndexClass);
        util.exportExcel(response, checkIndexes, "考核积分明细数据");
    }
ycl-server/src/main/java/com/ycl/platform/service/impl/TMonitorVideoServiceImpl.java
File was deleted
ycl-server/src/main/java/com/ycl/platform/service/impl/YwThresholdServiceImpl.java
@@ -101,7 +101,11 @@
        return ywThresholdMapper.deleteYwThresholdById(id);
    }
    /**
     * 判断视频阈值是否满足下发条件
     *
     * @param list
     */
    @Override
    public void videoCheck(List list) {
@@ -207,15 +211,15 @@
                    T thresholdAutoValue = parseThreshold(ywThreshold.getValue(), value.getClass());
                    //比较大小,加入到对应待处理集合
                    if (compareType.compare(v, thresholdAutoValue)) {
                        //自动下发工单
                        workOrderList.add(result);
                    } else if (compareType.compare(v, thresholdValue)) {
                        //进入工单代下发
                        distributeList.add(result);
                    }
                },
                () -> log.error("{} 为空: {}", thresholds.get(key).getName(), result)
        );
    }
    private <T extends Comparable<T>> T parseThreshold(String thresholdStr, Class<?> type) {
ycl-server/src/main/java/com/ycl/system/mapper/SysDeptMapper.java
@@ -134,4 +134,12 @@
     * @return
     */
    List<Long> selectParents(@Param("id") Long deptId);
    /**
     * 查询自己的父类部门ID
     *
     * @param deptId
     * @return
     */
    List<Long> selectByParentId(@Param("id") Long deptId);
}
ycl-server/src/main/java/com/ycl/task/HKTask.java
@@ -3,12 +3,19 @@
import com.alibaba.fastjson2.JSONObject;
import com.ycl.platform.domain.entity.YwThreshold;
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.ycl.platform.mapper.YwThresholdMapper;
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.web.HKClient;
import constant.ApiConstants;
import enumeration.BusinessType;
import enumeration.general.BusinessTypeEnum;
import lombok.extern.slf4j.Slf4j;
@@ -32,70 +39,144 @@
    private HKClient hkClient;
    @Autowired
    private IYwThresholdService ywThresholdService;
    private final static Integer pageNo = 1;
    private final static Integer pageSize = 5000;
    //成功状态码
    private final static String successCode = "0";
    @Autowired
    private ICheckIndexFaceService checkIndexFaceService;
    @Autowired
    private ICheckIndexCarService checkIndexCarService;
    @Autowired
    private ICheckIndexVideoService checkIndexVideoService;
    //车辆设备全检指标监测结果
    public void VehicleDeviceInspectionTask() {
        log.info("开始执行车辆设备全检指标监测结果数据同步");
        VehicleDeviceInspectionParam param = new VehicleDeviceInspectionParam();
        param.setPageNO(pageNo).setPageSize(pageSize).setDate(getToday());
        param.setPageNO(ApiConstants.pageNo).setPageSize(ApiConstants.pageSize).setDate(getToday());
        JSONObject jsonObject = hkClient.VehicleDeviceInspection(param);
        if (jsonObject != null && successCode.equals(jsonObject.getString("code"))) {
            JSONObject data = jsonObject.getJSONObject("data");
            if (data == null) {
                throw new RuntimeException("车辆设备全检指标监测结果数据为空");
            }
            List<VehicleDeviceInspectionResult> list = data.getList("list", VehicleDeviceInspectionResult.class);
            list.forEach(item ->item.setCreateTime(new Date()));
            if (CollectionUtils.isEmpty(list)) {
                throw new RuntimeException("车辆设备全检指标监测结果数据为空");
            }
        List<VehicleDeviceInspectionResult> list = getDataList(jsonObject, VehicleDeviceInspectionResult.class, "车辆设备全检指标监测结果数据为空");
        if (!CollectionUtils.isEmpty(list)) {
            //存放在mongo中
            mongoTemplate.insert(list);
            //同步的数据进行工单阈值处理
            ywThresholdService.carCheck(list);
        } else {
            log.error("同步车辆设备全检指标监测结果失败", jsonObject);
        }
        log.info("结束车辆设备全检指标监测结果数据同步");
    }
    //人脸设备全检指标监测结果
    public void FaceDeviceInspectionTask() {
        log.info("开始执行人脸设备全检指标监测结果数据同步");
        FaceDeviceInspectionParam param = new FaceDeviceInspectionParam();
        param.setPageNO(pageNo).setPageSize(pageSize).setDate(getToday());
        param.setPageNO(ApiConstants.pageNo).setPageSize(ApiConstants.pageSize).setDate(getToday());
        JSONObject jsonObject = hkClient.FaceDeviceInspection(param);
        if (jsonObject != null && successCode.equals(jsonObject.getString("code"))) {
            JSONObject data = jsonObject.getJSONObject("data");
            if (data == null) {
                throw new RuntimeException("人脸设备全检指标监测结果数据为空");
            }
            List<FaceDeviceInspectionResult> list = data.getList("list", FaceDeviceInspectionResult.class);
            list.forEach(item ->item.setCreateTime(new Date()));
            if (CollectionUtils.isEmpty(list)) {
                throw new RuntimeException("人脸设备全检指标监测结果数据为空");
            }
        List<FaceDeviceInspectionResult> list = getDataList(jsonObject, FaceDeviceInspectionResult.class, "人脸设备全检指标监测结果数据为空");
        if (!CollectionUtils.isEmpty(list)) {
            //存放在mongo中
            mongoTemplate.insert(list);
            //同步的数据进行工单阈值处理
            ywThresholdService.faceCheck(list);
        } else {
            log.error("同步人脸设备全检指标监测结果失败", jsonObject);
        }
        log.info("结束人脸设备全检指标监测结果数据同步");
    }
    //抓拍数据量监测结果
    public void SnapshotDataMonitorTask() {
        log.info("开始执行抓拍数据量检测结果数据同步");
        /** 车辆数据 */
        SnapshotDataMonitorParam carParam = new SnapshotDataMonitorParam();
        carParam.setPageNO(ApiConstants.pageNo).setPageSize(ApiConstants.pageSize).setDate(getToday()).setDataType(ApiConstants.HK_DATATYPE_CAR);
        JSONObject carJsonObject = hkClient.SnapshotDataMonitor(carParam);
        List<SnapshotDataMonitorResult> carList = getDataList(carJsonObject, SnapshotDataMonitorResult.class, "车辆抓拍数据量检测结果数据");
        if (!CollectionUtils.isEmpty(carList)) {
            //存放在mongo中
            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);
        JSONObject faceJsonObject = hkClient.SnapshotDataMonitor(carParam);
        List list = getDataList(faceJsonObject, SnapshotDataMonitorResult.class, "人脸抓拍数据量检测结果数据为空");
        if (!CollectionUtils.isEmpty(list)) {
            //存放在mongo中
            mongoTemplate.insert(list);
            //TODO:人脸点位在线率
            checkIndexFaceService.siteOnline(list);
        }
        log.info("结束抓拍数据量检测结果数据同步");
    }
    //一机一档
    public void task2() {
        //联网卡口设备目录一致率
    }
    //卡口属性监测结果
    public void task3() {
        //车辆卡口信息采集准确率
    }
    //数据完整性监测结果
    public void task4() {
        //车辆卡口设备抓拍数据完整性
    }
    //属性识别准确监测结果
    public void task5() {
        //车辆卡口设备抓拍数据完整性
    }
    //车辆设备全检指标监测结果
    public void task6() {
        //车辆卡口设备时钟准确性
    }
    //抓拍数据时延监测结果
    public void task7() {
        //车辆卡口设备抓拍数据上传及时性
    }
    //图片访问监测结果
    public void task8() {
        //车辆卡口信息采集准确率
        //车辆卡口设备url可用性
    }
    //获取当前日期
    private String getToday() {
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String today = sdf.format(date);
        return today;
    }
    //解析数据
    private <T> List<T> getDataList(JSONObject faceJsonObject, Class<T> resultClass, String message) {
        if (faceJsonObject != null && ApiConstants.successCode.equals(faceJsonObject.getString("code"))) {
            JSONObject data = faceJsonObject.getJSONObject("data");
            if (data == null) {
                log.error(message, faceJsonObject);
                return null;
            }
            List<T> list = data.getList("list", resultClass);
            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 {
            log.error(message);
        }
        return null;
    }
}
ycl-server/src/main/java/com/ycl/task/UYTask.java
@@ -49,6 +49,22 @@
        log.info("结束人脸设备全检指标监测结果数据同步");
    }
    //一机一档
    public void task1() {
        //一机一档合格率
        // 一机一档注册率
        // 档案考核比
    }
    //图像监测诊断结果
    public void task2() {
        //点位在线率
    }
    //录像可用
    public void task3() {
        //录像可用率
    }
    private String getToday() {
        Date date = new Date();
ycl-server/src/main/java/com/ycl/web/HKClient.java
@@ -143,7 +143,7 @@
     * @return 抓拍数据时延监测结果
     */
    @PostMapping("/dqd/service/rs/v1/data/snapAgingDetail/query")
    JSONObject SnapshotDataMonitor(SnapshotDelayMonitorParam param);
    JSONObject SnapshotDelayMonitor(SnapshotDelayMonitorParam param);
    /**
     * 图片访问监测结果
ycl-server/src/main/resources/mapper/system/SysDeptMapper.xml
@@ -79,6 +79,11 @@
        select * from sys_dept where find_in_set(#{deptId}, ancestors)
    </select>
    <select id="selectByParentId"  resultType="java.lang.Integer">
        select dept_id from sys_dept
        where del_flag = 0 and parent_id = #{id}
    </select>
    <select id="selectNormalChildrenDeptById" parameterType="Long" resultType="int">
        select count(*) from sys_dept where status = '0' and del_flag = 0 and find_in_set(#{deptId}, ancestors)
    </select>
ycl-server/src/main/resources/mapper/zgyw/TMonitorMapper.xml
@@ -254,4 +254,5 @@
        FROM t_monitor
        WHERE recovery = 1
    </select>
</mapper>
ycl-server/src/main/resources/mapper/zgyw/TMonitorVideoMapper.xml
File was deleted