業務場景:業務相對複雜時,無法直接通過SQL直接查詢出相應的資料集。可以使用Java資料集實作。
Java資料集可以針對查詢結果進行相應的加工,向前端擴充報表提供符合要求的結果集。
package com.kingdee.eas.custom.si.rpt;
import java.util.Map;
import java.awt.Window;
import com.kingdee.jdbc.rowset.IRowSet;
import com.kingdee.eas.custom.si.util.DaoUtil;
import com.kingdee.eas.custom.si.util.VerifyUtil;
import com.kingdee.eas.rpts.ctrlsqldesign.param.AbstractJavaDataSet;
/**
* 示範報表Java資料集,用于擴充報表
* @author 郭旭
*
*/
public class DemoDataSet extends AbstractJavaDataSet {
/**報表過濾參數**/
private Map<?, ?> filters;
/**
* 傳回資料集
*/
@Override
public IRowSet[] getCustomRowSet(Window parent, String otherDataCenter) throws Exception {
// 存放資料集
IRowSet[] ds = new IRowSet[1];
String number = (String) this.filters.get("number"); //過濾參數
StringBuffer sql = new StringBuffer();
sql.append("select FNumber 登入名, FName_L2 使用者實名 from T_PM_User where 1 = 1").append("\n");
if(VerifyUtil.notNull(number)){
System.out.println("過濾參數:number = " + number);
sql.append("and FNumber = '" + number + "'").append("\n");
}
IRowSet rs = DaoUtil.executeQuery(sql);
ds[0] = rs;
return ds;
}
/**
* 如需傳回查詢語句時,實作該方法
*/
@Override
public String getCustomSQL(Window parent) throws Exception {
return super.getCustomSQL(parent);
}
/**
* 報表過濾參數
*/
@SuppressWarnings("unchecked")
@Override
public void setFilterParam(Map filterParamMap) {
filters = filterParamMap;
}
}