计算量增加调试机制

This commit is contained in:
谷成伟 2024-11-28 17:00:38 +08:00
parent 14d49d08bf
commit 2c453abad1
5 changed files with 34 additions and 1 deletions

View File

@ -82,7 +82,6 @@ public class FunctionSaveCalcData extends AbstractVariadicFunction {
dt.setIotModelField(attr);
dataList.add(dt);
}
dataService.updateCalFieldData(dataList);
return AviatorRuntimeJavaType.valueOf(0);
}

View File

@ -1,6 +1,7 @@
package com.das.modules.calc.service;
import cn.hutool.core.util.StrUtil;
import com.das.modules.cache.service.CacheService;
import com.das.modules.calc.domain.entity.CalcModule;
import com.googlecode.aviator.AviatorEvaluatorInstance;
@ -28,9 +29,19 @@ public class CalcJob implements Job {
AviatorEvaluatorInstance instance = (AviatorEvaluatorInstance) dataMap.get("aviator");
CalcModule calcModule = (CalcModule) dataMap.get("module");
CacheService cacheService = (CacheService) dataMap.get("cache");
Boolean isDebug = (Boolean) dataMap.get("isDebug");
String debugTaskName = (String) dataMap.get("debugTaskName");
if (instance == null || calcModule == null || cacheService == null) {
throw new JobExecutionException("calcModule is null");
}
if (isDebug){
if (StrUtil.isBlank(debugTaskName)){
return;
}
else if (!debugTaskName.equals(calcModule.getName())){
return;
}
}
Expression expression = instance.getCachedExpressionByKey(calcModule.getName());
if (expression == null) {
log.error("expression is null, calcModule={}", calcModule.getName());
@ -38,6 +49,8 @@ public class CalcJob implements Job {
}
//准备全局变量
Map<String,Object> envs = expression.newEnv();
//调试变量
envs.put("ISDEBUG", isDebug);
//脚本名称
envs.put("G_SCRIPTNAME", calcModule.getName());
//风场信息

View File

@ -18,6 +18,7 @@ import jakarta.annotation.PreDestroy;
import lombok.extern.slf4j.Slf4j;
import org.quartz.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@ -51,6 +52,12 @@ public class CalcService {
@Autowired
AdminRedisTemplate adminRedisTemplate;
@Value("${calc.debug.enable}")
Boolean isDebug;
@Value("${calc.debug.task-name")
String debugTaskName;
/**
* 计算引擎实例
*/
@ -68,6 +75,8 @@ public class CalcService {
dataMap.put("module", scriptModule);
dataMap.put("aviator", aviator);
dataMap.put("cache", cacheService);
dataMap.put("isDebug", isDebug);
dataMap.put("debugTaskName", debugTaskName);
JobKey jobKey = JobKey.jobKey(scriptModule.getName(), "CalcEngine");
if (sh.checkExists(jobKey)){
throw new SchedulerException("计算模块已启动,请先停止该模块");

View File

@ -86,9 +86,15 @@ captcha:
expire: 120
das:
debug: true
aes:
key: b6967ee87b86d85a
calc:
debug:
enable: true
task-name:
logging:
level:
com:

View File

@ -85,7 +85,13 @@ captcha:
verify-type: calculate
expire: 120
calc:
debug:
enable: false
task-name:
das:
debug: false
aes:
key: b6967ee87b86d85a