打印带图片的分录表格,Z型排列原创
金蝶云社区-Lento
Lento
0人赞赏了该文章 111次浏览 未经作者许可,禁止转载编辑于2024年06月03日 15:01:31

ccd33425030dd3b23d94928f7faba87.png

输出效果如上,总计五条数据,按照Z型号排列,有很多思路:
1、如设置两个表格,然后过滤数据
2、干预数据源,调整结构

以下我们以干预数据源,修改结构举例:
image.png

使用分录表格,配置如下,后面两个字段是不存在的,后续我们在代码中处理替换


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