|
@@ -0,0 +1,122 @@
|
|
|
+package com.usky.transfer.service.mqtt.add;
|
|
|
+
|
|
|
+import com.alibaba.fastjson.JSONObject;
|
|
|
+import com.alibaba.nacos.shaded.com.google.gson.JsonObject;
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
+import com.usky.common.core.util.UUIDUtils;
|
|
|
+import com.usky.transfer.domain.DmpDevice;
|
|
|
+import com.usky.transfer.domain.DmpDeviceStatus;
|
|
|
+import com.usky.transfer.domain.DmpProduct;
|
|
|
+import com.usky.transfer.service.DmpDeviceService;
|
|
|
+import com.usky.transfer.service.DmpDeviceStatusService;
|
|
|
+import com.usky.transfer.service.DmpProductService;
|
|
|
+import com.usky.transfer.service.mqtt.MqttStrategy;
|
|
|
+import com.usky.transfer.service.vo.DeviceMapVO;
|
|
|
+import com.usky.transfer.service.vo.MqttBaseVO;
|
|
|
+import com.usky.transfer.service.vo.ProductMapVO;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.checkerframework.checker.units.qual.A;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+
|
|
|
+import java.time.LocalDateTime;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+@Slf4j
|
|
|
+@Service("add")
|
|
|
+public class Add implements MqttStrategy {
|
|
|
+ @Autowired
|
|
|
+ private DmpProductService dmpProductService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private DmpDeviceService dmpDeviceService;
|
|
|
+
|
|
|
+ @Autowired
|
|
|
+ private DmpDeviceStatusService dmpDeviceStatusService;
|
|
|
+
|
|
|
+ public String disposeMessage(MqttBaseVO mqttBaseVO){
|
|
|
+ String deviceInfoStr = mqttBaseVO.getData().toString();
|
|
|
+ JSONObject deviceInfoJson = JSONObject.parseObject(deviceInfoStr);
|
|
|
+ String productCode = deviceInfoJson.get("productCode").toString();
|
|
|
+ String deviceId = deviceInfoJson.get("deviceId").toString();
|
|
|
+
|
|
|
+
|
|
|
+ Map<String, ProductMapVO> productMapList = dmpProductService.getProductMap();
|
|
|
+ if(!productMapList.containsKey(productCode)){
|
|
|
+
|
|
|
+ LambdaQueryWrapper<DmpProduct> queryWrapper = Wrappers.lambdaQuery();
|
|
|
+ queryWrapper.eq(DmpProduct::getDeleteFlag,0)
|
|
|
+ .eq(DmpProduct::getProductCode,productCode);
|
|
|
+ DmpProduct one = dmpProductService.getOne(queryWrapper);
|
|
|
+ if(one == null){
|
|
|
+ log.error(productCode+" 产品未注册");
|
|
|
+ return null;
|
|
|
+ }else{
|
|
|
+ dmpProductService.deleteProductCache();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ Map<String, DeviceMapVO> deviceMapList = dmpProductService.getDeviceMap();
|
|
|
+ if(!deviceMapList.containsKey(deviceId)){
|
|
|
+ DmpDevice dmpDeviceInfo = new DmpDevice();
|
|
|
+ ProductMapVO productMapVO = productMapList.get(productCode);
|
|
|
+ dmpDeviceInfo.setDeviceId(deviceId);
|
|
|
+ dmpDeviceInfo.setDeviceName("");
|
|
|
+ dmpDeviceInfo.setDeviceType(productMapVO.getDeviceType());
|
|
|
+ dmpDeviceInfo.setProductId(productMapVO.getProductId());
|
|
|
+ dmpDeviceInfo.setProductCode(productCode);
|
|
|
+ dmpDeviceInfo.setCreatedBy(productMapVO.getCreatedBy());
|
|
|
+ dmpDeviceInfo.setCreatedTime(LocalDateTime.now());
|
|
|
+ dmpDeviceInfo.setTenantId(productMapVO.getTenantId());
|
|
|
+ dmpDeviceInfo.setServiceStatus(1);
|
|
|
+ dmpDeviceInfo.setDeviceUuid(UUIDUtils.uuid());
|
|
|
+ dmpDeviceService.save(dmpDeviceInfo);
|
|
|
+
|
|
|
+ DmpDeviceStatus dmpDeviceStatus = new DmpDeviceStatus();
|
|
|
+ dmpDeviceStatus.setDeviceId(dmpDeviceInfo.getDeviceId());
|
|
|
+ dmpDeviceStatus.setProductId(dmpDeviceInfo.getProductId());
|
|
|
+ dmpDeviceStatus.setDeviceStatus(2);
|
|
|
+ dmpDeviceStatus.setLastOfflineTime(LocalDateTime.now());
|
|
|
+ dmpDeviceStatus.setProductCode(dmpDeviceInfo.getProductCode());
|
|
|
+ dmpDeviceStatusService.save(dmpDeviceStatus);
|
|
|
+
|
|
|
+ dmpProductService.deleteDeviceCache();
|
|
|
+ }else if(deviceMapList.containsKey(deviceId)){
|
|
|
+ LambdaQueryWrapper<DmpDevice> queryWrapper = Wrappers.lambdaQuery();
|
|
|
+ queryWrapper.eq(DmpDevice::getDeleteFlag,0)
|
|
|
+ .eq(DmpDevice::getProductCode,productCode)
|
|
|
+ .eq(DmpDevice::getDeviceId,deviceId);
|
|
|
+ DmpDevice one = dmpDeviceService.getOne(queryWrapper);
|
|
|
+ if(one == null){
|
|
|
+ DmpDevice dmpDeviceInfo = new DmpDevice();
|
|
|
+ ProductMapVO productMapVO = productMapList.get(productCode);
|
|
|
+ dmpDeviceInfo.setDeviceId(deviceId);
|
|
|
+ dmpDeviceInfo.setDeviceName("");
|
|
|
+ dmpDeviceInfo.setDeviceType(productMapVO.getDeviceType());
|
|
|
+ dmpDeviceInfo.setProductId(productMapVO.getProductId());
|
|
|
+ dmpDeviceInfo.setProductCode(productCode);
|
|
|
+ dmpDeviceInfo.setCreatedBy(productMapVO.getCreatedBy());
|
|
|
+ dmpDeviceInfo.setCreatedTime(LocalDateTime.now());
|
|
|
+ dmpDeviceInfo.setTenantId(productMapVO.getTenantId());
|
|
|
+ dmpDeviceInfo.setServiceStatus(1);
|
|
|
+ dmpDeviceInfo.setDeviceUuid(UUIDUtils.uuid());
|
|
|
+ dmpDeviceService.save(dmpDeviceInfo);
|
|
|
+
|
|
|
+ DmpDeviceStatus dmpDeviceStatus = new DmpDeviceStatus();
|
|
|
+ dmpDeviceStatus.setDeviceId(dmpDeviceInfo.getDeviceId());
|
|
|
+ dmpDeviceStatus.setProductId(dmpDeviceInfo.getProductId());
|
|
|
+ dmpDeviceStatus.setDeviceStatus(2);
|
|
|
+ dmpDeviceStatus.setLastOfflineTime(LocalDateTime.now());
|
|
|
+ dmpDeviceStatus.setProductCode(dmpDeviceInfo.getProductCode());
|
|
|
+ dmpDeviceStatusService.save(dmpDeviceStatus);
|
|
|
+
|
|
|
+ dmpProductService.deleteDeviceCache();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+}
|