MqttMsgInstallService.java 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. package com.care.mqtt.service;
  2. import com.alibaba.fastjson.JSON;
  3. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  4. import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
  5. import com.care.common.entity.*;
  6. import com.care.common.service.*;
  7. import org.apache.commons.lang3.StringUtils;
  8. import org.slf4j.Logger;
  9. import org.slf4j.LoggerFactory;
  10. import org.springframework.stereotype.Service;
  11. import javax.annotation.Resource;
  12. import java.util.Map;
  13. /**
  14. * @Author: stw
  15. * @Date: 2021/8/14
  16. * @Desc:
  17. */
  18. @Service
  19. public class MqttMsgInstallService {
  20. @Resource
  21. private CareDeviceService careDeviceService;
  22. @Resource
  23. private CareRoomSensorService careRoomSensorService;
  24. @Resource
  25. private CareRoomService careRoomService;
  26. @Resource
  27. private CareRoomGateService careRoomGateService;
  28. @Resource
  29. private CareRoomRegionService careRoomRegionService;
  30. private static Logger logger = LoggerFactory.getLogger(MqttMsgInstallService.class);
  31. /**
  32. * 处理mqtt消息
  33. * @param topicInstall
  34. * @param mqttMessageStr
  35. * @throws Exception
  36. */
  37. public void handleMessage(String topicInstall, String mqttMessageStr) throws Exception {
  38. //房间信息配置的返回消息
  39. handleConfigureRoomInfoResultMessage(topicInstall,mqttMessageStr);
  40. }
  41. /**
  42. * 查询配置房间信息的结果消息 处理
  43. * @param topicInstall
  44. * @param mqttMessageStr
  45. */
  46. private void handleConfigureRoomInfoResultMessage(String topicInstall, String mqttMessageStr) {
  47. Map map = JSON.parseObject(mqttMessageStr);
  48. String type = (String) map.get("type");
  49. if(StringUtils.isEmpty(type)) {
  50. logger.error("不是正确格式的消息");
  51. return;
  52. }
  53. Map msg = (Map) map.get("msg");
  54. if(msg == null) {
  55. logger.error("不是正确格式的消息");
  56. return;
  57. }
  58. String ack = String.valueOf(msg.get("ack"));
  59. if(StringUtils.isEmpty(ack)) {
  60. logger.error("不是激活返回消息");
  61. return;
  62. }
  63. logger.info("是激活返回消息: ack == " + ack);
  64. QueryWrapper<CareDevice> queryWrapper = new QueryWrapper<>();
  65. queryWrapper.lambda().eq(CareDevice::getTopicInstall,topicInstall);
  66. CareDevice careDevice = careDeviceService.getOne(queryWrapper);
  67. if(careDevice == null) {
  68. logger.error("数据库中没找到对应设备");
  69. return;
  70. }
  71. String devCode = careDevice.getDevCode();
  72. if("CfgAreaAck".equals(type)) { //房间信息
  73. UpdateWrapper<CareRoom> updateWrapper = new UpdateWrapper<>();
  74. updateWrapper.lambda().eq(CareRoom::getRoomId,devCode).set(CareRoom::getAck,ack);
  75. careRoomService.update(updateWrapper);
  76. } else if("CfgDevicePositionAck".equals(type)) { //传感器
  77. UpdateWrapper<CareRoomSensor> updateWrapper = new UpdateWrapper<>();
  78. updateWrapper.lambda().eq(CareRoomSensor::getRoomId,devCode).set(CareRoomSensor::getAck,ack);
  79. careRoomSensorService.update(updateWrapper);
  80. } else if("CfgGatesAck".equals(type)) { //门
  81. UpdateWrapper<CareRoomGate> updateWrapper = new UpdateWrapper<>();
  82. updateWrapper.lambda().eq(CareRoomGate::getRoomId,devCode).set(CareRoomGate::getAck,ack);
  83. careRoomGateService.update(updateWrapper);
  84. } else if("CfgRegionsAck".equals(type)) { //区域
  85. UpdateWrapper<CareRoomRegion> updateWrapper = new UpdateWrapper<>();
  86. updateWrapper.lambda().eq(CareRoomRegion::getRoomId,devCode).set(CareRoomRegion::getAck,ack);
  87. careRoomRegionService.update(updateWrapper);
  88. }
  89. }
  90. }