diff --git a/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/pom.xml b/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/pom.xml index 9754afe..e6944aa 100644 --- a/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/pom.xml +++ b/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/pom.xml @@ -89,6 +89,11 @@ com.muyu muyu-common-swagger + + io.github.classgraph + classgraph + 4.1.7 + diff --git a/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/java/com/muyu/engine/controller/RuleEngineVersionController.java b/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/java/com/muyu/engine/controller/RuleEngineVersionController.java index 9f287d0..8872324 100644 --- a/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/java/com/muyu/engine/controller/RuleEngineVersionController.java +++ b/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/java/com/muyu/engine/controller/RuleEngineVersionController.java @@ -100,4 +100,29 @@ public class RuleEngineVersionController extends BaseController { return toAjax(ruleEngineVersionService.deleteRuleEngineVersionByIds(ids)); } + + /** + * 删除规则版本 + */ + @RequiresPermissions("engine:version:update") + @Log(title = "规则版本", businessType = BusinessType.DELETE) + @PostMapping("/saveCoding") + public Result saveCoding(@RequestBody RuleEngineVersion ruleEngineVersion) + { + return toAjax(ruleEngineVersionService.saveCoding(ruleEngineVersion)); + } + + + /** + * 测试引擎版本 + */ + @RequiresPermissions("engine:version:update") + @Log(title = "规则版本", businessType = BusinessType.DELETE) + @PostMapping("/testEngine") + public Result testEngine(@RequestBody String codeIng) throws Exception { + return toAjax(ruleEngineVersionService.testEngine(codeIng)); + } + + + } diff --git a/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/java/com/muyu/engine/service/RuleEngineVersionService.java b/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/java/com/muyu/engine/service/RuleEngineVersionService.java index 48ffdba..1195a47 100644 --- a/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/java/com/muyu/engine/service/RuleEngineVersionService.java +++ b/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/java/com/muyu/engine/service/RuleEngineVersionService.java @@ -60,4 +60,18 @@ public interface RuleEngineVersionService extends IService * @return 结果 */ public int deleteRuleEngineVersionById(Long id); + + /** + * 初始化保存规则版本 + * @param ruleEngineVersion + * @return boolean + */ + boolean saveCoding(RuleEngineVersion ruleEngineVersion); + + /** + * 测试引擎版本 + * @param codeIng + * @return + */ + public boolean testEngine(String codeIng) throws Exception; } diff --git a/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/java/com/muyu/engine/service/impl/RuleEngineVersionServiceImpl.java b/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/java/com/muyu/engine/service/impl/RuleEngineVersionServiceImpl.java index 60d3c9b..8ab6903 100644 --- a/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/java/com/muyu/engine/service/impl/RuleEngineVersionServiceImpl.java +++ b/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/java/com/muyu/engine/service/impl/RuleEngineVersionServiceImpl.java @@ -1,14 +1,18 @@ package com.muyu.engine.service.impl; import java.io.*; +import java.lang.reflect.Method; import java.util.List; import com.alibaba.nacos.shaded.com.google.common.base.Supplier; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; +import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.muyu.common.core.utils.DateUtils; import com.muyu.engine.domain.RuleEngine; import com.muyu.engine.service.RuleEngineService; +import io.lettuce.core.dynamic.support.ReflectionUtils; import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -26,8 +30,7 @@ import javax.servlet.ServletException; */ @Service @Log4j2 -public class RuleEngineVersionServiceImpl extends ServiceImpl implements RuleEngineVersionService -{ +public class RuleEngineVersionServiceImpl extends ServiceImpl implements RuleEngineVersionService { @Autowired private RuleEngineVersionMapper ruleEngineVersionMapper; @Autowired @@ -40,8 +43,7 @@ public class RuleEngineVersionServiceImpl extends ServiceImpl selectRuleEngineVersionList(Long ruleEngineId) - { - return list(new LambdaQueryWrapper(){{ - eq(RuleEngineVersion::getRuleEngineId,ruleEngineId); + public List selectRuleEngineVersionList(Long ruleEngineId) { + return list(new LambdaQueryWrapper() {{ + eq(RuleEngineVersion::getRuleEngineId, ruleEngineId); }}); } @@ -66,8 +67,7 @@ public class RuleEngineVersionServiceImpl extends ServiceImpl() {{ -// eq(Scope::getRuleEngineId, ruleEngine.getId()); -// eq(Scope::getValue, "taskContext"); -// }}); -// String code = scope.getCode(); -// String path = code.substring(code.indexOf("com"), code.indexOf(";")).replaceAll("/.", "/").trim(); -// String fileName = code.substring(code.indexOf("class") + 6, code.indexOf("{")).trim(); -// String name = path+"."+fileName; -// String javaPackageName = name.replace(".", File.separator)+".java"; -// String javaAbsolutePath = "D:/ruoyi/FinallyTest/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/java/" +javaPackageName; -// String jarAbsolutePath = "D:/ruoyi/FinallyTest/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/target/classes/com/muyu/engine/controller"; -// Process process = Runtime.getRuntime().exec("javac -classpath "+ jarAbsolutePath+ " " + javaAbsolutePath); -// try { -// int exitVal = process.waitFor(); -// System.out.println("Process exitValue: " + exitVal); -// ClassLoader classLoader = ReflectionUtils.class.getClassLoader(); -// Class aClass = classLoader.loadClass(name); -// Object o = aClass.newInstance(); -// Method[] methods = aClass.getMethods(); -// for (Method method : methods) { -// method.invoke(o,null); -// } -// } catch (Exception e) { -// log.error(e.getMessage()); -// } - return true; - } - /** - * 引擎流程并执行测试 - * - * @param id + * @param ruleEngineVersion * @return */ -// @Override - public boolean init(Long id) throws ServletException { - RuleEngine ruleEngine = ruleEngineService.getById(id); - if (ruleEngine.getIsActivate().contains("no")) throw new ServletException("未激活"); - if (ruleEngine.getStatus().contains("1")) throw new ServletException("已停用"); - Supplier booleanSupplier = () -> { - try { - return testEngine(ruleEngine); - } catch (Exception e) { - throw new RuntimeException(e); + @Override + public boolean saveCoding(RuleEngineVersion ruleEngineVersion) { + String codeIng = ruleEngineVersion.getCodeIng(); + try { + String path = codeIng.substring(codeIng.indexOf("com"), codeIng.indexOf(";")).replaceAll("\\.", "/").trim(); + String fileName = codeIng.substring(codeIng.indexOf("class") + 6, codeIng.indexOf("{")).trim(); + //去除父级 + if (fileName.contains("extends")) { + fileName = fileName.substring(0, fileName.indexOf("extends")).trim(); } - }; - return booleanSupplier.get(); + //去除实现接口 + if (fileName.contains("implements")) { + fileName = fileName.substring(0, fileName.indexOf("implements")).trim(); + } + //代码编译 + File file = new File("D:/ruoyi/FinallyTest/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/java/" + path + "/" + fileName + ".java"); + if (!file.exists()) { + //不存在创建 + file.createNewFile(); + } else { + //存在测重新创建 + file.delete(); + file.createNewFile(); + } + String[] split = codeIng.split("/n"); + //OutputStreamWriter对象将字符转换为字节流,指定了文件输出流和编码方式。 + OutputStreamWriter outputStreamWriter = + new OutputStreamWriter(new FileOutputStream(file, true), "UTF-8"); + //BufferedWriter对象,用于缓冲写入数据,提高写入效率。 + BufferedWriter bw = new BufferedWriter(outputStreamWriter); + for (String str : split) { + bw.write(str); + bw.newLine(); + } + bw.close(); + outputStreamWriter.close(); + } catch (Exception e) { + throw new RuntimeException(e); + } + log.info("初始化成功"); + ruleEngineVersion.setStatus("1"); + boolean update = this.update(ruleEngineVersion, new LambdaUpdateWrapper() {{ + eq(RuleEngineVersion::getId, ruleEngineVersion.getId()); + }}); + return update; + } - private Boolean testEngine(RuleEngine ruleEngine) throws ServletException, IOException { - System.out.println("初始化"); - System.out.println(ruleEngine); - RuleEngineVersion ruleEngineVersion = this.getOne(new LambdaQueryWrapper() {{ - eq(RuleEngineVersion::getRuleEngineId, ruleEngine.getId()); - }}); - String code = ruleEngineVersion.getCodeIng(); - String path = code.substring(code.indexOf("com"), code.indexOf(";")).replaceAll("\\.", "/").trim(); - String fileName = code.substring(code.indexOf("class") + 6, code.indexOf("{")).trim(); - //代码编译 - File file = new File("D:/ruoyi/FinallyTest/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/java/" + path + "/" + fileName + ".java"); - if (!file.exists()) { - //不存在创建 - file.createNewFile(); - }else { - //存在测重新创建 - file.delete(); - file.createNewFile(); + + /** + * 测试引擎版本 + * + * @param + * @return + * @throws Exception + */ + @Override + public boolean testEngine(String codeIng) throws Exception { + String path = codeIng.substring(codeIng.indexOf("com"), codeIng.indexOf(";")).replaceAll("/.", "/").trim(); + String fileName = codeIng.substring(codeIng.indexOf("class") + 6, codeIng.indexOf("{")).trim(); + String name = path + "." + fileName; + String javaPackageName = name.replace(".", File.separator) + ".java"; + String javaAbsolutePath = "D:/ruoyi/FinallyTest/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/src/main/java/" + javaPackageName; + String jarAbsolutePath = "D:/ruoyi/FinallyTest/muyu-modules/muyu-ruleEngine/muyu-ruleEngine-service/target/classes/com/muyu/engine/domain/test"; + Process process = Runtime.getRuntime().exec("javac -classpath " + jarAbsolutePath + " " + javaAbsolutePath); + try { + int exitVal = process.waitFor(); + System.out.println("Process exitValue: " + exitVal); + ClassLoader classLoader = ReflectionUtils.class.getClassLoader(); + Class aClass = classLoader.loadClass(name); + Object o = aClass.newInstance(); + Method[] methods = aClass.getMethods(); + for (Method method : methods) { + method.invoke(o, null); + } + } catch (Exception e) { + log.error(e.getMessage()); } - String[] split = code.split("/n"); - //OutputStreamWriter对象将字符转换为字节流,指定了文件输出流和编码方式。 - OutputStreamWriter outputStreamWriter = - new OutputStreamWriter(new FileOutputStream(file, true), "UTF-8"); - //BufferedWriter对象,用于缓冲写入数据,提高写入效率。 - BufferedWriter bw = new BufferedWriter(outputStreamWriter); - for (String str : split) { - bw.write(str); - bw.newLine(); - } - bw.close(); - outputStreamWriter.close(); return true; } + } diff --git a/muyu-modules/muyv-etl/muyu-etl-common/src/main/java/com/muyu/etl/domain/BasicConfigInfo.java b/muyu-modules/muyv-etl/muyu-etl-common/src/main/java/com/muyu/etl/domain/BasicConfigInfo.java index cace084..07511b0 100644 --- a/muyu-modules/muyv-etl/muyu-etl-common/src/main/java/com/muyu/etl/domain/BasicConfigInfo.java +++ b/muyu-modules/muyv-etl/muyu-etl-common/src/main/java/com/muyu/etl/domain/BasicConfigInfo.java @@ -52,6 +52,10 @@ public class BasicConfigInfo extends BaseEntity @Excel(name = "数据接入类型") private String databaseType; + /** 是否已测试 */ + @Excel(name = "数据接入类型") + private String isTest; + /** 数据库名称 */ @Excel(name = "数据库名称") private String databaseName; diff --git a/muyu-modules/muyv-etl/muyu-etl-service/src/main/java/com/muyu/etl/service/impl/BasicConfigInfoServiceImpl.java b/muyu-modules/muyv-etl/muyu-etl-service/src/main/java/com/muyu/etl/service/impl/BasicConfigInfoServiceImpl.java index 457bcdb..db7cdab 100644 --- a/muyu-modules/muyv-etl/muyu-etl-service/src/main/java/com/muyu/etl/service/impl/BasicConfigInfoServiceImpl.java +++ b/muyu-modules/muyv-etl/muyu-etl-service/src/main/java/com/muyu/etl/service/impl/BasicConfigInfoServiceImpl.java @@ -136,6 +136,10 @@ public class BasicConfigInfoServiceImpl extends ServiceImpl() {{ + eq(BasicConfigInfo::getId, basicConfigInfo.getId()); + }}); System.out.println("Connected to the MySQL server successfully."); //同步数据库信息 //树级结构,库,表 @@ -385,7 +389,7 @@ public class BasicConfigInfoServiceImpl extends ServiceImpl + @@ -21,7 +22,7 @@ - select id, data_resource_name,username,password, data_sources_system_name, host, port, database_type, database_name, init_link_num, max_link_num, max_wait_time, max_wait_times,connection_params, remark from basic_config_info + select id, data_resource_name,username,password, data_sources_system_name, host, port,is_test, database_type, database_name, init_link_num, max_link_num, max_wait_time, max_wait_times,connection_params, remark from basic_config_info select * from table_info - where basic_id = #{basicId} and (table_name = #{tableName} or parent_id = #{parentId}) + where basic_id = #{basicId} and table_name = #{tableName}