james 1 год назад
Родитель
Сommit
779a1153aa

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

@@ -1,13 +1,7 @@
 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>
  * 实时数据表 服务实现类

+ 22 - 13
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/DmpDataInfoServiceImpl.java

@@ -4,7 +4,7 @@ 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.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 +15,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,6 +43,9 @@ public class DmpDataInfoServiceImpl extends AbstractCrudService<DmpDataInfoMappe
 //    @Autowired
 //    private DeviceDataClient deviceDataClient;
 
+    @Resource
+    private MqttOutConfig.MqttGateway mqttGateway;
+
     @Autowired
     private DmpDeviceTypeService dmpDeviceTypeService;
 
@@ -87,20 +89,27 @@ public class DmpDataInfoServiceImpl extends AbstractCrudService<DmpDataInfoMappe
                 for(int i=0;i<list1.size();i++){
                     Map<String,Float> metrics = dmpDeviceDataRequestVO.getMetrics();
                     if(metrics.size()>0){
+                        DeviceDataInfoVO deviceDataInfoVO = new DeviceDataInfoVO();
+                        Map<String,Object> mp = new HashMap<>();
+                        List<Map<String,Object>> list2 = new ArrayList<>();
                         for(Map.Entry<String,Float> map:metrics.entrySet()){
                             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);
+                                mp.put(key,value);
+                                list2.add(mp);
+                            }else{
+                                throw new BusinessException("设备属性"+key+" 在产品属性表中不存在");
                             }
                         }
+                        deviceDataInfoVO.setMetrics(list2);
+                        deviceDataInfoVO.setDevice_id(dmpDeviceDataRequestVO.getDeviceId());
+                        deviceDataInfoVO.setProduct_id(list.get(0).getId().toString());
+                        Calendar calendar = Calendar.getInstance();
+                        long timestamp = calendar.getTimeInMillis() / 1000;
+                        deviceDataInfoVO.setTimestamp(timestamp);
+                        deviceDataInfoVO.setDevice_type(list.get(0).getDeviceType()+"-"+shortName);
+                        dataInfo.add(deviceDataInfoVO);
                     }
                 }
             }
@@ -108,7 +117,7 @@ public class DmpDataInfoServiceImpl extends AbstractCrudService<DmpDataInfoMappe
             throw new BusinessException("查找产品信息失败,"+dmpDeviceDataRequestVO.getProductCode()+" 在产品信息表中不存在");
         }
         if(CollectionUtils.isNotEmpty(dataInfo)){
-
+            mqttGateway.sendToMqtt("data-collector",dataInfo);
         }
     }
 

+ 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 List<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;
 }

+ 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}