diff --git a/pom.xml b/pom.xml
index cb6b004..3a8e027 100644
--- a/pom.xml
+++ b/pom.xml
@@ -47,6 +47,11 @@
org.eclipse.paho.client.mqttv3
1.2.5
+
+ org.freemarker
+ freemarker
+ 2.3.31
+
diff --git a/src/main/java/com/iflytop/digester/underframework/UfCmdSnippetExecutor.java b/src/main/java/com/iflytop/digester/underframework/UfCmdSnippetExecutor.java
index b4148c5..b2ebc0c 100644
--- a/src/main/java/com/iflytop/digester/underframework/UfCmdSnippetExecutor.java
+++ b/src/main/java/com/iflytop/digester/underframework/UfCmdSnippetExecutor.java
@@ -2,15 +2,20 @@ package com.iflytop.digester.underframework;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
-import com.iflytop.digester.deviceinstance.HeatingTurntableSlotTube;
+import freemarker.template.Configuration;
+import freemarker.template.Template;
+import freemarker.template.TemplateException;
import com.iflytop.digester.underframework.dao.model.UfMdbActuatorCmd;
import com.iflytop.digester.underframework.dao.model.UfMdbSnippet;
import com.iflytop.digester.underframework.dao.record.UfActiveRecord;
import com.iflytop.digester.underframework.util.UfJsonHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
+import java.io.StringWriter;
public class UfCmdSnippetExecutor {
// logger
public static final Logger LOG = LoggerFactory.getLogger(UfCmdSnippetExecutor.class);
@@ -76,7 +81,22 @@ public class UfCmdSnippetExecutor {
if (null == cmd) {
throw new RuntimeException("无效的指令ID : " + cmdId);
}
- cmd.parameters = cmdParams;
+
+ // 编译参数为模板
+ freemarker.template.Configuration cfg = new Configuration(Configuration.VERSION_2_3_31);
+ Template template = null;
+ try {
+ template = new Template("", cmdParams, cfg);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ StringWriter paramStrWriter = new StringWriter();
+ try {
+ template.process(this.params, paramStrWriter);
+ } catch (TemplateException | IOException e) {
+ throw new RuntimeException(e);
+ }
+ cmd.parameters = paramStrWriter.toString();
UfActuatorCmdExecutor.execute(cmd);
}
}
diff --git a/src/main/java/com/iflytop/digester/underframework/web/api/TsApiSnippet.java b/src/main/java/com/iflytop/digester/underframework/web/api/TsApiSnippet.java
index 910a4f2..dcc87f0 100644
--- a/src/main/java/com/iflytop/digester/underframework/web/api/TsApiSnippet.java
+++ b/src/main/java/com/iflytop/digester/underframework/web/api/TsApiSnippet.java
@@ -6,6 +6,8 @@ import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseBody;
+
+import java.util.HashMap;
import java.util.Map;
@Controller
public class TsApiSnippet extends UfApiControllerBase {
@@ -52,7 +54,7 @@ public class TsApiSnippet extends UfApiControllerBase {
String cmdId = (String)params.get("cmdId");
String cmdParams = (String)params.get("cmdParams");
- var executor = new UfCmdSnippetExecutor(null, null);
+ var executor = new UfCmdSnippetExecutor(null, new HashMap<>());
executor.executeStep(cmdId, cmdParams);
} catch ( Exception e ) {
return error(e.getMessage());
diff --git a/web b/web
index b69f9ba..6c2047a 160000
--- a/web
+++ b/web
@@ -1 +1 @@
-Subproject commit b69f9ba8503f7247097d2eaa9dad06cc36582fec
+Subproject commit 6c2047a06153a3328abbf4332dd3f012ae024b77