增加时间处理函数
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.cache.service.CacheService;
|
||||||
import com.das.modules.calc.domain.entity.CalcModule;
|
import com.das.modules.calc.domain.entity.CalcModule;
|
||||||
import com.das.modules.calc.domain.vo.CalcModuleVo;
|
import com.das.modules.calc.domain.vo.CalcModuleVo;
|
||||||
import com.das.modules.calc.functions.FunctionCacheValue;
|
import com.das.modules.calc.functions.*;
|
||||||
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.mapper.CalcModuleMapper;
|
import com.das.modules.calc.mapper.CalcModuleMapper;
|
||||||
import com.das.modules.data.service.DataService;
|
import com.das.modules.data.service.DataService;
|
||||||
import com.googlecode.aviator.AviatorEvaluator;
|
import com.googlecode.aviator.AviatorEvaluator;
|
||||||
@ -125,6 +122,12 @@ public class CalcService {
|
|||||||
|
|
||||||
FunctionSumValue sumv = new FunctionSumValue(dataService, cacheService);
|
FunctionSumValue sumv = new FunctionSumValue(dataService, cacheService);
|
||||||
aviator.addFunction(sumv);
|
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