Browse Source

物联总览代码提交

jingyuanchao 1 year ago
parent
commit
500ab4f4bf

+ 3 - 1
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/mapper/IotBoardMapper.java

@@ -1,6 +1,7 @@
 package com.xunmei.iot.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.xunmei.common.core.domain.video.MediatorVideoIntegrityCheckLog;
 import com.xunmei.iot.vo.board.IotBoardOverviewItemVo;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
@@ -31,7 +32,8 @@ public interface IotBoardMapper extends BaseMapper {
 
     List<Map<String, String>> countSensorNums(String orgPath);
 
-    List<Map<String, String>> selectVideoCheckSelf(@Param("orgPath") String orgPath, @Param("date") Date date);
 
     List<Map<String, String>> selectVideoDaysStorage(String orgPath, Date date);
+
+    List<MediatorVideoIntegrityCheckLog> selectVideoCheckSelf(@Param("orgPath") String orgPath, @Param("startTime") String startTime, @Param("endTime") String endTime);
 }

+ 8 - 7
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/mapper/IotDvrChannelMapper.java

@@ -1,22 +1,20 @@
 package com.xunmei.iot.mapper;
 
+import cn.hutool.core.date.DateTime;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.xunmei.common.core.domain.iot.domain.IotDvrChannel;
-import com.xunmei.common.core.domain.iot.domain.IotDvrDisk;
-import com.xunmei.common.core.domain.video.MediatorVideoIntegrityCheck;
-import com.xunmei.iot.dto.dvrDisk.DvrDiskAlarmHistoryPageDto;
-import com.xunmei.iot.dto.dvrDisk.DvrDiskPageDto;
+import com.xunmei.common.core.domain.video.MediatorVideoDiagnosisLog;
 import com.xunmei.iot.dto.videoDiagnosis.VideoDiagnosisAppPageDto;
 import com.xunmei.iot.dto.videoDiagnosis.VideoDiagnosisWebPageDto;
-import com.xunmei.iot.vo.dvrDisk.DvrDiskAlarmHistoryPageVo;
-import com.xunmei.iot.vo.dvrDisk.DvrDiskPageVo;
-import com.xunmei.iot.vo.dvrDisk.DvrDiskStatisticVo;
 import com.xunmei.iot.vo.videoDiagnosis.VideoDiagnosisAppPageVo;
 import com.xunmei.iot.vo.videoDiagnosis.VideoDiagnosisWebPageVo;
 import com.xunmei.iot.vo.videoDiagnosis.VideoDiagnosisWebVo;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.Date;
+import java.util.List;
+
 /**
  * <p>
  * Mapper 接口
@@ -50,4 +48,7 @@ public interface IotDvrChannelMapper extends BaseMapper<IotDvrChannel> {
 
     Integer selectVideoQualityBadge(Long orgId);
 
+    Integer selectChannelCount(@Param("orgPath") String orgPath);
+
+    List<MediatorVideoDiagnosisLog> selectData(@Param("orgPath") String orgPath, @Param("startTime") DateTime startTime, @Param("endTime") Date endTime);
 }

+ 2 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/mapper/IotDvrDiskMapper.java

@@ -33,4 +33,6 @@ public interface IotDvrDiskMapper extends BaseMapper<IotDvrDisk> {
     Page<DvrDiskAppPageVo>  selectAppHostPage(@Param("mePage") Page<DvrDiskAppPageVo> mePage,
                                                   @Param("pageDto") DvrDiskAppPageDto pageDto,
                                                   @Param("orgPath") String orgPath);
+
+    int selectDiskCount(@Param("orgPath") String orgPath);
 }

+ 11 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/mapper/IotDvrHardDiskDetectionLogMapper.java

@@ -0,0 +1,11 @@
+package com.xunmei.iot.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.xunmei.common.core.domain.iot.domain.IotDvrHardDiskDetectionLog;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface IotDvrHardDiskDetectionLogMapper extends BaseMapper<IotDvrHardDiskDetectionLog> {
+    List<IotDvrHardDiskDetectionLog> selectData(@Param("orgPath") String orgPath, @Param("startTime") String startTime, @Param("endTime") String endTime);
+}

+ 4 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/VideoDiagnosisService.java

@@ -5,6 +5,7 @@ import com.xunmei.common.core.domain.iot.domain.IotDvrChannel;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.iot.dto.videoDiagnosis.VideoDiagnosisAppPageDto;
 import com.xunmei.iot.dto.videoDiagnosis.VideoDiagnosisWebPageDto;
+import com.xunmei.iot.vo.board.IotBoardTotalData;
 import com.xunmei.iot.vo.videoDiagnosis.*;
 import org.apache.http.annotation.Obsolete;
 
@@ -36,4 +37,7 @@ public interface VideoDiagnosisService extends IService<IotDvrChannel> {
 
     Integer appVideoLoseBadge(Long orgId);
     Integer appVideoQualityBadge(Long orgId);
+
+    IotBoardTotalData.VideoDiagnostic selectVideoDiagnostic(String orgPath, Date now, Integer channelDataOffsetDay);
+
 }

+ 114 - 6
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/IotBoardServiceImpl.java

@@ -1,23 +1,33 @@
 package com.xunmei.iot.service.impl;
 
 import cn.hutool.core.collection.CollectionUtil;
+import cn.hutool.core.date.DateField;
+import cn.hutool.core.date.DateTime;
+import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson2.JSON;
 import com.google.common.collect.Lists;
 import com.xunmei.common.core.constant.CacheConstants;
 import com.xunmei.common.core.constant.SecurityConstants;
+import com.xunmei.common.core.domain.iot.domain.IotDvrHardDiskDetectionLog;
 import com.xunmei.common.core.domain.iot.domain.IotSensor;
 import com.xunmei.common.core.domain.mediator.domain.IotAlarmData;
+import com.xunmei.common.core.domain.video.MediatorVideoIntegrityCheckLog;
 import com.xunmei.common.core.enums.CategoryDataEnum;
 import com.xunmei.common.core.enums.iot.SensorType;
 import com.xunmei.common.core.exception.ServiceException;
 import com.xunmei.common.core.thread.ThreadPoolConfig;
+import com.xunmei.common.core.utils.DateUtils;
 import com.xunmei.common.redis.utils.RedisUtils;
 import com.xunmei.common.security.utils.SecurityUtils;
 import com.xunmei.iot.mapper.IotBoardMapper;
-import com.xunmei.iot.mapper.VideoIntegrityCheckMapper;
+import com.xunmei.iot.mapper.IotDvrChannelMapper;
+import com.xunmei.iot.mapper.IotDvrDiskMapper;
+import com.xunmei.iot.mapper.IotDvrHardDiskDetectionLogMapper;
 import com.xunmei.iot.service.IIotCommonSensorService;
 import com.xunmei.iot.service.IotAlarmDataService;
 import com.xunmei.iot.service.IotBoardService;
+import com.xunmei.iot.service.VideoDiagnosisService;
 import com.xunmei.iot.vo.alarmData.AppAlarmDataPageVo;
 import com.xunmei.iot.vo.board.IotBoardOverviewItemVo;
 import com.xunmei.iot.vo.board.IotBoardOverviewVo;
@@ -48,6 +58,10 @@ public class IotBoardServiceImpl implements IotBoardService {
 
     @Autowired
     IotBoardMapper iotBoardMapper;
+    @Autowired
+    IotDvrChannelMapper dvrChannelMapper;
+    @Autowired
+    VideoDiagnosisService videoDiagnosisService;
 
     @Autowired
     @Qualifier(ThreadPoolConfig.SOC_EXECUTOR)
@@ -59,7 +73,9 @@ public class IotBoardServiceImpl implements IotBoardService {
     IotAlarmDataService alarmDataService;
 
     @Resource
-    VideoIntegrityCheckMapper videoIntegrityCheckMapper;
+    IotDvrHardDiskDetectionLogMapper dvrHardDiskDetectionLogMapper;
+    @Resource
+    IotDvrDiskMapper iotDvrDiskMapper;
 
     private final Long TIMEOUT = 3L;
 
@@ -281,6 +297,8 @@ public class IotBoardServiceImpl implements IotBoardService {
         final String MAP_VALUE = "nums";
         final String DEVICE_TYPE = "deviceType";
         final String CATEGORY_ID = "categoryId";
+        Date now = new Date();
+        final Integer channelDataOffsetDay = 30;
         SysUser sysUser = SecurityUtils.getLoginUser().getSysUser();
 
         List<SysOrgVO> cacheList = RedisUtils.getCacheList(CacheConstants.ORG_CACHE_LIST_KEY);
@@ -350,10 +368,8 @@ public class IotBoardServiceImpl implements IotBoardService {
         }
         totalData.setSensorDetails(sensorDataList);
         //录像文件自检
-        List<Map<String, String>> videoCheckSelfMap = iotBoardMapper.selectVideoCheckSelf(orgPath, new Date());
-        IotBoardTotalData.VideoInspection videoInspection = new IotBoardTotalData.VideoInspection();
-        videoCheckSelfMap.stream().filter(m -> ObjectUtil.equal("video", m.get(DEVICE_TYPE))).findAny().ifPresent(m -> videoInspection.setLostRate(m.get(MAP_VALUE) + "%"));
-        videoCheckSelfMap.stream().filter(m -> ObjectUtil.equal("disk", m.get(DEVICE_TYPE))).findAny().ifPresent(m -> videoInspection.setHardDiskExceptionRate(m.get(MAP_VALUE) + "%"));
+        this.selectVideoCheckSelf(orgVO, now, totalData, channelDataOffsetDay);
+
 
         //录像天数存储
         List<Map<String, String>> videoCheckMap = iotBoardMapper.selectVideoDaysStorage(orgPath, new Date());
@@ -363,8 +379,100 @@ public class IotBoardServiceImpl implements IotBoardService {
         }
         IotBoardTotalData.RecordingStorage storage = new IotBoardTotalData.RecordingStorage();
         storage.setHashmap(hashMap);
+
+        IotBoardTotalData.VideoDiagnostic videoDiagnostic = videoDiagnosisService.selectVideoDiagnostic(orgPath, now, channelDataOffsetDay);
+        totalData.setVideoDiagnostic(videoDiagnostic);
+
         return totalData;
     }
 
+    private void selectVideoCheckSelf(SysOrgVO org, Date now, IotBoardTotalData totalData, Integer channelDataOffsetDay) {
+        // 通道数*丢失天数 / 通道数*计算时长(天)=录像文件丢失率
+        IotBoardTotalData.VideoInspection videoInspection = new IotBoardTotalData.VideoInspection();
+        totalData.setVideoInspection(videoInspection);
+        //获取查询时间范围的最小值
+        DateTime offsetDay = DateUtil.offsetDay(now, -channelDataOffsetDay);
+        //查询历史上报的录像完整性数据
+        List<MediatorVideoIntegrityCheckLog> videoIntegrityCheckLogs = iotBoardMapper.selectVideoCheckSelf(org.getPath(), DateUtil.format(offsetDay, "yyyy-MM-dd"), DateUtil.format(now, "yyyy-MM-dd"));
+        if (ObjectUtil.isEmpty(videoIntegrityCheckLogs)) {
+            videoInspection.setLostRate("-");
+        }
+        //获取通道数量
+        Integer channelNums = dvrChannelMapper.selectChannelCount(org.getPath());
+        //通道数量*需要计算的丢失天数=计算分母
+        int total = channelNums * channelDataOffsetDay;
+        //根据主机code和通道code分组
+        Map<String, List<MediatorVideoIntegrityCheckLog>> listMap = videoIntegrityCheckLogs.stream().collect(Collectors.groupingBy(m -> m.getEquipmentCode() + "_" + m.getChannelCode()));
+        //获取时间范围的每一天时间
+        List<DateTime> timeList = DateUtil.rangeToList(offsetDay, now, DateField.DAY_OF_YEAR);
+
+        //计算丢失天数
+        int lostTotal = 0;
+        for (Map.Entry<String, List<MediatorVideoIntegrityCheckLog>> listEntry : listMap.entrySet()) {
+            List<MediatorVideoIntegrityCheckLog> list = listEntry.getValue();
+            //每个通道丢失的时间,未上报也计为丢失
+            long count = list.stream().filter(r -> !timeList.contains(new DateTime(DateUtils.toDate(r.getRecordDate()))) || r.getLoseDuration() != 0).count();
+            lostTotal += (int) count;
+        }
+        //计算录像文件丢失率
+        if (total == 0) {
+            videoInspection.setLostRate("-");
+        } else {
+            videoInspection.setLostRate(String.format("%.2f", (lostTotal * 100.0 / total)) + "%");
+        }
+
+        //硬盘异常率
+        //获取硬盘数量
+        int diskNum = iotDvrDiskMapper.selectDiskCount(org.getPath());
+        //获取历史上报的硬盘数据
+        List<IotDvrHardDiskDetectionLog> logList = dvrHardDiskDetectionLogMapper.selectData(org.getPath(), DateUtil.format(offsetDay, "yyyy-MM-dd"), DateUtil.format(now, "yyyy-MM-dd"));
+
+        if (ObjectUtil.isEmpty(logList)) {
+            videoInspection.setHardDiskExceptionRate("-");
+        }
+
+        int diskTotal = diskNum * channelDataOffsetDay;
+        //硬盘正常数量
+        int diskExitTotal = 0;
+        //把硬盘检测数据根据主机code分组
+        Map<String, List<IotDvrHardDiskDetectionLog>> diskListmap = logList.stream().collect(Collectors.groupingBy(IotDvrHardDiskDetectionLog::getEquipmentCode));
+        for (Map.Entry<String, List<IotDvrHardDiskDetectionLog>> listEntry : diskListmap.entrySet()) {
+
+            //拿到每个主机下上报的硬盘检测数据
+            List<IotDvrHardDiskDetectionLog> detectionLogs = listEntry.getValue();
+
+            //循环每一天
+            for (DateTime time : timeList) {
+
+                //判断当天是否上报
+                Optional<IotDvrHardDiskDetectionLog> first = detectionLogs.stream().filter(r -> DateUtils.isSameDay(time, DateUtils.toDate(r.getCreateTime()))).findFirst();
+                if (!first.isPresent()) {
+                    continue;
+                }
+                IotDvrHardDiskDetectionLog detectionLog = first.get();
+                String detailInfo = detectionLog.getDetailInfo();
+                if (ObjectUtil.isEmpty(detailInfo)) {
+                    continue;
+                }
+                //获取上报数据详情
+                List<Map> maps = JSON.parseArray(detailInfo, Map.class);
+
+                //统计上报数据中正常的硬盘数量
+                long count = maps.stream().filter(d -> ObjectUtil.equal(d.get("state").toString(), "0")).count();
+                //硬盘正常数量累加
+                diskExitTotal += (int) count;
+
+            }
+        }
+
+        if (diskTotal == 0) {
+            videoInspection.setHardDiskExceptionRate("-");
+        } else {
+            //用计算分母减去正常硬盘数量=异常硬盘数; 用异常硬盘数/计算分母得到异常率
+            videoInspection.setHardDiskExceptionRate(String.format("%.2f", ((diskTotal - diskExitTotal) * 100.0 / diskTotal)) + "%");
+        }
+
+    }
+
 
 }

+ 36 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/VideoDiagnosisServiceImpl.java

@@ -1,13 +1,16 @@
 package com.xunmei.iot.service.impl;
 
 import cn.hutool.core.date.DateField;
+import cn.hutool.core.date.DateTime;
 import cn.hutool.core.date.DateUtil;
 import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson2.JSON;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.domain.iot.domain.IotDvrChannel;
+import com.xunmei.common.core.domain.video.MediatorVideoDiagnosisLog;
 import com.xunmei.common.core.domain.video.MediatorVideoIntegrityCheckLog;
 import com.xunmei.common.core.enums.CategoryDataEnum;
 import com.xunmei.common.core.enums.iot.VideoIntegrityStatus;
@@ -18,6 +21,7 @@ import com.xunmei.iot.mapper.IotDvrChannelMapper;
 import com.xunmei.iot.mapper.VideoIntegrityCheckLogMapper;
 import com.xunmei.iot.mapper.VideoIntegrityCheckMapper;
 import com.xunmei.iot.service.VideoDiagnosisService;
+import com.xunmei.iot.vo.board.IotBoardTotalData;
 import com.xunmei.iot.vo.videoDiagnosis.*;
 import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.domain.SysOrg;
@@ -237,4 +241,36 @@ public class VideoDiagnosisServiceImpl extends ServiceImpl<IotDvrChannelMapper,
         MediatorVideoIntegrityCheckLog entity = videoIntegrityCheckLogMapper.selectOne(wrapper);
         return VideoDiagnosisIntegrityVo.of(entity);
     }
+
+    @Override
+    public IotBoardTotalData.VideoDiagnostic selectVideoDiagnostic(String orgPath, Date now, Integer channelDataOffsetDay) {
+        DateTime startTime = DateUtil.offsetDay(now, -channelDataOffsetDay);
+        List<MediatorVideoDiagnosisLog> logList = baseMapper.selectData(orgPath, startTime, now);
+
+
+        IotBoardTotalData.VideoDiagnostic videoDiagnostic = new IotBoardTotalData.VideoDiagnostic();
+        if (ObjectUtil.isEmpty(logList)) {
+            return videoDiagnostic;
+        }
+        List<Map> res = new ArrayList<>();
+        for (MediatorVideoDiagnosisLog diagnosisLog : logList) {
+            String detailInfo = diagnosisLog.getDetailInfo();
+            if (ObjectUtil.isEmpty(detailInfo)) {
+                continue;
+            }
+            List<Map> maps = JSON.parseArray(detailInfo, Map.class);
+            res.addAll(maps);
+        }
+        long singleLostAlarmNums = res.stream()
+                .filter(map -> ObjectUtil.equal(String.valueOf(map.get("type")), "0"))
+                .filter(map -> ObjectUtil.equal(String.valueOf(map.get("state")), "1"))
+                .count();
+        long occludeAlarmNums = res.stream()
+                .filter(map -> ObjectUtil.equal(String.valueOf(map.get("type")), "1"))
+                .filter(map -> ObjectUtil.equal(String.valueOf(map.get("state")), "1"))
+                .count();
+        videoDiagnostic.setSingleLostAlarmNums((int) singleLostAlarmNums);
+        videoDiagnostic.setOccludeAlarmNums((int) occludeAlarmNums);
+        return videoDiagnostic;
+    }
 }

+ 14 - 13
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/board/IotBoardTotalData.java

@@ -94,6 +94,20 @@ public class IotBoardTotalData {
         private int occludeAlarmNums;
     }
 
+
+    @Data
+    @NoArgsConstructor
+    @AllArgsConstructor
+    @SuperBuilder
+    public static class SensorData {
+        @ApiModelProperty(value = "传感器类型")
+        private Integer type;
+        @ApiModelProperty(value = "设备数量")
+        private int deviceCount;
+        @ApiModelProperty(value = "历史告警总量")
+        private int historicalAlarmTotal;
+    }
+
     @Data
     @NoArgsConstructor
     @AllArgsConstructor
@@ -119,17 +133,4 @@ public class IotBoardTotalData {
         @ApiModelProperty(value = "历史告警总数")
         private int historicalAlarmCounts;
     }
-
-    @Data
-    @NoArgsConstructor
-    @AllArgsConstructor
-    @SuperBuilder
-    public static class SensorData {
-        @ApiModelProperty(value = "传感器类型")
-        private Integer type;
-        @ApiModelProperty(value = "设备数量")
-        private int deviceCount;
-        @ApiModelProperty(value = "历史告警总量")
-        private int historicalAlarmTotal;
-    }
 }

+ 9 - 0
soc-modules/soc-modules-iot/src/main/resources/mapper/DvrDiskMapper.xml

@@ -198,4 +198,13 @@
             and (dd.check_status=1 or dd.check_status is null)
         </if>
     </select>
+
+    <select id="selectDiskCount" resultType="int">
+        select count(1)
+        from iot_dvr_disk d
+                 inner join sys_org o on o.id = d.org_id
+        where o.deleted = 0
+          and d.deleted = 0
+          and o.path like concat(#{orgPath}, '%')
+    </select>
 </mapper>

+ 10 - 18
soc-modules/soc-modules-iot/src/main/resources/mapper/IotBoardMapper.xml

@@ -135,24 +135,6 @@
         group by s.device_type
     </select>
 
-    <select id="selectVideoCheckSelf" resultType="java.util.Map">
-        select 'video' as deviceType,
-               ROUND(CAST(SUM(IF(c.lose_span LIKE '%et%', 1, 0)) AS FLOAT) / COUNT(1), 2) *
-               100     as nums
-        from mediator_video_integrity_check c
-                 inner join sys_org o on o.id = c.org_id
-        where o.deleted = 0
-          and org_path like concat(#{orgPath}, '%')
-        union all
-        select 'disk'                                                               as deviceType,
-               ROUND(CAST(SUM(IF(d.state = 1, 1, 0)) AS FLOAT) / COUNT(1), 2) * 100 as nums
-        from iot_dvr_disk d
-                 inner join sys_org o on o.id = d.org_id
-        where o.deleted = 0
-          and d.deleted = 0
-          and org_path like concat(#{orgPath}, '%')
-    </select>
-
     <select id="selectVideoDaysStorage" resultType="java.util.Map">
         select c.plan_days as planDays, sum(c.plan_days != c.real_days) as nums
         from mediator_video_days_check c
@@ -161,4 +143,14 @@
           and org_path like concat(#{orgPath}, '%')
         group by c.plan_days
     </select>
+
+    <select id="selectVideoCheckSelf" resultType="com.xunmei.common.core.domain.video.MediatorVideoIntegrityCheckLog">
+        select *
+        from mediator_video_integrity_check_log c
+                 inner join sys_org o on o.id = c.org_id
+        where o.deleted = 0
+          and record_date >= #{startTime}
+          and org_path  like concat(#{orgPath}, '%')
+        group by c.equipment_code, c.channel_code, record_date
+    </select>
 </mapper>

+ 17 - 0
soc-modules/soc-modules-iot/src/main/resources/mapper/IotDvrChannelMapper.xml

@@ -384,5 +384,22 @@
           AND dc.deleted = 0
     </select>
 
+    <select id="selectChannelCount" resultType="java.lang.Integer">
+        select count(1)
+        from iot_dvr_channel d
+                 inner join sys_org o on o.id = d.org_id
+        where o.deleted = 0
+          and d.deleted = 0
+          and o.path like concat(#{orgPath}, '%')
+    </select>
 
+    <select id="selectData" resultType="com.xunmei.common.core.domain.video.MediatorVideoDiagnosisLog">
+        select *
+        from mediator_video_diagnosis_log l
+                 inner join sys_org o on o.id = l.org_id
+        where o.deleted = 0
+          and l.create_time >= #{startTime}
+          and l.create_time &lt;= #{endTime}
+          and o.path like concat(#{orgPath}, '%')
+    </select>
 </mapper>

+ 13 - 0
soc-modules/soc-modules-iot/src/main/resources/mapper/IotDvrHardDiskDetectionLogMapper.xml

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.xunmei.iot.mapper.IotDvrHardDiskDetectionLogMapper">
+
+    <select id="selectData" resultType="com.xunmei.common.core.domain.iot.domain.IotDvrHardDiskDetectionLog">
+        select *
+        from iot_dvr_hard_disk_detection_log l
+        inner join sys_org o on o.id = l.org_id
+        where o.deleted = 0
+        and l.create_time>=#{startTime} and l.create_time <![CDATA[<=]]>#{endTime}
+        and o.path like concat(#{orgPath}, '%')
+    </select>
+</mapper>

+ 1 - 1
soc-modules/soc-modules-system/src/main/java/com/xunmei/system/controller/SysConfigController.java

@@ -121,7 +121,7 @@ public class SysConfigController extends BaseController {
     }
 
     @InnerAuth
-    @PostMapping("/config/findConfigByCodeList")
+    @PostMapping("/findConfigByCodeList")
     List<SysConfig> findConfigByCodeList(@RequestBody List<String> codeList){
         return configService.findConfigByCodeList(codeList);
     }