diff --git a/app.db b/app.db index 53073ce..559ab6f 100644 Binary files a/app.db and b/app.db differ diff --git a/src/main/java/com/iflytop/digester/underframework/UfCmdSnippetExecutor.java b/src/main/java/com/iflytop/digester/underframework/UfCmdSnippetExecutor.java index bb1a585..b4148c5 100644 --- a/src/main/java/com/iflytop/digester/underframework/UfCmdSnippetExecutor.java +++ b/src/main/java/com/iflytop/digester/underframework/UfCmdSnippetExecutor.java @@ -21,31 +21,30 @@ public class UfCmdSnippetExecutor { /** * execute snippet - * @param snippetName - snippet name + * @param snippetKey - snippet key */ - static public void execute(String snippetName) { - UfCmdSnippetExecutor.execute(snippetName, new HashMap<>()); + static public void execute(String snippetKey) { + UfCmdSnippetExecutor.execute(snippetKey, new HashMap<>()); } /** * execute snippet with params - * @param snippetName - snippet name + * @param snippetKey - snippet name * @param params - params */ - static public void execute(String snippetName, Map params) { + static public void execute(String snippetKey, Map params) { Boolean logEnabled = UfApplication.getApp().getEnv().getProperty("device.snippet-execute-log-enable", Boolean.class); if ( Boolean.TRUE.equals(logEnabled) ) { - LOG.info("[Snippet Execute] : {} ({})", snippetName, UfJsonHelper.objectToJson(params)); + LOG.info("[Snippet Execute] : {} ({})", snippetKey, UfJsonHelper.objectToJson(params)); } + var snippet = UfActiveRecord.findOne(UfMdbSnippet.class, Map.of("key", snippetKey)); + if (null == snippet) { + throw new RuntimeException("无效的片段KEY : " + snippetKey); + } -// var snippet = UfActiveRecord.findOne(UfMdbSnippet.class, Map.of("key", snippetName)); -// if (null == snippet) { -// throw new RuntimeException("无效的片段名称 : " + snippetName); -// } -// -// var executor = new UfCmdSnippetExecutor(snippet, params); -// executor.run(); + var executor = new UfCmdSnippetExecutor(snippet, params); + executor.run(); } // constructor @@ -66,13 +65,18 @@ public class UfCmdSnippetExecutor { for ( JsonNode cmdNode : cmdsJsonTree ) { var cmdId = cmdNode.get("cmdId").asText(); - var cmd = UfActiveRecord.findOne(UfMdbActuatorCmd.class, cmdId); - if (null == cmd) { - throw new RuntimeException("无效的指令ID : " + cmdId); - } + var cmdParams = cmdNode.get("params").asText(); + this.executeStep(cmdId, cmdParams); + } + } - cmd.parameters = cmdNode.get("params").asText(); - UfActuatorCmdExecutor.execute(cmd); + // execute step + public void executeStep(String cmdId, String cmdParams) { + var cmd = UfActiveRecord.findOne(UfMdbActuatorCmd.class, cmdId); + if (null == cmd) { + throw new RuntimeException("无效的指令ID : " + cmdId); } + cmd.parameters = cmdParams; + UfActuatorCmdExecutor.execute(cmd); } } diff --git a/src/main/java/com/iflytop/digester/underframework/connection/UfConnection.java b/src/main/java/com/iflytop/digester/underframework/connection/UfConnection.java index 4042600..decd671 100644 --- a/src/main/java/com/iflytop/digester/underframework/connection/UfConnection.java +++ b/src/main/java/com/iflytop/digester/underframework/connection/UfConnection.java @@ -1,6 +1,5 @@ package com.iflytop.digester.underframework.connection; import com.iflytop.digester.underframework.dao.model.UfMdbActuatorCmd; - import java.util.Map; public interface UfConnection { /** @@ -20,4 +19,10 @@ public interface UfConnection { * @param properties - properties */ void setProperties( Map properties ); + + /** + * get if connection is enable + * @return true if enable + */ + Boolean getIsEnabled(); } diff --git a/src/main/java/com/iflytop/digester/underframework/connection/UfConnectionBase.java b/src/main/java/com/iflytop/digester/underframework/connection/UfConnectionBase.java index ba9b606..673a65d 100644 --- a/src/main/java/com/iflytop/digester/underframework/connection/UfConnectionBase.java +++ b/src/main/java/com/iflytop/digester/underframework/connection/UfConnectionBase.java @@ -10,6 +10,13 @@ abstract public class UfConnectionBase implements UfConnection { public String name; // key public String key; + // enable + public Boolean enable; + + @Override + public Boolean getIsEnabled() { + return this.enable; + } @Override public void setProperties(Map properties) { diff --git a/src/main/java/com/iflytop/digester/underframework/connection/UfConnectionManager.java b/src/main/java/com/iflytop/digester/underframework/connection/UfConnectionManager.java index 3361dc0..bff3f63 100644 --- a/src/main/java/com/iflytop/digester/underframework/connection/UfConnectionManager.java +++ b/src/main/java/com/iflytop/digester/underframework/connection/UfConnectionManager.java @@ -22,7 +22,9 @@ public class UfConnectionManager { String className = this.getClass().getPackageName() + ".Uf" + type; UfConnection con = (UfConnection)UfClassHelper.newInstance(className); con.setProperties(option); - con.connect(); + if ( con.getIsEnabled() ) { + con.connect(); + } this.connections.put(key, con); } } 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 b5b4dbf..910a4f2 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 @@ -1,4 +1,5 @@ package com.iflytop.digester.underframework.web.api; +import com.iflytop.digester.underframework.UfCmdSnippetExecutor; import com.iflytop.digester.underframework.dao.record.UfActiveRecord; import com.iflytop.digester.underframework.dao.model.UfMdbSnippet; import org.springframework.stereotype.Controller; @@ -37,7 +38,7 @@ public class TsApiSnippet extends UfApiControllerBase { public UfApiResponse execute(@RequestBody UfMdbSnippet snippet ) { try { snippet = UfActiveRecord.findOne(UfMdbSnippet.class, snippet.id); -// TsSnippetExecutor.executeSnippet(snippet); + UfCmdSnippetExecutor.execute(snippet.key); } catch ( Exception e ) { return error(e.getMessage()); } @@ -48,10 +49,11 @@ public class TsApiSnippet extends UfApiControllerBase { @ResponseBody public UfApiResponse executeStep(@RequestBody Map params ) { try { - String cmd = (String)params.get("cmd"); - String cmdParams = (String)params.get("params"); -// TsSnippetExecutor executor = new TsSnippetExecutor(null); -// executor.executeStep(cmd, cmdParams); + String cmdId = (String)params.get("cmdId"); + String cmdParams = (String)params.get("cmdParams"); + + var executor = new UfCmdSnippetExecutor(null, null); + executor.executeStep(cmdId, cmdParams); } catch ( Exception e ) { return error(e.getMessage()); } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 01c44af..ac7c199 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -13,10 +13,12 @@ device: connections: - name : zcancmder key : zcancmder + enable : true type : ZcancmderWebsocket uri: ws://192.168.8.10:19005 - name : modbus key : modbus + enable : false type : ModbusRTUOverTCP host: 127.0.0.1 port: 502