Changes
parent
3e705ee147
commit
b6b8579507
|
@ -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;
|
||||
|
||||
}
|
||||
|
|
|
@ -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<String, BasicEngine<DataValue>> 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<DataValue>) 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<DataValue> engine = engineMap.get(ruleEdition.getRuleKind());
|
||||
engine.set(dataValue);
|
||||
engine.execution();
|
||||
}
|
||||
|
||||
}
|
|
@ -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<RuleEdition> 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));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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<RuleEdition> {
|
||||
/**
|
||||
* 禁用规则版本
|
||||
|
@ -18,4 +21,6 @@ public interface RuleEditionService extends IService<RuleEdition> {
|
|||
|
||||
RuleEdition generate(RuleEdition ruleEdition);
|
||||
|
||||
|
||||
Result<String> measurementList(RuleEdition ruleEdition);
|
||||
}
|
||||
|
|
|
@ -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<RuleEditionMapper, RuleE
|
|||
return ruleEdition;
|
||||
}
|
||||
|
||||
/**
|
||||
* 测试规则
|
||||
* @param ruleEdition
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public Result<String> measurementList(RuleEdition ruleEdition) {
|
||||
//测试
|
||||
RuleTest.test(ruleEdition);
|
||||
return Result.success("11");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 通过id设置
|
||||
|
|
|
@ -50,12 +50,12 @@ public class OSSFileDownload {
|
|||
|
||||
public static Result<Object> 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("编译失败");
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue