From a5bd3f23a72d860e788f13f5f0906dbea47a7141 Mon Sep 17 00:00:00 2001 From: liwenxuan <1298531568@qq.com> Date: Thu, 27 Feb 2025 14:08:09 +0800 Subject: [PATCH] 4 --- pom.xml | 10 + .../com/hxjt/dataupload/enums/AlarmType.java | 47 +++++ .../com/hxjt/dataupload/enums/UserType.java | 38 ++++ .../model/entity/rydw/AlarmInfoHx.java | 174 ++++++++++++++++++ .../model/entity/rydw/AlarmInfoIot.java | 29 +++ .../model/entity/rydw/AreaUserInfoHx.java | 139 ++++++++++++++ .../model/entity/rydw/AreaUserInfoIot.java | 29 +++ .../model/entity/rydw/DeviceInfoHx.java | 125 +++++++++++++ .../model/entity/rydw/DeviceInfoIot.java | 29 +++ .../model/entity/rydw/UserBaseInfo.java | 101 ++++++++++ .../model/entity/rydw/UserBaseInfoIot.java | 29 +++ .../hxjt/dataupload/mqtt/MqttCallback.java | 59 ++++++ .../com/hxjt/dataupload/mqtt/MqttClient.java | 101 ++++++++++ .../com/hxjt/dataupload/mqtt/MqttConfig.java | 121 ++++++++++++ .../com/hxjt/dataupload/mqtt/RespObject.java | 96 ++++++++++ 15 files changed, 1127 insertions(+) create mode 100644 src/main/java/com/hxjt/dataupload/enums/AlarmType.java create mode 100644 src/main/java/com/hxjt/dataupload/enums/UserType.java create mode 100644 src/main/java/com/hxjt/dataupload/model/entity/rydw/AlarmInfoHx.java create mode 100644 src/main/java/com/hxjt/dataupload/model/entity/rydw/AlarmInfoIot.java create mode 100644 src/main/java/com/hxjt/dataupload/model/entity/rydw/AreaUserInfoHx.java create mode 100644 src/main/java/com/hxjt/dataupload/model/entity/rydw/AreaUserInfoIot.java create mode 100644 src/main/java/com/hxjt/dataupload/model/entity/rydw/DeviceInfoHx.java create mode 100644 src/main/java/com/hxjt/dataupload/model/entity/rydw/DeviceInfoIot.java create mode 100644 src/main/java/com/hxjt/dataupload/model/entity/rydw/UserBaseInfo.java create mode 100644 src/main/java/com/hxjt/dataupload/model/entity/rydw/UserBaseInfoIot.java create mode 100644 src/main/java/com/hxjt/dataupload/mqtt/MqttCallback.java create mode 100644 src/main/java/com/hxjt/dataupload/mqtt/MqttClient.java create mode 100644 src/main/java/com/hxjt/dataupload/mqtt/MqttConfig.java create mode 100644 src/main/java/com/hxjt/dataupload/mqtt/RespObject.java diff --git a/pom.xml b/pom.xml index 7832f13..ac48dae 100644 --- a/pom.xml +++ b/pom.xml @@ -146,6 +146,16 @@ javase 3.3.3 + + + org.springframework.integration + spring-integration-mqtt + + + org.springframework.boot + spring-boot-configuration-processor + true + diff --git a/src/main/java/com/hxjt/dataupload/enums/AlarmType.java b/src/main/java/com/hxjt/dataupload/enums/AlarmType.java new file mode 100644 index 0000000..6fc957d --- /dev/null +++ b/src/main/java/com/hxjt/dataupload/enums/AlarmType.java @@ -0,0 +1,47 @@ +package com.hxjt.dataupload.enums; + +public enum AlarmType { + ALARM_1("1","禁区告警-区域"), + ALARM_2("2","超员告警-区域"), + ALARM_3("3","滞留告警-区域"), + ALARM_4("4","区域过短-区域"), + ALARM_5("5","禁静止超时-区域"), + ALARM_6("6","SOS"), + ALARM_7("7","闯入告警-围栏"), + ALARM_8("8","脱岗告警-围栏"), + ALARM_13("13","车辆超速"), + ALARM_14("14","人员卡充电告警"), + ALARM_15("15","缺员告警-区域"), + ALARM_16("16","脱岗告警-区域"), + ALARM_17("17","车辆路线偏移"), + ALARM_18("18","违规告警"), + ALARM_19("19","二道门离厂告警"); + + + private final String alarmCode; + + private final String alarmContent; + + AlarmType(String alarmCode, String alarmContent) { + this.alarmCode = alarmCode; + this.alarmContent = alarmContent; + } + + public String getAlarmCode() { + return alarmCode; + } + + public String getAlarmContent() { + return alarmContent; + } + + public static String getContentByCode(String code) { + for (com.hxjt.dataupload.enums.AlarmType objEnum : com.hxjt.dataupload.enums.AlarmType.values()) { + if(objEnum.getAlarmCode().equals(code)) { + return objEnum.getAlarmContent(); + } + } + return null; + } + +} diff --git a/src/main/java/com/hxjt/dataupload/enums/UserType.java b/src/main/java/com/hxjt/dataupload/enums/UserType.java new file mode 100644 index 0000000..570226c --- /dev/null +++ b/src/main/java/com/hxjt/dataupload/enums/UserType.java @@ -0,0 +1,38 @@ +package com.hxjt.dataupload.enums; + +public enum UserType { + + ALARM_0("0","在职员工"), + ALARM_1("1","临时访客"), + ALARM_2("2","承包商员工"), + ALARM_3("3","物品"), + ALARM_4("4","车辆"), + ALARM_5("5","司机"); + + private final String alarmCode; + + private final String alarmContent; + + UserType(String alarmCode, String alarmContent) { + this.alarmCode = alarmCode; + this.alarmContent = alarmContent; + } + + public String getAlarmCode() { + return alarmCode; + } + + public String getAlarmContent() { + return alarmContent; + } + + public static String getContentByCode(String code) { + for (com.hxjt.dataupload.enums.UserType objEnum : com.hxjt.dataupload.enums.UserType.values()) { + if(objEnum.getAlarmCode().equals(code)) { + return objEnum.getAlarmContent(); + } + } + return null; + } + +} diff --git a/src/main/java/com/hxjt/dataupload/model/entity/rydw/AlarmInfoHx.java b/src/main/java/com/hxjt/dataupload/model/entity/rydw/AlarmInfoHx.java new file mode 100644 index 0000000..06a70e5 --- /dev/null +++ b/src/main/java/com/hxjt/dataupload/model/entity/rydw/AlarmInfoHx.java @@ -0,0 +1,174 @@ +package com.hxjt.dataupload.model.entity.rydw; + + +public class AlarmInfoHx { + /** + * 唯一标示 + */ + private String uniqueId; + /** + * 企业容器id + */ + private String containerId ="ningyanghuagongchany"; + /** + * 设备编号 + */ + private String deviceCode; + /** + * 告警类型 + */ + private String alarmType; + /** + * 告警内容 + */ + private String alarmContent; + /** + * 楼层ID + */ + private String layerId; + /** + * 一级区域id + */ + private String firAreaId; + /** + * 一级区域名称 + */ + private String firAreaName; + /** + * 二级区域id + */ + private String secAreaId; + /** + * 二级区域名称 + */ + private String secAreaName; + /** + * 纬度 + */ + private Double x; + /** + * 经度 + */ + private Double y; + /** + * 定位时间:yyyy-MM-dd HH:mm:ss + */ + private String dateTime; + /** + * 处理状态:0:待处理,1:已处理 + */ + private String dealStatus; + + + public String getUniqueId() { + return uniqueId; + } + + public void setUniqueId(String uniqueId) { + this.uniqueId = uniqueId; + } + + public String getContainerId() { + return containerId; + } + + public void setContainerId(String containerId) { + this.containerId = containerId; + } + + public String getDeviceCode() { + return deviceCode; + } + + public void setDeviceCode(String deviceCode) { + this.deviceCode = deviceCode; + } + + public String getAlarmType() { + return alarmType; + } + + public void setAlarmType(String alarmType) { + this.alarmType = alarmType; + } + + public String getAlarmContent() { + return alarmContent; + } + + public void setAlarmContent(String alarmContent) { + this.alarmContent = alarmContent; + } + + public String getLayerId() { + return layerId; + } + + public void setLayerId(String layerId) { + this.layerId = layerId; + } + + public String getFirAreaId() { + return firAreaId; + } + + public void setFirAreaId(String firAreaId) { + this.firAreaId = firAreaId; + } + + public String getFirAreaName() { + return firAreaName; + } + + public void setFirAreaName(String firAreaName) { + this.firAreaName = firAreaName; + } + + public String getSecAreaId() { + return secAreaId; + } + + public void setSecAreaId(String secAreaId) { + this.secAreaId = secAreaId; + } + + public String getSecAreaName() { + return secAreaName; + } + + public void setSecAreaName(String secAreaName) { + this.secAreaName = secAreaName; + } + + public Double getX() { + return x; + } + + public void setX(Double x) { + this.x = x; + } + + public Double getY() { + return y; + } + + public void setY(Double y) { + this.y = y; + } + + public String getDateTime() { + return dateTime; + } + + public void setDateTime(String dateTime) { + this.dateTime = dateTime; + } + + public String getDealStatus() { + return dealStatus; + } + + public void setDealStatus(String dealStatus) { + this.dealStatus = dealStatus; + } +} diff --git a/src/main/java/com/hxjt/dataupload/model/entity/rydw/AlarmInfoIot.java b/src/main/java/com/hxjt/dataupload/model/entity/rydw/AlarmInfoIot.java new file mode 100644 index 0000000..2a12d88 --- /dev/null +++ b/src/main/java/com/hxjt/dataupload/model/entity/rydw/AlarmInfoIot.java @@ -0,0 +1,29 @@ +package com.hxjt.dataupload.model.entity.rydw; + + +public class AlarmInfoIot { + /** + * 数据类型 + */ + private String dataType ="alarm"; + /** + * 人员信息 + */ + private AlarmInfoHx data; + + public String getDataType() { + return dataType; + } + + public void setDataType(String dataType) { + this.dataType = dataType; + } + + public AlarmInfoHx getData() { + return data; + } + + public void setData(AlarmInfoHx data) { + this.data = data; + } +} diff --git a/src/main/java/com/hxjt/dataupload/model/entity/rydw/AreaUserInfoHx.java b/src/main/java/com/hxjt/dataupload/model/entity/rydw/AreaUserInfoHx.java new file mode 100644 index 0000000..8a8afd7 --- /dev/null +++ b/src/main/java/com/hxjt/dataupload/model/entity/rydw/AreaUserInfoHx.java @@ -0,0 +1,139 @@ +package com.hxjt.dataupload.model.entity.rydw; + + +import java.util.List; + +public class AreaUserInfoHx { + /** + * 唯一标示 + */ + private String uniqueId; + /** + * 企业容器id + */ + private String containerId ="ningyanghuagongchany"; + /** + * 单位唯一标志 + */ + private String orgCode; + /** + * 单位名称 + */ + private String orgName; + /** + * 区域唯一标志 + */ + private String areaId; + /** + * 区域名称 + */ + private String areaName; + /** + * 上级区域唯一标志 + */ + private String areaPid; + /** + * 上级区域名称 + */ + private String areaPname; + /** + * 区域内告警数量 + */ + private String alarmNum; + /** + * 区域内人员数量 + */ + private String personNum; + /** + * 区域内人员列表 + */ + private List personList; + + public String getUniqueId() { + return uniqueId; + } + + public void setUniqueId(String uniqueId) { + this.uniqueId = uniqueId; + } + + public String getContainerId() { + return containerId; + } + + public void setContainerId(String containerId) { + this.containerId = containerId; + } + + public String getOrgCode() { + return orgCode; + } + + public void setOrgCode(String orgCode) { + this.orgCode = orgCode; + } + + public String getOrgName() { + return orgName; + } + + public void setOrgName(String orgName) { + this.orgName = orgName; + } + + public String getAreaId() { + return areaId; + } + + public void setAreaId(String areaId) { + this.areaId = areaId; + } + + public String getAreaName() { + return areaName; + } + + public void setAreaName(String areaName) { + this.areaName = areaName; + } + + public String getAreaPid() { + return areaPid; + } + + public void setAreaPid(String areaPid) { + this.areaPid = areaPid; + } + + public String getAreaPname() { + return areaPname; + } + + public void setAreaPname(String areaPname) { + this.areaPname = areaPname; + } + + public String getAlarmNum() { + return alarmNum; + } + + public void setAlarmNum(String alarmNum) { + this.alarmNum = alarmNum; + } + + public String getPersonNum() { + return personNum; + } + + public void setPersonNum(String personNum) { + this.personNum = personNum; + } + + public List getPersonList() { + return personList; + } + + public void setPersonList(List personList) { + this.personList = personList; + } +} diff --git a/src/main/java/com/hxjt/dataupload/model/entity/rydw/AreaUserInfoIot.java b/src/main/java/com/hxjt/dataupload/model/entity/rydw/AreaUserInfoIot.java new file mode 100644 index 0000000..b98522d --- /dev/null +++ b/src/main/java/com/hxjt/dataupload/model/entity/rydw/AreaUserInfoIot.java @@ -0,0 +1,29 @@ +package com.hxjt.dataupload.model.entity.rydw; + + +public class AreaUserInfoIot { + /** + * 数据类型 + */ + private String dataType ="areaPersonAlarm"; + /** + * 人员信息 + */ + private AreaUserInfoHx data; + + public String getDataType() { + return dataType; + } + + public void setDataType(String dataType) { + this.dataType = dataType; + } + + public AreaUserInfoHx getData() { + return data; + } + + public void setData(AreaUserInfoHx data) { + this.data = data; + } +} diff --git a/src/main/java/com/hxjt/dataupload/model/entity/rydw/DeviceInfoHx.java b/src/main/java/com/hxjt/dataupload/model/entity/rydw/DeviceInfoHx.java new file mode 100644 index 0000000..16702d6 --- /dev/null +++ b/src/main/java/com/hxjt/dataupload/model/entity/rydw/DeviceInfoHx.java @@ -0,0 +1,125 @@ +package com.hxjt.dataupload.model.entity.rydw; + + +public class DeviceInfoHx { + /** + * 企业容器id + */ + private String containerId ="ningyanghuagongchany"; + /** + * 设备编号 + */ + private String deviceCode; + /** + * 楼层编号 + */ + private String layerId; + /** + * X + */ + private Double x; + /** + * Y + */ + private Double y; + /** + * 定位时间 + */ + private String dateTime; + /** + * 定位时间 + */ + private String uniqueId; + /** + * 是否移动 + */ + private String move; + /** + * 电量状态 + */ + private String lowPowerStatus; + /** + * 电量 + */ + private String power; + + public String getContainerId() { + return containerId; + } + + public void setContainerId(String containerId) { + this.containerId = containerId; + } + + public String getDeviceCode() { + return deviceCode; + } + + public void setDeviceCode(String deviceCode) { + this.deviceCode = deviceCode; + } + + public String getLayerId() { + return layerId; + } + + public void setLayerId(String layerId) { + this.layerId = layerId; + } + + public Double getX() { + return x; + } + + public void setX(Double x) { + this.x = x; + } + + public Double getY() { + return y; + } + + public void setY(Double y) { + this.y = y; + } + + public String getDateTime() { + return dateTime; + } + + public void setDateTime(String dateTime) { + this.dateTime = dateTime; + } + + public String getUniqueId() { + return uniqueId; + } + + public void setUniqueId(String uniqueId) { + this.uniqueId = uniqueId; + } + + public String getMove() { + return move; + } + + public void setMove(String move) { + this.move = move; + } + + public String getLowPowerStatus() { + return lowPowerStatus; + } + + public void setLowPowerStatus(String lowPowerStatus) { + this.lowPowerStatus = lowPowerStatus; + } + + public String getPower() { + return power; + } + + public void setPower(String power) { + this.power = power; + } +} diff --git a/src/main/java/com/hxjt/dataupload/model/entity/rydw/DeviceInfoIot.java b/src/main/java/com/hxjt/dataupload/model/entity/rydw/DeviceInfoIot.java new file mode 100644 index 0000000..a8e5973 --- /dev/null +++ b/src/main/java/com/hxjt/dataupload/model/entity/rydw/DeviceInfoIot.java @@ -0,0 +1,29 @@ +package com.hxjt.dataupload.model.entity.rydw; + + +public class DeviceInfoIot { + /** + * 数据类型 + */ + private String dataType ="position"; + /** + * 人员信息 + */ + private DeviceInfoHx data; + + public String getDataType() { + return dataType; + } + + public void setDataType(String dataType) { + this.dataType = dataType; + } + + public DeviceInfoHx getData() { + return data; + } + + public void setData(DeviceInfoHx data) { + this.data = data; + } +} diff --git a/src/main/java/com/hxjt/dataupload/model/entity/rydw/UserBaseInfo.java b/src/main/java/com/hxjt/dataupload/model/entity/rydw/UserBaseInfo.java new file mode 100644 index 0000000..53b72a1 --- /dev/null +++ b/src/main/java/com/hxjt/dataupload/model/entity/rydw/UserBaseInfo.java @@ -0,0 +1,101 @@ +package com.hxjt.dataupload.model.entity.rydw; + + +public class UserBaseInfo { + /** + * 企业容器id + */ + private String containerId ="ningyanghuagongchany"; + /** + * 人员唯一标示 + */ + private String userCode; + /** + * 人员姓名 + */ + private String userName; + /** + * 联系电话 + */ + private String userPhone; + /** + * 人员类型 + */ + private String userType; + /** + * 所属单位唯一标志 + */ + private String userOrgCode; + /** + * 所属单位名称 + */ + private String userOrgName; + /** + * 绑定设备唯一编码 + */ + private String cardId; + + public String getContainerId() { + return containerId; + } + + public void setContainerId(String containerId) { + this.containerId = containerId; + } + + public String getUserCode() { + return userCode; + } + + public void setUserCode(String userCode) { + this.userCode = userCode; + } + + public String getUserName() { + return userName; + } + + public void setUserName(String userName) { + this.userName = userName; + } + + public String getUserPhone() { + return userPhone; + } + + public void setUserPhone(String userPhone) { + this.userPhone = userPhone; + } + + public String getUserType() { + return userType; + } + + public void setUserType(String userType) { + this.userType = userType; + } + + public String getUserOrgCode() { + return userOrgCode; + } + + public void setUserOrgCode(String userOrgCode) { + this.userOrgCode = userOrgCode; + } + + public String getUserOrgName() { + return userOrgName; + } + + public void setUserOrgName(String userOrgName) { + this.userOrgName = userOrgName; + } + + public String getCardId() { + return cardId; + } + + public void setCardId(String cardId) { + this.cardId = cardId; + } +} diff --git a/src/main/java/com/hxjt/dataupload/model/entity/rydw/UserBaseInfoIot.java b/src/main/java/com/hxjt/dataupload/model/entity/rydw/UserBaseInfoIot.java new file mode 100644 index 0000000..a03a027 --- /dev/null +++ b/src/main/java/com/hxjt/dataupload/model/entity/rydw/UserBaseInfoIot.java @@ -0,0 +1,29 @@ +package com.hxjt.dataupload.model.entity.rydw; + + +public class UserBaseInfoIot { + /** + * 数据类型 + */ + private String dataType ="baseInfo"; + /** + * 人员信息 + */ + private UserBaseInfo data; + + public String getDataType() { + return dataType; + } + + public void setDataType(String dataType) { + this.dataType = dataType; + } + + public UserBaseInfo getData() { + return data; + } + + public void setData(UserBaseInfo data) { + this.data = data; + } +} diff --git a/src/main/java/com/hxjt/dataupload/mqtt/MqttCallback.java b/src/main/java/com/hxjt/dataupload/mqtt/MqttCallback.java new file mode 100644 index 0000000..a1e4ec8 --- /dev/null +++ b/src/main/java/com/hxjt/dataupload/mqtt/MqttCallback.java @@ -0,0 +1,59 @@ +package com.hxjt.dataupload.mqtt; + +import com.alibaba.fastjson.JSONObject; +import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken; +import org.eclipse.paho.client.mqttv3.MqttMessage; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component +public class MqttCallback implements org.eclipse.paho.client.mqttv3.MqttCallback { + private static final Logger logger = LoggerFactory.getLogger(com.hxjt.dataupload.mqtt.MqttClient.class); + + @Autowired + private MqttConfig mqttConfig; + + private static org.eclipse.paho.client.mqttv3.MqttClient client; + + private static String _topic; + private static String _qos; + private static String _msg; + + @Override + public void connectionLost(Throwable throwable) { + // 连接丢失后,一般在这里面进行重连 + logger.info("连接断开,可以做重连"); + if (client == null || !client.isConnected()) { + mqttConfig.getMqttPushClient(); + } + } + + @Override + public void messageArrived(String topic, MqttMessage mqttMessage) throws Exception { + // subscribe后得到的消息会执行到这里面 + logger.info("接收消息主题 : " + topic); + logger.info("接收消息Qos : " + mqttMessage.getQos()); + logger.info("接收消息内容 : " + new String(mqttMessage.getPayload())); + + _topic = topic; + _qos = mqttMessage.getQos()+""; + _msg = new String(mqttMessage.getPayload()); + } + + @Override + public void deliveryComplete(IMqttDeliveryToken iMqttDeliveryToken) { + logger.info("deliveryComplete---------" + iMqttDeliveryToken.isComplete()); + } + + //别的Controller层会调用这个方法来 获取 接收到的硬件数据 + public String receive() { + JSONObject jsonObject = new JSONObject(); + jsonObject.put("topic", _topic); + jsonObject.put("qos", _qos); + jsonObject.put("msg", _msg); + return jsonObject.toString(); + } + +} diff --git a/src/main/java/com/hxjt/dataupload/mqtt/MqttClient.java b/src/main/java/com/hxjt/dataupload/mqtt/MqttClient.java new file mode 100644 index 0000000..69420ae --- /dev/null +++ b/src/main/java/com/hxjt/dataupload/mqtt/MqttClient.java @@ -0,0 +1,101 @@ +package com.hxjt.dataupload.mqtt; + + +import org.eclipse.paho.client.mqttv3.*; +import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component +public class MqttClient { + private static final Logger logger = LoggerFactory.getLogger(com.hxjt.dataupload.mqtt.MqttClient.class); + + @Autowired + private MqttCallback pushCallback; + + private static org.eclipse.paho.client.mqttv3.MqttClient client; + + private static org.eclipse.paho.client.mqttv3.MqttClient getClient() { + return client; + } + + private static void setClient(org.eclipse.paho.client.mqttv3.MqttClient client) { + com.hxjt.dataupload.mqtt.MqttClient.client = client; + } + + public void connect(String host, String clientID, String username, String password, int timeout, int keepalive) { + org.eclipse.paho.client.mqttv3.MqttClient client; + try { + client = new org.eclipse.paho.client.mqttv3.MqttClient(host, clientID, new MemoryPersistence()); + MqttConnectOptions options = new MqttConnectOptions(); + //设置自动重连 + options.setAutomaticReconnect(true); + options.setCleanSession(true); + //设置连接丢失后的重试延迟 + options.setMaxReconnectDelay(30); + options.setUserName(username); + options.setPassword(password.toCharArray()); + options.setConnectionTimeout(timeout); + options.setKeepAliveInterval(keepalive); + com.hxjt.dataupload.mqtt.MqttClient.setClient(client); + try { + //设置消息到达的回调 + client.setCallback(pushCallback); + //连接到服务器 + client.connect(options); + } catch (Exception e) { + e.printStackTrace(); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + /** + * 根据主题推送数据 + * @param qos + * @param retained + * @param topic + * @param pushMessage + * @return + */ + public RespObject publish(int qos, boolean retained, String topic, String pushMessage) { + MqttMessage message = new MqttMessage(); + message.setQos(qos); + message.setRetained(retained); + message.setPayload(pushMessage.getBytes()); + MqttTopic mTopic = com.hxjt.dataupload.mqtt.MqttClient.getClient().getTopic(topic); + if (null == mTopic) { + logger.error("topic not exist"); + } + MqttDeliveryToken token; + try { + token = mTopic.publish(message); + token.waitForCompletion(); + return RespObject.of(); + } catch (MqttPersistenceException e) { + e.printStackTrace(); + return RespObject.toError(false, e.getMessage()); + } catch (MqttException e) { + e.printStackTrace(); + return RespObject.toError(false, e.getMessage()); + } + } + + /** + * 订阅到主题 + * @param topic + * @param qos + */ + public void subscribe(String topic, int qos) { + logger.info("开始订阅主题" + topic); + try { + com.hxjt.dataupload.mqtt.MqttClient.getClient().subscribe(topic, qos); + } catch (MqttException e) { + e.printStackTrace(); + } + } + +} diff --git a/src/main/java/com/hxjt/dataupload/mqtt/MqttConfig.java b/src/main/java/com/hxjt/dataupload/mqtt/MqttConfig.java new file mode 100644 index 0000000..5af081d --- /dev/null +++ b/src/main/java/com/hxjt/dataupload/mqtt/MqttConfig.java @@ -0,0 +1,121 @@ +package com.hxjt.dataupload.mqtt; + + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Bean; +import org.springframework.stereotype.Component; +import org.springframework.util.StringUtils; + +@Component +@ConfigurationProperties("spring.mqtt") + +public class MqttConfig { + @Autowired + private com.hxjt.dataupload.mqtt.MqttClient mqttClient; + + private String username; + + private String password; + + private String hostUrl; + + private String clientId; + + private String defaultTopic; + + private int timeout; + + private int keepalive; + + private boolean enabled; + + @Bean + public com.hxjt.dataupload.mqtt.MqttClient getMqttPushClient() { + try { + if(enabled == true){ + String mqtt_topic[] = StringUtils.split(defaultTopic, ","); + mqttClient.connect(hostUrl, clientId, username, password, timeout, keepalive);//连接 + for(int i=0; i implements Serializable { + + private boolean successful; + + private String resultHint; + + private Integer resultCode; + + private T resultValue; + + public static com.hxjt.dataupload.mqtt.RespObject of() { + return new com.hxjt.dataupload.mqtt.RespObject(true, "OK", 0, (Object)null); + } + + public static com.hxjt.dataupload.mqtt.RespObject of(T resultValue) { + return new com.hxjt.dataupload.mqtt.RespObject(true, "OK", 0, resultValue); + } + + public static com.hxjt.dataupload.mqtt.RespObject toHint(boolean successful, String resultHint) { + return new com.hxjt.dataupload.mqtt.RespObject(successful, resultHint, 1, (Object)null); + } + + public static com.hxjt.dataupload.mqtt.RespObject toHint(boolean successful, String resultHint, T resultValue) { + return new com.hxjt.dataupload.mqtt.RespObject(successful, resultHint, 1, resultValue); + } + + public static com.hxjt.dataupload.mqtt.RespObject toLogin(boolean successful, String resultHint) { + return new com.hxjt.dataupload.mqtt.RespObject(successful, resultHint, 2, null); + } + + public static com.hxjt.dataupload.mqtt.RespObject toInfo(boolean successful, String resultHint) { + return new com.hxjt.dataupload.mqtt.RespObject(successful, resultHint, 1001, null); + } + + public static com.hxjt.dataupload.mqtt.RespObject toWarn(boolean successful, String resultHint) { + return new com.hxjt.dataupload.mqtt.RespObject(successful, resultHint, 1002, null); + } + + public static com.hxjt.dataupload.mqtt.RespObject toError(boolean successful, String resultHint) { + return new com.hxjt.dataupload.mqtt.RespObject(successful, resultHint, 1003, null); + } + + public static com.hxjt.dataupload.mqtt.RespObject toError(boolean successful, String resultHint, Integer code, T resultValue) { + return new com.hxjt.dataupload.mqtt.RespObject(successful, resultHint, code, resultValue); + } + + public RespObject() { + } + + public RespObject(boolean successful, String resultHint, Integer resultCode, T resultValue) { + this.successful = successful; + this.resultHint = resultHint; + this.resultCode = resultCode; + this.resultValue = resultValue; + } + + public boolean isSuccessful() { + return this.successful; + } + + public void setSuccessful(boolean successful) { + this.successful = successful; + } + + public String getResultHint() { + return this.resultHint; + } + + public void setResultHint(String resultHint) { + this.resultHint = resultHint; + } + + public Integer getResultCode() { + return this.resultCode; + } + + public void setResultCode(Integer resultCode) { + this.resultCode = resultCode; + } + + public T getResultValue() { + return this.resultValue; + } + + public void setResultValue(T resultValue) { + this.resultValue = resultValue; + } + + public interface Result { + } +}