commit
00171c4436
58 changed files with 943 additions and 524 deletions
@ -1,25 +0,0 @@ |
|||||||
package org.springblade.job.processor.quality; |
|
||||||
|
|
||||||
import jakarta.annotation.Resource; |
|
||||||
import lombok.Data; |
|
||||||
import lombok.extern.slf4j.Slf4j; |
|
||||||
import org.springblade.desk.quality.feign.ICycleTestTaskClient; |
|
||||||
import org.springframework.stereotype.Component; |
|
||||||
import tech.powerjob.worker.core.processor.ProcessResult; |
|
||||||
import tech.powerjob.worker.core.processor.TaskContext; |
|
||||||
import tech.powerjob.worker.core.processor.sdk.BasicProcessor; |
|
||||||
|
|
||||||
@Component |
|
||||||
@Data |
|
||||||
@Slf4j |
|
||||||
public class CycleTestTaskGenOneTimeProcessor implements BasicProcessor { |
|
||||||
|
|
||||||
@Resource |
|
||||||
private ICycleTestTaskClient client; |
|
||||||
|
|
||||||
@Override |
|
||||||
public ProcessResult process(TaskContext context) throws Exception { |
|
||||||
client.generateOneTime(); |
|
||||||
return new ProcessResult(true); |
|
||||||
} |
|
||||||
} |
|
||||||
@ -0,0 +1,17 @@ |
|||||||
|
package org.springblade.desk.basic.constant; |
||||||
|
|
||||||
|
public interface FormulaAviatorConst { |
||||||
|
|
||||||
|
/** |
||||||
|
* 添加点 |
||||||
|
*/ |
||||||
|
String ADD = "add"; |
||||||
|
/** |
||||||
|
* 测量值 |
||||||
|
*/ |
||||||
|
String TEST = "test"; |
||||||
|
/** |
||||||
|
* 体积 |
||||||
|
*/ |
||||||
|
String VOL = "vol"; |
||||||
|
} |
||||||
@ -0,0 +1,14 @@ |
|||||||
|
package org.springblade.desk.quality.pojo.request; |
||||||
|
|
||||||
|
import lombok.Data; |
||||||
|
import lombok.EqualsAndHashCode; |
||||||
|
import lombok.ToString; |
||||||
|
import org.springblade.desk.quality.pojo.entity.CycleTest; |
||||||
|
import org.springblade.desk.quality.pojo.vo.CycleTestVO; |
||||||
|
|
||||||
|
@Data |
||||||
|
@EqualsAndHashCode(callSuper = true) |
||||||
|
@ToString(callSuper = true) |
||||||
|
public class CycleTestSearch extends CycleTestVO { |
||||||
|
|
||||||
|
} |
||||||
@ -0,0 +1,31 @@ |
|||||||
|
/** |
||||||
|
* Author: Tom Shuo |
||||||
|
*/ |
||||||
|
package org.springblade.desk.quality.pojo.vo; |
||||||
|
|
||||||
|
import io.swagger.v3.oas.annotations.media.Schema; |
||||||
|
import lombok.Data; |
||||||
|
import lombok.EqualsAndHashCode; |
||||||
|
import org.springblade.desk.quality.pojo.entity.LiquidTankReport; |
||||||
|
import org.springblade.desk.quality.pojo.entity.LiquidTankTaskCopy; |
||||||
|
|
||||||
|
import java.io.Serial; |
||||||
|
import java.util.List; |
||||||
|
|
||||||
|
/** |
||||||
|
* [槽液报告] 视图实体类 |
||||||
|
* |
||||||
|
* @author Tom Shuo |
||||||
|
* @since 2025-12-18 |
||||||
|
*/ |
||||||
|
@Data |
||||||
|
@EqualsAndHashCode(callSuper = true) |
||||||
|
public class LiquidTankReportDetailVO extends LiquidTankReport { |
||||||
|
@Serial |
||||||
|
private static final long serialVersionUID = 1L; |
||||||
|
|
||||||
|
@Schema(description = "维护人") |
||||||
|
private String updateUserRealName; |
||||||
|
@Schema(description = "复制槽液任务列表") |
||||||
|
private List<LiquidTankTaskCopyVO> copyList; |
||||||
|
} |
||||||
@ -0,0 +1,29 @@ |
|||||||
|
package org.springblade.desk.basic.aviator.config; |
||||||
|
|
||||||
|
import com.googlecode.aviator.AviatorEvaluator; |
||||||
|
import com.googlecode.aviator.AviatorEvaluatorInstance; |
||||||
|
import com.googlecode.aviator.Options; |
||||||
|
import org.springframework.context.annotation.Bean; |
||||||
|
import org.springframework.context.annotation.Configuration; |
||||||
|
|
||||||
|
@Configuration |
||||||
|
public class AviatorConfig { |
||||||
|
|
||||||
|
@Bean |
||||||
|
public AviatorEvaluatorInstance aviatorEvaluatorInstance() { |
||||||
|
AviatorEvaluatorInstance instance = AviatorEvaluator.newInstance(); |
||||||
|
// 核心配置项
|
||||||
|
instance.setOption(Options.USE_USER_ENV_AS_TOP_ENV_DIRECTLY, true); // 环境变量透传
|
||||||
|
// instance.setOption(Options.MAX_CACHE_SIZE, 2000); // 表达式缓存大小
|
||||||
|
instance.setOption(Options.TRACE_EVAL, false); // 生产环境关闭追踪
|
||||||
|
|
||||||
|
// JDK17+ 优化配置
|
||||||
|
instance.setOption(Options.OPTIMIZE_LEVEL, AviatorEvaluator.EVAL); // 优化级别
|
||||||
|
// 开启表达式缓存,提升性能
|
||||||
|
instance.setCachedExpressionByDefault(true); |
||||||
|
// 注册自定义函数(如有)
|
||||||
|
// instance.addFunction(new YourCustomFunction());
|
||||||
|
return instance; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
@ -0,0 +1,46 @@ |
|||||||
|
package org.springblade.desk.basic.aviator.func; |
||||||
|
|
||||||
|
import com.googlecode.aviator.AviatorEvaluatorInstance; |
||||||
|
import com.googlecode.aviator.runtime.function.AbstractFunction; |
||||||
|
import com.googlecode.aviator.runtime.type.AviatorObject; |
||||||
|
import com.googlecode.aviator.runtime.type.AviatorString; |
||||||
|
import jakarta.annotation.Resource; |
||||||
|
import lombok.AllArgsConstructor; |
||||||
|
import lombok.Data; |
||||||
|
import lombok.EqualsAndHashCode; |
||||||
|
import lombok.ToString; |
||||||
|
import lombok.extern.slf4j.Slf4j; |
||||||
|
import org.springframework.beans.factory.InitializingBean; |
||||||
|
import org.springframework.stereotype.Component; |
||||||
|
|
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
@Component |
||||||
|
@Data |
||||||
|
@AllArgsConstructor |
||||||
|
@EqualsAndHashCode(callSuper = false) |
||||||
|
@ToString(callSuper = false) |
||||||
|
@Slf4j |
||||||
|
public class CustomFunctionRegistry implements InitializingBean { |
||||||
|
|
||||||
|
@Resource |
||||||
|
private AviatorEvaluatorInstance aviatorEvaluator; |
||||||
|
|
||||||
|
@Override |
||||||
|
public void afterPropertiesSet() throws Exception { |
||||||
|
// 注册自定义函数
|
||||||
|
// 此时 aviatorEvaluator 已被注入
|
||||||
|
aviatorEvaluator.addFunction(new AbstractFunction() { |
||||||
|
@Override |
||||||
|
public String getName() { |
||||||
|
return "myCustomFunc"; |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public AviatorObject call(Map<String, Object> env, AviatorObject arg1) { |
||||||
|
String value = (String) arg1.getValue(env); |
||||||
|
return new AviatorString("自定义结果: " + value); |
||||||
|
} |
||||||
|
}); |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,32 @@ |
|||||||
|
package org.springblade.desk.basic.aviator.service; |
||||||
|
|
||||||
|
import com.googlecode.aviator.AviatorEvaluatorInstance; |
||||||
|
import jakarta.annotation.Resource; |
||||||
|
import lombok.AllArgsConstructor; |
||||||
|
import lombok.Data; |
||||||
|
import lombok.EqualsAndHashCode; |
||||||
|
import lombok.ToString; |
||||||
|
import lombok.extern.slf4j.Slf4j; |
||||||
|
import org.springframework.stereotype.Service; |
||||||
|
|
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
@Service |
||||||
|
@Data |
||||||
|
@AllArgsConstructor |
||||||
|
@EqualsAndHashCode(callSuper = false) |
||||||
|
@ToString(callSuper = false) |
||||||
|
@Slf4j |
||||||
|
public class AviatorService { |
||||||
|
|
||||||
|
@Resource |
||||||
|
private AviatorEvaluatorInstance aviatorEvaluator; |
||||||
|
|
||||||
|
public Object evaluateExpression(String expression, Map<String, Object> variables) { |
||||||
|
try { |
||||||
|
return aviatorEvaluator.execute(expression, variables); |
||||||
|
} catch (Exception e) { |
||||||
|
throw new RuntimeException("表达式执行失败: " + e.getMessage(), e); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,60 @@ |
|||||||
|
package org.springblade.desk.basic.controller; |
||||||
|
|
||||||
|
import com.googlecode.aviator.AviatorEvaluatorInstance; |
||||||
|
import io.swagger.v3.oas.annotations.tags.Tag; |
||||||
|
import jakarta.annotation.Resource; |
||||||
|
import lombok.AllArgsConstructor; |
||||||
|
import lombok.Data; |
||||||
|
import lombok.EqualsAndHashCode; |
||||||
|
import lombok.extern.slf4j.Slf4j; |
||||||
|
import org.springblade.desk.basic.aviator.service.AviatorService; |
||||||
|
import org.springblade.desk.basic.constant.BAModuleConst; |
||||||
|
import org.springframework.web.bind.annotation.*; |
||||||
|
|
||||||
|
import java.util.Collections; |
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
@RestController |
||||||
|
@RequestMapping(BAModuleConst.CONTROLLER_PREFIX + "/Aviator") |
||||||
|
@Data |
||||||
|
@AllArgsConstructor |
||||||
|
@EqualsAndHashCode(callSuper = false) |
||||||
|
@Slf4j |
||||||
|
@Tag(name = "Aviator", description = "Aviator接口") |
||||||
|
public class AviatorController { |
||||||
|
|
||||||
|
@Resource |
||||||
|
private AviatorService aviatorService; |
||||||
|
@Resource |
||||||
|
private AviatorEvaluatorInstance aviatorEvaluator; |
||||||
|
|
||||||
|
/** |
||||||
|
* { |
||||||
|
* "expression": "a + b * (c - d)", |
||||||
|
* "variables": { |
||||||
|
* "a": 5, |
||||||
|
* "b": 2, |
||||||
|
* "c": 10, |
||||||
|
* "d": 3 |
||||||
|
* } |
||||||
|
* } |
||||||
|
* |
||||||
|
* @param request |
||||||
|
* @return |
||||||
|
*/ |
||||||
|
@PostMapping("/evaluate") |
||||||
|
public Object evaluate(@RequestBody Map<String, Object> request) { |
||||||
|
String expression = (String) request.get("expression"); |
||||||
|
Map<String, Object> variables = (Map<String, Object>) request.get("variables"); |
||||||
|
return aviatorService.evaluateExpression(expression, variables); |
||||||
|
} |
||||||
|
|
||||||
|
@GetMapping("/customFunc") |
||||||
|
public Object customFunc() { |
||||||
|
// 直接使用注册的自定义函数
|
||||||
|
return aviatorEvaluator.execute( |
||||||
|
"myCustomFunc('Hello')", |
||||||
|
Collections.emptyMap() |
||||||
|
); |
||||||
|
} |
||||||
|
} |
||||||
@ -0,0 +1,37 @@ |
|||||||
|
/** |
||||||
|
* Author: Tom Shuo |
||||||
|
*/ |
||||||
|
package org.springblade.desk.quality.wrapper; |
||||||
|
|
||||||
|
import org.springblade.core.mp.support.BaseEntityWrapper; |
||||||
|
import org.springblade.core.tool.utils.BeanUtil; |
||||||
|
import org.springblade.desk.quality.pojo.entity.LiquidTankReport; |
||||||
|
import org.springblade.desk.quality.pojo.vo.LiquidTankReportDetailVO; |
||||||
|
import org.springblade.desk.quality.pojo.vo.LiquidTankReportVO; |
||||||
|
|
||||||
|
import java.util.Objects; |
||||||
|
|
||||||
|
/** |
||||||
|
* [槽液报告] 包装类,返回视图层所需的字段 |
||||||
|
* |
||||||
|
* @author Tom Shuo |
||||||
|
* @since 2025-12-18 |
||||||
|
*/ |
||||||
|
public class LiquidTankReportDetailWrapper extends BaseEntityWrapper<LiquidTankReport, LiquidTankReportDetailVO> { |
||||||
|
|
||||||
|
public static LiquidTankReportDetailWrapper build() { |
||||||
|
return new LiquidTankReportDetailWrapper(); |
||||||
|
} |
||||||
|
|
||||||
|
@Override |
||||||
|
public LiquidTankReportDetailVO entityVO(LiquidTankReport liquidTankReport) { |
||||||
|
LiquidTankReportDetailVO VO = Objects.requireNonNull(BeanUtil.copyProperties(liquidTankReport, LiquidTankReportDetailVO.class)); |
||||||
|
|
||||||
|
//User createUser = UserCache.getUser(liquidTankReport.getCreateUser());
|
||||||
|
//User updateUser = UserCache.getUser(liquidTankReport.getUpdateUser());
|
||||||
|
//liquidTankReportVO.setCreateUserName(createUser.getName());
|
||||||
|
//liquidTankReportVO.setUpdateUserName(updateUser.getName());
|
||||||
|
|
||||||
|
return VO; |
||||||
|
} |
||||||
|
} |
||||||
Loading…
Reference in new issue