ソースを参照

********labsl VS meiku***********************************
添加属性

zhangweixin 4 年 前
コミット
b9b5ad6b13

+ 77 - 0
labsl/src/main/kotlin/com/persagy/labsl/controller/JavaJsUtil.kt

@@ -0,0 +1,77 @@
+package com.persagy.labsl.controller
+
+import javax.script.Invocable
+import javax.script.ScriptEngineManager
+
+/**
+ * java调用js代码工具类
+ *
+ * @author  张维新
+ */
+object JavaJsUtil {
+    /**
+     * java 调用js 函数脚本方法
+     * @param function
+     * @param variable
+     * @return
+     */
+    fun javaJs(function: String?, variable: String?): Boolean {
+        return try {
+            val manager = ScriptEngineManager()
+            val engine = manager.getEngineByName("javascript")
+            engine.eval(function)
+            if (engine is Invocable) {
+                val `in` = engine as Invocable
+                //                System.out.println(in.invokeFunction("transform",variable));
+                return if (`in`.invokeFunction("transform", variable) as Boolean) {
+                    true
+                } else {
+                    false
+                }
+            }
+            false
+        } catch (e: Exception) {
+            e.printStackTrace()
+            false
+        }
+    }
+
+    /**
+     * java 调用js 函数脚本方法
+     * @param function  函数
+     * @param variable  对象json
+     * @return
+     */
+    fun javaJsFun(function: String?, variable: String?): Boolean {
+        return try {
+            val manager = ScriptEngineManager()
+            val engine = manager.getEngineByName("javascript")
+            engine.eval(function)
+            if (engine is Invocable) {
+                val `in` = engine as Invocable
+                //                System.out.println(in.invokeFunction("transform",variable));
+                return `in`.invokeFunction("transform", variable) as Boolean
+            }
+            false
+        } catch (e: Exception) {
+            e.printStackTrace()
+            false
+        }
+    }
+
+    /**
+     * 调用js函数
+     *
+     * ScriptEngineManager 支持的脚本  Javascript、Groovy、Ruby、Scheme、Haskell
+     * @throws Exception
+     */
+    @Throws(Exception::class)
+    fun callJsFunction() {
+        val manager = ScriptEngineManager()
+        val engine = manager.getEngineByName("javascript")
+        engine.eval("function add (a, b) {return a+b; }")
+        val jsInvoke = engine as Invocable
+        val res = jsInvoke.invokeFunction("add", *arrayOf<Any>(10, 5))
+        println(res)
+    }
+} // Class JavaJsUtil

+ 10 - 0
labsl/src/main/kotlin/com/persagy/labsl/controller/NodeController.kt

@@ -1,5 +1,7 @@
 package com.persagy.labsl.controller
 
+import com.persagy.base.extensions.toJson
+import com.persagy.labsl.models.entities.Graph
 import com.persagy.labsl.models.entities.Node
 import com.persagy.labsl.services.NodeService
 import com.persagy.service.models.requests.SCreateRequest
@@ -8,8 +10,10 @@ import com.persagy.service.models.requests.SUpdateRequest
 import com.persagy.service.models.responses.SBaseResponse
 import com.persagy.service.models.responses.SCreateResponse
 import com.persagy.service.models.responses.SQueryResponse
+import com.persagy.service.utils.SSpringContextUtil
 import io.swagger.v3.oas.annotations.Operation
 import io.swagger.v3.oas.annotations.tags.Tag
+import org.slf4j.LoggerFactory
 import org.springframework.web.bind.annotation.PostMapping
 import org.springframework.web.bind.annotation.RequestBody
 import org.springframework.web.bind.annotation.RequestMapping
@@ -24,6 +28,12 @@ import org.springframework.web.bind.annotation.RestController
 @RestController
 @RequestMapping("/node")
 class NodeController {
+    companion object {
+        /** 日志 */
+        private val logger = LoggerFactory.getLogger(NodeController::class.java)
+
+
+    } // Companion object
 
     /**
      * 图例节点

+ 4 - 0
labsl/src/main/kotlin/com/persagy/labsl/models/entities/Relation.kt

@@ -77,6 +77,10 @@ open class Relation : SBaseEntity(), Serializable {
     @Column(name = "style")
     var style : HashMap<String,Any?>? = null
 
+    @Schema(description = "自定义属性")
+    @Column(name = "properties")
+    var properties : HashMap<String,Any?>? = null
+
     /** 系统图 id */
     @Schema(description = "系统图 id",required = true)
     @Id