yq 3 vuotta sitten
vanhempi
commit
2b20668d14
37 muutettua tiedostoa jossa 1366 lisäystä ja 49 poistoa
  1. 4 4
      mhfire-controller/src/main/java/com/bizmatics/mhfire/controller/MybatisGeneratorUtils.java
  2. 21 0
      mhfire-controller/src/main/java/com/bizmatics/mhfire/controller/web/SpOwnerCompanyController.java
  3. 21 0
      mhfire-controller/src/main/java/com/bizmatics/mhfire/controller/web/SpOwnerController.java
  4. 21 0
      mhfire-controller/src/main/java/com/bizmatics/mhfire/controller/web/TbAlarmController.java
  5. 21 0
      mhfire-controller/src/main/java/com/bizmatics/mhfire/controller/web/TbInfoController.java
  6. 16 0
      mhfire-mapping/src/main/java/com/bizmatics/mhfire/persistence/mapper/SpOwnerCompanyMapper.java
  7. 16 0
      mhfire-mapping/src/main/java/com/bizmatics/mhfire/persistence/mapper/SpOwnerMapper.java
  8. 16 0
      mhfire-mapping/src/main/java/com/bizmatics/mhfire/persistence/mapper/TbAlarmMapper.java
  9. 16 0
      mhfire-mapping/src/main/java/com/bizmatics/mhfire/persistence/mapper/TbInfoMapper.java
  10. 27 0
      mhfire-mapping/src/main/resources/mapper/mysql/SpOwnerCompanyMapper.xml
  11. 40 0
      mhfire-mapping/src/main/resources/mapper/mysql/SpOwnerMapper.xml
  12. 25 0
      mhfire-mapping/src/main/resources/mapper/mysql/TbAlarmMapper.xml
  13. 18 0
      mhfire-mapping/src/main/resources/mapper/mysql/TbInfoMapper.xml
  14. 173 0
      mhfire-model/src/main/java/com/bizmatics/mhfire/model/SpOwner.java
  15. 100 0
      mhfire-model/src/main/java/com/bizmatics/mhfire/model/SpOwnerCompany.java
  16. 109 0
      mhfire-model/src/main/java/com/bizmatics/mhfire/model/TbAlarm.java
  17. 73 0
      mhfire-model/src/main/java/com/bizmatics/mhfire/model/TbInfo.java
  18. 16 0
      mhfire-service/src/main/java/com/bizmatics/mhfire/service/SpOwnerCompanyService.java
  19. 16 0
      mhfire-service/src/main/java/com/bizmatics/mhfire/service/SpOwnerService.java
  20. 16 0
      mhfire-service/src/main/java/com/bizmatics/mhfire/service/TbAlarmService.java
  21. 16 0
      mhfire-service/src/main/java/com/bizmatics/mhfire/service/TbInfoService.java
  22. 6 2
      mhfire-service/src/main/java/com/bizmatics/mhfire/service/config/mqtt/MqttInConfig.java
  23. 76 0
      mhfire-service/src/main/java/com/bizmatics/mhfire/service/enums/TopListener.java
  24. 20 0
      mhfire-service/src/main/java/com/bizmatics/mhfire/service/impl/SpOwnerCompanyServiceImpl.java
  25. 20 0
      mhfire-service/src/main/java/com/bizmatics/mhfire/service/impl/SpOwnerServiceImpl.java
  26. 20 0
      mhfire-service/src/main/java/com/bizmatics/mhfire/service/impl/TbAlarmServiceImpl.java
  27. 20 0
      mhfire-service/src/main/java/com/bizmatics/mhfire/service/impl/TbInfoServiceImpl.java
  28. 33 43
      mhfire-service/src/main/java/com/bizmatics/mhfire/service/listener/MqttListener.java
  29. 18 0
      mhfire-service/src/main/java/com/bizmatics/mhfire/service/mqtt/MqttStrategy.java
  30. 26 0
      mhfire-service/src/main/java/com/bizmatics/mhfire/service/mqtt/SimpleContext.java
  31. 42 0
      mhfire-service/src/main/java/com/bizmatics/mhfire/service/mqtt/cy/CyStrategy.java
  32. 89 0
      mhfire-service/src/main/java/com/bizmatics/mhfire/service/mqtt/fire/FireStrategy.java
  33. 58 0
      mhfire-service/src/main/java/com/bizmatics/mhfire/service/mqtt/mh/MhStrategy.java
  34. 41 0
      mhfire-service/src/main/java/com/bizmatics/mhfire/service/vo/FireAlarmDevice.java
  35. 45 0
      mhfire-service/src/main/java/com/bizmatics/mhfire/service/vo/FireAlarmProperty.java
  36. 50 0
      mhfire-service/src/main/java/com/bizmatics/mhfire/service/vo/FireAlarmVO.java
  37. 21 0
      mhfire-service/src/main/java/com/bizmatics/mhfire/service/vo/MqttBaseVO.java

+ 4 - 4
mhfire-controller/src/main/java/com/bizmatics/mhfire/controller/MybatisGeneratorUtils.java

@@ -44,10 +44,10 @@
 //        //2、数据源配置
 //        //修改数据源
 //        DataSourceConfig dsc = new DataSourceConfig();
-//        dsc.setUrl("jdbc:mysql://101.133.214.75:3306/minhangsystem?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC&characterEncoding=utf8");
+//        dsc.setUrl("jdbc:mysql://101.133.214.75:3306/mhfire?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC&characterEncoding=utf8");
 //        dsc.setDriverName("com.mysql.jdbc.Driver");
-//        dsc.setUsername("root");
-//        dsc.setPassword("123456");
+//        dsc.setUsername("usky");
+//        dsc.setPassword("Yt#75Usky");
 //        mpg.setDataSource(dsc);
 //
 //        // 3、包配置
@@ -71,7 +71,7 @@
 //        // strategy.setTablePrefix("t_"); // 表名前缀
 //        strategy.setEntityLombokModel(true); //使用lombok
 //        //修改自己想要生成的表
-//        strategy.setInclude("wl_clxx");  // 逆向工程使用的表   如果要生成多个,这里可以传入String[]
+//        strategy.setInclude("sp_owner","sp_owner_company","tb_info","tb_alarm");  // 逆向工程使用的表   如果要生成多个,这里可以传入String[]
 //        mpg.setStrategy(strategy);
 //
 //        // 关闭默认 xml 生成,调整生成 至 根目录

+ 21 - 0
mhfire-controller/src/main/java/com/bizmatics/mhfire/controller/web/SpOwnerCompanyController.java

@@ -0,0 +1,21 @@
+package com.bizmatics.mhfire.controller.web;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author ya
+ * @since 2022-03-04
+ */
+@Controller
+@RequestMapping("/spOwnerCompany")
+public class SpOwnerCompanyController {
+
+}
+

+ 21 - 0
mhfire-controller/src/main/java/com/bizmatics/mhfire/controller/web/SpOwnerController.java

@@ -0,0 +1,21 @@
+package com.bizmatics.mhfire.controller.web;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ * <p>
+ *  前端控制器
+ * </p>
+ *
+ * @author ya
+ * @since 2022-03-04
+ */
+@Controller
+@RequestMapping("/spOwner")
+public class SpOwnerController {
+
+}
+

+ 21 - 0
mhfire-controller/src/main/java/com/bizmatics/mhfire/controller/web/TbAlarmController.java

@@ -0,0 +1,21 @@
+package com.bizmatics.mhfire.controller.web;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ * <p>
+ * 设备告警表 前端控制器
+ * </p>
+ *
+ * @author ya
+ * @since 2022-03-04
+ */
+@Controller
+@RequestMapping("/tbAlarm")
+public class TbAlarmController {
+
+}
+

+ 21 - 0
mhfire-controller/src/main/java/com/bizmatics/mhfire/controller/web/TbInfoController.java

@@ -0,0 +1,21 @@
+package com.bizmatics.mhfire.controller.web;
+
+
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.stereotype.Controller;
+
+/**
+ * <p>
+ * 设备心跳表 前端控制器
+ * </p>
+ *
+ * @author ya
+ * @since 2022-03-04
+ */
+@Controller
+@RequestMapping("/tbInfo")
+public class TbInfoController {
+
+}
+

+ 16 - 0
mhfire-mapping/src/main/java/com/bizmatics/mhfire/persistence/mapper/SpOwnerCompanyMapper.java

@@ -0,0 +1,16 @@
+package com.bizmatics.mhfire.persistence.mapper;
+
+import com.bizmatics.mhfire.model.SpOwnerCompany;
+import com.bizmatics.common.mvc.base.CrudMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author ya
+ * @since 2022-03-04
+ */
+public interface SpOwnerCompanyMapper extends CrudMapper<SpOwnerCompany> {
+
+}

+ 16 - 0
mhfire-mapping/src/main/java/com/bizmatics/mhfire/persistence/mapper/SpOwnerMapper.java

@@ -0,0 +1,16 @@
+package com.bizmatics.mhfire.persistence.mapper;
+
+import com.bizmatics.mhfire.model.SpOwner;
+import com.bizmatics.common.mvc.base.CrudMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author ya
+ * @since 2022-03-04
+ */
+public interface SpOwnerMapper extends CrudMapper<SpOwner> {
+
+}

+ 16 - 0
mhfire-mapping/src/main/java/com/bizmatics/mhfire/persistence/mapper/TbAlarmMapper.java

@@ -0,0 +1,16 @@
+package com.bizmatics.mhfire.persistence.mapper;
+
+import com.bizmatics.mhfire.model.TbAlarm;
+import com.bizmatics.common.mvc.base.CrudMapper;
+
+/**
+ * <p>
+ * 设备告警表 Mapper 接口
+ * </p>
+ *
+ * @author ya
+ * @since 2022-03-04
+ */
+public interface TbAlarmMapper extends CrudMapper<TbAlarm> {
+
+}

+ 16 - 0
mhfire-mapping/src/main/java/com/bizmatics/mhfire/persistence/mapper/TbInfoMapper.java

@@ -0,0 +1,16 @@
+package com.bizmatics.mhfire.persistence.mapper;
+
+import com.bizmatics.mhfire.model.TbInfo;
+import com.bizmatics.common.mvc.base.CrudMapper;
+
+/**
+ * <p>
+ * 设备心跳表 Mapper 接口
+ * </p>
+ *
+ * @author ya
+ * @since 2022-03-04
+ */
+public interface TbInfoMapper extends CrudMapper<TbInfo> {
+
+}

+ 27 - 0
mhfire-mapping/src/main/resources/mapper/mysql/SpOwnerCompanyMapper.xml

@@ -0,0 +1,27 @@
+<?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.bizmatics.mhfire.persistence.mapper.SpOwnerCompanyMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.bizmatics.mhfire.model.SpOwnerCompany">
+        <id column="id" property="id" />
+        <result column="owner_id" property="ownerId" />
+        <result column="owner_name" property="ownerName" />
+        <result column="owner_address" property="ownerAddress" />
+        <result column="owner_office" property="ownerOffice" />
+        <result column="owner_man" property="ownerMan" />
+        <result column="create_time" property="createTime" />
+        <result column="create_man" property="createMan" />
+        <result column="building_id" property="buildingId" />
+        <result column="xmlx" property="xmlx" />
+        <result column="rtmp" property="rtmp" />
+        <result column="hls" property="hls" />
+        <result column="h5" property="h5" />
+        <result column="data1" property="data1" />
+        <result column="data2" property="data2" />
+        <result column="data3" property="data3" />
+        <result column="contacts" property="contacts" />
+        <result column="contacts_phone" property="contactsPhone" />
+    </resultMap>
+
+</mapper>

+ 40 - 0
mhfire-mapping/src/main/resources/mapper/mysql/SpOwnerMapper.xml

@@ -0,0 +1,40 @@
+<?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.bizmatics.mhfire.persistence.mapper.SpOwnerMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.bizmatics.mhfire.model.SpOwner">
+        <id column="id" property="id" />
+        <result column="owner_code" property="ownerCode" />
+        <result column="owner_name" property="ownerName" />
+        <result column="unitinfo" property="unitinfo" />
+        <result column="louyu" property="louyu" />
+        <result column="sim" property="sim" />
+        <result column="maintainTime" property="maintainTime" />
+        <result column="dest_address" property="destAddress" />
+        <result column="addr1" property="addr1" />
+        <result column="addr2" property="addr2" />
+        <result column="addr3" property="addr3" />
+        <result column="address" property="address" />
+        <result column="posistion" property="posistion" />
+        <result column="install_time" property="installTime" />
+        <result column="install_man" property="installMan" />
+        <result column="dwtype" property="dwtype" />
+        <result column="owner_xh" property="ownerXh" />
+        <result column="s_interval" property="sInterval" />
+        <result column="community" property="community" />
+        <result column="company" property="company" />
+        <result column="rtmp" property="rtmp" />
+        <result column="hls" property="hls" />
+        <result column="html5" property="html5" />
+        <result column="danwei" property="danwei" />
+        <result column="owner_bl" property="ownerBl" />
+        <result column="push_param1" property="pushParam1" />
+        <result column="push_param2" property="pushParam2" />
+        <result column="push_param3" property="pushParam3" />
+        <result column="push_param4" property="pushParam4" />
+        <result column="login_param" property="loginParam" />
+        <result column="transfer_type" property="transferType" />
+    </resultMap>
+
+</mapper>

+ 25 - 0
mhfire-mapping/src/main/resources/mapper/mysql/TbAlarmMapper.xml

@@ -0,0 +1,25 @@
+<?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.bizmatics.mhfire.persistence.mapper.TbAlarmMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.bizmatics.mhfire.model.TbAlarm">
+        <id column="id" property="id" />
+        <result column="device_id" property="deviceId" />
+        <result column="create_time" property="createTime" />
+        <result column="alarm_time" property="alarmTime" />
+        <result column="device_name" property="deviceName" />
+        <result column="alarm_content" property="alarmContent" />
+        <result column="alarm_status" property="alarmStatus" />
+        <result column="remark" property="remark" />
+        <result column="property" property="property" />
+        <result column="alert_value" property="alertValue" />
+        <result column="status" property="status" />
+        <result column="alert_type" property="alertType" />
+        <result column="serial" property="serial" />
+        <result column="address" property="address" />
+        <result column="port" property="port" />
+        <result column="stuname" property="stuname" />
+    </resultMap>
+
+</mapper>

+ 18 - 0
mhfire-mapping/src/main/resources/mapper/mysql/TbInfoMapper.xml

@@ -0,0 +1,18 @@
+<?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.bizmatics.mhfire.persistence.mapper.TbInfoMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.bizmatics.mhfire.model.TbInfo">
+        <id column="id" property="id" />
+        <result column="device_id" property="deviceId" />
+        <result column="create_time" property="createTime" />
+        <result column="alarm_time" property="alarmTime" />
+        <result column="device_name" property="deviceName" />
+        <result column="alarm_content" property="alarmContent" />
+        <result column="alarm_status" property="alarmStatus" />
+        <result column="remark" property="remark" />
+        <result column="alarm_type" property="alarmType" />
+    </resultMap>
+
+</mapper>

+ 173 - 0
mhfire-model/src/main/java/com/bizmatics/mhfire/model/SpOwner.java

@@ -0,0 +1,173 @@
+package com.bizmatics.mhfire.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableField;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author ya
+ * @since 2022-03-04
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class SpOwner implements Serializable {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * id
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 单位编号
+     */
+    private String ownerCode;
+
+    /**
+     * 单位名称
+     */
+    private String ownerName;
+
+    /**
+     * 单元地址
+     */
+    private String unitinfo;
+
+    /**
+     * 楼层
+     */
+    private String louyu;
+
+    /**
+     * sim卡
+     */
+    private String sim;
+
+    /**
+     * 维保时间
+     */
+    @TableField("maintainTime")
+    private String maintainTime;
+
+    /**
+     * 对应方法
+     */
+    private Integer destAddress;
+
+    /**
+     * 省
+     */
+    private String addr1;
+
+    /**
+     * 市
+     */
+    private String addr2;
+
+    /**
+     * 区、县
+     */
+    private String addr3;
+
+    /**
+     * 地址
+     */
+    private String address;
+
+    /**
+     * 位置
+     */
+    private String posistion;
+
+    /**
+     * 安装时间
+     */
+    private LocalDateTime installTime;
+
+    /**
+     * 安装人
+     */
+    private String installMan;
+
+    /**
+     * 1火系统  2水系统 3烟感系统 4消防栓,5液位 6rtu 7电气火灾 8防火门 9气体灭火 10人脸识别 16视频监控 128井盖 
+     */
+    private Integer dwtype;
+
+    /**
+     * 型号 id,方法
+     */
+    private String ownerXh;
+
+    /**
+     * 间隔时间
+     */
+    private Integer sInterval;
+
+    /**
+     * 社区
+     */
+    private String community;
+
+    /**
+     * 所属单位
+     */
+    private String company;
+
+    private String rtmp;
+
+    private String hls;
+
+    private String html5;
+
+    private String danwei;
+
+    /**
+     * 倍率
+     */
+    private String ownerBl;
+
+    /**
+     * 报告推送参数1
+     */
+    private Integer pushParam1;
+
+    /**
+     * 报告推送参数2
+     */
+    private Integer pushParam2;
+
+    /**
+     * 报告推送参数3
+     */
+    private Integer pushParam3;
+
+    /**
+     * 报告推送参数4
+     */
+    private Integer pushParam4;
+
+    /**
+     * 登录参数Json格式存储
+     */
+    private String loginParam;
+
+    /**
+     * 传输类型
+     */
+    private String transferType;
+
+
+}

+ 100 - 0
mhfire-model/src/main/java/com/bizmatics/mhfire/model/SpOwnerCompany.java

@@ -0,0 +1,100 @@
+package com.bizmatics.mhfire.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author ya
+ * @since 2022-03-04
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class SpOwnerCompany implements Serializable {
+
+    private static final long serialVersionUID=1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Integer id;
+
+    /**
+     * 单位编号
+     */
+    private String ownerId;
+
+    /**
+     * 单位名称
+     */
+    private String ownerName;
+
+    private String ownerAddress;
+
+    /**
+     * 街道
+     */
+    private String ownerOffice;
+
+    private String ownerMan;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 创建人
+     */
+    private String createMan;
+
+    /**
+     * 所属建筑id
+     */
+    private String buildingId;
+
+    /**
+     * 交通,办公,酒店旅馆,
+     */
+    private String xmlx;
+
+    /**
+     * rtmp协议地址
+     */
+    private String rtmp;
+
+    /**
+     * hls协议地址
+     */
+    private String hls;
+
+    /**
+     * 微信视频地址
+     */
+    private String h5;
+
+    private String data1;
+
+    private String data2;
+
+    private String data3;
+
+    /**
+     * 联系人(责任人)
+     */
+    private String contacts;
+
+    /**
+     * 联系人手机号
+     */
+    private String contactsPhone;
+
+
+}

+ 109 - 0
mhfire-model/src/main/java/com/bizmatics/mhfire/model/TbAlarm.java

@@ -0,0 +1,109 @@
+package com.bizmatics.mhfire.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 设备告警表
+ * </p>
+ *
+ * @author ya
+ * @since 2022-03-04
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class TbAlarm implements Serializable {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * id
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 设备本地注册唯一编码
+     */
+    private String deviceId;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 告警时间
+     */
+    private Date alarmTime;
+
+    /**
+     * 告警设备名称
+     */
+    private String deviceName;
+
+    /**
+     * 告警内容
+     */
+    private String alarmContent;
+
+    /**
+     * 告警状态 0 未处理 1 已处理
+     */
+    private Integer alarmStatus;
+
+    /**
+     * 告警处理备注
+     */
+    private String remark;
+
+    /**
+     * 属性
+     */
+    private String property;
+
+    /**
+     * 内容
+     */
+    private String alertValue;
+
+    /**
+     * 状态
+     */
+    private String status;
+
+    /**
+     * 类型
+     */
+    private String alertType;
+
+    /**
+     * 序号
+     */
+    private String serial;
+
+    /**
+     * 地址
+     */
+    private String address;
+
+    /**
+     * 端口
+     */
+    private String port;
+
+    /**
+     * 设备状态名称
+     */
+    private String stuname;
+
+
+}

+ 73 - 0
mhfire-model/src/main/java/com/bizmatics/mhfire/model/TbInfo.java

@@ -0,0 +1,73 @@
+package com.bizmatics.mhfire.model;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.experimental.Accessors;
+
+/**
+ * <p>
+ * 设备心跳表
+ * </p>
+ *
+ * @author ya
+ * @since 2022-03-04
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@Accessors(chain = true)
+public class TbInfo implements Serializable {
+
+    private static final long serialVersionUID=1L;
+
+    /**
+     * id
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 设备本地注册唯一编码
+     */
+    private String deviceId;
+
+    /**
+     * 创建时间
+     */
+    private LocalDateTime createTime;
+
+    /**
+     * 心跳时间
+     */
+    private LocalDateTime alarmTime;
+
+    /**
+     * 设备名称
+     */
+    private String deviceName;
+
+    /**
+     * 心跳内容
+     */
+    private String alarmContent;
+
+    /**
+     * 心跳状态
+     */
+    private Integer alarmStatus;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 类型
+     */
+    private Integer alarmType;
+
+
+}

+ 16 - 0
mhfire-service/src/main/java/com/bizmatics/mhfire/service/SpOwnerCompanyService.java

@@ -0,0 +1,16 @@
+package com.bizmatics.mhfire.service;
+
+import com.bizmatics.mhfire.model.SpOwnerCompany;
+import com.bizmatics.common.mvc.base.CrudService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author ya
+ * @since 2022-03-04
+ */
+public interface SpOwnerCompanyService extends CrudService<SpOwnerCompany> {
+
+}

+ 16 - 0
mhfire-service/src/main/java/com/bizmatics/mhfire/service/SpOwnerService.java

@@ -0,0 +1,16 @@
+package com.bizmatics.mhfire.service;
+
+import com.bizmatics.mhfire.model.SpOwner;
+import com.bizmatics.common.mvc.base.CrudService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author ya
+ * @since 2022-03-04
+ */
+public interface SpOwnerService extends CrudService<SpOwner> {
+
+}

+ 16 - 0
mhfire-service/src/main/java/com/bizmatics/mhfire/service/TbAlarmService.java

@@ -0,0 +1,16 @@
+package com.bizmatics.mhfire.service;
+
+import com.bizmatics.mhfire.model.TbAlarm;
+import com.bizmatics.common.mvc.base.CrudService;
+
+/**
+ * <p>
+ * 设备告警表 服务类
+ * </p>
+ *
+ * @author ya
+ * @since 2022-03-04
+ */
+public interface TbAlarmService extends CrudService<TbAlarm> {
+
+}

+ 16 - 0
mhfire-service/src/main/java/com/bizmatics/mhfire/service/TbInfoService.java

@@ -0,0 +1,16 @@
+package com.bizmatics.mhfire.service;
+
+import com.bizmatics.mhfire.model.TbInfo;
+import com.bizmatics.common.mvc.base.CrudService;
+
+/**
+ * <p>
+ * 设备心跳表 服务类
+ * </p>
+ *
+ * @author ya
+ * @since 2022-03-04
+ */
+public interface TbInfoService extends CrudService<TbInfo> {
+
+}

+ 6 - 2
mhfire-service/src/main/java/com/bizmatics/mhfire/service/config/mqtt/MqttInConfig.java

@@ -1,5 +1,6 @@
 package com.bizmatics.mhfire.service.config.mqtt;
 
+import com.bizmatics.mhfire.service.enums.TopListener;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.context.annotation.Bean;
@@ -10,6 +11,8 @@ import org.springframework.integration.mqtt.inbound.MqttPahoMessageDrivenChannel
 import org.springframework.integration.mqtt.support.DefaultPahoMessageConverter;
 import org.springframework.messaging.MessageChannel;
 
+import java.util.List;
+
 /**
  * @author yq
  * @date 2021/11/1 16:37
@@ -35,10 +38,11 @@ public class MqttInConfig {
      */
     @Bean
     public MessageProducer inbound() {
-        //创建消息适配器 TODO 这里一定要注意,多端部署时id不能重复
+        List<TopListener> parse = TopListener.parse(1);
+        String[] tops = parse.stream().map(TopListener::getCode).toArray(String[]::new);
         String clientId = "h-backend-mqtt-in-" + System.currentTimeMillis();
         MqttPahoMessageDrivenChannelAdapter adapter = new MqttPahoMessageDrivenChannelAdapter(clientId,
-                mqttBaseConfig.mqttClientFactory(), mqttBaseConfig.getMsgTopic().split(","));
+                mqttBaseConfig.mqttClientFactory(),tops);
         adapter.setCompletionTimeout(mqttBaseConfig.getCompletionTimeout());
         adapter.setConverter(new DefaultPahoMessageConverter());
         adapter.setQos(2);

+ 76 - 0
mhfire-service/src/main/java/com/bizmatics/mhfire/service/enums/TopListener.java

@@ -0,0 +1,76 @@
+package com.bizmatics.mhfire.service.enums;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author yq
+ * @date 2021/12/31 11:11
+ */
+public enum  TopListener {
+
+    /**
+     * 城运对接
+     */
+    MH_WATER_INFO("fireInfo","mh/water/info",1),
+    MH_WATER_ALERT("fireInfo","mh/water/alert",1),
+    MH_WATER_STATISTICS("fireInfo","mh/water/statistics",1),
+    DEVICE_INFO("fireInfo","device/info",1),
+    DEVICE_ALERT("fireInfo","device/alert",1),
+    DEVICE_DETAIL("fireInfo","device/detail",1),
+    DEVICE_AJ("fireInfo","device/aj",1),
+
+    /**
+     * 全部设备对接
+     */
+    FIRE_INFO("fireInfo","/usky/ytDP0001/+/+/info",1),
+    FIRE_ALERT("fireAlarm","/usky/ytDP0001/+/+/alarm",1),
+    WATER_INFO("waterInfo","/usky/ytDP0002/+/+/info",1),
+    WATER_ALERT("waterAlert","/usky/ytDP0002/+/+/alarm",1),
+    LIQUID_INFO("waterAlert","/usky/ytDP0005/+/+/info",1),
+    LIQUID_ALERT("waterAlert","/usky/ytDP0005/+/+/alarm",1),
+    RTU_INFO("waterAlert","/usky/ytDP0006/+/+/info",1),
+    RTU_ALERT("waterAlert","/usky/ytDP0006/+/+/alarm",1),
+    VIDEO_ALERT("waterAlert","/usky/ytCamCore/+/+/alarm",1);
+
+
+    private String name;
+    private String code;
+    //0发送队列,1监听队列2都是
+    private Integer type;
+
+    TopListener(String name,String code,Integer type){
+        this.name = name;
+        this.code = code;
+        this.type = type;
+    }
+
+    public static TopListener parse(String code){
+        TopListener topListener = null;
+        for (TopListener t:TopListener.values()) {
+            if (t.getCode().equals(code)){
+                topListener = t;
+                break;
+            }
+        }
+        return topListener;
+    }
+    public static List<TopListener> parse(Integer type){
+        List<TopListener> listeners = new ArrayList<>();
+        for (TopListener t:TopListener.values()) {
+            if (t.getType().equals(type)){
+                listeners.add(t);
+            }
+        }
+        return listeners;
+    }
+    public String getCode(){
+        return code;
+    }
+    public String getName(){
+        return name;
+    }
+    public Integer getType(){
+        return type;
+    }
+}

+ 20 - 0
mhfire-service/src/main/java/com/bizmatics/mhfire/service/impl/SpOwnerCompanyServiceImpl.java

@@ -0,0 +1,20 @@
+package com.bizmatics.mhfire.service.impl;
+
+import com.bizmatics.mhfire.model.SpOwnerCompany;
+import com.bizmatics.mhfire.persistence.mapper.SpOwnerCompanyMapper;
+import com.bizmatics.mhfire.service.SpOwnerCompanyService;
+import com.bizmatics.common.mvc.base.AbstractCrudService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author ya
+ * @since 2022-03-04
+ */
+@Service
+public class SpOwnerCompanyServiceImpl extends AbstractCrudService<SpOwnerCompanyMapper, SpOwnerCompany> implements SpOwnerCompanyService {
+
+}

+ 20 - 0
mhfire-service/src/main/java/com/bizmatics/mhfire/service/impl/SpOwnerServiceImpl.java

@@ -0,0 +1,20 @@
+package com.bizmatics.mhfire.service.impl;
+
+import com.bizmatics.mhfire.model.SpOwner;
+import com.bizmatics.mhfire.persistence.mapper.SpOwnerMapper;
+import com.bizmatics.mhfire.service.SpOwnerService;
+import com.bizmatics.common.mvc.base.AbstractCrudService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author ya
+ * @since 2022-03-04
+ */
+@Service
+public class SpOwnerServiceImpl extends AbstractCrudService<SpOwnerMapper, SpOwner> implements SpOwnerService {
+
+}

+ 20 - 0
mhfire-service/src/main/java/com/bizmatics/mhfire/service/impl/TbAlarmServiceImpl.java

@@ -0,0 +1,20 @@
+package com.bizmatics.mhfire.service.impl;
+
+import com.bizmatics.mhfire.model.TbAlarm;
+import com.bizmatics.mhfire.persistence.mapper.TbAlarmMapper;
+import com.bizmatics.mhfire.service.TbAlarmService;
+import com.bizmatics.common.mvc.base.AbstractCrudService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 设备告警表 服务实现类
+ * </p>
+ *
+ * @author ya
+ * @since 2022-03-04
+ */
+@Service
+public class TbAlarmServiceImpl extends AbstractCrudService<TbAlarmMapper, TbAlarm> implements TbAlarmService {
+
+}

+ 20 - 0
mhfire-service/src/main/java/com/bizmatics/mhfire/service/impl/TbInfoServiceImpl.java

@@ -0,0 +1,20 @@
+package com.bizmatics.mhfire.service.impl;
+
+import com.bizmatics.mhfire.model.TbInfo;
+import com.bizmatics.mhfire.persistence.mapper.TbInfoMapper;
+import com.bizmatics.mhfire.service.TbInfoService;
+import com.bizmatics.common.mvc.base.AbstractCrudService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 设备心跳表 服务实现类
+ * </p>
+ *
+ * @author ya
+ * @since 2022-03-04
+ */
+@Service
+public class TbInfoServiceImpl extends AbstractCrudService<TbInfoMapper, TbInfo> implements TbInfoService {
+
+}

+ 33 - 43
mhfire-service/src/main/java/com/bizmatics/mhfire/service/listener/MqttListener.java

@@ -1,11 +1,9 @@
 package com.bizmatics.mhfire.service.listener;
 
-import com.bizmatics.common.spring.util.JsonUtils;
-import com.bizmatics.mhfire.model.*;
-import com.bizmatics.mhfire.service.*;
-import com.bizmatics.mhfire.service.api.mhWater.OneCardApi;
 import com.bizmatics.mhfire.service.config.mqtt.MqttInConfig;
-import com.fasterxml.jackson.core.type.TypeReference;
+import com.bizmatics.mhfire.service.enums.TopListener;
+import com.bizmatics.mhfire.service.mqtt.SimpleContext;
+import com.bizmatics.mhfire.service.vo.MqttBaseVO;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
@@ -14,9 +12,6 @@ import org.springframework.integration.annotation.ServiceActivator;
 import org.springframework.messaging.MessageHandler;
 import org.springframework.stereotype.Component;
 
-import java.util.List;
-import java.util.Map;
-
 /**
  * @author yq
  * @date 2021/11/3 8:13
@@ -25,21 +20,11 @@ import java.util.Map;
 @Slf4j
 @Component
 public class MqttListener {
-    @Autowired
-    private OneCardApi oneCardApi;
-    @Autowired
-    private WaterAjService waterAjService;
 
     public static final String MESSAGE_NAME = "messageInput";
-    @Autowired
-    private DeviceService deviceService;
-    @Autowired
-    private DeviceInfoService deviceInfoService;
-    @Autowired
-    private DeviceAlertService deviceAlertService;
-    @Autowired
-    private DeviceAjService deviceAjService;
 
+    @Autowired
+    private SimpleContext simpleContext;
     /**
      * 处理消息-消费者
      * @return
@@ -48,35 +33,40 @@ public class MqttListener {
     @ServiceActivator(inputChannel = MqttInConfig.CHANNEL_NAME_INPUT)
     public MessageHandler handler() {
         return message -> {
-            log.info("mqtt-----接受到的消息"+message);
             String payload = message.getPayload().toString();
             //进行接口推送
             Object mqttReceivedTopic = message.getHeaders().get("mqtt_receivedTopic");
             if (null != mqttReceivedTopic){
                 String topic = mqttReceivedTopic.toString();
-                Map map = JsonUtils.fromJson(payload, Map.class);
-                if ("mh/water/info".equals(topic)){
-                    oneCardApi.callInfoApi(map);
-                }else if ("mh/water/alert".equals(topic)){
-                    oneCardApi.callAlarmApi(map);
-                }else if ("mh/water/statistics".equals(topic)){
-                    WaterAj waterAj = JsonUtils.fromJson(payload, WaterAj.class);
-                    waterAjService.saveOrUpdate(waterAj);
-                }else if ("device/detail".equals(topic)){
-                    //设备录入
-                    List<Device> devices = JsonUtils.fromJson(payload, new TypeReference<List<Device>>() {
-                    });
-                    deviceService.saveOrUpdateBatch(devices);
-                }else if ("device/info".equals(topic)){
-                    DeviceInfo deviceInfo = JsonUtils.fromJson(payload, DeviceInfo.class);
-                    deviceInfoService.save(deviceInfo);
-                }else if ("device/alert".equals(topic)){
-                    DeviceAlert deviceAlert = JsonUtils.fromJson(payload, DeviceAlert.class);
-                    deviceAlertService.save(deviceAlert);
-                }else if ("device/aj".equals(topic)){
-                    DeviceAj deviceAj = JsonUtils.fromJson(payload, DeviceAj.class);
-                    deviceAjService.saveOrUpdate(deviceAj);
+                MqttBaseVO mqttBaseVO = new MqttBaseVO();
+                mqttBaseVO.setTopic(topic);
+                if (TopListener.MH_WATER_INFO.getCode().equals(topic)){
+                    mqttBaseVO.setDescribe("cy");
+                    mqttBaseVO.setData(payload);
+                }else if (TopListener.MH_WATER_ALERT.getCode().equals(topic)){
+                    mqttBaseVO.setDescribe("cy");
+                    mqttBaseVO.setData(payload);
+                }else if (TopListener.MH_WATER_STATISTICS.getCode().equals(topic)){
+                    mqttBaseVO.setDescribe("cy");
+                    mqttBaseVO.setData(payload);
+                }else if (TopListener.DEVICE_DETAIL.getCode().equals(topic)){
+                    mqttBaseVO.setDescribe("mhwater");
+                    mqttBaseVO.setData(payload);
+                }else if (TopListener.DEVICE_INFO.getCode().equals(topic)){
+                    mqttBaseVO.setDescribe("mhwater");
+                    mqttBaseVO.setData(payload);
+                }else if (TopListener.DEVICE_ALERT.getCode().equals(topic)){
+                    mqttBaseVO.setDescribe("mhwater");
+                    mqttBaseVO.setData(payload);
+                }else if (TopListener.DEVICE_AJ.getCode().equals(topic)){
+                    mqttBaseVO.setDescribe("mhwater");
+                    mqttBaseVO.setData(payload);
+                }else {
+                    mqttBaseVO.setDescribe("fireInfoAndAlarm");
+                    mqttBaseVO.setData(payload);
                 }
+                //统一处理数据
+                simpleContext.getResource(mqttBaseVO);
             }
         };
     }

+ 18 - 0
mhfire-service/src/main/java/com/bizmatics/mhfire/service/mqtt/MqttStrategy.java

@@ -0,0 +1,18 @@
+package com.bizmatics.mhfire.service.mqtt;
+
+
+import com.bizmatics.mhfire.service.vo.MqttBaseVO;
+
+/**
+ * 策略类
+ * @author yq
+ * @date 2021/11/3 8:27
+ */
+public interface MqttStrategy {
+    /**
+     * 处理消息(策略模式由子类实现)
+     * @param mqttBaseVO
+     * @return
+     */
+    String disposeMessage(MqttBaseVO mqttBaseVO);
+}

+ 26 - 0
mhfire-service/src/main/java/com/bizmatics/mhfire/service/mqtt/SimpleContext.java

@@ -0,0 +1,26 @@
+package com.bizmatics.mhfire.service.mqtt;
+
+
+import com.bizmatics.mhfire.service.vo.MqttBaseVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * 中间处理消息转发
+ */
+@Service
+public class SimpleContext {
+    @Autowired
+    private final Map<String, MqttStrategy> strategyMap = new ConcurrentHashMap<>();
+
+    public SimpleContext(Map<String, MqttStrategy> strategyMap) {
+        strategyMap.forEach(this.strategyMap::put);
+    }
+
+    public String getResource(MqttBaseVO mqttBaseVO){
+        return strategyMap.get(mqttBaseVO.getDescribe()).disposeMessage(mqttBaseVO);
+    }
+}

+ 42 - 0
mhfire-service/src/main/java/com/bizmatics/mhfire/service/mqtt/cy/CyStrategy.java

@@ -0,0 +1,42 @@
+package com.bizmatics.mhfire.service.mqtt.cy;
+
+import com.bizmatics.common.spring.util.JsonUtils;
+import com.bizmatics.mhfire.model.WaterAj;
+import com.bizmatics.mhfire.service.WaterAjService;
+import com.bizmatics.mhfire.service.api.mhWater.OneCardApi;
+import com.bizmatics.mhfire.service.enums.TopListener;
+import com.bizmatics.mhfire.service.mqtt.MqttStrategy;
+import com.bizmatics.mhfire.service.vo.MqttBaseVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Map;
+
+/**
+ * @author yq
+ * @date 2022/3/4 15:07
+ */
+@Service("cy")
+public class CyStrategy implements MqttStrategy {
+
+
+    @Autowired
+    private OneCardApi oneCardApi;
+    @Autowired
+    private WaterAjService waterAjService;
+    @Override
+    public String disposeMessage(MqttBaseVO mqttBaseVO) {
+        String topic = mqttBaseVO.getTopic();
+        Map map = JsonUtils.fromJson(mqttBaseVO.getData().toString(), Map.class);
+        if (TopListener.MH_WATER_INFO.getCode().equals(topic)){
+            oneCardApi.callInfoApi(map);
+        }else if (TopListener.MH_WATER_ALERT.getCode().equals(topic)){
+            oneCardApi.callAlarmApi(map);
+        }else if (TopListener.MH_WATER_STATISTICS.getCode().equals(topic)){
+            WaterAj waterAj = JsonUtils.fromJson(mqttBaseVO.getData().toString(), WaterAj.class);
+            waterAjService.saveOrUpdate(waterAj);
+        }
+        return null;
+
+    }
+}

+ 89 - 0
mhfire-service/src/main/java/com/bizmatics/mhfire/service/mqtt/fire/FireStrategy.java

@@ -0,0 +1,89 @@
+package com.bizmatics.mhfire.service.mqtt.fire;
+
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.bizmatics.common.core.util.BeanMapperUtils;
+import com.bizmatics.common.spring.util.JsonUtils;
+import com.bizmatics.mhfire.model.SpOwnerCompany;
+import com.bizmatics.mhfire.model.TbAlarm;
+import com.bizmatics.mhfire.service.SpOwnerCompanyService;
+import com.bizmatics.mhfire.service.TbAlarmService;
+import com.bizmatics.mhfire.service.TbInfoService;
+import com.bizmatics.mhfire.service.mqtt.MqttStrategy;
+import com.bizmatics.mhfire.service.vo.FireAlarmProperty;
+import com.bizmatics.mhfire.service.vo.FireAlarmVO;
+import com.bizmatics.mhfire.service.vo.MqttBaseVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @author yq
+ * @date 2021/11/9 17:03
+ */
+@Service("fireInfoAndAlarm")
+public class FireStrategy implements MqttStrategy {
+    @Autowired
+    private TbAlarmService tbAlarmService;
+    @Autowired
+    private TbInfoService tbInfoService;
+    @Autowired
+    private SpOwnerCompanyService spOwnerCompanyService;
+
+    @Override
+    public String disposeMessage(MqttBaseVO mqttBaseVO) {
+        LambdaQueryWrapper<SpOwnerCompany> queryWrapper = Wrappers.lambdaQuery();
+        queryWrapper.select(SpOwnerCompany::getOwnerId);
+        List<SpOwnerCompany> list = spOwnerCompanyService.list(queryWrapper);
+        String topic = mqttBaseVO.getTopic();
+        topic = topic.split("/")[3];
+        String finalTopic = topic;
+        list.stream().filter(s -> s.getOwnerId().equals(finalTopic))
+                .findAny().ifPresent(s ->{
+            FireAlarmVO fireAlarmVo = JsonUtils.fromJson(mqttBaseVO.getData().toString(), FireAlarmVO.class);
+            TbAlarm tbAlarm = this.enhanceData(fireAlarmVo);
+            if ("ALARM".equals(fireAlarmVo.getType())){
+                tbAlarmService.save(tbAlarm);
+
+            }else if ("STATE".equals(fireAlarmVo.getType())){
+//            LambdaUpdateWrapper<DeviceStatus> updateWrapper = Wrappers.lambdaUpdate();
+//            updateWrapper.set(DeviceStatus::getDevicestatus,fireAlarmVo.getDevState())
+//                    .eq(DeviceStatus::getDeviceid,fireAlarmVo.getDevId());
+//            deviceStatusService.update(updateWrapper);
+            }
+        } );
+
+        return null;
+    }
+
+    /**
+     * 增强数据
+     * @return
+     */
+    public TbAlarm enhanceData(FireAlarmVO fireAlarmVO){
+        TbAlarm tbAlarm = new TbAlarm();
+        tbAlarm.setCreateTime(new Date());
+        tbAlarm.setDeviceId(fireAlarmVO.getDevId());
+        tbAlarm.setDeviceName(fireAlarmVO.getDeviceName());
+        tbAlarm.setAlarmTime(new Date());
+        if ("ALARM".equals(fireAlarmVO.getType())){
+            List<FireAlarmProperty> dp = fireAlarmVO.getAlarams().get(0).getDp();
+            if (CollectionUtils.isNotEmpty(dp)){
+                BeanMapperUtils.copy(dp.get(0),tbAlarm);
+            }
+        }else {
+            tbAlarm.setAlarmContent(JsonUtils.toJson(fireAlarmVO));
+        }
+        return tbAlarm;
+    }
+
+    public static void main(String[] args) {
+        String topic = "/usky/ytDP0001/+/+/info";
+
+        String[] split = topic.split("/");
+        System.out.println(split[3]);
+    }
+}

+ 58 - 0
mhfire-service/src/main/java/com/bizmatics/mhfire/service/mqtt/mh/MhStrategy.java

@@ -0,0 +1,58 @@
+package com.bizmatics.mhfire.service.mqtt.mh;
+
+import com.bizmatics.common.spring.util.JsonUtils;
+import com.bizmatics.mhfire.model.Device;
+import com.bizmatics.mhfire.model.DeviceAj;
+import com.bizmatics.mhfire.model.DeviceAlert;
+import com.bizmatics.mhfire.model.DeviceInfo;
+import com.bizmatics.mhfire.service.DeviceAjService;
+import com.bizmatics.mhfire.service.DeviceAlertService;
+import com.bizmatics.mhfire.service.DeviceInfoService;
+import com.bizmatics.mhfire.service.DeviceService;
+import com.bizmatics.mhfire.service.enums.TopListener;
+import com.bizmatics.mhfire.service.mqtt.MqttStrategy;
+import com.bizmatics.mhfire.service.vo.MqttBaseVO;
+import com.fasterxml.jackson.core.type.TypeReference;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @author yq
+ * @date 2022/3/4 15:07
+ */
+@Service("mhwater")
+public class MhStrategy implements MqttStrategy {
+
+    @Autowired
+    private DeviceService deviceService;
+    @Autowired
+    private DeviceInfoService deviceInfoService;
+    @Autowired
+    private DeviceAlertService deviceAlertService;
+    @Autowired
+    private DeviceAjService deviceAjService;
+    @Override
+    public String disposeMessage(MqttBaseVO mqttBaseVO) {
+
+        String topic = mqttBaseVO.getTopic();
+        String payload = mqttBaseVO.getData().toString();
+        if (TopListener.DEVICE_DETAIL.getCode().equals(topic)){
+            //设备录入
+            List<Device> devices = JsonUtils.fromJson(payload, new TypeReference<List<Device>>() {
+            });
+            deviceService.saveOrUpdateBatch(devices);
+        }else if (TopListener.DEVICE_INFO.getCode().equals(topic)){
+            DeviceInfo deviceInfo = JsonUtils.fromJson(payload, DeviceInfo.class);
+            deviceInfoService.save(deviceInfo);
+        }else if (TopListener.DEVICE_ALERT.getCode().equals(topic)){
+            DeviceAlert deviceAlert = JsonUtils.fromJson(payload, DeviceAlert.class);
+            deviceAlertService.save(deviceAlert);
+        }else if (TopListener.DEVICE_AJ.getCode().equals(topic)){
+            DeviceAj deviceAj = JsonUtils.fromJson(payload, DeviceAj.class);
+            deviceAjService.saveOrUpdate(deviceAj);
+        }
+        return null;
+    }
+}

+ 41 - 0
mhfire-service/src/main/java/com/bizmatics/mhfire/service/vo/FireAlarmDevice.java

@@ -0,0 +1,41 @@
+package com.bizmatics.mhfire.service.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 告警设备
+ * @author yq
+ * @date 2021/11/10 8:11
+ */
+@Data
+public class FireAlarmDevice {
+    /**
+     * 设备属性集合
+     */
+    private List<FireAlarmProperty> dp;
+
+    /**
+     * 设备名称
+     */
+    private String deviceName;
+    /**
+     * 时间
+     */
+    private String timeStamp;
+    /**
+     * 设备类型
+     */
+    private String deviceType;
+    /**
+     *设备型号
+     */
+    private String deviceModel;
+    /**
+     * 设备id
+     */
+    private String devId;
+
+
+}

+ 45 - 0
mhfire-service/src/main/java/com/bizmatics/mhfire/service/vo/FireAlarmProperty.java

@@ -0,0 +1,45 @@
+package com.bizmatics.mhfire.service.vo;
+
+import lombok.Data;
+
+/**
+ * 告警设备属性
+ * @author yq
+ * @date 2021/11/10 8:08
+ */
+@Data
+public class FireAlarmProperty {
+
+    /**
+     * 属性
+     */
+    private String  property;
+    /**
+     * value
+     */
+    private String  alertValue;
+    /**
+     * 状态
+     */
+    private String  status;
+    /**
+     * 报警内容运行状态
+     */
+    private String  alertType;
+    /**
+     * 序号
+     */
+    private String  serial;
+    /**
+     * 地址
+     */
+    private String  address;
+    /**
+     * 端口
+     */
+    private String  port;
+    /**
+     * 设备状态名称
+     */
+    private String  stuname;
+}

+ 50 - 0
mhfire-service/src/main/java/com/bizmatics/mhfire/service/vo/FireAlarmVO.java

@@ -0,0 +1,50 @@
+package com.bizmatics.mhfire.service.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * 火灾告警心跳信息
+ * @author yq
+ * @date 2021/11/10 8:06
+ */
+@Data
+public class FireAlarmVO {
+    /**
+     * 设备编号
+     */
+    private String devId;
+
+    /**
+     *传输方式
+     */
+    private String connType;
+    /**
+     * 设备名称
+      */
+    private String deviceName;
+    /**
+     * 告警类型心跳或者告警
+     */
+    private String type;
+    /**
+     * 时间戳
+      */
+    private String timeStamp;
+
+    /**
+     * 心跳设备信息
+     */
+    private List<FireAlarmDevice> devs;
+
+
+    /**
+     * 告警设备信息
+     */
+    private List<FireAlarmDevice> alarams;
+    /**
+     * 设备状态
+      */
+    private Integer devState;
+}

+ 21 - 0
mhfire-service/src/main/java/com/bizmatics/mhfire/service/vo/MqttBaseVO.java

@@ -0,0 +1,21 @@
+package com.bizmatics.mhfire.service.vo;
+
+import lombok.Data;
+
+/**
+ * @author yq
+ * @date 2021/11/3 8:32
+ */
+@Data
+public class MqttBaseVO {
+    /**
+     * 接口描述
+     */
+    private String describe;
+
+    private String topic;
+    /**
+     * 数据内容
+      */
+    private Object data;
+}