ソースを参照

北向代码提交

jingyuanchao 1 年間 前
コミット
ee997c0050

+ 4 - 1
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/enums/ElectricityMeterAttributes.java

@@ -71,11 +71,14 @@ public enum ElectricityMeterAttributes {
     METER_ATTRIBUTES_48(16023001L ,"不平衡报警","METER_ATTRIBUTES_48",null,"{0:\"正常\",1:\"告警\"}"),
     METER_ATTRIBUTES_49(16020001L ,"温度预警","METER_ATTRIBUTES_49",null,"{0:\"正常\",1:\"告警\"}"),
 
+    //以下几个name字段不可变,依靠此name与北向上报数据中的比对
     METER_ATTRIBUTES_50(8074214277450756099L,"环境温度","temperature","℃",null),
     METER_ATTRIBUTES_51(8074214277450756097L,"环境湿度","humidity","%RH",null),
     METER_ATTRIBUTES_52(8070947354577793026L,"烟雾告警","SmokeSensorState",null,"{0:\"正常\",1:\"异常\"}"),
     METER_ATTRIBUTES_53(8123843190642397184L,"水浸告警","status",null,"{0:\"正常\",1:\"异常\"}"),
-    METER_ATTRIBUTES_54(8123843190642397184L,"红外告警","infrared_state",null,"{\"0\":\"正常\",\"1\":\"有人\"}"),
+    METER_ATTRIBUTES_54(8123843190642397184L,"红外告警","infrared_state",null,"{\"0\":\"正常\",\"1\":\"告警\"}"),
+    METER_ATTRIBUTES_55(8123843190642397184L,"可燃气体告警","infrared_state",null,"{\"0\":\"正常\",\"1\":\"告警\"}"),
+    METER_ATTRIBUTES_56(8123843190642397184L,"门磁开关状态","infrared_state",null,"{\"0\":\"开门\",\"1\":\"关门\"}"),
     ;
 
     private Long num;

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

@@ -0,0 +1,11 @@
+package com.xunmei.iot.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.xunmei.common.core.domain.mediator.domain.MediatorCategory;
+
+/**
+ * @author jingyuanchao
+ * @date 2024/1/24 17:50
+ */
+public interface MediatorCategoryMapper extends BaseMapper<MediatorCategory> {
+}

+ 45 - 16
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/IotCommonSensorServiceImpl.java

@@ -3,13 +3,16 @@ package com.xunmei.iot.service.impl;
 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.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.domain.iot.domain.IotSensor;
+import com.xunmei.common.core.domain.mediator.domain.MediatorCategory;
 import com.xunmei.common.core.web.page.TableDataInfo;
 import com.xunmei.iot.dto.sensor.SensorPageDto;
 import com.xunmei.iot.mapper.IotCommonSensorMapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xunmei.iot.mapper.MediatorCategoryMapper;
 import com.xunmei.iot.service.IIotCommonSensorService;
 import com.xunmei.iot.vo.sensor.SensorPageVo;
 import com.xunmei.system.api.RemoteOrgService;
@@ -21,6 +24,7 @@ import javax.annotation.Resource;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 
 /**
  * <p>
@@ -39,34 +43,23 @@ public class IotCommonSensorServiceImpl extends ServiceImpl<IotCommonSensorMappe
     @Resource
     private IotCommonSensorMapper sensorMapper;
 
+    @Resource
+    private MediatorCategoryMapper categoryMapper;
+
     @Override
     public TableDataInfo<SensorPageVo> selectSensorDataPage(SensorPageDto request) {
         dealPageParam(request);
 
         Page<SensorPageVo> page = sensorMapper.selectPageData(request.getPageRequest(), request);
+        final List<MediatorCategory> categoryList = categoryMapper.selectList(new LambdaQueryWrapper<>());
         for (SensorPageVo record : page.getRecords()) {
             final String info = record.getInfo();
             record.setInfo(dealInfoData(info));
+            dealCategoryName(record, categoryList);
         }
         return TableDataInfo.build(page);
     }
 
-    private String dealInfoData(String info) {
-        if (ObjectUtil.isEmpty(info)){
-            return StringUtil.EMPTY_STRING;
-        }
-        final List<Map> list = JSON.parseArray(info, Map.class);
-        List<String> dataList = new ArrayList<>();
-        for (Map map : list) {
-            final String name = (String) map.get("name");
-            final String res = (String) map.get("res");
-            if (ObjectUtil.hasEmpty(name, res)) {
-                continue;
-            }
-            dataList.add(name + ":" + res);
-        }
-        return String.join(";", dataList);
-    }
 
     @Override
     public TableDataInfo<SensorPageVo> selectSensorLogDataPage(SensorPageDto request) {
@@ -95,4 +88,40 @@ public class IotCommonSensorServiceImpl extends ServiceImpl<IotCommonSensorMappe
             request.setEndTime(DateUtil.endOfDay(request.getDateRange()[1]));
         }
     }
+
+    private String dealInfoData(String info) {
+        if (ObjectUtil.isEmpty(info)) {
+            return StringUtil.EMPTY_STRING;
+        }
+        final List<Map> list = JSON.parseArray(info, Map.class);
+        List<String> dataList = new ArrayList<>();
+        for (Map map : list) {
+            final String name = (String) map.get("name");
+            final String res = (String) map.get("res");
+            if (ObjectUtil.hasEmpty(name, res)) {
+                continue;
+            }
+            dataList.add(name + ":" + res);
+        }
+        return String.join(";", dataList);
+    }
+
+    private void dealCategoryName(SensorPageVo record, List<MediatorCategory> categoryList) {
+        if (ObjectUtil.isEmpty(record.getCategoryId())) {
+            return;
+        }
+        final Optional<MediatorCategory> optional = categoryList.stream().filter(c -> ObjectUtil.equal(c.getId(), record.getCategoryId())).findFirst();
+        if (!optional.isPresent()) {
+            return;
+        }
+        final MediatorCategory category = optional.get();
+        record.setCategoryType(category.getName());
+        final Optional<MediatorCategory> parentCategoryOptional = categoryList.stream().filter(c -> ObjectUtil.equal(c.getId(), category.getParentId())).findFirst();
+        if (!parentCategoryOptional.isPresent()) {
+            return;
+        }
+        final MediatorCategory parentCategory = parentCategoryOptional.get();
+        record.setAssetsType(parentCategory.getName());
+
+    }
 }

+ 5 - 0
soc-modules/soc-modules-iot/src/main/resources/mapper/MediatorCategoryMapper.xml

@@ -0,0 +1,5 @@
+<?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.MediatorCategoryMapper">
+
+</mapper>

+ 18 - 34
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/controller/VideoDataController.java

@@ -103,15 +103,23 @@ public class VideoDataController {
     }
 
 
-    /**
-     * 频率:每次检查完成后,如果某个或者某几个硬盘存在质量问题,则上报一次。中途异常盘发生变化
-     * 不做推送,质量问题修复后,主动上报结束信息。
-     * 粒度:每个硬盘录像机的硬盘情况为一个数据包
-     *
-     * @param msgId
-     * @param videoRecorderHardDiskDetectionEditDto
-     * @return
-     */
+    @ApiOperation("DVR硬盘空间信息同步")
+    @PostMapping({"/api/data/dvrDiskList"})
+    ReceiveErrorDto disksList( String msgId, @RequestBody DataPageDto<DvrDiskPageDto> dataPageDto) {
+        rabbitMsgIdService.sendMsgId(msgId, "/api/data/dvrDiskList", "DVR硬盘空间信息同步");
+        LogUtils.BASE_INFO_DVR_DISK.info("【北向接口-{}】【msgId:{}】【接收参数:{}】", "DVR硬盘空间信息同步:/api/data/dvrDiskList", msgId, JSON.toJSONString(dataPageDto));
+        ReceiveErrorDto result = ReceiveErrorDto.success();
+        try {
+            result = this.dvrDiskService.saveData(dataPageDto, msgId);
+        } catch (Exception e) {
+            e.printStackTrace();
+            LogUtils.BASE_INFO_DVR_DISK.error("保存失败,{}", e);
+        }
+        LogUtils.BASE_INFO_DVR_DISK.info("【北向接口-{}】【msgId:{}】【返回参数:{}】", "DVR硬盘空间信息同步:/api/data/dvrDiskList", msgId, JSON.toJSONString(result));
+        return result;
+    }
+
+
     @ApiOperation("录像机硬盘检测")
     @PostMapping({"/api/status/disks"})
     ReceiveErrorDto disks( String msgId, @RequestBody VideoRecorderHardDiskDetectionEditDto videoRecorderHardDiskDetectionEditDto) {
@@ -128,29 +136,5 @@ public class VideoDataController {
         return result;
     }
 
-    /**
-     * 频率:每次检查完成后,如果某个或者某几个硬盘存在质量问题,则上报一次。中途异常盘发生变化
-     * 不做推送,质量问题修复后,主动上报结束信息。
-     * 粒度:每个硬盘录像机的硬盘情况为一个数据包
-     *
-     * @param branchId
-     * @param msgId
-     * @param dataPageDto
-     * @return
-     */
-    @ApiOperation("DVR硬盘空间信息同步")
-    @PostMapping({"/api/data/dvrDiskList"})
-    ReceiveErrorDto disksList( String msgId, @RequestBody DataPageDto<DvrDiskPageDto> dataPageDto) {
-        rabbitMsgIdService.sendMsgId(msgId, "/api/data/dvrDiskList", "DVR硬盘空间信息同步");
-        LogUtils.BASE_INFO_DVR_DISK.info("【北向接口-{}】【msgId:{}】【接收参数:{}】", "DVR硬盘空间信息同步:/api/data/dvrDiskList", msgId, JSON.toJSONString(dataPageDto));
-        ReceiveErrorDto result = ReceiveErrorDto.success();
-        try {
-            result = this.dvrDiskService.saveData(dataPageDto, msgId);
-        } catch (Exception e) {
-            e.printStackTrace();
-            LogUtils.BASE_INFO_DVR_DISK.error("保存失败,{}", e);
-        }
-        LogUtils.BASE_INFO_DVR_DISK.info("【北向接口-{}】【msgId:{}】【返回参数:{}】", "DVR硬盘空间信息同步:/api/data/dvrDiskList", msgId, JSON.toJSONString(result));
-        return result;
-    }
+
 }

+ 2 - 0
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotDvrDiskServiceImpl.java

@@ -163,6 +163,8 @@ public class IotDvrDiskServiceImpl extends ServiceImpl<IotDvrDiskMapper, IotDvrD
                         .deleted(0)
                         .source(1)
                         .createTime(LocalDateTime.now())
+                        .updateTime(LocalDateTime.now())
+                        .stateUpdateTime(LocalDateTime.now())
                         .build();
 
                 dvrdisks.add(dvrdisk);