|
@@ -0,0 +1,106 @@
|
|
|
+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)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);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+}
|