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