소스 검색

Merge branch 'usky-zyj' into server-165

james 2 일 전
부모
커밋
6ab16f4fa6

+ 2 - 1
service-iot/service-iot-biz/src/main/java/com/usky/iot/mapper/DmpProductAttributeMapper.java

@@ -3,6 +3,7 @@ package com.usky.iot.mapper;
 import com.usky.common.mybatis.core.CrudMapper;
 import com.usky.iot.domain.DmpProductAttribute;
 import org.springframework.stereotype.Repository;
+import org.springframework.web.bind.annotation.RequestParam;
 
 
 /**
@@ -15,5 +16,5 @@ import org.springframework.stereotype.Repository;
  */
 @Repository
 public interface DmpProductAttributeMapper extends CrudMapper<DmpProductAttribute> {
-
+    String getSuperTableName(@RequestParam("productId") Integer productId);
 }

+ 1 - 1
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/DmpDeviceInfoServiceImpl.java

@@ -606,7 +606,7 @@ public class DmpDeviceInfoServiceImpl extends AbstractCrudService<DmpDeviceInfoM
 
     @Override
     public void updateDeviceStatus(LastInnerQueryVO queryVO){
-        List<LastInnerResultVO> list = remoteTsdbProxyService.last(queryVO);
+        List<LastInnerResultVO> list = remoteTsdbProxyService.queryLastDeviceData(queryVO);
         if(CollectionUtils.isNotEmpty(list)){
             for(int i=0;i<list.size();i++){
                 if(Objects.nonNull(list.get(i).getMetrics())){

+ 62 - 1
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/DmpProductAttributeServiceImpl.java

@@ -10,6 +10,11 @@ import com.usky.common.core.bean.CommonPage;
 import com.usky.common.core.exception.BusinessException;
 import com.usky.common.mybatis.core.AbstractCrudService;
 import com.usky.common.security.utils.SecurityUtils;
+import com.usky.demo.RemoteTsdbProxyService;
+import com.usky.demo.domain.DataTypeEnum;
+import com.usky.demo.domain.Fields;
+import com.usky.demo.domain.FieldsVO;
+import com.usky.demo.domain.SuperTableDTO;
 import com.usky.iot.domain.DmpProductAttribute;
 import com.usky.iot.domain.DmpProductInfo;
 import com.usky.iot.mapper.DmpProductAttributeMapper;
@@ -19,6 +24,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
+import java.rmi.Remote;
 import java.util.Date;
 import java.util.List;
 import java.util.Objects;
@@ -34,7 +40,10 @@ import java.util.Optional;
  */
 @Service
 public class DmpProductAttributeServiceImpl extends AbstractCrudService<DmpProductAttributeMapper, DmpProductAttribute> implements DmpProductAttributeService {
-
+    @Autowired
+    private RemoteTsdbProxyService remoteTsdbProxyService;
+    @Autowired
+    private DmpProductAttributeMapper dmpProductAttributeMapper;
 
     @Transactional(rollbackFor = Exception.class)
     @Override
@@ -47,6 +56,26 @@ public class DmpProductAttributeServiceImpl extends AbstractCrudService<DmpProdu
         dmpProductAttribute.setCreatedTime(new Date());
         dmpProductAttribute.setTenantId(SecurityUtils.getTenantId());
         this.save(dmpProductAttribute);
+
+        SuperTableDTO superTableDTO = new SuperTableDTO();
+        String superTableName = "super_"+dmpProductAttributeMapper.getSuperTableName(dmpProductAttribute.getProductId());
+        superTableDTO.setSuperTableName(superTableName);
+
+        int data_type = dmpProductAttribute.getDataType();
+        String dataType = "";
+        if(data_type == 1){
+            dataType = "INT";
+        }else if(data_type == 2){
+            dataType = "VARCHAR";
+        }else if(data_type == 3){
+            dataType = "BOOL";
+        }else if(data_type == 4) {
+            dataType = "DOUBLE";
+        }
+        FieldsVO fieldsVO = new FieldsVO(dmpProductAttribute.getAttributeCode(), dataType, dmpProductAttribute.getAttributeLength());
+        superTableDTO.setFields(FieldsVO.toFields(fieldsVO));
+        //超级表新增字段
+        remoteTsdbProxyService.addSuperTableColumn(superTableDTO);
         return true;
     }
 
@@ -58,6 +87,28 @@ public class DmpProductAttributeServiceImpl extends AbstractCrudService<DmpProdu
             throw new BusinessException("新增产品属性信息'" + dmpProductAttribute.getAttributeName() + "'失败,产品信息已存在");
         }
         this.updateById(dmpProductAttribute);
+
+        SuperTableDTO superTableDTO = new SuperTableDTO();
+        String superTableName = "super_"+dmpProductAttributeMapper.getSuperTableName(dmpProductAttribute.getProductId());
+        superTableDTO.setSuperTableName(superTableName);
+
+        int data_type = dmpProductAttribute.getDataType();
+        String dataType = "";
+        if(data_type == 1){
+            dataType = "INT";
+        }else if(data_type == 2){
+            dataType = "VARCHAR";
+        }else if(data_type == 3){
+            dataType = "BOOL";
+        }else if(data_type == 4) {
+            dataType = "DOUBLE";
+        }
+        FieldsVO fieldsVO = new FieldsVO(dmpProductAttribute.getAttributeCode(), dataType, dmpProductAttribute.getAttributeLength());
+        superTableDTO.setFields(FieldsVO.toFields(fieldsVO));
+        //超级表删除字段
+        remoteTsdbProxyService.dropSuperTableColumn(superTableDTO);
+        //超级表新增字段
+        remoteTsdbProxyService.addSuperTableColumn(superTableDTO);
     }
 
     @Override
@@ -89,6 +140,16 @@ public class DmpProductAttributeServiceImpl extends AbstractCrudService<DmpProdu
         DmpProductAttribute dmpProductAttribute = this.getById(id);
         Optional.ofNullable(dmpProductAttribute).orElseThrow(() -> new BusinessException("产品不存在"));
         dmpProductAttribute.setDeleteFlag(1);
+
+        SuperTableDTO superTableDTO = new SuperTableDTO();
+        String superTableName = "super_"+dmpProductAttributeMapper.getSuperTableName(dmpProductAttribute.getProductId());
+        superTableDTO.setSuperTableName(superTableName);
+
+        FieldsVO fieldsVO = new FieldsVO(dmpProductAttribute.getAttributeCode(), "", dmpProductAttribute.getAttributeLength());
+        superTableDTO.setFields(FieldsVO.toFields(fieldsVO));
+        //超级表删除字段
+        remoteTsdbProxyService.dropSuperTableColumn(superTableDTO);
+
         return this.updateById(dmpProductAttribute);
     }
 

+ 35 - 0
service-iot/service-iot-biz/src/main/java/com/usky/iot/service/impl/DmpProductInfoServiceImpl.java

@@ -16,6 +16,11 @@ import com.usky.common.core.bean.CommonPage;
 import com.usky.common.core.exception.BusinessException;
 import com.usky.common.mybatis.core.AbstractCrudService;
 import com.usky.common.security.utils.SecurityUtils;
+import com.usky.demo.RemoteTsdbProxyService;
+import com.usky.demo.constant.TdsConstants;
+import com.usky.demo.domain.DataTypeEnum;
+import com.usky.demo.domain.FieldsVO;
+import com.usky.demo.domain.SuperTableDTO;
 import com.usky.iot.domain.*;
 import com.usky.iot.mapper.DmpProductInfoMapper;
 import com.usky.iot.service.*;
@@ -61,6 +66,9 @@ public class DmpProductInfoServiceImpl extends AbstractCrudService<DmpProductInf
     @Autowired
     private DmpProductCommandService dmpProductCommandService;
 
+    @Autowired
+    private RemoteTsdbProxyService remoteTsdbProxyService;
+
     @Override
     public void add(List<DmpProductInfo> dmpProductInfo) {
         if (CollectionUtils.isEmpty(dmpProductInfo)) {
@@ -105,6 +113,13 @@ public class DmpProductInfoServiceImpl extends AbstractCrudService<DmpProductInf
                     String dataField = one.getDataField();
                     JSONArray array = new JSONArray();
                     array =  JSONArray.parseArray(dataField);
+
+                    SuperTableDTO superTableDTO = new SuperTableDTO();
+                    superTableDTO.setSuperTableName("super_"+productCode);
+                    List<FieldsVO> schemaFields = new ArrayList<>(Arrays.asList(
+                            new FieldsVO(TdsConstants.TS, "TIMESTAMP", null)
+                    ));
+
                     if(array.size()>0){
                         for(int i=0;i<array.size();i++){
                             JSONObject obj = JSONObject.parseObject(array.getString(i));
@@ -122,6 +137,17 @@ public class DmpProductInfoServiceImpl extends AbstractCrudService<DmpProductInf
                             dmpProductAttribute.setAttributePort(attribute_port);
                             dmpProductAttribute.setAttributeType(1);
                             dmpProductAttribute.setDataType(data_type);
+                            String dataType = "";
+                            if(data_type == 1){
+                                dataType = "INT";
+                            }else if(data_type == 2){
+                                dataType = "VARCHAR";
+                            }else if(data_type == 3){
+                                dataType = "BOOL";
+                            }else if(data_type == 4) {
+                                dataType = "DOUBLE";
+                            }
+
                             dmpProductAttribute.setAttributeLength(attribute_length);
                             dmpProductAttribute.setAttributeUnit(attribute_unit);
                             if(Objects.nonNull(obj.getInteger("maximum"))){
@@ -138,8 +164,17 @@ public class DmpProductInfoServiceImpl extends AbstractCrudService<DmpProductInf
                             dmpProductAttribute.setCreatedTime(new Date());
                             dmpProductAttribute.setTenantId(SecurityUtils.getTenantId());
                             dmpProductAttributeService.save(dmpProductAttribute);
+
+                            schemaFields.add(new FieldsVO(attribute_code, dataType, attribute_length));
                         }
                     }
+
+                    List<FieldsVO> tagsFields = Collections.singletonList(new FieldsVO(TdsConstants.DEVICE_IDENTIFICATION, "VARCHAR", 50));
+
+                    superTableDTO.setSchemaFields(FieldsVO.toFieldsList(schemaFields));
+                    superTableDTO.setTagsFields(FieldsVO.toFieldsList(tagsFields));
+                    //创建超级表及列
+                    remoteTsdbProxyService.createSuperTableAndColumn(superTableDTO);
                 }
 
                 if(Objects.nonNull(one.getCommandField())){

+ 7 - 0
service-iot/service-iot-biz/src/main/resources/mapper/iot/DmpProductAttributeMapper.xml

@@ -28,4 +28,11 @@
         <result column="tenant_id" property="tenantId" />
     </resultMap>
 
+    <select id="getSuperTableName" resultType="String">
+        SELECT product_code
+        FROM dmp_product
+        where id = #{productId}
+    </select>
+
+
 </mapper>