package com.care.mqtt.service; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.care.common.entity.*; import com.care.common.service.*; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.Map; /** * @Author: stw * @Date: 2021/8/14 * @Desc: */ @Service public class MqttMsgInstallService { @Resource private CareDeviceService careDeviceService; @Resource private CareRoomSensorService careRoomSensorService; @Resource private CareRoomService careRoomService; @Resource private CareRoomGateService careRoomGateService; @Resource private CareRoomRegionService careRoomRegionService; private static Logger logger = LoggerFactory.getLogger(MqttMsgInstallService.class); /** * 处理mqtt消息 * @param topicInstall * @param mqttMessageStr * @throws Exception */ public void handleMessage(String topicInstall, String mqttMessageStr) throws Exception { //房间信息配置的返回消息 handleConfigureRoomInfoResultMessage(topicInstall,mqttMessageStr); } /** * 查询配置房间信息的结果消息 处理 * @param topicInstall * @param mqttMessageStr */ private void handleConfigureRoomInfoResultMessage(String topicInstall, String mqttMessageStr) { Map map = JSON.parseObject(mqttMessageStr); String type = (String) map.get("type"); if(StringUtils.isEmpty(type)) { logger.error("不是正确格式的消息"); return; } Map msg = (Map) map.get("msg"); if(msg == null) { logger.error("不是正确格式的消息"); return; } String ack = String.valueOf(msg.get("ack")); if(StringUtils.isEmpty(ack)) { logger.error("不是激活返回消息"); return; } logger.info("是激活返回消息: ack == " + ack); QueryWrapper queryWrapper = new QueryWrapper<>(); queryWrapper.lambda().eq(CareDevice::getTopicInstall,topicInstall); CareDevice careDevice = careDeviceService.getOne(queryWrapper); if(careDevice == null) { logger.error("数据库中没找到对应设备"); return; } String devCode = careDevice.getDevCode(); if("CfgAreaAck".equals(type)) { //房间信息 UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.lambda().eq(CareRoom::getRoomId,devCode).set(CareRoom::getAck,ack); careRoomService.update(updateWrapper); } else if("CfgDevicePositionAck".equals(type)) { //传感器 UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.lambda().eq(CareRoomSensor::getRoomId,devCode).set(CareRoomSensor::getAck,ack); careRoomSensorService.update(updateWrapper); } else if("CfgGatesAck".equals(type)) { //门 UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.lambda().eq(CareRoomGate::getRoomId,devCode).set(CareRoomGate::getAck,ack); careRoomGateService.update(updateWrapper); } else if("CfgRegionsAck".equals(type)) { //区域 UpdateWrapper updateWrapper = new UpdateWrapper<>(); updateWrapper.lambda().eq(CareRoomRegion::getRoomId,devCode).set(CareRoomRegion::getAck,ack); careRoomRegionService.update(updateWrapper); } } }