From ad047e06bdfa5ee222080cb357403dc34fbc0f50 Mon Sep 17 00:00:00 2001
From: Administrator <admin>
Date: Thu, 13 May 2021 21:04:50 +0800
Subject: [PATCH] 1.desk,service,user 模块 pom依赖修改 2.新增 blade-onenetstudio 模块,集成onenetstudio 基于MQTT协议的sdk,实现设备的属性上报功能

---
 blade-service/blade-onenetstudio/pom.xml                                                                           |   52 ++++
 blade-service/blade-onenetstudio/src/main/resources/application-dev.yml                                            |   12 +
 blade-service/blade-onenetstudio/src/main/resources/model-R67X22o88Y.json                                          |  161 +++++++++++++
 blade-service/blade-onenetstudio/src/main/java/org/springblade/onenetstudio/mapper/EquipmentMapper.xml             |   11 
 blade-service/blade-onenetstudio/src/main/resources/application-prod.yml                                           |   10 
 blade-service/blade-onenetstudio/src/main/resources/application.yml                                                |   10 
 blade-service/blade-onenetstudio/src/main/resources/application-test.yml                                           |   10 
 blade-service/blade-user/pom.xml                                                                                   |   15 +
 blade-service/blade-desk/pom.xml                                                                                   |   15 +
 blade-service/pom.xml                                                                                              |   36 +-
 blade-service/blade-onenetstudio/src/main/java/org/springblade/onenetstudio/tm/PropertyPost.java                   |  183 +++++++++++++++
 blade-service/blade-onenetstudio/src/main/java/org/springblade/onenetstudio/service/EquipmentService.java          |   13 +
 blade-service/blade-onenetstudio/src/main/java/org/springblade/onenetstudio/OneNetStudioApplication.java           |   14 +
 blade-service/blade-onenetstudio/src/main/resources/certificate.pem                                                |   20 +
 blade-service/blade-onenetstudio/src/main/java/org/springblade/onenetstudio/service/impl/EquipmentServiceImpl.java |   25 ++
 blade-service/blade-onenetstudio/src/main/java/org/springblade/onenetstudio/entity/Equipments.java                 |   65 +++++
 blade-service/blade-onenetstudio/src/main/java/org/springblade/onenetstudio/mapper/EquipmentMapper.java            |   17 +
 blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/DeptVO.java                             |    6 
 18 files changed, 661 insertions(+), 14 deletions(-)

diff --git a/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/DeptVO.java b/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/DeptVO.java
index 04f5a5e..336316d 100644
--- a/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/DeptVO.java
+++ b/blade-service-api/blade-system-api/src/main/java/org/springblade/system/vo/DeptVO.java
@@ -20,8 +20,10 @@
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import io.swagger.annotations.ApiModel;
+import lombok.AllArgsConstructor;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
+import lombok.NoArgsConstructor;
 import org.springblade.core.tool.node.INode;
 import org.springblade.system.entity.Dept;
 
@@ -36,6 +38,8 @@
 @Data
 @EqualsAndHashCode(callSuper = true)
 @ApiModel(value = "DeptVO对象", description = "DeptVO对象")
+@AllArgsConstructor
+@NoArgsConstructor
 public class DeptVO extends Dept implements INode<DeptVO> {
 	private static final long serialVersionUID = 1L;
 
@@ -81,4 +85,6 @@
 	 */
 	private String deptCategoryName;
 
+
+
 }
diff --git a/blade-service/blade-desk/pom.xml b/blade-service/blade-desk/pom.xml
index 70694e2..a4f85c0 100644
--- a/blade-service/blade-desk/pom.xml
+++ b/blade-service/blade-desk/pom.xml
@@ -48,6 +48,21 @@
             <groupId>org.springblade</groupId>
             <artifactId>blade-starter-oss-qiniu</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.springblade</groupId>
+            <artifactId>blade-common</artifactId>
+            <version>${bladex.project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springblade</groupId>
+            <artifactId>blade-dict-api</artifactId>
+            <version>${bladex.project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springblade</groupId>
+            <artifactId>blade-scope-api</artifactId>
+            <version>${bladex.project.version}</version>
+        </dependency>
         <!--<dependency>
             <groupId>org.springblade</groupId>
             <artifactId>blade-starter-transaction</artifactId>
diff --git a/blade-service/blade-onenetstudio/pom.xml b/blade-service/blade-onenetstudio/pom.xml
new file mode 100644
index 0000000..a88bd89
--- /dev/null
+++ b/blade-service/blade-onenetstudio/pom.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <parent>
+        <artifactId>blade-service</artifactId>
+        <groupId>org.springblade</groupId>
+        <version>2.7.1.RELEASE</version>
+    </parent>
+    <modelVersion>4.0.0</modelVersion>
+
+    <artifactId>blade-onenetstudio</artifactId>
+
+    <properties>
+        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+        <maven.compiler.encoding>UTF-8</maven.compiler.encoding>
+        <maven.compiler.source>1.8</maven.compiler.source>
+        <maven.compiler.target>1.8</maven.compiler.target>
+        <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
+    </properties>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.springblade</groupId>
+            <artifactId>blade-core-boot</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.onenet.studio</groupId>
+            <artifactId>acc-sdk-process</artifactId>
+            <version>1.0.0-SNAPSHOT</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.eclipse.paho</groupId>
+                    <artifactId>org.eclipse.paho.client.mqttv3</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>commons-io</groupId>
+            <artifactId>commons-io</artifactId>
+            <version>2.8.0</version>
+        </dependency>
+        <!-- org.eclipse.paho.client.mqttv3 -->
+        <dependency>
+            <groupId>org.eclipse.paho</groupId>
+            <artifactId>org.eclipse.paho.client.mqttv3</artifactId>
+            <version>1.2.5</version>
+        </dependency>
+    </dependencies>
+
+</project>
diff --git a/blade-service/blade-onenetstudio/src/main/java/org/springblade/onenetstudio/OneNetStudioApplication.java b/blade-service/blade-onenetstudio/src/main/java/org/springblade/onenetstudio/OneNetStudioApplication.java
new file mode 100644
index 0000000..b7f5b32
--- /dev/null
+++ b/blade-service/blade-onenetstudio/src/main/java/org/springblade/onenetstudio/OneNetStudioApplication.java
@@ -0,0 +1,14 @@
+package org.springblade.onenetstudio;
+import com.onenet.studio.acc.sdk.annotations.ThingsModelConfiguration;
+import org.springblade.core.launch.BladeApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.openfeign.EnableFeignClients;
+
+@SpringBootApplication
+@EnableFeignClients
+@ThingsModelConfiguration("src/main/resources/model-R67X22o88Y.json")
+public class OneNetStudioApplication {
+	public static void main(String[] args) {
+		BladeApplication.run("blade-onenetstudio",OneNetStudioApplication.class,args);
+	}
+}
diff --git a/blade-service/blade-onenetstudio/src/main/java/org/springblade/onenetstudio/entity/Equipments.java b/blade-service/blade-onenetstudio/src/main/java/org/springblade/onenetstudio/entity/Equipments.java
new file mode 100644
index 0000000..12984d0
--- /dev/null
+++ b/blade-service/blade-onenetstudio/src/main/java/org/springblade/onenetstudio/entity/Equipments.java
@@ -0,0 +1,65 @@
+package org.springblade.onenetstudio.entity;
+import com.baomidou.mybatisplus.annotation.TableField;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * 实体类
+ *
+ * @author BladeX
+ * @since 2020-07-01
+ */
+@Data
+public class Equipments implements Serializable {
+
+	/**
+	 * 设备名称
+	 */
+	private String deviceName;
+
+	/**
+	 * 经度
+	 */
+	private String jd;
+
+	/**
+	 * 纬度
+	 */
+	private String wd;
+
+	/**
+	 * 设备状态
+	 */
+	private String dtype;
+
+	/**
+	 * 序列号
+	 */
+	private String serialNumber;
+
+	/**
+	 * 设备型号
+	 */
+	private String eqModel;
+
+	/**
+	 * 产品id,onenetstudio 平台生成
+	 */
+	private String proId;
+
+	/**
+	 * 设备秘钥,onenetstudio 平台生成
+	 */
+	private String eqSecret;
+
+	/**
+	 * 设备名称,onenetstudio 平台生成
+	 */
+	private String eqName;
+
+	/**
+	 * 联网方式
+	 */
+	private String netType;
+}
diff --git a/blade-service/blade-onenetstudio/src/main/java/org/springblade/onenetstudio/mapper/EquipmentMapper.java b/blade-service/blade-onenetstudio/src/main/java/org/springblade/onenetstudio/mapper/EquipmentMapper.java
new file mode 100644
index 0000000..6c9f4fb
--- /dev/null
+++ b/blade-service/blade-onenetstudio/src/main/java/org/springblade/onenetstudio/mapper/EquipmentMapper.java
@@ -0,0 +1,17 @@
+package org.springblade.onenetstudio.mapper;
+
+
+import org.apache.ibatis.annotations.Mapper;
+import org.springblade.onenetstudio.entity.Equipments;
+
+import java.util.List;
+
+@Mapper
+public interface EquipmentMapper {
+
+	/**
+	 * 查询已在onenetstudio平台注册的设备
+	 * @return
+	 */
+	List<Equipments> selRegisterEqList();
+}
diff --git a/blade-service/blade-onenetstudio/src/main/java/org/springblade/onenetstudio/mapper/EquipmentMapper.xml b/blade-service/blade-onenetstudio/src/main/java/org/springblade/onenetstudio/mapper/EquipmentMapper.xml
new file mode 100644
index 0000000..58fb6e9
--- /dev/null
+++ b/blade-service/blade-onenetstudio/src/main/java/org/springblade/onenetstudio/mapper/EquipmentMapper.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.springblade.onenetstudio.mapper.EquipmentMapper">
+
+    <!--查询已在onenetstudio 平台注册的设备-->
+    <select id="selRegisterEqList" resultType="org.springblade.onenetstudio.entity.Equipments">
+        select deviceName,jd,wd,dtype,serialNumber,
+        eq_model eqModel,pro_id proId,eq_secret eqSecret,eq_name eqName,net_type netType from sys_equipment
+         where pro_id is not null
+    </select>
+</mapper>
diff --git a/blade-service/blade-onenetstudio/src/main/java/org/springblade/onenetstudio/service/EquipmentService.java b/blade-service/blade-onenetstudio/src/main/java/org/springblade/onenetstudio/service/EquipmentService.java
new file mode 100644
index 0000000..d13c3ff
--- /dev/null
+++ b/blade-service/blade-onenetstudio/src/main/java/org/springblade/onenetstudio/service/EquipmentService.java
@@ -0,0 +1,13 @@
+package org.springblade.onenetstudio.service;
+
+import org.springblade.onenetstudio.entity.Equipments;
+
+import java.util.List;
+
+public interface EquipmentService {
+	/**
+	 * 查询已在onenetstudio平台注册的设备
+	 * @return
+	 */
+	List<Equipments> selRegisterEqList();
+}
diff --git a/blade-service/blade-onenetstudio/src/main/java/org/springblade/onenetstudio/service/impl/EquipmentServiceImpl.java b/blade-service/blade-onenetstudio/src/main/java/org/springblade/onenetstudio/service/impl/EquipmentServiceImpl.java
new file mode 100644
index 0000000..9d230fd
--- /dev/null
+++ b/blade-service/blade-onenetstudio/src/main/java/org/springblade/onenetstudio/service/impl/EquipmentServiceImpl.java
@@ -0,0 +1,25 @@
+package org.springblade.onenetstudio.service.impl;
+
+import org.springblade.onenetstudio.entity.Equipments;
+import org.springblade.onenetstudio.mapper.EquipmentMapper;
+import org.springblade.onenetstudio.service.EquipmentService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+@Service
+public class EquipmentServiceImpl implements EquipmentService {
+
+	@Autowired
+	private EquipmentMapper equipmentMapper;
+
+	/**
+	 * 查询已在onenetstudio平台注册的设备
+	 * @return
+	 */
+	@Override
+	public List<Equipments> selRegisterEqList() {
+		return equipmentMapper.selRegisterEqList();
+	}
+}
diff --git a/blade-service/blade-onenetstudio/src/main/java/org/springblade/onenetstudio/tm/PropertyPost.java b/blade-service/blade-onenetstudio/src/main/java/org/springblade/onenetstudio/tm/PropertyPost.java
new file mode 100644
index 0000000..b71cbaa
--- /dev/null
+++ b/blade-service/blade-onenetstudio/src/main/java/org/springblade/onenetstudio/tm/PropertyPost.java
@@ -0,0 +1,183 @@
+package org.springblade.onenetstudio.tm;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.onenet.studio.acc.sdk.OpenApi;
+import com.onenet.studio.acc.sdk.OpenApiExtention;
+import com.onenet.studio.acc.sdk.dto.GeoLocationStructDTO;
+import org.springblade.onenetstudio.entity.Equipments;
+import org.springblade.onenetstudio.service.EquipmentService;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 设备属性数据交互
+ */
+@Component
+public class PropertyPost {
+
+    @Resource
+	private EquipmentService equipmentService;
+
+	@Value("${sdk.api.url}")
+	private String url;
+
+    @PostConstruct
+    public void init() {
+		//查询设备
+		List<Equipments> equipmentsList = equipmentService.selRegisterEqList();
+		//有数据则创建openApi对象
+		if (equipmentsList.size()>0){
+			for (Equipments equipments:equipmentsList) {
+				try {
+					OpenApi openApi = OpenApi.Builder.newBuilder()
+						.url(url)
+						.productId(equipments.getProId())
+						.devKey(equipments.getEqName())
+						.accessKey(equipments.getEqSecret())
+	//                .caCrtFile(caCrtFile)
+						.build();
+					System.out.println("openApi = " + openApi);
+					OpenApiExtention extention = new OpenApiExtention(openApi);
+					//属性上报
+					propertyUp(extention,equipments);
+					//属性设置
+					//        propertySet(extention);
+					//属性获取
+					//        peropertyGet(extention);
+					//期望值获取
+					//        desiredGet(extention);
+					//期望值删除
+					//        desiredDel(extention);
+				} catch (Exception e) {
+					e.printStackTrace();
+				}
+			}
+		}
+    }
+
+    /**
+     * 属性上报
+     *
+     * @author wjl
+     * @date 2020/12/29
+     * @param extention 物模型扩展API
+     **/
+    public void propertyUp(OpenApiExtention extention,Equipments equipments) {
+    	//设置坐标数据
+        GeoLocationStructDTO geoLocationStructDTO = new GeoLocationStructDTO();
+        geoLocationStructDTO.setAltitude(100.00);
+		geoLocationStructDTO.setLatitude(Double.parseDouble(String.format("%.2f", Double.parseDouble(equipments.getWd()))));
+        geoLocationStructDTO.setLongitude(Double.parseDouble(String.format("%.2f", Double.parseDouble(equipments.getJd()))));
+        geoLocationStructDTO.setCoordinateSystem(1);
+        try {
+        	//设备数据上报
+            int result = extention.propertyUpload(5000,
+												0,
+												100,
+												geoLocationStructDTO,
+												equipments.getDeviceName(),
+												equipments.getNetType(),
+												equipments.getSerialNumber(),
+												equipments.getEqModel());
+            //result 0 即为上报成功   1:失败
+            System.out.println("up result : " + result);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * 属性设置
+     *
+     * @author wjl
+     * @date 2020/12/29
+     * @param extention 物模型扩展API
+     **/
+    public void propertySet(OpenApiExtention extention) {
+//        try {
+//            extention.propertySet(oneJson -> {
+//                System.out.println("receive oneJson : " + oneJson);
+//                JSONObject json = JSON.parseObject(oneJson);
+//                try {
+//                    extention.propertySetReply(json.getString("id"), 200, "success");
+//                } catch (Exception e) {
+//                    e.printStackTrace();
+//                }
+//            });
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//        }
+    }
+
+    /**
+     * 属性获取
+     *
+     * @author wjl
+     * @date 2020/12/29
+     * @param extention 物模型扩展API
+     **/
+    public void peropertyGet(OpenApiExtention extention) {
+        try {
+            extention.propertyGet(oneJson -> {
+                System.out.println("receive oneJson : " + oneJson);
+                JSONObject json = JSON.parseObject(oneJson);
+                try {
+                    // 返回的属性与收到的属性要对应上,否则不成功
+                    Map<String, Object> map = new HashMap<>();
+                    map.put("DeviceStatus", 1);
+                    extention.propertyGetReply(json.getString("id"), 200, "success", map);
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            });
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * 期望值获取
+     *
+     * @author wjl
+     * @date 2020/12/29
+     * @param extention 物模型扩展API
+     **/
+    public void desiredGet(OpenApiExtention extention) {
+        List<String> list = new ArrayList<>();
+        list.add("DeviceStatus");
+
+        try {
+            JSONObject get = extention.propertyDesiredGet(list.toArray(new String[list.size()]), 5000);
+            System.out.println("desired get oneJson : " + get.toJSONString());
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
+    /**
+     * 期望值删除
+     *
+     * @author wjl
+     * @date 2020/12/29
+     * @param extention 物模型扩展API
+     * @return void
+     **/
+    public void desiredDel(OpenApiExtention extention) {
+        Map<String, Integer> map = new HashMap<>();
+        map.put("DeviceStatus", 1);
+        try {
+            int result = extention.propertyDesiredDel(5000, map);
+            System.out.println("desired del result : " + result);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+}
diff --git a/blade-service/blade-onenetstudio/src/main/resources/application-dev.yml b/blade-service/blade-onenetstudio/src/main/resources/application-dev.yml
new file mode 100644
index 0000000..d6fca57
--- /dev/null
+++ b/blade-service/blade-onenetstudio/src/main/resources/application-dev.yml
@@ -0,0 +1,12 @@
+#服务器端口
+server:
+  port: 809
+
+#数据源配置
+spring:
+  datasource:
+    url: jdbc:mysql://36.134.81.48:3306/jfpt?allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true&useOldAliasMetadataBehavior=true
+    username: root
+    password: jfpt123
+
+
diff --git a/blade-service/blade-onenetstudio/src/main/resources/application-prod.yml b/blade-service/blade-onenetstudio/src/main/resources/application-prod.yml
new file mode 100644
index 0000000..e8d21d9
--- /dev/null
+++ b/blade-service/blade-onenetstudio/src/main/resources/application-prod.yml
@@ -0,0 +1,10 @@
+#服务器端口
+server:
+  port: 8205
+
+#数据源配置
+spring:
+  datasource:
+    url: ${blade.datasource.prod.url}
+    username: ${blade.datasource.prod.username}
+    password: ${blade.datasource.prod.password}
diff --git a/blade-service/blade-onenetstudio/src/main/resources/application-test.yml b/blade-service/blade-onenetstudio/src/main/resources/application-test.yml
new file mode 100644
index 0000000..a40a289
--- /dev/null
+++ b/blade-service/blade-onenetstudio/src/main/resources/application-test.yml
@@ -0,0 +1,10 @@
+#服务器端口
+server:
+  port: 8105
+
+#数据源配置
+spring:
+  datasource:
+    url: ${blade.datasource.test.url}
+    username: ${blade.datasource.test.username}
+    password: ${blade.datasource.test.password}
diff --git a/blade-service/blade-onenetstudio/src/main/resources/application.yml b/blade-service/blade-onenetstudio/src/main/resources/application.yml
new file mode 100644
index 0000000..3221f19
--- /dev/null
+++ b/blade-service/blade-onenetstudio/src/main/resources/application.yml
@@ -0,0 +1,10 @@
+sdk:
+  api:
+    #url: ssl://183.230.102.116:8883  加密连接
+    url: tcp://218.201.45.7:1883
+#    # 产品ID
+#    product-id: R67X22o88Y
+#    # 设备名称
+#    dev-key: test3
+#    # 产品key
+#    access-key: a/uhC1M1q8+tpXPFe+E5v81xYVu/pSd906sNGZOvlVM=
diff --git a/blade-service/blade-onenetstudio/src/main/resources/certificate.pem b/blade-service/blade-onenetstudio/src/main/resources/certificate.pem
new file mode 100644
index 0000000..25a5cea
--- /dev/null
+++ b/blade-service/blade-onenetstudio/src/main/resources/certificate.pem
@@ -0,0 +1,20 @@
+-----BEGIN CERTIFICATE-----
+MIIDOzCCAiOgAwIBAgIJAPCCNfxANtVEMA0GCSqGSIb3DQEBCwUAMDQxCzAJBgNV
+BAYTAkNOMQ4wDAYDVQQKDAVDTUlPVDEVMBMGA1UEAwwMT25lTkVUIE1RVFRTMB4X
+DTE5MDUyOTAxMDkyOFoXDTQ5MDUyMTAxMDkyOFowNDELMAkGA1UEBhMCQ04xDjAM
+BgNVBAoMBUNNSU9UMRUwEwYDVQQDDAxPbmVORVQgTVFUVFMwggEiMA0GCSqGSIb3
+DQEBAQUAA4IBDwAwggEKAoIBAQC/VvJ6lGWfy9PKdXKBdzY83OERB35AJhu+9jkx
+5d4SOtZScTe93Xw9TSVRKrFwu5muGgPusyAlbQnFlZoTJBZY/745MG6aeli6plpR
+r93G6qVN5VLoXAkvqKslLZlj6wXy70/e0GC0oMFzqSP0AY74icANk8dUFB2Q8usS
+UseRafNBcYfqACzF/Wa+Fu/upBGwtl7wDLYZdCm3KNjZZZstvVB5DWGnqNX9HkTl
+U9NBMS/7yph3XYU3mJqUZxryb8pHLVHazarNRppx1aoNroi+5/t3Fx/gEa6a5PoP
+ouH35DbykmzvVE67GUGpAfZZtEFE1e0E/6IB84PE00llvy3pAgMBAAGjUDBOMB0G
+A1UdDgQWBBTTi/q1F2iabqlS7yEoX1rbOsz5GDAfBgNVHSMEGDAWgBTTi/q1F2ia
+bqlS7yEoX1rbOsz5GDAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAL
+aqJ2FgcKLBBHJ8VeNSuGV2cxVYH1JIaHnzL6SlE5q7MYVg+Ofbs2PRlTiWGMazC7
+q5RKVj9zj0z/8i3ScWrWXFmyp85ZHfuo/DeK6HcbEXJEOfPDvyMPuhVBTzuBIRJb
+41M27NdIVCdxP6562n6Vp0gbE8kN10q+ksw8YBoLFP0D1da7D5WnSV+nwEIP+F4a
+3ZX80bNt6tRj9XY0gM68mI60WXrF/qYL+NUz+D3Lw9bgDSXxpSN8JGYBR85BxBvR
+NNAhsJJ3yoAvbPUQ4m8J/CoVKKgcWymS1pvEHmF47pgzbbjm5bdthlIx+swdiGFa
+WzdhzTYwVkxBaU+xf/2w
+-----END CERTIFICATE-----
diff --git a/blade-service/blade-onenetstudio/src/main/resources/model-R67X22o88Y.json b/blade-service/blade-onenetstudio/src/main/resources/model-R67X22o88Y.json
new file mode 100644
index 0000000..8b15252
--- /dev/null
+++ b/blade-service/blade-onenetstudio/src/main/resources/model-R67X22o88Y.json
@@ -0,0 +1,161 @@
+{
+  "properties" : [ {
+    "identifier" : "AlarmState",
+    "name" : "报警状态",
+    "functionType" : "st",
+    "accessMode" : "r",
+    "functionMode" : "property",
+    "desc" : "",
+    "dataType" : {
+      "type" : "enum",
+      "specs" : {
+        "0" : "正常",
+        "1" : "危险报警"
+      }
+    }
+  }, {
+    "identifier" : "BatteryLevel",
+    "name" : "电池电量",
+    "functionType" : "st",
+    "accessMode" : "r",
+    "functionMode" : "property",
+    "desc" : "",
+    "dataType" : {
+      "type" : "int32",
+      "specs" : {
+        "min" : "0",
+        "max" : "100",
+        "unit" : "百分比 / %",
+        "step" : "1"
+      }
+    }
+  }, {
+    "identifier" : "GeoLocation",
+    "name" : "地理位置",
+    "functionType" : "st",
+    "accessMode" : "r",
+    "functionMode" : "property",
+    "desc" : "",
+    "dataType" : {
+      "type" : "struct",
+      "specs" : [ {
+        "identifier" : "Longitude",
+        "name" : "经度",
+        "dataType" : {
+          "type" : "double",
+          "specs" : {
+            "min" : "-180",
+            "max" : "180",
+            "unit" : "度 / °",
+            "step" : "0.01"
+          }
+        }
+      }, {
+        "identifier" : "Latitude",
+        "name" : "纬度",
+        "dataType" : {
+          "type" : "double",
+          "specs" : {
+            "min" : "-90",
+            "max" : "90",
+            "unit" : "度 / °",
+            "step" : "0.01"
+          }
+        }
+      }, {
+        "identifier" : "Altitude",
+        "name" : "海拔",
+        "dataType" : {
+          "type" : "double",
+          "specs" : {
+            "min" : "0",
+            "max" : "9999",
+            "unit" : "米 / m",
+            "step" : "0.01"
+          }
+        }
+      }, {
+        "identifier" : "CoordinateSystem",
+        "name" : "坐标系统",
+        "dataType" : {
+          "type" : "enum",
+          "specs" : {
+            "1" : "WGS_84",
+            "2" : "GCJ_02"
+          }
+        }
+      } ]
+    }
+  }, {
+    "identifier" : "name",
+    "name" : "设备名称",
+    "functionType" : "u",
+    "accessMode" : "rw",
+    "functionMode" : "property",
+    "desc" : null,
+    "dataType" : {
+      "type" : "string",
+      "specs" : {
+        "length" : "255"
+      }
+    }
+  }, {
+    "identifier" : "networkWay",
+    "name" : "联网方式",
+    "functionType" : "u",
+    "accessMode" : "rw",
+    "functionMode" : "property",
+    "desc" : null,
+    "dataType" : {
+      "type" : "string",
+      "specs" : {
+        "length" : "255"
+      }
+    }
+  }, {
+    "identifier" : "serialNumber",
+    "name" : "设备序列号",
+    "functionType" : "u",
+    "accessMode" : "rw",
+    "functionMode" : "property",
+    "desc" : null,
+    "dataType" : {
+      "type" : "string",
+      "specs" : {
+        "length" : "255"
+      }
+    }
+  }, {
+    "identifier" : "type",
+    "name" : "设备型号",
+    "functionType" : "u",
+    "accessMode" : "rw",
+    "functionMode" : "property",
+    "desc" : null,
+    "dataType" : {
+      "type" : "string",
+      "specs" : {
+        "length" : "255"
+      }
+    }
+  } ],
+  "events" : [ {
+    "identifier" : "Error",
+    "name" : "故障上报",
+    "desc" : "",
+    "functionMode" : "event",
+    "outputData" : [ {
+      "identifier" : "ErrorCode",
+      "name" : "故障代码",
+      "dataType" : {
+        "type" : "enum",
+        "specs" : {
+          "0" : "无故障"
+        }
+      }
+    } ],
+    "functionType" : "st",
+    "eventType" : "info"
+  } ],
+  "services" : [ ]
+}
\ No newline at end of file
diff --git a/blade-service/blade-user/pom.xml b/blade-service/blade-user/pom.xml
index ffe7fb4..eeb920c 100644
--- a/blade-service/blade-user/pom.xml
+++ b/blade-service/blade-user/pom.xml
@@ -38,6 +38,21 @@
             <artifactId>blade-system-api</artifactId>
             <version>${bladex.project.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.springblade</groupId>
+            <artifactId>blade-common</artifactId>
+            <version>${bladex.project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springblade</groupId>
+            <artifactId>blade-dict-api</artifactId>
+            <version>${bladex.project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.springblade</groupId>
+            <artifactId>blade-scope-api</artifactId>
+            <version>${bladex.project.version}</version>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/blade-service/pom.xml b/blade-service/pom.xml
index 5e160c3..6cdde30 100644
--- a/blade-service/pom.xml
+++ b/blade-service/pom.xml
@@ -22,13 +22,11 @@
         <module>blade-system</module>
         <module>blade-user</module>
         <module>blade-jfpts</module>
+        <module>blade-onenetstudio</module>
     </modules>
 
     <dependencies>
-        <dependency>
-            <groupId>org.springblade</groupId>
-            <artifactId>blade-common</artifactId>
-        </dependency>
+
         <dependency>
             <groupId>org.springblade</groupId>
             <artifactId>blade-starter-tenant</artifactId>
@@ -37,16 +35,26 @@
             <groupId>org.springblade</groupId>
             <artifactId>blade-starter-api-crypto</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.springblade</groupId>
-            <artifactId>blade-dict-api</artifactId>
-            <version>${bladex.project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.springblade</groupId>
-            <artifactId>blade-scope-api</artifactId>
-            <version>${bladex.project.version}</version>
-        </dependency>
     </dependencies>
 
+    <!--2021-5-13 修改,由于blade-onenetstudio 模块compie时报错,当前模块不能引入一下三个依赖-->
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>org.springblade</groupId>
+                <artifactId>blade-common</artifactId>
+            </dependency>
+            <dependency>
+                <groupId>org.springblade</groupId>
+                <artifactId>blade-dict-api</artifactId>
+                <version>${bladex.project.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.springblade</groupId>
+                <artifactId>blade-scope-api</artifactId>
+                <version>${bladex.project.version}</version>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
 </project>

--
Gitblit v1.9.3