From b6b8579507da6531efa00fe8b96e032c4838a701 Mon Sep 17 00:00:00 2001 From: chentaisen <14615430+chentaisen@user.noreply.gitee.com> Date: Fri, 6 Sep 2024 11:11:54 +0800 Subject: [PATCH] Changes --- .../main/java/rule/domain/RuleEdition.java | 3 + .../src/main/java/rule/util/RuleTest.java | 68 +++++++++++++++++++ .../controller/RuleEditionController.java | 32 +++++---- .../muyu/rule/service/RuleEditionService.java | 5 ++ .../service/impl/RuleEditionServiceImpl.java | 16 +++++ .../com/muyu/rule/test/OSSFileDownload.java | 4 +- 6 files changed, 112 insertions(+), 16 deletions(-) create mode 100644 muyu-rule-common/src/main/java/rule/util/RuleTest.java diff --git a/muyu-rule-common/src/main/java/rule/domain/RuleEdition.java b/muyu-rule-common/src/main/java/rule/domain/RuleEdition.java index 7b4f61c..ee7a451 100644 --- a/muyu-rule-common/src/main/java/rule/domain/RuleEdition.java +++ b/muyu-rule-common/src/main/java/rule/domain/RuleEdition.java @@ -9,6 +9,7 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import org.apache.poi.ss.usermodel.DataValidation; /** * @ClassName RuleEdition @@ -66,4 +67,6 @@ public class RuleEdition { */ private String ruleEngine; + private DataValue dataValue; + } diff --git a/muyu-rule-common/src/main/java/rule/util/RuleTest.java b/muyu-rule-common/src/main/java/rule/util/RuleTest.java new file mode 100644 index 0000000..f73e0e1 --- /dev/null +++ b/muyu-rule-common/src/main/java/rule/util/RuleTest.java @@ -0,0 +1,68 @@ +package rule.util; + +import org.ehcache.impl.internal.concurrent.ConcurrentHashMap; +import rule.data.engine.basic.BasicEngine; +import rule.domain.DataValue; +import rule.domain.RuleEdition; + +import java.io.File; +import java.io.IOException; +import java.lang.reflect.InvocationTargetException; +import java.net.MalformedURLException; +import java.net.URL; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.List; +import java.util.Map; + +/** + * @ClassName RuleTest + * @Description 描述 + * @Author Chen + * @Date 2024/9/5 20:52 + */ +public class RuleTest { + static Map> engineMap = new ConcurrentHashMap<>(); + + //外部类文件路径 + public static final String engineWorkSourcePath = "D:\\work\\cc"; + public static final String className = "com.muyu.rule.generate"; + + public static void test(RuleEdition ruleEdition) { + try { + //外部类文件路径 + String externalClassFilePath = + engineWorkSourcePath + "\\com\\muyu\\rule\\generate\\"+ruleEdition.getRuleKind()+".class"; + Path classFilePath = Paths.get(externalClassFilePath); + //获取外部类所在的目录 + String externalClassDir = externalClassFilePath.substring(0, externalClassFilePath.lastIndexOf('\\')); + URL[] urls = new URL[]{new File(externalClassDir).toURI().toURL()}; + ExternalClassLoader externalClassLoader = new ExternalClassLoader(urls); + //加载类 全限定名 + Class clazz = externalClassLoader.loadClassFromPath(classFilePath, className); + Object instance = clazz.getDeclaredConstructor().newInstance(); + engineMap.put(ruleEdition.getRuleKind(), (BasicEngine) instance); + } catch (IOException e) { + throw new RuntimeException(e); + } catch (InvocationTargetException e) { + throw new RuntimeException(e); + } catch (InstantiationException e) { + throw new RuntimeException(e); + } catch (IllegalAccessException e) { + throw new RuntimeException(e); + } catch (NoSuchMethodException e) { + throw new RuntimeException(e); + } + DataValue dataValue = DataValue.builder() + .type("String") + .label("手机号") + .key("phone") + .value("张三") + .build(); + + BasicEngine engine = engineMap.get(ruleEdition.getRuleKind()); + engine.set(dataValue); + engine.execution(); + } + +} diff --git a/muyu-rule-server/src/main/java/com/muyu/rule/controller/RuleEditionController.java b/muyu-rule-server/src/main/java/com/muyu/rule/controller/RuleEditionController.java index 994b392..24fa743 100644 --- a/muyu-rule-server/src/main/java/com/muyu/rule/controller/RuleEditionController.java +++ b/muyu-rule-server/src/main/java/com/muyu/rule/controller/RuleEditionController.java @@ -188,24 +188,28 @@ public class RuleEditionController { @PutMapping("/updateRuleEngine") @Operation(summary = "保存代码", description = "保存代码") public Result updateRuleEngine(@RequestBody RuleEdition ruleEdition) { + //java OSS - UploadOss.uploadFiles(ruleEdition.getRuleEngine(), ruleEdition.getRuleKind()); +// UploadOss.uploadFiles(ruleEdition.getRuleEngine(), ruleEdition.getRuleKind()); - OSSFileDownload.streamingDownload(ruleEdition.getRuleKind()); +// OSSFileDownload.streamingDownload(ruleEdition.getRuleKind()); + +// OSSFileDownload.compile(ruleEdition.getRuleKind()); - OSSFileDownload.compile(ruleEdition.getRuleKind()); return Result.success(ruleEditionService.updateById(ruleEdition)); } -// /** -// * 测试代码 -// * @param ruleEdition -// * @return -// */ -// @PostMapping("/measurement") -// @Operation(summary = "测试代码", description = "测试代码") -// public Result measurement(@RequestBody RuleEdition ruleEdition) { -// List ruleEditionList = ruleEditionService.measurementList(ruleEdition); -// return Result.success(ruleEditionList); -// } + /** + * 测试代码 + * + * @param ruleEdition + * @return + */ + @PostMapping("/measurement") + @Operation(summary = "测试代码", description = "测试代码") + public Result measurement(@RequestBody RuleEdition ruleEdition) { + OSSFileDownload.compile(ruleEdition.getRuleKind()); + + return Result.success(ruleEditionService.measurementList(ruleEdition)); + } } diff --git a/muyu-rule-server/src/main/java/com/muyu/rule/service/RuleEditionService.java b/muyu-rule-server/src/main/java/com/muyu/rule/service/RuleEditionService.java index 57a8956..60ae197 100644 --- a/muyu-rule-server/src/main/java/com/muyu/rule/service/RuleEditionService.java +++ b/muyu-rule-server/src/main/java/com/muyu/rule/service/RuleEditionService.java @@ -1,8 +1,11 @@ package com.muyu.rule.service; import com.baomidou.mybatisplus.extension.service.IService; +import com.muyu.common.core.domain.Result; import rule.domain.RuleEdition; +import java.util.List; + public interface RuleEditionService extends IService { /** * 禁用规则版本 @@ -18,4 +21,6 @@ public interface RuleEditionService extends IService { RuleEdition generate(RuleEdition ruleEdition); + + Result measurementList(RuleEdition ruleEdition); } diff --git a/muyu-rule-server/src/main/java/com/muyu/rule/service/impl/RuleEditionServiceImpl.java b/muyu-rule-server/src/main/java/com/muyu/rule/service/impl/RuleEditionServiceImpl.java index 4bd0210..4540b9e 100644 --- a/muyu-rule-server/src/main/java/com/muyu/rule/service/impl/RuleEditionServiceImpl.java +++ b/muyu-rule-server/src/main/java/com/muyu/rule/service/impl/RuleEditionServiceImpl.java @@ -3,6 +3,7 @@ package com.muyu.rule.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.muyu.common.core.domain.Result; import com.muyu.common.core.enums.SysRuleYesNo; import com.muyu.common.core.exception.ServiceException; import com.muyu.rule.mapper.RuleEditionMapper; @@ -12,6 +13,9 @@ import org.springframework.stereotype.Service; import rule.util.GenerateConstant; import rule.domain.Rule; import rule.domain.RuleEdition; +import rule.util.RuleTest; + +import java.util.List; /** * @ClassName RuleEditionServiceImpl @@ -61,6 +65,18 @@ public class RuleEditionServiceImpl extends ServiceImpl measurementList(RuleEdition ruleEdition) { + //测试 + RuleTest.test(ruleEdition); + return Result.success("11"); + } + /** * 通过id设置 diff --git a/muyu-rule-server/src/main/java/com/muyu/rule/test/OSSFileDownload.java b/muyu-rule-server/src/main/java/com/muyu/rule/test/OSSFileDownload.java index 094795c..5d1f695 100644 --- a/muyu-rule-server/src/main/java/com/muyu/rule/test/OSSFileDownload.java +++ b/muyu-rule-server/src/main/java/com/muyu/rule/test/OSSFileDownload.java @@ -50,12 +50,12 @@ public class OSSFileDownload { public static Result compile(String fileName) { JavaCompiler compiler = ToolProvider.getSystemJavaCompiler(); - String[] strings = {"-classpath", "/home/lib", "-verbose", "-d", "/home/lib", "/home/"+fileName+".java"}; + String[] strings = {"-classpath", "/home/lib", "-verbose", "-d", "/home/lib", "/home/" + fileName + ".java"}; //编译任务 int result = compiler.run(null, null, null, strings); //检查编译结果 if (result == 0) { - System.out.println("编译成功,生成的.class文件位于源代码同目录"); + System.out.println("编译成功,生成的.class文件位于源代码同目录!!!!"); } else { System.out.println("编译失败"); }