Ureport的SQL參數(shù)默認支持的數(shù)據(jù)類型包括:String曼追、Integer、Float短条、Boolean导匣、Date、List茸时。
當前數(shù)據(jù)類型不滿足我們的功能需要贡定,我們的時間再數(shù)據(jù)庫中都是通過時間戳(Long)的形式存放的。
需要修改的地方有兩部分:
一可都、頁面部分(JS代碼)
在ureport.console工程中缓待,找到并打開resources/ureport-asserts/js/designer.bundle.js文件,搜索如下內(nèi)容
<option>Integer</option>
在<option>Integer</option>的前后位置增加如下代碼后保存即可
<option>Long</option>
二渠牲、后臺部分(Java代碼)
在ureport.core工程中旋炒,修改com.bstek.ureport.definition.datasource.DataType.java
package com.bstek.ureport.definition.datasource;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import com.bstek.ureport.Utils;
import com.bstek.ureport.exception.ReportComputeException;
/**
* @author Jacky.gao
* @since 2016年12月27日
*/
public enum DataType {
????Integer,Float,Boolean,String,Date,List,Long;
????public Object parse(Object obj){
????????if(obj==null)return null;
????????switch(this){
????????case Boolean:
????????????if(obj.toString().equals("")){
????????????????return null;
????????????}
????????????if(obj instanceof Boolean){
????????????????return (Boolean)obj;
????????????}else{
????????????????return java.lang.Boolean.valueOf(obj.toString());
????????????}
????????case Float:
????????????if(obj.toString().equals("")){
????????????????return null;
????????????}
????????????if(obj instanceof Float){
????????????????return (Float)obj;
????????????}else{
????????????????return Utils.toBigDecimal(obj).doubleValue();
????????????}
????????case Integer:
????????????if(obj.toString().equals("")){
????????????????return null;
????????????}
????????????if(obj instanceof Integer){
????????????????return (Integer)obj;
????????????}else{
????????????????return Utils.toBigDecimal(obj).intValue();
????????????}
case Long:
????????????if(obj.toString().equals("")){
????????????????return null;
????????????}
????????????if(obj instanceof Long){
????????????????return (Long)obj;
????????????}else{
????????????????return Utils.toBigDecimal(obj).longValue();
????????????}
????????case String:
????????????if(obj instanceof String){
????????????????return (String)obj;
????????????}else{
????????????????return obj.toString();
????????????}
????????case List:
????????????if(obj.toString().equals("")){
????????????????return null;
????????????}
????????????if(obj instanceof List){
????????????????return (List<?>)obj;
????????????}else{
????????????????String[] arrs=obj.toString().split(",");
????????????????List<String> list=new ArrayList<String>();
????????????????for(int i=0;i<arrs.length;i++){
????????????????????list.add(arrs[i]);
????????????????}
????????????????return list;
????????????}
????????case Date:
????????????if(obj.toString().equals("")){
????????????????return null;
????????????}
????????????if(obj instanceof Date){
????????????????return (Date)obj;
????????????}else{
????????????????Date date=null;
????????????????SimpleDateFormat sd=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
????????????????try{
????????????????????date=sd.parse(obj.toString());
????????????????}catch(ParseException e){
????????????????????sd=new SimpleDateFormat("yyyy-MM-dd");
????????????????????try{
????????????????????????date=sd.parse(obj.toString());????????????????????????
????????????????????}catch(ParseException ex){
????????????????????????throw new ReportComputeException("Date parameter value pattern must be \"yyyy-MM-dd\" or \"yyyy-MM-dd HH:mm:ss\".");
????????????????????}
????????????????}
????????????????return date;
????????????}
????????}
????????throw new ReportComputeException("Unknow parameter type : " + this);
????}
}
加粗傾斜字體部分為增加的內(nèi)容。