mqtt配置

This commit is contained in:
2025-06-27 14:07:45 +08:00
parent da894c26d1
commit 31dc8e72c6
6 changed files with 413 additions and 9 deletions

View File

@ -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);
}
} }

View File

@ -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();
}
}

View File

@ -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);
}

View File

@ -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);
}

View File

@ -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);
}
}

View File

@ -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>