From 44c6732a65a4cde8d185d0df724f99ba980a7b4b Mon Sep 17 00:00:00 2001 From: sige Date: Tue, 9 Apr 2024 21:11:59 +0800 Subject: [PATCH] 1 --- pom.xml | 5 +++++ .../underframework/UfCmdSnippetExecutor.java | 24 ++++++++++++++++++++-- .../underframework/web/api/TsApiSnippet.java | 4 +++- web | 2 +- 4 files changed, 31 insertions(+), 4 deletions(-) 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