Ver Fonte

Merge branch 'usky-zyj' of uskycloud/usky-modules into server-165

James há 1 ano atrás
pai
commit
3899614f63

+ 0 - 7
service-backend/service-backend-api/src/main/java/com/usky/backend/client/DeviceDataClient.java

@@ -1,13 +1,6 @@
 package com.usky.backend.client;
 
-import com.usky.backend.domain.StatusVO;
-import com.usky.backend.domain.request.DeviceDataInfoVO;
 import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-
-import java.util.List;
 
 @FeignClient(contextId = "deviceDataClient", value = "usky-backend")
 public interface DeviceDataClient {

+ 0 - 5
service-backend/service-backend-biz/src/main/java/com/usky/backend/controller/api/DeviceDataApi.java

@@ -2,14 +2,9 @@ package com.usky.backend.controller.api;
 
 import com.usky.backend.client.DeviceDataClient;
 import com.usky.backend.domain.request.DeviceDataInfoVO;
-import com.usky.backend.service.DataRealTimeService;
 import io.swagger.annotations.Api;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
 
-import java.util.List;
-
 /**
  * <p>
  *  数据统一存储 前端控制器

+ 0 - 3
service-backend/service-backend-biz/src/main/java/com/usky/backend/mapper/DataRealTimeMapper.java

@@ -3,11 +3,8 @@ package com.usky.backend.mapper;
 import com.usky.backend.domain.DataRealTime;
 import com.usky.backend.domain.request.DeviceDataInfoVO;
 import com.usky.common.mybatis.core.CrudMapper;
-import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Repository;
 
-import java.time.LocalDateTime;
-
 /**
  * <p>
  * 实时数据表 Mapper 接口

+ 0 - 2
service-backend/service-backend-biz/src/main/java/com/usky/backend/service/DataRealTimeService.java

@@ -4,8 +4,6 @@ import com.usky.backend.domain.DataRealTime;
 import com.usky.backend.domain.request.DeviceDataInfoVO;
 import com.usky.common.mybatis.core.CrudService;
 
-import java.util.List;
-
 /**
  * <p>
  * 实时数据表 服务类

+ 0 - 18
service-backend/service-backend-biz/src/main/java/com/usky/backend/service/impl/DataRealTimeServiceImpl.java

@@ -1,30 +1,12 @@
 package com.usky.backend.service.impl;
 
-import cn.hutool.json.JSONObject;
-import cn.hutool.json.JSONUtil;
-import com.alibaba.nacos.shaded.com.google.gson.JsonObject;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
-import com.baomidou.mybatisplus.core.toolkit.StringUtils;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.usky.backend.domain.DataRealTime;
 import com.usky.backend.domain.request.DeviceDataInfoVO;
 import com.usky.backend.mapper.DataRealTimeMapper;
 import com.usky.backend.service.DataRealTimeService;
-import com.usky.common.core.util.JsonUtils;
 import com.usky.common.mybatis.core.AbstractCrudService;
-import nonapi.io.github.classgraph.json.JSONUtils;
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.text.SimpleDateFormat;
-import java.time.Instant;
-import java.time.LocalDateTime;
-import java.time.ZoneId;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
 /**
  * <p>
  * 实时数据表 服务实现类

+ 29 - 18
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/DmpDataInfoServiceImpl.java

@@ -1,10 +1,12 @@
 package com.usky.iot.service.impl;
 
+import com.alibaba.fastjson.JSONArray;
 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.backend.client.DeviceDataClient;
-import com.usky.backend.domain.request.DeviceDataInfoVO;
+import com.usky.iot.service.config.mqtt.MqttOutConfig;
+import com.usky.iot.service.vo.DeviceDataInfoVO;
 import com.usky.common.core.exception.BusinessException;
 import com.usky.common.mybatis.core.AbstractCrudService;
 import com.usky.common.security.utils.SecurityUtils;
@@ -15,12 +17,11 @@ import com.usky.backend.domain.request.DmpDeviceDataRequestVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import javax.annotation.Resource;
 import java.time.Instant;
 import java.time.LocalDateTime;
 import java.time.ZoneId;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 /**
  * <p>
@@ -44,12 +45,15 @@ public class DmpDataInfoServiceImpl extends AbstractCrudService<DmpDataInfoMappe
 //    @Autowired
 //    private DeviceDataClient deviceDataClient;
 
+    @Resource
+    private MqttOutConfig.MqttGateway mqttGateway;
+
     @Autowired
     private DmpDeviceTypeService dmpDeviceTypeService;
 
     @Override
     public void data(DmpDeviceDataRequestVO dmpDeviceDataRequestVO){
-        List<DeviceDataInfoVO> dataInfo = new ArrayList<>();
+        DeviceDataInfoVO dataInfo = new DeviceDataInfoVO();
 
         LambdaQueryWrapper<DmpDeviceInfo> dmpDeviceQuery = Wrappers.lambdaQuery();
         dmpDeviceQuery.eq(DmpDeviceInfo::getDeleteFlag,0)
@@ -84,31 +88,38 @@ public class DmpDataInfoServiceImpl extends AbstractCrudService<DmpDataInfoMappe
                     .eq(DmpProductAttribute::getProductId,list.get(0).getId());
             List<DmpProductAttribute> list1 = dmpProductAttributeService.list(queryWrapper1);
             if(CollectionUtils.isNotEmpty(list1)){
-                for(int i=0;i<list1.size();i++){
                     Map<String,Float> metrics = dmpDeviceDataRequestVO.getMetrics();
                     if(metrics.size()>0){
+                        Map<String,Object> mp = new HashMap<>();
                         for(Map.Entry<String,Float> map:metrics.entrySet()){
+                            boolean find = false;
                             String key = map.getKey();
                             float value = map.getValue();
-                            if(key.equals(list1.get(i).getAttributeCode())){   //属性名需和产品注册信息一致
-                                DeviceDataInfoVO deviceDataInfoVO = new DeviceDataInfoVO();
-                                deviceDataInfoVO.setDeviceId(dmpDeviceDataRequestVO.getDeviceId());
-                                deviceDataInfoVO.setDeviceType(list.get(0).getDeviceType());
-                                deviceDataInfoVO.setTypeAbbrevia(shortName);
-                                deviceDataInfoVO.setName(key);
-                                deviceDataInfoVO.setValue(value);
-                                deviceDataInfoVO.setTimestamp(LocalDateTime.ofInstant(Instant.ofEpochSecond(dmpDeviceDataRequestVO.getTimestamp()), ZoneId.systemDefault()));
-                                dataInfo.add(deviceDataInfoVO);
+                            for(int i=0;i<list1.size();i++){
+                                if(key.equals(list1.get(i).getAttributeCode())){   //属性名需和产品注册信息一致
+                                    mp.put(key,value);
+                                    find = true;
+                                }
+                            }
+                            if(find == false){
+                                throw new BusinessException("对应这个产品下面的设备属性"+key+" 在产品属性表中不存在");
                             }
                         }
+                        dataInfo.setMetrics(mp);
+                        dataInfo.setDevice_id(dmpDeviceDataRequestVO.getDeviceId());
+                        dataInfo.setProduct_id(list.get(0).getId().toString());
+                        dataInfo.setTimestamp(dmpDeviceDataRequestVO.getTimestamp());
+                        dataInfo.setDevice_type(list.get(0).getDeviceType()+"-"+shortName);
                     }
-                }
+            }else{
+                throw new BusinessException("查找产品属性表失败,"+dmpDeviceDataRequestVO.getProductCode()+" 该产品对应的属性在产品信息表没有信息");
             }
         }else{
             throw new BusinessException("查找产品信息失败,"+dmpDeviceDataRequestVO.getProductCode()+" 在产品信息表中不存在");
         }
-        if(CollectionUtils.isNotEmpty(dataInfo)){
-
+        if(dataInfo != null){
+            mqttGateway.sendToMqtt("data-collector", JSONArray.toJSON(dataInfo).toString());
+            System.out.println(JSONArray.toJSON(dataInfo).toString());
         }
     }
 

+ 12 - 16
service-backend/service-backend-api/src/main/java/com/usky/backend/domain/request/DeviceDataInfoVO.java → service-iot/service-iot-biz/src/main/java/com/usky/iot/service/vo/DeviceDataInfoVO.java

@@ -1,10 +1,11 @@
-package com.usky.backend.domain.request;
+package com.usky.iot.service.vo;
 
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
 import java.io.Serializable;
 import java.time.LocalDateTime;
+import java.util.List;
 import java.util.Map;
 
 @Data
@@ -14,32 +15,27 @@ public class DeviceDataInfoVO implements Serializable {
     private static final long serialVersionUID = 1L;
 
     /**
-     * 设备编号
-     */
-    private String deviceId;
-
-    /**
-     * 设备类型
+     * 属性值集合
      */
-    private Integer deviceType;
+    private Map<String,Object> metrics;
 
     /**
-     * 设备简称
+     * 设备编号
      */
-    private String typeAbbrevia;
+    private String device_id;
 
     /**
-     * 属性名称
+     * 产品Id
      */
-    private String name;
+    private String product_id;
 
     /**
-     * 属性值
+     * 数据上报时间
      */
-    private float value;
+    private long timestamp;
 
     /**
-     * 数据上报时间
+     * 设备类型
      */
-    private LocalDateTime timestamp;
+    private String device_type;
 }

+ 2 - 2
service-iot/service-iot-biz/src/main/resources/bootstrap.yml

@@ -14,10 +14,10 @@ spring:
     nacos:
       discovery:
         # 服务注册地址
-        server-addr: usky-cloud-nacos:8848
+        server-addr: 172.16.120.165:8848
       config:
         # 配置中心地址
-        server-addr: usky-cloud-nacos:8848
+        server-addr: 172.16.120.165:8848
         # 配置文件格式
         file-extension: yml
         # 共享配置

+ 1 - 1
service-iot/service-iot-biz/src/main/resources/mapper/iot/DmpDeviceInfoMapper.xml

@@ -30,7 +30,7 @@
                 and ddi.device_name like CONCAT('%',#{ar.deviceName},'%')
             </if>
             <if test="ar.productId != null">
-                and ddi.product_id = #{ar.productId}
+                and ddi.product_id = #{ar.productId} and dds.product_id = #{ar.productId}
             </if>
             <if test="ar.serviceStatus != null">
                 and ddi.service_status = #{ar.serviceStatus}