金蝶插件开发

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;
    }
}

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

书生_1992

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值