套打中如何实现按条件汇总的打印效果

1 业务背景
客户希望在数据表格的合计行对满足特定条件的数据进行合计或者格式化操作,如直接使用打印模板的公式 - sum(if(条件,xx,xxx))无法实现效果,这里只会计算数据表格的第一行,不满足业务需求。
2 思路与方案
继承打印模板的插件AbstractPrintPlugin ,在afterOutputWidget事件中获取输出数据,对数据进行合计然后再设置回合计行。
3 实现步骤
步骤1:打印模板的配置

步骤二:继承AbstractPrintPlugin,实现afterOutputWidget事件
package demo;
import kd.bos.dataentity.entity.LocaleString;
import kd.bos.dataentity.resource.ResManager;
import kd.bos.orm.query.QCP;
import kd.bos.orm.query.QFilter;
import kd.bos.print.core.data.DataRowSet;
import kd.bos.print.core.data.field.CollectionField;
import kd.bos.print.core.data.field.DecimalField;
import kd.bos.print.core.data.field.Field;
import kd.bos.print.core.data.field.TextField;
import kd.bos.print.core.model.widget.grid.AbstractPWGrid;
import kd.bos.print.core.model.widget.grid.datagrid.PWNormalRow;
import kd.bos.print.core.model.widget.grid.datagrid.cellvalue.ACellValue;
import kd.bos.print.core.plugin.AbstractPrintPlugin;
import kd.bos.print.core.plugin.event.AfterLoadDataEvent;
import kd.bos.print.core.plugin.event.AfterOutputGridEvent;
import kd.bos.print.core.plugin.event.AfterOutputWidgetEvent;
import kd.bos.print.core.plugin.event.bo.PWGridBo;
import kd.bos.print.core.plugin.event.bo.PWGridCellBo;
import kd.bos.print.core.plugin.event.bo.PWGridRowBo;
import kd.bos.print.core.plugin.event.bo.PluginDataVisitorBo;
import kd.bos.servicehelper.QueryServiceHelper;
import kd.sdk.plugin.Plugin;
import java.math.BigDecimal;
import java.util.Iterator;
import java.util.List;
/**
* 新的打印插件
*/
public class printSum extends AbstractPrintPlugin implements Plugin {
//数据表格的标识
private static final String DATAGRID="DataGrid";
@Override
public void afterOutputWidget(AfterOutputWidgetEvent evt) {
//判断是否数据表格
if(DATAGRID.equals(evt.getWidgetKey()))
{
//获取数据表格
PWGridB套打中如何实现按条件汇总的打印效果
1 业务背景客户希望在数据表格的合计行对满足特定条件的数据进行合计或者格式化操作,如直接使用打印模板的公式 - sum(if(条件,xx,xxx))...
点击下载文档文档为doc格式
声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
上一篇
已经是第一篇



