zhou-hao 5 роки тому
батько
коміт
3d09765247

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

@@ -52,5 +52,17 @@ public class DataVisualizationEntity extends GenericEntity<String> {
     @DefaultValue("enabled")
     private DataVisualizationState state;
 
+    public void applyId() {
+        this.setId(String.format("%s:%s", type, target));
+    }
+
+    public static DataVisualizationEntity newEmpty(String type, String target) {
+        DataVisualizationEntity entity = new DataVisualizationEntity();
+        entity.setType(type);
+        entity.setTarget(target);
+        entity.applyId();
+        entity.setMetadata("");
+        return entity;
+    }
 
 }

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

@@ -1,11 +1,21 @@
 package org.jetlinks.pro.visualization.service;
 
+import org.hswebframework.ezorm.rdb.mapping.defaults.SaveResult;
 import org.hswebframework.web.crud.service.GenericReactiveCrudService;
 import org.jetlinks.pro.visualization.entity.DataVisualizationEntity;
+import org.reactivestreams.Publisher;
 import org.springframework.stereotype.Service;
+import reactor.core.publisher.Flux;
+import reactor.core.publisher.Mono;
 
 @Service
 public class DataVisualizationService extends GenericReactiveCrudService<DataVisualizationEntity,String> {
 
+    @Override
+    public Mono<SaveResult> save(Publisher<DataVisualizationEntity> entityPublisher) {
+        return Flux.from(entityPublisher)
+            .doOnNext(DataVisualizationEntity::applyId)
+            .as(super::save);
+    }
 
 }

+ 2 - 1
jetlinks-manager/visualization-manager/src/main/java/org/jetlinks/pro/visualization/web/DataVisualizationController.java

@@ -34,7 +34,8 @@ public class DataVisualizationController implements ReactiveServiceCrudControlle
         return visualizationService.createQuery()
             .where(DataVisualizationEntity::getType, type)
             .and(DataVisualizationEntity::getTarget, target)
-            .fetchOne();
+            .fetchOne()
+            .defaultIfEmpty(DataVisualizationEntity.newEmpty(type, target));
     }
 
 }