1、报表开发
报表开发需要表头表体两个插件,表头继承AbstractReportFormPlugin类,表体继承AbstractReportListDataPlugin类,其中列表的数据需要显示,则主要靠的是AbstractReportListDataPlugin子类实现query()方法,返回值为datasate类型,将查出来的值显示在报表查询的列表上
1.1、表头插件的书写规范:
表头插件只要继承AbstractReportFormPlugin就可以,里面可以不用写任何东西,但是必须得有,注册位置:(可以写多个插件)可以控制报表过滤控件里面的字段和工具栏里面的按钮
1.2、列表插件的书写规范:
继承AbstractReportListDataPlugin类,同时需要实现 query() 方法,返回值为DataSet类型,返回的数据名称和列名一致,显示在列表上面,注册位置:(一个报表只有一个列表插件,用来给列返回数据)
列表插件示例:
import kd.bos.algo.DataSet;
import kd.bos.algo.Row;
import kd.bos.context.RequestContext;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.entity.report.AbstractReportListDataPlugin;
import kd.bos.entity.report.FilterItemInfo;
import kd.bos.entity.report.ReportQueryParam;
import cn.hutool.core.util.ObjectUtil;
import kd.bos.orm.query.QCP;
import kd.bos.orm.query.QFilter;
import kd.bos.servicehelper.QueryServiceHelper;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
/**
* Description
* 表单学习插件
* @author zwt
* @ClassName FormStudyPlugin
* @date 2021-09-15
*/
public class FormStudyPlugin extends AbstractReportListDataPlugin {
/**1、设置需要查询的字段 **/
private final String[] fields = new String[]{"goods_id", "amount", "order_no", "tax_amount"};
/**
* 2、获取过滤字段值,通过reportQueryParam获取到fiter对象,遍历赋值给过滤字段
* @param reportQueryParam
* @param o
* @return
* @throws Throwable
*/
@Override
public DataSet query(ReportQueryParam reportQueryParam, Object o) throws Throwable {
List<FilterItemInfo> filterItems = reportQueryParam.getFilter().getFilterItems();
DataSet dataSet =null;
Date start_time = null;
Date end_time = null;
Long goods_id= null;
for(FilterItemInfo filter :filterItems){
switch (filter.getPropName()){
/** 2.1、开始日期 **/
case "rm_createtime":
Date createtime = (Date)filter.getValue();
if(ObjectUtil.isNotNull(createtime)){
start_time = createtime;
}
break;
/** 2.2、结束日期 **/
case "rm_endtime":
Date endtime = (Date)filter.getValue();
if(ObjectUtil.isNotNull(endtime)){
end_time = endtime;
}
break;
/** 2.3、商品编码 **/
case "rm_goods_id":
DynamicObject goodsId = (DynamicObject)filter.getValue();
if(ObjectUtil.isNotNull(goodsId)){
Object o1 = goodsId.getPkValue();
int q =1;
goods_id = (Long) goodsId.getPkValue();
}
break;
}
}
QFilter qFilter = new QFilter("rm_sc_pur_in_dtl.goods_id",QCP.equals,goods_id);
DataSet dataSet1 =QueryServiceHelper.queryDataSet(this.getClass().getName(),
"rm_sc_pur_in",
"rm_sc_pur_in_dtl,billno,rm_sc_pur_in_dtl.goods_id,rm_sc_pur_in_dtl.qty",
qFilter.toArray(),
null);
/** 如果开始日期和结束日期不为空,则添加时间检验**/
if(start_time !=null && end_time != null ){
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
String start = simpleDateFormat.format(start_time);
String end = simpleDateFormat.format(end_time);
// QFilter filter = new QFilter("rm_sc_pur_in_dtl.manu_date", QCP.large_equals,start);
// filter.and("rm_sc_pur_in_dtl.manu_date", QCP.less_equals,end);
QFilter filter = new QFilter("rm_sc_pur_in_dtl.goods_id", QCP.equals,goods_id);
if(goods_id != null){
// QFilter filter = new QFilter("rm_sc_pur_in_dtl.goods_id", QCP.equals,goods_id);
}
dataSet = QueryServiceHelper.queryDataSet(this.getClass().getName(),
"rm_sc_pur_in",
"rm_sc_pur_in_dtl,rm_sc_pur_in_dtl.goods_id as "+fields[0]+
",rm_sc_pur_in_dtl.amount as "+fields[1]+ ",rm_sc_pur_in_dtl.order_no as "+fields[2]+",rm_sc_pur_in_dtl.tax_amount as "+fields[3]
,filter.toArray(),
null);
}
return dataSet;
}
}