增加时间处理函数
This commit is contained in:
parent
e9287b68a7
commit
1a3ea788dd
@ -0,0 +1,52 @@
|
||||
package com.das.modules.calc.functions;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.googlecode.aviator.runtime.function.AbstractFunction;
|
||||
import com.googlecode.aviator.runtime.type.AviatorObject;
|
||||
import com.googlecode.aviator.runtime.type.AviatorRuntimeJavaType;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Aviator扩展函数 - 获取时间维度的起始时间
|
||||
* 函数格式: beginOf(Date, TimeDim)
|
||||
*
|
||||
*/
|
||||
@Slf4j
|
||||
public class FunctionBeginOfDate extends AbstractFunction {
|
||||
|
||||
public FunctionBeginOfDate() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "beginOfDate";
|
||||
}
|
||||
|
||||
@Override
|
||||
public AviatorObject call(Map<String, Object> env, AviatorObject dateData, AviatorObject dimData) {
|
||||
Date date = (Date) dateData.getValue(env);
|
||||
String dim = (String) dimData.getValue(env);
|
||||
|
||||
Date result = null;
|
||||
switch (dim) {
|
||||
case "day":
|
||||
result = DateUtil.beginOfDay(date);
|
||||
break;
|
||||
case "week":
|
||||
result = DateUtil.beginOfWeek(date);
|
||||
break;
|
||||
case "month":
|
||||
result = DateUtil.beginOfMonth(date);
|
||||
break;
|
||||
case "year":
|
||||
result = DateUtil.beginOfYear(date);
|
||||
break;
|
||||
default:
|
||||
log.error("不支持的维度: {}", dim);
|
||||
}
|
||||
return AviatorRuntimeJavaType.valueOf(result);
|
||||
}
|
||||
}
|
@ -0,0 +1,52 @@
|
||||
package com.das.modules.calc.functions;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.googlecode.aviator.runtime.function.AbstractFunction;
|
||||
import com.googlecode.aviator.runtime.type.AviatorObject;
|
||||
import com.googlecode.aviator.runtime.type.AviatorRuntimeJavaType;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Aviator扩展函数 - 获取时间维度的起始时间
|
||||
* 函数格式: beginOf(Date, TimeDim)
|
||||
*
|
||||
*/
|
||||
@Slf4j
|
||||
public class FunctionEndOfDate extends AbstractFunction {
|
||||
|
||||
public FunctionEndOfDate() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "endOfDate";
|
||||
}
|
||||
|
||||
@Override
|
||||
public AviatorObject call(Map<String, Object> env, AviatorObject dateData, AviatorObject dimData) {
|
||||
Date date = (Date) dateData.getValue(env);
|
||||
String dim = (String) dimData.getValue(env);
|
||||
|
||||
Date result = null;
|
||||
switch (dim) {
|
||||
case "day":
|
||||
result = DateUtil.endOfDay(date);
|
||||
break;
|
||||
case "week":
|
||||
result = DateUtil.endOfWeek(date);
|
||||
break;
|
||||
case "month":
|
||||
result = DateUtil.endOfMonth(date);
|
||||
break;
|
||||
case "year":
|
||||
result = DateUtil.endOfYear(date);
|
||||
break;
|
||||
default:
|
||||
log.error("不支持的维度: {}", dim);
|
||||
}
|
||||
return AviatorRuntimeJavaType.valueOf(result);
|
||||
}
|
||||
}
|
@ -6,10 +6,7 @@ import com.das.common.utils.AdminRedisTemplate;
|
||||
import com.das.modules.cache.service.CacheService;
|
||||
import com.das.modules.calc.domain.entity.CalcModule;
|
||||
import com.das.modules.calc.domain.vo.CalcModuleVo;
|
||||
import com.das.modules.calc.functions.FunctionCacheValue;
|
||||
import com.das.modules.calc.functions.FunctionRealData;
|
||||
import com.das.modules.calc.functions.FunctionSaveCalcData;
|
||||
import com.das.modules.calc.functions.FunctionSumValue;
|
||||
import com.das.modules.calc.functions.*;
|
||||
import com.das.modules.calc.mapper.CalcModuleMapper;
|
||||
import com.das.modules.data.service.DataService;
|
||||
import com.googlecode.aviator.AviatorEvaluator;
|
||||
@ -125,6 +122,12 @@ public class CalcService {
|
||||
|
||||
FunctionSumValue sumv = new FunctionSumValue(dataService, cacheService);
|
||||
aviator.addFunction(sumv);
|
||||
|
||||
FunctionBeginOfDate beginOfDate = new FunctionBeginOfDate();
|
||||
aviator.addFunction(beginOfDate);
|
||||
|
||||
FunctionEndOfDate endOfDate = new FunctionEndOfDate();
|
||||
aviator.addFunction(endOfDate);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
Reference in New Issue
Block a user