打印带图片的分录表格,Z型排列原创
111次浏览
未经作者许可,禁止转载编辑于2024年06月03日 15:01:31
输出效果如上,总计五条数据,按照Z型号排列,有很多思路:
1、如设置两个表格,然后过滤数据
2、干预数据源,调整结构
以下我们以干预数据源,修改结构举例:
使用分录表格,配置如下,后面两个字段是不存在的,后续我们在代码中处理替换
package digi.alm.plugin.prjimportexport; import kd.bos.print.core.data.DataRowSet; import kd.bos.print.core.data.datasource.PrtDataSource; import kd.bos.print.core.data.field.CollectionField; import kd.bos.print.core.plugin.AbstractPrintPlugin; import kd.bos.print.core.plugin.event.AfterLoadDataEvent; import kd.bos.print.core.plugin.event.BeforeOutputGridEvent; import kd.bos.print.core.plugin.event.BeforeOutputWidgetEvent; import kd.bos.print.core.plugin.event.bo.PWGridCellBo; import java.util.List; /** * </p> * description * <p> * * @author wentao.liu01@foxmail.com 2024/05/31 13:50 */ public class PrintPlugin extends AbstractPrintPlugin { @Override public void afterLoadData(AfterLoadDataEvent evt) { //获取数据源信息 PrtDataSource dataSource = evt.getDataSource(); String dsName = dataSource.getDsName();//获取数据源名称 //判断如果是我需要处理的数据源 if ("digi_lwt_test".equals(dsName)) { //获取数据结果集。假设这里只打印了一张单。 List<DataRowSet> dataRowSets = evt.getDataRowSets(); DataRowSet dataRowSet = dataRowSets.get(0); //获取分录上的成绩信息集合 CollectionField gradleEntry = dataRowSet.getCollectionField("digi_lwt_entry"); List<DataRowSet> entryRows = gradleEntry.getValue(); for (int i = 0; i < entryRows.size(); i ++) { DataRowSet dataRowSet1 = entryRows.get(i); if (entryRows.size() == i + 1) { break; } DataRowSet dataRowSet2 = entryRows.get(i + 1); dataRowSet1.put("digi_textfield2", dataRowSet2.getField("digi_textfield")); dataRowSet1.put("digi_picturefield2", dataRowSet2.getField("digi_picturefield")); entryRows.remove(i + 1); } //对字段值进行修改 evt.setDataRowSets(dataRowSets); } } @Override public void beforeOutputWidget(BeforeOutputWidgetEvent evt) { if (evt instanceof BeforeOutputGridEvent) { /*if ("digi_lwt_test.digi_lwt_entry".equals(((BeforeOutputGridEvent) evt).getGrid().dataSource())) { }*/ if(((BeforeOutputGridEvent) evt).getGrid().getColumnCount() > 1){ List<PWGridCellBo> cellBos =((BeforeOutputGridEvent) evt).getColCell(1); for (PWGridCellBo cellBo : cellBos) { if(cellBo.getBindField().equals("=$digi_textfield2")){ cellBo.setCellValue("digi_lwt_test.digi_lwt_entry","digi_textfield2"); } if(cellBo.getBindField().equals("=$digi_picturefield2")){ cellBo.setCellValue("digi_lwt_test.digi_lwt_entry","digi_picturefield2"); } } } /*BeforeOutputGridEvent gridEvent = (BeforeOutputGridEvent) evt; List<PWGridCellBo> cellBos = gridEvent.insertColumn(1,gridEvent.getRightSpace()); //获取新增列的标题行对应单元格,赋值为列标题名称 cellBos.get(0).setCellValue("digi_lwt_test.digi_lwt_entry","digi_textfield2"); //获取新增列数据行对应的单元格,并绑定afterLoadData中添加的字段 cellBos.get(1).setCellValue("digi_lwt_test.digi_lwt_entry", "digi_picturefield2");*/ } } }
赞 0
0人点赞
还没有人点赞,快来当第一个点赞的人吧!
打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!
推荐阅读
您的鼓励与嘉奖将成为创作者们前进的动力,如果觉得本文还不错,可以给予作者创作打赏哦!
请选择打赏金币数 *
10金币20金币30金币40金币50金币60金币
可用金币: 0