时间过滤条件下拉列表扩展
1.2 扩展方法
在下拉列表中的每一项时间上都是一段连续的时间,那么每段时间一定会有一个开始时间和结束时间, 所以下拉列表中的每一项实际上是有两个时间点组成。这里我们把每个时间点都作为一个系统变量。
1.2.1 实现系统变量
首先我们需要实现两个系统变量,一个表示开始时间,一个表示结束时间,详情可参考:系统变量
1.2.1.1 实现系统变量接口
接口返回的是一个Date类型的数据,示例代码:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Map;
import org.slf4j.LoggerFactory;
import com.neusoft.saca.dataviz.data.engine.evaluator.SystemVariableSerializable;
import com.neusoft.saca.dataviz.data.util.Context;
/**
* 去年开始时间
*
* @author ch-zhuo
*
*/
public class LastYearStart implements SystemVariableSerializable<Date> {
/**
*
*/
private static final long serialVersionUID = 4658964762083676796L;
private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
private Calendar calendar = Calendar.getInstance();
@Override
public Date getValue(Map<String, Object> params) {
Long value = (Long) Context.get(Context.CLIENT_TIME);
if (value == null || value < 0) {
LoggerFactory.getLogger(getClass()).warn("Client time not acquired, using server time instead.");
calendar.setTime(new Date());
} else {
calendar.setTime(new Date(value));
}
calendar.add(Calendar.YEAR, -1);
int year = calendar.get(Calendar.YEAR);
try {
return format.parse(year + "-01-01 00:00:00");
} catch (ParseException e) {
LoggerFactory.getLogger(getClass()).error("LastYearStart Error", e);
return null;
}
}
}
1.2.1.2 系统变量配置修改
除了扩展接口还要修改系统变量的配置文件dataviz-service\WEB-INF\conf\system-variable.yaml, 按照如下格式添加系统变量即可。
- name: 系统变量ID
caption: 系统变量描述
className: 获取系统变量值的实现类名称
dataType: 系统变量数据类型
- 其中name和caption的值都不可与其他的系统变量重复,配置之后一经在系统中使用过,就再也不能随意修改。
- dataType的值是数字,分别为:1表示字符类型,2表示数值类型,3表示时间类型,11表示字符类型列表。
示例配置如下:
- name: lastYearStart
caption: 去年开始时间
className: com.neusoft.saca.dataviz.data.engine.evaluator.timeitem.LastYearStart
dataType: 3
1.2.2 下拉列表配置
在实现完系统变量接口和配置之后,需要在下拉列表的配置文件dataviz-service\WEB-INF\conf\time-list-item.yaml中进行添加, 按照如下格式添加即可。
- name: 列表项ID
caption: 列表项描述
start: 开始时间的系统变量ID
end: 结束时间的系统变量ID
示例配置如下:
- name: lastyear
caption: 去年
start: lastYearStart
end: lastYearEnd