mqtt配置
This commit is contained in:
@ -1,8 +1,13 @@
|
|||||||
package com.xzzn.web.controller.ems;
|
package com.xzzn.web.controller.ems;
|
||||||
|
|
||||||
|
import com.xzzn.ems.domain.EmsMqttMessage;
|
||||||
|
import com.xzzn.ems.service.IEmsMqttMessageService;
|
||||||
import com.xzzn.framework.manager.MqttLifecycleManager;
|
import com.xzzn.framework.manager.MqttLifecycleManager;
|
||||||
import com.xzzn.framework.web.service.MqttPublisher;
|
import com.xzzn.framework.web.service.MqttPublisher;
|
||||||
import com.xzzn.framework.web.service.MqttSubscriber;
|
import com.xzzn.framework.web.service.MqttSubscriber;
|
||||||
|
import org.apache.coyote.http11.Http11NioProtocol;
|
||||||
|
import org.apache.juli.logging.Log;
|
||||||
|
import org.apache.juli.logging.LogFactory;
|
||||||
import org.eclipse.paho.client.mqttv3.IMqttMessageListener;
|
import org.eclipse.paho.client.mqttv3.IMqttMessageListener;
|
||||||
import org.eclipse.paho.client.mqttv3.MqttException;
|
import org.eclipse.paho.client.mqttv3.MqttException;
|
||||||
import org.eclipse.paho.client.mqttv3.MqttMessage;
|
import org.eclipse.paho.client.mqttv3.MqttMessage;
|
||||||
@ -14,8 +19,16 @@ import javax.annotation.PostConstruct;
|
|||||||
@Service
|
@Service
|
||||||
public class MqttMessageController implements MqttPublisher, MqttSubscriber {
|
public class MqttMessageController implements MqttPublisher, MqttSubscriber {
|
||||||
|
|
||||||
|
|
||||||
|
private static final Log log = LogFactory.getLog(MqttMessageController.class);
|
||||||
|
|
||||||
|
|
||||||
private final MqttLifecycleManager mqttLifecycleManager;
|
private final MqttLifecycleManager mqttLifecycleManager;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private IEmsMqttMessageService emsMqttMessageService;
|
||||||
|
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
public MqttMessageController(MqttLifecycleManager mqttLifecycleManager) {
|
public MqttMessageController(MqttLifecycleManager mqttLifecycleManager) {
|
||||||
this.mqttLifecycleManager = mqttLifecycleManager;
|
this.mqttLifecycleManager = mqttLifecycleManager;
|
||||||
@ -24,29 +37,50 @@ public class MqttMessageController implements MqttPublisher, MqttSubscriber {
|
|||||||
@PostConstruct
|
@PostConstruct
|
||||||
public void init() {
|
public void init() {
|
||||||
// 订阅系统状态主题
|
// 订阅系统状态主题
|
||||||
subscribe("system/status", 1, this::handleSystemStatus);
|
subscribe("021_FXX_01_UP", 1, this::handleDeviceData);
|
||||||
|
subscribe("021_FXX_01_RECALL", 1, this::handleDeviceData);
|
||||||
|
subscribe("021_FXX_01_DOWN", 1, this::handleDeviceData);
|
||||||
|
subscribe("021_FXX_01", 1, this::handleSystemStatus);
|
||||||
|
|
||||||
// 订阅设备数据主题
|
|
||||||
subscribe("devices/data", 0, this::handleDeviceData);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 处理系统状态消息
|
// 处理系统状态消息
|
||||||
private void handleSystemStatus(String topic, MqttMessage message) {
|
private void handleSystemStatus(String topic, MqttMessage message) {
|
||||||
String payload = new String(message.getPayload());
|
String payload = new String(message.getPayload());
|
||||||
System.out.println("[SYSTEM] Status update: " + payload);
|
System.out.println("[SYSTEM] Status update: " + payload);
|
||||||
// 业务处理逻辑
|
|
||||||
|
|
||||||
|
|
||||||
|
try {
|
||||||
|
// 业务处理逻辑
|
||||||
|
EmsMqttMessage mqttMessage = new EmsMqttMessage();
|
||||||
|
mqttMessage.setMqttTopic(topic);
|
||||||
|
mqttMessage.setMqttMessage(payload);
|
||||||
|
mqttMessage.setCreateTime(new java.util.Date());
|
||||||
|
mqttMessage.setUpdateTime(new java.util.Date());
|
||||||
|
mqttMessage.setCreateBy("system");
|
||||||
|
mqttMessage.setUpdateBy("system");
|
||||||
|
emsMqttMessageService.insertEmsMqttMessage(mqttMessage);
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("Failed to process system status message: " + e.getMessage(), e);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 处理设备数据
|
// 处理设备数据
|
||||||
private void handleDeviceData(String topic, MqttMessage message) {
|
private void handleDeviceData(String topic, MqttMessage message) {
|
||||||
String payload = new String(message.getPayload());
|
String payload = new String(message.getPayload());
|
||||||
System.out.println("[DEVICE] data: " + payload);
|
System.out.println("[DEVICE] data: " + payload);
|
||||||
// 业务处理逻辑
|
try {
|
||||||
|
// 业务处理逻辑
|
||||||
|
EmsMqttMessage mqttMessage = new EmsMqttMessage();
|
||||||
|
mqttMessage.setMqttTopic(topic);
|
||||||
|
mqttMessage.setMqttMessage(payload);
|
||||||
|
mqttMessage.setCreateTime(new java.util.Date());
|
||||||
|
mqttMessage.setUpdateTime(new java.util.Date());
|
||||||
|
mqttMessage.setCreateBy("system");
|
||||||
|
mqttMessage.setUpdateBy("system");
|
||||||
|
emsMqttMessageService.insertEmsMqttMessage(mqttMessage);
|
||||||
|
} catch (Exception e) {
|
||||||
|
log.error("Failed to process system status message: " + e.getMessage(), e);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,71 @@
|
|||||||
|
package com.xzzn.ems.domain;
|
||||||
|
|
||||||
|
import com.xzzn.common.core.domain.BaseEntity;
|
||||||
|
import org.apache.commons.lang3.builder.ToStringBuilder;
|
||||||
|
import org.apache.commons.lang3.builder.ToStringStyle;
|
||||||
|
import com.xzzn.common.annotation.Excel;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 【请填写功能名称】对象 ems_mqtt_message
|
||||||
|
*
|
||||||
|
* @author xzzn
|
||||||
|
* @date 2025-06-27
|
||||||
|
*/
|
||||||
|
public class EmsMqttMessage extends BaseEntity
|
||||||
|
{
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/** 主键 */
|
||||||
|
private Long id;
|
||||||
|
|
||||||
|
/** $column.columnComment */
|
||||||
|
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
|
||||||
|
private String mqttTopic;
|
||||||
|
|
||||||
|
/** $column.columnComment */
|
||||||
|
@Excel(name = "${comment}", readConverterExp = "$column.readConverterExp()")
|
||||||
|
private String mqttMessage;
|
||||||
|
|
||||||
|
public void setId(Long id)
|
||||||
|
{
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Long getId()
|
||||||
|
{
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMqttTopic(String mqttTopic)
|
||||||
|
{
|
||||||
|
this.mqttTopic = mqttTopic;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getMqttTopic()
|
||||||
|
{
|
||||||
|
return mqttTopic;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMqttMessage(String mqttMessage)
|
||||||
|
{
|
||||||
|
this.mqttMessage = mqttMessage;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getMqttMessage()
|
||||||
|
{
|
||||||
|
return mqttMessage;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
|
||||||
|
.append("id", getId())
|
||||||
|
.append("mqttTopic", getMqttTopic())
|
||||||
|
.append("mqttMessage", getMqttMessage())
|
||||||
|
.append("createBy", getCreateBy())
|
||||||
|
.append("createTime", getCreateTime())
|
||||||
|
.append("updateBy", getUpdateBy())
|
||||||
|
.append("updateTime", getUpdateTime())
|
||||||
|
.toString();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,62 @@
|
|||||||
|
package com.xzzn.ems.mapper;
|
||||||
|
|
||||||
|
import com.xzzn.ems.domain.EmsMqttMessage;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 【请填写功能名称】Mapper接口
|
||||||
|
*
|
||||||
|
* @author xzzn
|
||||||
|
* @date 2025-06-27
|
||||||
|
*/
|
||||||
|
public interface EmsMqttMessageMapper
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* 查询【请填写功能名称】
|
||||||
|
*
|
||||||
|
* @param id 【请填写功能名称】主键
|
||||||
|
* @return 【请填写功能名称】
|
||||||
|
*/
|
||||||
|
public EmsMqttMessage selectEmsMqttMessageById(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询【请填写功能名称】列表
|
||||||
|
*
|
||||||
|
* @param emsMqttMessage 【请填写功能名称】
|
||||||
|
* @return 【请填写功能名称】集合
|
||||||
|
*/
|
||||||
|
public List<EmsMqttMessage> selectEmsMqttMessageList(EmsMqttMessage emsMqttMessage);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增【请填写功能名称】
|
||||||
|
*
|
||||||
|
* @param emsMqttMessage 【请填写功能名称】
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public int insertEmsMqttMessage(EmsMqttMessage emsMqttMessage);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改【请填写功能名称】
|
||||||
|
*
|
||||||
|
* @param emsMqttMessage 【请填写功能名称】
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public int updateEmsMqttMessage(EmsMqttMessage emsMqttMessage);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除【请填写功能名称】
|
||||||
|
*
|
||||||
|
* @param id 【请填写功能名称】主键
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public int deleteEmsMqttMessageById(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除【请填写功能名称】
|
||||||
|
*
|
||||||
|
* @param ids 需要删除的数据主键集合
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public int deleteEmsMqttMessageByIds(Long[] ids);
|
||||||
|
}
|
@ -0,0 +1,62 @@
|
|||||||
|
package com.xzzn.ems.service;
|
||||||
|
|
||||||
|
import com.xzzn.ems.domain.EmsMqttMessage;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 【请填写功能名称】Service接口
|
||||||
|
*
|
||||||
|
* @author xzzn
|
||||||
|
* @date 2025-06-27
|
||||||
|
*/
|
||||||
|
public interface IEmsMqttMessageService
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* 查询【请填写功能名称】
|
||||||
|
*
|
||||||
|
* @param id 【请填写功能名称】主键
|
||||||
|
* @return 【请填写功能名称】
|
||||||
|
*/
|
||||||
|
public EmsMqttMessage selectEmsMqttMessageById(Long id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询【请填写功能名称】列表
|
||||||
|
*
|
||||||
|
* @param emsMqttMessage 【请填写功能名称】
|
||||||
|
* @return 【请填写功能名称】集合
|
||||||
|
*/
|
||||||
|
public List<EmsMqttMessage> selectEmsMqttMessageList(EmsMqttMessage emsMqttMessage);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增【请填写功能名称】
|
||||||
|
*
|
||||||
|
* @param emsMqttMessage 【请填写功能名称】
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public int insertEmsMqttMessage(EmsMqttMessage emsMqttMessage);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改【请填写功能名称】
|
||||||
|
*
|
||||||
|
* @param emsMqttMessage 【请填写功能名称】
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public int updateEmsMqttMessage(EmsMqttMessage emsMqttMessage);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除【请填写功能名称】
|
||||||
|
*
|
||||||
|
* @param ids 需要删除的【请填写功能名称】主键集合
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public int deleteEmsMqttMessageByIds(Long[] ids);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除【请填写功能名称】信息
|
||||||
|
*
|
||||||
|
* @param id 【请填写功能名称】主键
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
public int deleteEmsMqttMessageById(Long id);
|
||||||
|
}
|
@ -0,0 +1,96 @@
|
|||||||
|
package com.xzzn.ems.service.impl;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import com.xzzn.common.utils.DateUtils;
|
||||||
|
import com.xzzn.ems.domain.EmsMqttMessage;
|
||||||
|
import com.xzzn.ems.mapper.EmsMqttMessageMapper;
|
||||||
|
import com.xzzn.ems.service.IEmsMqttMessageService;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 【请填写功能名称】Service业务层处理
|
||||||
|
*
|
||||||
|
* @author xzzn
|
||||||
|
* @date 2025-06-27
|
||||||
|
*/
|
||||||
|
@Service
|
||||||
|
public class EmsMqttMessageServiceImpl implements IEmsMqttMessageService
|
||||||
|
{
|
||||||
|
@Autowired
|
||||||
|
private EmsMqttMessageMapper emsMqttMessageMapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询【请填写功能名称】
|
||||||
|
*
|
||||||
|
* @param id 【请填写功能名称】主键
|
||||||
|
* @return 【请填写功能名称】
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public EmsMqttMessage selectEmsMqttMessageById(Long id)
|
||||||
|
{
|
||||||
|
return emsMqttMessageMapper.selectEmsMqttMessageById(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询【请填写功能名称】列表
|
||||||
|
*
|
||||||
|
* @param emsMqttMessage 【请填写功能名称】
|
||||||
|
* @return 【请填写功能名称】
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<EmsMqttMessage> selectEmsMqttMessageList(EmsMqttMessage emsMqttMessage)
|
||||||
|
{
|
||||||
|
return emsMqttMessageMapper.selectEmsMqttMessageList(emsMqttMessage);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增【请填写功能名称】
|
||||||
|
*
|
||||||
|
* @param emsMqttMessage 【请填写功能名称】
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public int insertEmsMqttMessage(EmsMqttMessage emsMqttMessage)
|
||||||
|
{
|
||||||
|
emsMqttMessage.setCreateTime(DateUtils.getNowDate());
|
||||||
|
return emsMqttMessageMapper.insertEmsMqttMessage(emsMqttMessage);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改【请填写功能名称】
|
||||||
|
*
|
||||||
|
* @param emsMqttMessage 【请填写功能名称】
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public int updateEmsMqttMessage(EmsMqttMessage emsMqttMessage)
|
||||||
|
{
|
||||||
|
emsMqttMessage.setUpdateTime(DateUtils.getNowDate());
|
||||||
|
return emsMqttMessageMapper.updateEmsMqttMessage(emsMqttMessage);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量删除【请填写功能名称】
|
||||||
|
*
|
||||||
|
* @param ids 需要删除的【请填写功能名称】主键
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public int deleteEmsMqttMessageByIds(Long[] ids)
|
||||||
|
{
|
||||||
|
return emsMqttMessageMapper.deleteEmsMqttMessageByIds(ids);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 删除【请填写功能名称】信息
|
||||||
|
*
|
||||||
|
* @param id 【请填写功能名称】主键
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public int deleteEmsMqttMessageById(Long id)
|
||||||
|
{
|
||||||
|
return emsMqttMessageMapper.deleteEmsMqttMessageById(id);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,79 @@
|
|||||||
|
<?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.xzzn.ems.mapper.EmsMqttMessageMapper">
|
||||||
|
|
||||||
|
<resultMap type="EmsMqttMessage" id="EmsMqttMessageResult">
|
||||||
|
<result property="id" column="id" />
|
||||||
|
<result property="mqttTopic" column="mqtt_topic" />
|
||||||
|
<result property="mqttMessage" column="mqtt_message" />
|
||||||
|
<result property="createBy" column="create_by" />
|
||||||
|
<result property="createTime" column="create_time" />
|
||||||
|
<result property="updateBy" column="update_by" />
|
||||||
|
<result property="updateTime" column="update_time" />
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
<sql id="selectEmsMqttMessageVo">
|
||||||
|
select id, mqtt_topic, mqtt_message, create_by, create_time, update_by, update_time from ems_mqtt_message
|
||||||
|
</sql>
|
||||||
|
|
||||||
|
<select id="selectEmsMqttMessageList" parameterType="EmsMqttMessage" resultMap="EmsMqttMessageResult">
|
||||||
|
<include refid="selectEmsMqttMessageVo"/>
|
||||||
|
<where>
|
||||||
|
<if test="mqttTopic != null and mqttTopic != ''"> and mqtt_topic = #{mqttTopic}</if>
|
||||||
|
<if test="mqttMessage != null and mqttMessage != ''"> and mqtt_message = #{mqttMessage}</if>
|
||||||
|
</where>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<select id="selectEmsMqttMessageById" parameterType="Long" resultMap="EmsMqttMessageResult">
|
||||||
|
<include refid="selectEmsMqttMessageVo"/>
|
||||||
|
where id = #{id}
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<insert id="insertEmsMqttMessage" parameterType="EmsMqttMessage">
|
||||||
|
insert into ems_mqtt_message
|
||||||
|
<trim prefix="(" suffix=")" suffixOverrides=",">
|
||||||
|
<if test="id != null">id,</if>
|
||||||
|
<if test="mqttTopic != null">mqtt_topic,</if>
|
||||||
|
<if test="mqttMessage != null">mqtt_message,</if>
|
||||||
|
<if test="createBy != null">create_by,</if>
|
||||||
|
<if test="createTime != null">create_time,</if>
|
||||||
|
<if test="updateBy != null">update_by,</if>
|
||||||
|
<if test="updateTime != null">update_time,</if>
|
||||||
|
</trim>
|
||||||
|
<trim prefix="values (" suffix=")" suffixOverrides=",">
|
||||||
|
<if test="id != null">#{id},</if>
|
||||||
|
<if test="mqttTopic != null">#{mqttTopic},</if>
|
||||||
|
<if test="mqttMessage != null">#{mqttMessage},</if>
|
||||||
|
<if test="createBy != null">#{createBy},</if>
|
||||||
|
<if test="createTime != null">#{createTime},</if>
|
||||||
|
<if test="updateBy != null">#{updateBy},</if>
|
||||||
|
<if test="updateTime != null">#{updateTime},</if>
|
||||||
|
</trim>
|
||||||
|
</insert>
|
||||||
|
|
||||||
|
<update id="updateEmsMqttMessage" parameterType="EmsMqttMessage">
|
||||||
|
update ems_mqtt_message
|
||||||
|
<trim prefix="SET" suffixOverrides=",">
|
||||||
|
<if test="mqttTopic != null">mqtt_topic = #{mqttTopic},</if>
|
||||||
|
<if test="mqttMessage != null">mqtt_message = #{mqttMessage},</if>
|
||||||
|
<if test="createBy != null">create_by = #{createBy},</if>
|
||||||
|
<if test="createTime != null">create_time = #{createTime},</if>
|
||||||
|
<if test="updateBy != null">update_by = #{updateBy},</if>
|
||||||
|
<if test="updateTime != null">update_time = #{updateTime},</if>
|
||||||
|
</trim>
|
||||||
|
where id = #{id}
|
||||||
|
</update>
|
||||||
|
|
||||||
|
<delete id="deleteEmsMqttMessageById" parameterType="Long">
|
||||||
|
delete from ems_mqtt_message where id = #{id}
|
||||||
|
</delete>
|
||||||
|
|
||||||
|
<delete id="deleteEmsMqttMessageByIds" parameterType="String">
|
||||||
|
delete from ems_mqtt_message where id in
|
||||||
|
<foreach item="id" collection="array" open="(" separator="," close=")">
|
||||||
|
#{id}
|
||||||
|
</foreach>
|
||||||
|
</delete>
|
||||||
|
</mapper>
|
Reference in New Issue
Block a user