瀏覽代碼

Merge branch 'V0.0.6-iot' of http://10.87.21.221:8000/jzyd_yyds/soc into V0.0.6-iot

jiawuxian 1 年之前
父節點
當前提交
5eee349b71
共有 20 個文件被更改,包括 327 次插入109 次删除
  1. 3 1
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/dto/SensorStatusDto.java
  2. 12 10
      soc-api/soc-api-system/src/main/java/com/xunmei/system/api/enums/ElectricityMeterAttributes.java
  3. 4 0
      soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/iot/domain/IotSensorLog.java
  4. 1 1
      soc-modules/soc-modules-gen/src/main/java/com/xunmei/gen/util/CodeGenerators.java
  5. 1 1
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/SocIotApplication.java
  6. 15 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/controller/IotAlarmRuleController.java
  7. 36 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/controller/IotSensorController.java
  8. 14 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/dto/sensor/SensorPageDto.java
  9. 6 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/mapper/IotCommonSensorMapper.java
  10. 6 1
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/IIotCommonSensorService.java
  11. 12 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/IotAlarmRuleService.java
  12. 55 39
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/IotAlarmRuleServiceImpl.java
  13. 48 2
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/IotCommonSensorServiceImpl.java
  14. 44 0
      soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/sensor/SensorPageVo.java
  15. 19 0
      soc-modules/soc-modules-iot/src/main/resources/mapper/IotSensorMapper.xml
  16. 1 3
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotAlarmDefenceAreaServiceImpl.java
  17. 1 3
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotAlarmSubSystemServiceImpl.java
  18. 1 3
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotDeviceDetectionServiceImpl.java
  19. 1 3
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotDvrHardDiskDetectionServiceImpl.java
  20. 47 42
      soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotSensorServiceImpl.java

+ 3 - 1
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/dto/SensorStatusDto.java

@@ -4,6 +4,8 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import java.util.Date;
+import java.util.List;
+import java.util.Map;
 
 @Data
 public class SensorStatusDto {
@@ -26,5 +28,5 @@ public class SensorStatusDto {
     private Date updateTime;
 
     @ApiModelProperty(value = "属性信息数组")
-    private String infos;
+    private List<Map> infos;
 }

+ 12 - 10
soc-api/soc-api-system/src/main/java/com/xunmei/system/api/enums/ElectricityMeterAttributes.java

@@ -74,13 +74,15 @@ public enum ElectricityMeterAttributes {
     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_53(8123843190642397184L,"水浸告警","status",null,"{0:\"正常\",1:\"异常\"}"),
+    METER_ATTRIBUTES_54(8123843190642397184L,"红外告警","infrared_state",null,"{\"0\":\"正常\",\"1\":\"有人\"}"),
+    ;
 
     private Long num;
 
     private String text;
 
-    private String attrtCode;
+    private String attributesCode;
 
     private String unit;
 
@@ -94,27 +96,27 @@ public enum ElectricityMeterAttributes {
         return e != null ? e.getText() : "";
     }
     public static ElectricityMeterAttributes getEnumByName(String text) {
-        return enumMapNew.get(text);
+        return enumMapText.get(text);
     }
-    public static ElectricityMeterAttributes getEnumByAttrtCode(String attrtCode) {
-        return enumMapNewA.get(attrtCode);
+    public static ElectricityMeterAttributes getEnumByAttributesCode(String attributesCode) {
+        return enumMapCode.get(attributesCode);
     }
 
     /**
      * 所有枚举
      */
     private static final Map<Long, ElectricityMeterAttributes> enumMap = new LinkedHashMap<>();
-    private static final Map<String, ElectricityMeterAttributes> enumMapNew = new LinkedHashMap<>();
-    private static final Map<String, ElectricityMeterAttributes> enumMapNewA = new LinkedHashMap<>();
+    private static final Map<String, ElectricityMeterAttributes> enumMapText = new LinkedHashMap<>();
+    private static final Map<String, ElectricityMeterAttributes> enumMapCode = new LinkedHashMap<>();
     static {
         for (ElectricityMeterAttributes typeEnum : ElectricityMeterAttributes.values()) {
             enumMap.put(typeEnum.num, typeEnum);
         }
         for (ElectricityMeterAttributes typeEnum : ElectricityMeterAttributes.values()) {
-            enumMapNew.put(typeEnum.text, typeEnum);
+            enumMapText.put(typeEnum.text, typeEnum);
         }
         for (ElectricityMeterAttributes typeEnum : ElectricityMeterAttributes.values()) {
-            enumMapNewA.put(typeEnum.attrtCode, typeEnum);
+            enumMapCode.put(typeEnum.attributesCode, typeEnum);
         }
     }
 
@@ -123,7 +125,7 @@ public enum ElectricityMeterAttributes {
         JSONObject enumText = (JSONObject) JSONObject.parse(value.getEnumText());
         System.out.println(enumText);
         System.out.println(enumText.get("1"));
-        System.out.println(value.attrtCode);
+        System.out.println(value.attributesCode);
         System.out.println(value.num);
         System.out.println(value.text);
     }

+ 4 - 0
soc-common/soc-common-core/src/main/java/com/xunmei/common/core/domain/iot/domain/IotSensorLog.java

@@ -56,6 +56,10 @@ public class IotSensorLog implements Serializable {
     @TableField("device_code")
     private String deviceCode;
 
+    @ApiModelProperty(value = "设备类型编码")
+    @TableField("device_type")
+    private String deviceType;
+
     @ApiModelProperty(value = "传感器类型编码")
     @TableField("category_id")
     private Long categoryId;

+ 1 - 1
soc-modules/soc-modules-gen/src/main/java/com/xunmei/gen/util/CodeGenerators.java

@@ -30,7 +30,7 @@ public class CodeGenerators {
     }*/
 
     public static final String moduleName="com.xunmei.mediator";
-    public static final String tableNames="iot_alarm_defence_area_data_log";
+    public static final String tableNames="iot_sensor_data,iot_sensor_data_log";
 
     public static void main(String[] args) {
         // 代码生成器

+ 1 - 1
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/SocIotApplication.java

@@ -16,6 +16,6 @@ import org.springframework.scheduling.annotation.EnableAsync;
 public class SocIotApplication {
     public static void main(String[] args) {
         SpringApplication.run(SocIotApplication.class, args);
-        System.out.println("(♥◠‿◠)ノ゙  系统模块接口启动成功   ლ(´ڡ`ლ)゙  ");
+        System.out.println("(♥◠‿◠)ノ゙  Iot模块接口启动成功   ლ(´ڡ`ლ)゙  ");
     }
 }

+ 15 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/controller/IotAlarmRuleController.java

@@ -8,6 +8,8 @@ import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import java.util.List;
+
 @RestController
 @RequestMapping("/iot_alarm")
 public class IotAlarmRuleController {
@@ -39,6 +41,19 @@ public class IotAlarmRuleController {
         }
     }
 
+    @ApiOperation(value = "查询报警规则")
+    @GetMapping(value = "/getRules")
+    public AjaxResult getRules(String alarmType, String ruleName, Integer pageIndex, Integer pageSize){
+        try {
+            List<IotInitAlarmRuleVo> alarmRuleData = iotAlarmRuleService.getAlarmRuleDatas(alarmType,ruleName,pageIndex,pageSize);
+            return AjaxResult.success(alarmRuleData);
+        } catch (Exception e) {
+            e.printStackTrace();
+            return AjaxResult.error(e.getMessage());
+        }
+    }
+
+
     @ApiOperation(value = "保存或者更新告警规则")
     @PostMapping(value = "/saveOrUpdateAlarmRule")
     public AjaxResult saveOrUpdateAlarmRule( @RequestBody IotAlarmRuleDto request) {

+ 36 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/controller/IotSensorController.java

@@ -0,0 +1,36 @@
+package com.xunmei.iot.controller;
+
+import com.xunmei.common.core.web.page.TableDataInfo;
+import com.xunmei.iot.dto.dvrDisk.DvrDiskPageDto;
+import com.xunmei.iot.dto.sensor.SensorPageDto;
+import com.xunmei.iot.service.IIotCommonSensorService;
+import com.xunmei.iot.vo.dvrDisk.DvrDiskPageVo;
+import com.xunmei.iot.vo.sensor.SensorPageVo;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+
+/**
+ * @author jingyuanchao
+ * @date 2024/2/26 14:10
+ */
+@RestController
+@RequestMapping("/sensor")
+public class IotSensorController {
+
+    @Resource
+    IIotCommonSensorService sensorService;
+
+
+    @ApiOperation("分页")
+    @PostMapping({"/find"})
+    TableDataInfo<SensorPageVo> webPage(@RequestBody final SensorPageDto request) {
+        TableDataInfo<SensorPageVo> page = this.sensorService.selectSensorDataPage(request);
+        return page;
+    }
+
+}

+ 14 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/dto/sensor/SensorPageDto.java

@@ -0,0 +1,14 @@
+package com.xunmei.iot.dto.sensor;
+
+import com.xunmei.common.core.web.domain.PageRequest;
+import lombok.Data;
+
+/**
+ * @author jingyuanchao
+ * @date 2024/2/26 14:32
+ */
+@Data
+public class SensorPageDto extends PageRequest {
+
+    private String deviceName;
+}

+ 6 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/mapper/IotCommonSensorMapper.java

@@ -1,7 +1,12 @@
 package com.xunmei.iot.mapper;
 
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.xunmei.common.core.domain.iot.domain.IotSensor;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.xunmei.common.core.web.page.TableDataInfo;
+import com.xunmei.iot.dto.sensor.SensorPageDto;
+import com.xunmei.iot.vo.sensor.SensorPageVo;
+import org.apache.ibatis.annotations.Param;
 
 /**
  * <p>
@@ -13,4 +18,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  */
 public interface IotCommonSensorMapper extends BaseMapper<IotSensor> {
 
+    Page<SensorPageVo> selectPageData(Page<SensorPageVo> pageRequest, @Param("request") SensorPageDto request);
 }

+ 6 - 1
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/IIotCommonSensorService.java

@@ -1,7 +1,10 @@
-package com.xunmei.common.core.domain.iot.domain.current.service;
+package com.xunmei.iot.service;
 
 import com.xunmei.common.core.domain.iot.domain.IotSensor;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.xunmei.common.core.web.page.TableDataInfo;
+import com.xunmei.iot.dto.sensor.SensorPageDto;
+import com.xunmei.iot.vo.sensor.SensorPageVo;
 
 /**
  * <p>
@@ -13,4 +16,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
  */
 public interface IIotCommonSensorService extends IService<IotSensor> {
 
+    TableDataInfo<SensorPageVo> selectSensorDataPage(SensorPageDto request);
+
 }

+ 12 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/IotAlarmRuleService.java

@@ -5,6 +5,8 @@ import com.xunmei.common.core.domain.mediator.domain.IotAlarmRule;
 import com.xunmei.iot.dto.alarm.IotAlarmRuleDto;
 import com.xunmei.iot.vo.alarm.IotInitAlarmRuleVo;
 
+import java.util.List;
+
 /**
  * @author 高雄
  * 告警规则服务类
@@ -25,6 +27,16 @@ public interface IotAlarmRuleService extends IService<IotAlarmRule> {
     IotInitAlarmRuleVo getAlarmRuleData(Long ruleId)throws Exception;
 
     /**
+     * 获取告警规则数据例表
+     * @param alarmType
+     * @param ruleName
+     * @param pageIndex
+     * @param pageSize
+     * @return {@link IotInitAlarmRuleVo}
+     */
+    List<IotInitAlarmRuleVo> getAlarmRuleDatas(String alarmType, String ruleName, Integer pageIndex, Integer pageSize) throws Exception;
+
+    /**
      *
      * @param ruleDto
      * @throws Exception

+ 55 - 39
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/IotAlarmRuleServiceImpl.java

@@ -38,23 +38,23 @@ public class IotAlarmRuleServiceImpl extends ServiceImpl<IotAlarmRuleMapper, Iot
     private IotAlarmRuleExpressService iotAlarmRuleExpressService;
 
     @Override
-    public IotInitAlarmRuleVo getAddInitAlarmRuleData()throws Exception {
+    public IotInitAlarmRuleVo getAddInitAlarmRuleData() throws Exception {
 
-        IotInitAlarmRuleVo  ruleVo = new IotInitAlarmRuleVo();
-        LambdaQueryWrapper<IotAlarmSystemField>  lqw = new LambdaQueryWrapper<IotAlarmSystemField>().eq(IotAlarmSystemField::getEnable, 1).orderByDesc(IotAlarmSystemField::getId);
+        IotInitAlarmRuleVo ruleVo = new IotInitAlarmRuleVo();
+        LambdaQueryWrapper<IotAlarmSystemField> lqw = new LambdaQueryWrapper<IotAlarmSystemField>().eq(IotAlarmSystemField::getEnable, 1).orderByDesc(IotAlarmSystemField::getId);
         List<IotAlarmSystemField> systemFieldList = iotAlarmSystemFieldMapper.selectList(lqw);
         //
         List<IotAlarmSystemFieldVo> appAlarmSystemFieldVoList = new ArrayList<>();
-        for(IotAlarmSystemField systemField:systemFieldList){
+        for (IotAlarmSystemField systemField : systemFieldList) {
             IotAlarmSystemFieldVo appAlarmSystemFieldVo = new IotAlarmSystemFieldVo();
             BeanHelper.copyProperties(appAlarmSystemFieldVo, systemField);
             List<KeyValue> specsList = new ArrayList<>();
             List<KeyValue> operatorsList = new ArrayList<>();
-            if(systemField.getType().equals("ENUM")){
+            if (systemField.getType().equals("ENUM")) {
                 String specs = systemField.getSpecs();
                 JSONObject obj = JSON.parseObject(specs);
                 Iterator iterator = obj.entrySet().iterator();
-                while (iterator.hasNext()){
+                while (iterator.hasNext()) {
                     Map.Entry entry = (Map.Entry) iterator.next();
                     KeyValue keyValue = new KeyValue();
                     keyValue.setKey(entry.getKey());
@@ -65,7 +65,7 @@ public class IotAlarmRuleServiceImpl extends ServiceImpl<IotAlarmRuleMapper, Iot
             String operators = systemField.getOperators();
             JSONObject obj = JSON.parseObject(operators);
             Iterator iterator = obj.entrySet().iterator();
-            while (iterator.hasNext()){
+            while (iterator.hasNext()) {
                 Map.Entry entry = (Map.Entry) iterator.next();
                 KeyValue keyValue = new KeyValue();
                 keyValue.setKey(entry.getKey());
@@ -76,26 +76,26 @@ public class IotAlarmRuleServiceImpl extends ServiceImpl<IotAlarmRuleMapper, Iot
             appAlarmSystemFieldVo.setOperatorsList(operatorsList);
             appAlarmSystemFieldVoList.add(appAlarmSystemFieldVo);
         }
-        Map<Integer,List<IotAlarmSystemFieldVo>> appAlarmSystemFieldVoMapList = appAlarmSystemFieldVoList.stream().collect(Collectors.groupingBy(r->r.getSourceType()));
-        List<Map<String,Object>> mapList = new ArrayList<>();
-        for(Integer key:appAlarmSystemFieldVoMapList.keySet()){
-            Map<String,Object> map = new HashMap<>();
-            List<IotAlarmSystemFieldVo> systemFieldVos  = appAlarmSystemFieldVoMapList.get(key);
-            map.put("sourceTypeDes",systemFieldVos.get(0).getSourceTypeDes());
-            map.put("sourceType",systemFieldVos.get(0).getSourceType());
-            List<Map<String,Object>> systemFieldsList = new ArrayList<>();
-            for(IotAlarmSystemFieldVo vo:systemFieldVos){
-                Map<String,Object> mapa = new HashMap<>();
-                mapa.put("sysFieldCode",vo.getSysFieldCode());
-                mapa.put("name",vo.getName());
-                mapa.put("specsList",vo.getSpecsList());
-                mapa.put("operatorsList",vo.getOperatorsList());
-                mapa.put("type",vo.getType());
-                mapa.put("typeDes",vo.getTypeDes());
-                mapa.put("unit",vo.getUnit());
+        Map<Integer, List<IotAlarmSystemFieldVo>> appAlarmSystemFieldVoMapList = appAlarmSystemFieldVoList.stream().collect(Collectors.groupingBy(r -> r.getSourceType()));
+        List<Map<String, Object>> mapList = new ArrayList<>();
+        for (Integer key : appAlarmSystemFieldVoMapList.keySet()) {
+            Map<String, Object> map = new HashMap<>();
+            List<IotAlarmSystemFieldVo> systemFieldVos = appAlarmSystemFieldVoMapList.get(key);
+            map.put("sourceTypeDes", systemFieldVos.get(0).getSourceTypeDes());
+            map.put("sourceType", systemFieldVos.get(0).getSourceType());
+            List<Map<String, Object>> systemFieldsList = new ArrayList<>();
+            for (IotAlarmSystemFieldVo vo : systemFieldVos) {
+                Map<String, Object> mapa = new HashMap<>();
+                mapa.put("sysFieldCode", vo.getSysFieldCode());
+                mapa.put("name", vo.getName());
+                mapa.put("specsList", vo.getSpecsList());
+                mapa.put("operatorsList", vo.getOperatorsList());
+                mapa.put("type", vo.getType());
+                mapa.put("typeDes", vo.getTypeDes());
+                mapa.put("unit", vo.getUnit());
                 systemFieldsList.add(mapa);
             }
-            map.put("systemFields",systemFieldsList);
+            map.put("systemFields", systemFieldsList);
             mapList.add(map);
         }
         ruleVo.setSourceTypeList(mapList);
@@ -111,19 +111,19 @@ public class IotAlarmRuleServiceImpl extends ServiceImpl<IotAlarmRuleMapper, Iot
         BeanHelper.copyProperties(ruleEditVo, appAlarmRule);
         ruleVo.setIotAlarmRule(appAlarmRule);
 
-        List<IotAlarmRuleExpress> appAlarmRuleExpressList =iotAlarmRuleExpressService.list(new LambdaQueryWrapper<IotAlarmRuleExpress>().eq(IotAlarmRuleExpress::getRuleId,ruleId));
+        List<IotAlarmRuleExpress> appAlarmRuleExpressList = iotAlarmRuleExpressService.list(new LambdaQueryWrapper<IotAlarmRuleExpress>().eq(IotAlarmRuleExpress::getRuleId, ruleId));
         List<IotAlarmRuleExpressEditVo> appAlarmRuleExpressEditVos = new ArrayList<>();
-        for(IotAlarmRuleExpress express:appAlarmRuleExpressList){
+        for (IotAlarmRuleExpress express : appAlarmRuleExpressList) {
             IotAlarmRuleExpressEditVo expressNew = new IotAlarmRuleExpressEditVo();
             BeanHelper.copyProperties(expressNew, express);
             appAlarmRuleExpressEditVos.add(expressNew);
         }
-        Map<Integer,List<IotAlarmRuleExpressEditVo>> appAlarmSystemFieldVoMapList = appAlarmRuleExpressEditVos.stream().collect(Collectors.groupingBy(r->r.getSourceType()));
-        List<Map<String,Object>> mapList = new ArrayList<>();
-        for(Integer key:appAlarmSystemFieldVoMapList.keySet()){
-            Map<String,Object> map = new HashMap();
-            map.put("sourceType",key);
-            map.put("AppAlarmRuleExpressList",appAlarmSystemFieldVoMapList.get(key));
+        Map<Integer, List<IotAlarmRuleExpressEditVo>> appAlarmSystemFieldVoMapList = appAlarmRuleExpressEditVos.stream().collect(Collectors.groupingBy(r -> r.getSourceType()));
+        List<Map<String, Object>> mapList = new ArrayList<>();
+        for (Integer key : appAlarmSystemFieldVoMapList.keySet()) {
+            Map<String, Object> map = new HashMap();
+            map.put("sourceType", key);
+            map.put("appAlarmRuleExpressList", appAlarmSystemFieldVoMapList.get(key));
             mapList.add(map);
         }
         ruleVo.setIotAlarmRuleExpressEditVosBySourceType(mapList);
@@ -131,23 +131,39 @@ public class IotAlarmRuleServiceImpl extends ServiceImpl<IotAlarmRuleMapper, Iot
     }
 
     @Override
+    public List<IotInitAlarmRuleVo> getAlarmRuleDatas(String alarmType, String ruleName, Integer pageIndex, Integer pageSize) throws Exception {
+        LambdaQueryWrapper<IotAlarmRule> queryWrapper = new LambdaQueryWrapper<>();
+        List<IotAlarmRule> appAlarmRule = this.baseMapper.selectList(queryWrapper);
+
+        List<IotInitAlarmRuleVo> datas = new ArrayList<>();
+        appAlarmRule.stream().forEach(i -> {
+            try {
+                datas.add(getAlarmRuleData(i.getId()));
+            } catch (Exception e) {
+                throw new RuntimeException(e);
+            }
+        });
+        return datas;
+    }
+
+    @Override
     public void saveOrUpdateAlarmRule(IotAlarmRuleDto ruleDto) throws Exception {
         IotAlarmRule rule = new IotAlarmRule();
         BeanHelper.copyProperties(rule, ruleDto);
-        if(rule.getId()==null){//新增
+        if (rule.getId() == null) {//新增
             rule.setId(IDHelper.id());
             rule.setCreateTime(LocalDateTime.now());
             rule.setCreateBy(SecurityUtils.getUsername());
             rule.setUpdateBy(SecurityUtils.getUsername());
             rule.setUpdateTime(LocalDateTime.now());
-        }else{//修改
+        } else {//修改
             rule.setUpdateBy(SecurityUtils.getUsername());
             rule.setUpdateTime(LocalDateTime.now());
         }
         List<IotAlarmRuleExpressDto> appAlarmRuleExpressDtos = ruleDto.getIotAlarmRuleExpressDtoList();
         List<IotAlarmRuleExpress> appAlarmRuleExpressesList = new ArrayList<>();
-        if(appAlarmRuleExpressDtos!=null&&appAlarmRuleExpressDtos.size()>0){
-            for(IotAlarmRuleExpressDto vo:appAlarmRuleExpressDtos){
+        if (appAlarmRuleExpressDtos != null && appAlarmRuleExpressDtos.size() > 0) {
+            for (IotAlarmRuleExpressDto vo : appAlarmRuleExpressDtos) {
                 IotAlarmRuleExpress express = new IotAlarmRuleExpress();
                 BeanHelper.copyProperties(express, vo);
                 express.setRuleId(rule.getId());
@@ -159,10 +175,10 @@ public class IotAlarmRuleServiceImpl extends ServiceImpl<IotAlarmRuleMapper, Iot
             }
         }
         Set<Integer> sourceTypes = new HashSet<>();
-        appAlarmRuleExpressesList.forEach(r->sourceTypes.add(r.getSourceType()));
+        appAlarmRuleExpressesList.forEach(r -> sourceTypes.add(r.getSourceType()));
         this.saveOrUpdate(rule);
         //规则先删除原来的然重新插入
-        iotAlarmRuleExpressService.remove(new LambdaQueryWrapper<IotAlarmRuleExpress>().eq(IotAlarmRuleExpress::getRuleId,rule.getId()));
+        iotAlarmRuleExpressService.remove(new LambdaQueryWrapper<IotAlarmRuleExpress>().eq(IotAlarmRuleExpress::getRuleId, rule.getId()));
         iotAlarmRuleExpressService.saveBatch(appAlarmRuleExpressesList);
     }
 }

+ 48 - 2
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/service/impl/IotCommonSensorServiceImpl.java

@@ -1,11 +1,25 @@
-package com.xunmei.common.core.domain.iot.domain.current.service.impl;
+package com.xunmei.iot.service.impl;
 
+import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson2.JSON;
+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.web.page.TableDataInfo;
+import com.xunmei.iot.dto.sensor.SensorPageDto;
 import com.xunmei.iot.mapper.IotCommonSensorMapper;
-import com.xunmei.common.core.domain.iot.domain.current.service.IIotCommonSensorService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xunmei.iot.service.IIotCommonSensorService;
+import com.xunmei.iot.vo.sensor.SensorPageVo;
+import com.xunmei.system.api.RemoteOrgService;
+import com.xunmei.system.api.domain.SysOrg;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
 /**
  * <p>
  *  服务实现类
@@ -17,4 +31,36 @@ import org.springframework.stereotype.Service;
 @Service
 public class IotCommonSensorServiceImpl extends ServiceImpl<IotCommonSensorMapper, IotSensor> implements IIotCommonSensorService {
 
+    @Resource
+    private RemoteOrgService orgService;
+
+    @Resource
+    private IotCommonSensorMapper sensorMapper;
+
+    @Override
+    public TableDataInfo<SensorPageVo> selectSensorDataPage(SensorPageDto request) {
+        final SysOrg sysOrg = orgService.selectOrgById(request.getOrgId(), SecurityConstants.INNER);
+
+        if (ObjectUtil.equal(Boolean.TRUE,request.getCheckSub())){
+            request.setOrgPath(sysOrg.getPath());
+            request.setOrgId(null);
+        }
+
+        Page<SensorPageVo> page=  sensorMapper.selectPageData(request.getPageRequest(),request);
+        for (SensorPageVo record : page.getRecords()) {
+            final String info = record.getInfo();
+            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);
+            }
+            record.setInfo(String.join(";",dataList));
+        }
+        return TableDataInfo.build(page);
+    }
 }

+ 44 - 0
soc-modules/soc-modules-iot/src/main/java/com/xunmei/iot/vo/sensor/SensorPageVo.java

@@ -0,0 +1,44 @@
+package com.xunmei.iot.vo.sensor;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.xunmei.common.core.constant.CacheConstants;
+import com.xunmei.common.core.constant.Constants;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+
+/**
+ * @author jingyuanchao
+ * @date 2024/2/26 14:37
+ */
+@Data
+public class SensorPageVo {
+
+    private Long id;
+
+    @ApiModelProperty("机构id")
+    private Long orgId;
+
+    private Long categoryId;
+
+    @ApiModelProperty("所属机构")
+    private String orgName;
+
+    @ApiModelProperty("设备名称")
+    private String deviceName;
+
+    @ApiModelProperty("资产类别")
+    private String assetsType;
+
+    @ApiModelProperty("设备类型")
+    private String categoryType;
+
+    @ApiModelProperty("上报内容")
+    private String info;
+
+    @JsonFormat(pattern = Constants.HMS_FORMAT)
+    @ApiModelProperty("上报时间")
+    private LocalDateTime updateTime;
+
+}

+ 19 - 0
soc-modules/soc-modules-iot/src/main/resources/mapper/IotSensorMapper.xml

@@ -0,0 +1,19 @@
+<?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.IotCommonSensorMapper">
+
+    <select id="selectPageData" resultType="com.xunmei.iot.vo.sensor.SensorPageVo">
+        select s.id, org_id, org_name, device_name, category_id, infos as info, update_time from iot_sensor s
+        <where>
+            <if test="request.orgId!= null">
+                and s.org_id=#{request.orgId}
+            </if>
+            <if test="request.orgPath!= null">
+                and s.org_path like CONCAT(#{request.orgPath}, '%')
+            </if>
+            <if test="request.deviceName != null and request.deviceName!= ''">
+                and s.device_name like CONCAT('%',#{request.deviceName},'%')
+            </if>
+        </where>
+    </select>
+</mapper>

+ 1 - 3
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotAlarmDefenceAreaServiceImpl.java

@@ -144,9 +144,7 @@ public class IotAlarmDefenceAreaServiceImpl extends ServiceImpl<IotAlarmDefenceA
             result.setErrorMsg("没有找到对应的设备");
             return result;
         }
-        if (ObjectUtil.notEqual(sensor.getState(),sensorData.getInputState())){
-            sensor.setStateUpdateTime(LocalDateTime.now());
-        }
+        sensor.setStateUpdateTime(LocalDateTime.now());
         sensor.setState(sensorData.getInputState());
         if (sensorData.getInputState().equalsIgnoreCase("alarm")) {
             sensor.setStateText("报警");

+ 1 - 3
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotAlarmSubSystemServiceImpl.java

@@ -159,9 +159,7 @@ public class IotAlarmSubSystemServiceImpl extends ServiceImpl<IotAlarmSubsystemM
 
         protection.setName(protectionEditDto.getDefenceareaName());
         protection.setUpdateTime(updateTime);
-        if (ObjectUtil.notEqual(protection.getStatus(),protectionEditDto.getDefenceStatus())){
-            protection.setStatusUpdateTime(LocalDateTime.now());
-        }
+        protection.setStatusUpdateTime(LocalDateTime.now());
         switch (protectionEditDto.getDefenceStatus()) {
             case 0:
                 protection.setStatus(ProtectionStatus.REMOVAL.ordinal());

+ 1 - 3
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotDeviceDetectionServiceImpl.java

@@ -149,9 +149,7 @@ public class IotDeviceDetectionServiceImpl extends ServiceImpl<IotDeviceDetectio
             networkDeviceDetection.setId(IDHelper.id());
             networkDeviceDetection.setCreateTime(LocalDateTime.now());
         }
-        if (ObjectUtil.notEqual(networkDeviceDetection.getState(),networkDeviceDetectionEditDto.getNetStatus())){
-            networkDeviceDetection.setStateUpdateTime(LocalDateTime.now());
-        }
+        networkDeviceDetection.setStateUpdateTime(LocalDateTime.now());
         networkDeviceDetection.setEquipmentName(networkDeviceDetectionEditDto.getEquipmentName());
         networkDeviceDetection.setUpdateTime(DateUtils.toLocalDateTime(networkDeviceDetectionEditDto.getUpdateTime()));
         switch (networkDeviceDetectionEditDto.getNetStatus()) {

+ 1 - 3
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotDvrHardDiskDetectionServiceImpl.java

@@ -133,14 +133,12 @@ public class IotDvrHardDiskDetectionServiceImpl extends ServiceImpl<IotDvrHardDi
         videoRecorderHardDiskDetection.setEquipmentCode(videoRecorderHardDiskDetectionEditDto.getEquipmentCode());
         IotDvrHardDiskDetection old = this.findTopByEquipmentCodeAndOrgId(videoRecorderHardDiskDetectionEditDto.getEquipmentCode(), org.getId());
         if (old != null) {
-            if (ObjectUtil.notEqual(old.getCheckStatus(), videoRecorderHardDiskDetectionEditDto.getCheckStatus())) {
-                videoRecorderHardDiskDetection.setStateUpdateTime(LocalDateTime.now());
-            }
             videoRecorderHardDiskDetection = old;
         } else {
             videoRecorderHardDiskDetection.setId(IDHelper.id());
             videoRecorderHardDiskDetection.setCreateTime(LocalDateTime.now());
         }
+        videoRecorderHardDiskDetection.setStateUpdateTime(LocalDateTime.now());
         videoRecorderHardDiskDetection.setEquipmentName(videoRecorderHardDiskDetectionEditDto.getEquipmentName());
         videoRecorderHardDiskDetection.setCheckTime(DateUtils.toLocalDateTime(videoRecorderHardDiskDetectionEditDto.getCheckTime()));
         videoRecorderHardDiskDetection.setCheckStatus(videoRecorderHardDiskDetectionEditDto.getCheckStatus());

+ 47 - 42
soc-modules/soc-modules-mediator/src/main/java/com/xunmei/mediator/api/service/impl/IotSensorServiceImpl.java

@@ -1,12 +1,16 @@
 package com.xunmei.mediator.api.service.impl;
 
 import cn.hutool.core.util.ObjectUtil;
+import com.alibaba.fastjson2.JSON;
+import com.alibaba.fastjson2.JSONArray;
+import com.alibaba.fastjson2.JSONObject;
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.xunmei.common.core.constant.SecurityConstants;
 import com.xunmei.common.core.domain.iot.domain.IotSensor;
 import com.xunmei.common.core.domain.iot.domain.IotSensorLog;
 import com.xunmei.common.core.enums.CategoryDataEnum;
+import com.xunmei.common.core.util.BeanHelper;
 import com.xunmei.common.core.utils.IDHelper;
 import com.xunmei.mediator.api.mapper.IotSensorMapper;
 import com.xunmei.mediator.api.service.EquipmentSyncService;
@@ -18,11 +22,13 @@ import com.xunmei.mediator.util.RedisCheckRepeatDataUtil;
 import com.xunmei.system.api.RemoteOrgService;
 import com.xunmei.system.api.domain.SysOrg;
 import com.xunmei.system.api.domain.north.MediatorDeviceData;
+import com.xunmei.system.api.domain.north.MediatorDeviceDataLog;
 import com.xunmei.system.api.domain.north.NorthError;
 import com.xunmei.system.api.dto.DataPageDto;
 import com.xunmei.system.api.dto.SensorDto;
 import com.xunmei.system.api.dto.SensorStatusDto;
 import com.xunmei.system.api.dto.protection.ReceiveErrorDto;
+import com.xunmei.system.api.enums.ElectricityMeterAttributes;
 import com.xunmei.system.api.util.LogUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.StringUtils;
@@ -76,7 +82,6 @@ public class IotSensorServiceImpl extends ServiceImpl<IotSensorMapper, IotSensor
         String path = "/api/{branchId}/status/sensorCommon";
         List<NorthError> errors = new ArrayList<>();
         Map<String, List<IotSensor>> productDeviceMap = getAllDevice();
-        List<MediatorDeviceData> deviceDataList = new ArrayList<>();
         List<IotSensor> sensorList = new ArrayList<>();
         List<IotSensorLog> sensorLogList = new ArrayList<>();
         for (SensorStatusDto status : request.getData()) {
@@ -98,51 +103,51 @@ public class IotSensorServiceImpl extends ServiceImpl<IotSensorMapper, IotSensor
                         , status, "对应设备不存在:" + status.getDeviceCode()));
                 continue;
             }
-            buildSensorAndLog(sensorList, sensorLogList, optional.get());
-           /* MediatorDeviceData deviceData = new MediatorDeviceData();
-            deviceData.setDeviceName(status.getDeviceName());
-            deviceData.setOrgId(org.getId());
-            deviceData.setOrgPath(org.getPath());
-            deviceData.setOrgCode(org.getGuid());
-            deviceData.setOrgName(org.getName());
-            deviceData.setUpdateTime(status.getUpdateTime());
-            deviceData.setMulti(0);
-            deviceData.setItems(status.getInfos());
-
-            MediatorDeviceDataLog deviceDataLog = new MediatorDeviceDataLog();
-            BeanHelper.copyProperties(deviceDataLog, deviceData, "id");
-            deviceDataLog.setCreateTime(new Date());
-            deviceDataLogList.add(deviceDataLog);
-            deviceDataList.add(deviceData);*/
-        }
-        if (errors.size() > 0) {
-            northErrorService.saveErrorData(errors);
+            final String infoStr = JSON.toJSONString(status.getInfos());
+            final IotSensor iotSensor = optional.get();
+            iotSensor.setUpdateTime(LocalDateTime.now());
+            iotSensor.setDeviceName(status.getDeviceName());
+            iotSensor.setDeviceType(status.getDeviceType());
+            iotSensor.setStateUpdateTime(LocalDateTime.now());
+            iotSensor.setInfos(dealInfoData(infoStr));
+            final IotSensorLog iotSensorLog = new IotSensorLog();
+            BeanUtils.copyProperties(iotSensor, iotSensorLog, "id");
+            iotSensorLog.setIotSensorId(iotSensor.getId());
+            iotSensorLog.setSource(1);
+            iotSensorLog.setDeviceType(iotSensor.getDeviceType());
+            sensorList.add(iotSensor);
+            sensorLogList.add(iotSensorLog);
         }
+        northErrorService.saveErrorData(errors);
         updateBatchById(sensorList);
         iotSensorLogService.saveBatch(sensorLogList);
-       /* remoteMediatorService.saveOrUpdateDeviceData(deviceDataList, SecurityConstants.INNER);
-        remoteMediatorService.saveOrUpdateDeviceDataLog(deviceDataLogList, SecurityConstants.INNER);
-
-        for (MediatorDeviceData deviceData : deviceDataList) {
-            equipmentSyncService.analysisItem(deviceData);
-        }*/
     }
 
-    private void buildSensorAndLog(List<IotSensor> sensorList, List<IotSensorLog> sensorLogList, IotSensor iotSensor) {
-        iotSensor.setUpdateTime(LocalDateTime.now());
-        iotSensor.setInfos(iotSensor.getInfos());
-        iotSensor.setDeviceName(iotSensor.getDeviceName());
-        iotSensor.setDeviceType(iotSensor.getDeviceType());
-        iotSensor.setStateUpdateTime(LocalDateTime.now());
-        final IotSensorLog iotSensorLog = new IotSensorLog();
-        BeanUtils.copyProperties(iotSensor, iotSensorLog);
-        iotSensorLog.setIotSensorId(iotSensor.getId());
-        iotSensorLog.setCreateTime(LocalDateTime.now());
-        iotSensorLog.setUpdateTime(LocalDateTime.now());
-        iotSensorLog.setStateUpdateTime(LocalDateTime.now());
-        iotSensorLog.setSource(1);
-        sensorList.add(iotSensor);
-        sensorLogList.add(iotSensorLog);
+    private String dealInfoData(String infoStr) {
+        final JSONArray jsonArray = new JSONArray();
+        final List<Map> list = JSON.parseArray(infoStr, Map.class);
+        for (Map map : list) {
+            final JSONObject obj = JSON.parseObject(JSON.toJSONString(map), JSONObject.class);
+            jsonArray.add(obj);
+            final String name = (String) map.get("name");
+            final String val = (String) map.get("val");
+
+            final ElectricityMeterAttributes attributesEnum = ElectricityMeterAttributes.getEnumByName(name);
+            if (ObjectUtil.isNull(attributesEnum)) {
+                return infoStr;
+            }
+            if (ObjectUtil.isNotEmpty(attributesEnum.getUnit())) {
+                //说明存在单位,那么把val拼接上单位set到原来的属性值中去
+                obj.put("unit", attributesEnum.getUnit());
+                obj.put("res", val + attributesEnum.getUnit());
+            } else {
+                obj.put("unit", attributesEnum.getEnumText());
+                final Map extraMap = JSON.parseObject(attributesEnum.getEnumText(), Map.class);
+                final String o = (String) extraMap.get(val);
+                obj.put("res", o);
+            }
+        }
+        return JSON.toJSONString(jsonArray);
     }
 
     @Override
@@ -246,7 +251,7 @@ public class IotSensorServiceImpl extends ServiceImpl<IotSensorMapper, IotSensor
         return baseMapper.selectList(new LambdaQueryWrapper<IotSensor>()
                         .eq(IotSensor::getSource, 1))
                 .stream()
-                .collect(Collectors.groupingBy(c -> c.getOrgId()+c.getDeviceCode()));
+                .collect(Collectors.groupingBy(c -> String.valueOf(c.getOrgId())));
     }
 
     private Long convertDeviceType(String deviceCode) {