瀏覽代碼

增加可视化管理

zhou-hao 5 年之前
父節點
當前提交
ec44c51864

+ 1 - 0
jetlinks-manager/pom.xml

@@ -18,6 +18,7 @@
         <module>notify-manager</module>
         <module>logging-manager</module>
         <module>rule-engine-manager</module>
+        <module>visualization-manager</module>
     </modules>
 
 </project>

+ 29 - 0
jetlinks-manager/visualization-manager/.gitignore

@@ -0,0 +1,29 @@
+**/pom.xml.versionsBackup
+**/target/
+**/out/
+*.class
+# Mobile Tools for Java (J2ME)
+.mtj.tmp/
+.idea/
+/nbproject
+*.ipr
+*.iws
+*.iml
+
+# Package Files #
+*.jar
+*.war
+*.ear
+*.log
+# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
+hs_err_pid*
+**/transaction-logs/
+!/.mvn/wrapper/maven-wrapper.jar
+/data/
+*.db
+/static/
+/upload
+/ui/upload/
+docker/data
+!ip2region.db
+!device-simulator.jar

+ 42 - 0
jetlinks-manager/visualization-manager/pom.xml

@@ -0,0 +1,42 @@
+<?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">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.jetlinks.community</groupId>
+        <artifactId>jetlinks-manager</artifactId>
+        <version>1.1-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+    <artifactId>visualization-manager</artifactId>
+
+    <dependencies>
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>common-component</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.hswebframework.web</groupId>
+            <artifactId>hsweb-authorization-api</artifactId>
+            <version>${hsweb.framework.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.hswebframework.web</groupId>
+            <artifactId>hsweb-starter</artifactId>
+            <version>${hsweb.framework.version}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.hswebframework</groupId>
+            <artifactId>hsweb-easy-orm-rdb</artifactId>
+        </dependency>
+
+
+    </dependencies>
+
+</project>

+ 56 - 0
jetlinks-manager/visualization-manager/src/main/java/org/jetlinks/pro/visualization/entity/DataVisualizationEntity.java

@@ -0,0 +1,56 @@
+package org.jetlinks.pro.visualization.entity;
+
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+import org.hswebframework.ezorm.rdb.mapping.annotation.ColumnType;
+import org.hswebframework.ezorm.rdb.mapping.annotation.DefaultValue;
+import org.hswebframework.ezorm.rdb.mapping.annotation.EnumCodec;
+import org.hswebframework.web.api.crud.entity.GenericEntity;
+import org.jetlinks.pro.visualization.enums.DataVisualizationState;
+import org.springframework.stereotype.Component;
+
+import javax.persistence.Column;
+import javax.persistence.Index;
+import javax.persistence.Table;
+import javax.validation.constraints.NotBlank;
+import java.sql.JDBCType;
+
+/**
+ * 数据可视化
+ *
+ * @author zhouhao
+ * @since 1.1
+ */
+@Table(name = "vis_data_visualization", indexes = {
+    @Index(name = "idx_vis_type_target", columnList = "type,target")
+})
+@EqualsAndHashCode(callSuper = true)
+@Data
+public class DataVisualizationEntity extends GenericEntity<String> {
+
+    @Column(length = 32, nullable = false, updatable = false)
+    @NotBlank(message = "[type]不能为空")
+    private String type;
+
+    @Column(length = 32, nullable = false, updatable = false)
+    @NotBlank(message = "[target]不能为空")
+    private String target;
+
+    @Column
+    private String name;
+
+    @Column
+    private String description;
+
+    @Column
+    @ColumnType(jdbcType = JDBCType.CLOB)
+    private String metadata;
+
+    @Column(length = 32, nullable = false)
+    @EnumCodec
+    @ColumnType(javaType = String.class)
+    @DefaultValue("enabled")
+    private DataVisualizationState state;
+
+
+}

+ 21 - 0
jetlinks-manager/visualization-manager/src/main/java/org/jetlinks/pro/visualization/enums/DataVisualizationState.java

@@ -0,0 +1,21 @@
+package org.jetlinks.pro.visualization.enums;
+
+import lombok.AllArgsConstructor;
+import lombok.Getter;
+import org.hswebframework.web.dict.EnumDict;
+
+@Getter
+@AllArgsConstructor
+public enum DataVisualizationState implements EnumDict<String> {
+
+    enabled("启用"),
+    disabled("禁用")
+
+    ;
+    private final String text;
+
+    @Override
+    public String getValue() {
+        return name();
+    }
+}

+ 11 - 0
jetlinks-manager/visualization-manager/src/main/java/org/jetlinks/pro/visualization/service/DataVisualizationService.java

@@ -0,0 +1,11 @@
+package org.jetlinks.pro.visualization.service;
+
+import org.hswebframework.web.crud.service.GenericReactiveCrudService;
+import org.jetlinks.pro.visualization.entity.DataVisualizationEntity;
+import org.springframework.stereotype.Service;
+
+@Service
+public class DataVisualizationService extends GenericReactiveCrudService<DataVisualizationEntity,String> {
+
+
+}

+ 40 - 0
jetlinks-manager/visualization-manager/src/main/java/org/jetlinks/pro/visualization/web/DataVisualizationController.java

@@ -0,0 +1,40 @@
+package org.jetlinks.pro.visualization.web;
+
+import org.hswebframework.web.authorization.annotation.QueryAction;
+import org.hswebframework.web.authorization.annotation.Resource;
+import org.hswebframework.web.crud.web.reactive.ReactiveServiceCrudController;
+import org.jetlinks.pro.visualization.entity.DataVisualizationEntity;
+import org.jetlinks.pro.visualization.service.DataVisualizationService;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import reactor.core.publisher.Mono;
+
+@RestController
+@RequestMapping("/visualization")
+@Resource(id = "visualization", name = "可视化管理")
+public class DataVisualizationController implements ReactiveServiceCrudController<DataVisualizationEntity, String> {
+
+    private final DataVisualizationService visualizationService;
+
+    public DataVisualizationController(DataVisualizationService visualizationService) {
+        this.visualizationService = visualizationService;
+    }
+
+    @Override
+    public DataVisualizationService getService() {
+        return visualizationService;
+    }
+
+    @GetMapping("/{type}/{target}")
+    @QueryAction
+    public Mono<DataVisualizationEntity> getByTypeAndTarget(@PathVariable String type,
+                                                            @PathVariable String target) {
+        return visualizationService.createQuery()
+            .where(DataVisualizationEntity::getType, type)
+            .and(DataVisualizationEntity::getTarget, target)
+            .fetchOne();
+    }
+
+}

+ 21 - 0
jetlinks-manager/visualization-manager/src/test/java/org/jetlinks/pro/io/utils/FileUtilsTest.java

@@ -0,0 +1,21 @@
+package org.jetlinks.pro.io.utils;
+
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+class FileUtilsTest {
+
+
+    @Test
+    void test(){
+        assertEquals(FileUtils.getExtension("test.xlsx"),"xlsx");
+        assertEquals(FileUtils.getExtension("test.xlsx?name=abc.a"),"xlsx");
+        assertEquals(FileUtils.getExtension("test.xlsx#name=abc.a"),"xlsx");
+        assertEquals(FileUtils.getExtension("test.xlsx?id=a.a&name=a#name=abc.a"),"xlsx");
+
+        assertEquals(FileUtils.getExtension("test.xlsx?id=a.a&name=a#name=abc.a"),"xlsx");
+
+    }
+
+}

+ 6 - 0
jetlinks-standalone/pom.xml

@@ -148,6 +148,12 @@
             <version>${project.version}</version>
         </dependency>
 
+        <dependency>
+            <groupId>${project.groupId}</groupId>
+            <artifactId>visualization-manager</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+
         <dependency>
             <groupId>org.jetlinks</groupId>
             <artifactId>jetlinks-supports</artifactId>