123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- 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<CareDevice> 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<CareRoom> updateWrapper = new UpdateWrapper<>();
- updateWrapper.lambda().eq(CareRoom::getRoomId,devCode).set(CareRoom::getAck,ack);
- careRoomService.update(updateWrapper);
- } else if("CfgDevicePositionAck".equals(type)) { //传感器
- UpdateWrapper<CareRoomSensor> updateWrapper = new UpdateWrapper<>();
- updateWrapper.lambda().eq(CareRoomSensor::getRoomId,devCode).set(CareRoomSensor::getAck,ack);
- careRoomSensorService.update(updateWrapper);
- } else if("CfgGatesAck".equals(type)) { //门
- UpdateWrapper<CareRoomGate> updateWrapper = new UpdateWrapper<>();
- updateWrapper.lambda().eq(CareRoomGate::getRoomId,devCode).set(CareRoomGate::getAck,ack);
- careRoomGateService.update(updateWrapper);
- } else if("CfgRegionsAck".equals(type)) { //区域
- UpdateWrapper<CareRoomRegion> updateWrapper = new UpdateWrapper<>();
- updateWrapper.lambda().eq(CareRoomRegion::getRoomId,devCode).set(CareRoomRegion::getAck,ack);
- careRoomRegionService.update(updateWrapper);
- }
- }
- }
|