|
@@ -0,0 +1,90 @@
|
|
|
+package com.usky.fire.service.mqtt.fire;
|
|
|
+
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
+import com.usky.common.core.util.BeanMapperUtils;
|
|
|
+import com.usky.common.core.util.JsonUtils;
|
|
|
+import com.usky.fire.domain.SpOwnerCompany;
|
|
|
+import com.usky.fire.domain.TbAlarm;
|
|
|
+import com.usky.fire.service.SpOwnerCompanyService;
|
|
|
+import com.usky.fire.service.TbAlarmService;
|
|
|
+import com.usky.fire.service.TbInfoService;
|
|
|
+import com.usky.fire.service.mqtt.MqttStrategy;
|
|
|
+import com.usky.fire.service.vo.FireAlarmProperty;
|
|
|
+import com.usky.fire.service.vo.FireAlarmVO;
|
|
|
+import com.usky.fire.service.vo.MqttBaseVO;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @author yq
|
|
|
+ * @date 2021/11/9 17:03
|
|
|
+ */
|
|
|
+@Service("fireInfoAndAlarm")
|
|
|
+public class FireStrategy implements MqttStrategy {
|
|
|
+ @Autowired
|
|
|
+ private TbAlarmService tbAlarmService;
|
|
|
+ @Autowired
|
|
|
+ private TbInfoService tbInfoService;
|
|
|
+ @Autowired
|
|
|
+ private SpOwnerCompanyService spOwnerCompanyService;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public String disposeMessage(MqttBaseVO mqttBaseVO) {
|
|
|
+ LambdaQueryWrapper<SpOwnerCompany> queryWrapper = Wrappers.lambdaQuery();
|
|
|
+ queryWrapper.select(SpOwnerCompany::getOwnerId);
|
|
|
+ List<SpOwnerCompany> list = spOwnerCompanyService.list(queryWrapper);
|
|
|
+ String topic = mqttBaseVO.getTopic();
|
|
|
+ topic = topic.split("/")[3];
|
|
|
+ String finalTopic = topic;
|
|
|
+ list.stream().filter(s -> s.getOwnerId().equals(finalTopic))
|
|
|
+ .findAny().ifPresent(s -> {
|
|
|
+ FireAlarmVO fireAlarmVo = JsonUtils.fromJson(mqttBaseVO.getData().toString(), FireAlarmVO.class);
|
|
|
+ TbAlarm tbAlarm = this.enhanceData(fireAlarmVo);
|
|
|
+ if ("ALARM".equals(fireAlarmVo.getType())) {
|
|
|
+ tbAlarmService.save(tbAlarm);
|
|
|
+
|
|
|
+ } else if ("STATE".equals(fireAlarmVo.getType())) {
|
|
|
+// LambdaUpdateWrapper<DeviceStatus> updateWrapper = Wrappers.lambdaUpdate();
|
|
|
+// updateWrapper.set(DeviceStatus::getDevicestatus,fireAlarmVo.getDevState())
|
|
|
+// .eq(DeviceStatus::getDeviceid,fireAlarmVo.getDevId());
|
|
|
+// deviceStatusService.update(updateWrapper);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 增强数据
|
|
|
+ *
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public TbAlarm enhanceData(FireAlarmVO fireAlarmVO) {
|
|
|
+ TbAlarm tbAlarm = new TbAlarm();
|
|
|
+ tbAlarm.setCreateTime(LocalDateTime.now());
|
|
|
+ tbAlarm.setDeviceId(fireAlarmVO.getDevId());
|
|
|
+ tbAlarm.setDeviceName(fireAlarmVO.getDeviceName());
|
|
|
+ tbAlarm.setAlarmTime(LocalDateTime.now());
|
|
|
+ if ("ALARM".equals(fireAlarmVO.getType())) {
|
|
|
+ List<FireAlarmProperty> dp = fireAlarmVO.getAlarams().get(0).getDp();
|
|
|
+ if (CollectionUtils.isNotEmpty(dp)) {
|
|
|
+ BeanMapperUtils.copy(dp.get(0), tbAlarm);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ tbAlarm.setAlarmContent(JsonUtils.toJson(fireAlarmVO));
|
|
|
+ }
|
|
|
+ return tbAlarm;
|
|
|
+ }
|
|
|
+
|
|
|
+ public static void main(String[] args) {
|
|
|
+ String topic = "/usky/ytDP0001/+/+/info";
|
|
|
+
|
|
|
+ String[] split = topic.split("/");
|
|
|
+ System.out.println(split[3]);
|
|
|
+ }
|
|
|
+}
|