如何打印工作流中节点参与人的签章

栏目:云苍穹知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

如何打印工作流中节点参与人的签章

1案例介绍

目前打印工作流审批线路只能打印固定的任务属性,参与人显示信息,节点名称,审批人,审批时间,审批意见,审批通过规则,审批结果这些字段,那如何打印出工作流中的其他信息呢?该案例介绍了如何通过插件实现打印出工作流中参与人的签章图片。

2适用版本

金蝶云苍穹4.0.012及以上

3模板配置

3.1增加签名字段

在开发平台,人员基础资料扩展后,添加签章图片字段。

上传图片

上传图片

3.2模板设计

1、拖入一个数据表格,数据源绑定工作流的审批线路

2、在需要显示的位置预留审批人签字的

上传图片

3.2注册插件

创建插件类WFUserSignaturePrintTestPlugin,并继承AbstractPrintPlugin打印插件基类。(基类全路径kd.bos.print.core.plugin.AbstractPrintPlugin)

3.3插件开发

/**
 * 打印工作流参与人签章(人员扩展的一个图片字段)
 */
public class WFUserSignaturePrintTestPlugin extends AbstractPrintPlugin {
    //工作流-审批线路数据源=formId+.workflow.approveline
    private static final String wfsDs = "glddycs.workflow.approveline";
    /**
     * 数据加载后事件,根据工作流-审批线路数据,查询对应的人员签章信息,再填充入审批线路集合
     * @param evt
     */
    @Override
    public void afterLoadData(AfterLoadDataEvent evt) {
        super.afterLoadData(evt);
        PrtDataSource dataSource = evt.getDataSource();
        if(dataSource==null){
            return;
        }
        //非工作流直接返回
        if(!StringUtils.equals(dataSource.getDsName(),wfsDs)){
            return;
        }
        //数据源集合
        List<DataRowSet> dataRowSets = evt.getDataRowSets();
        for (DataRowSet dataRowSet : dataRowSets) {
            //获取任务ID
            Field taskIdField = dataRowSet.getField("taskId");
            if(taskIdField==null){
                continue;
            }
            long taskId = Long.parseLong(String.valueOf(taskIdField));
            //通过任务ID查询工作流的历史参与人基础资料对应记录,其中含有参与人ID
            DynamicObject dynamicObject = BusinessDataServiceHelper.loadSingleFromCache("wf_hiparticipant", "userid", 
                                                     new QFilter[]{new QFilter("taskid", QFilter.equals, taskId)});
            if(dynamicObject==null){
                continue;
            }
            //获取参与人ID
            Object userid = dynamicObject.get("userid");
            //通过参与人ID查询该用户签章信息
            DynamicObject user = BusinessDataServiceHelper.loadSingleFromCache(userid, "bos_user", "signature");
            if(user==null){
                continue;
            }
            //将签章信息设置进数据集合
            String extPictureUrl = user.getString("signature");
            Field picField = new ImageField(extPictureUrl);
            dataRowSet.put("signature",picField);
        }
    }
/**
     * 控件输出前事件-数据表格输出前-设置数据行签章单元格绑定工作流审批线路中新填充的签章字段
     * @param evt
     */
    @Override
    public void beforeOutputWidget(BeforeOutputWidgetEvent evt) {
        super.beforeOutputWidget(evt);
        if(!(evt instanceof BeforeOutputGridEvent)){
            return;
        }
        BeforeOutputGridEvent gridEvent = (BeforeOutputGridEvent) evt;
        PWGridBo pwGridBo = gridEvent.getGrid();
        //非工作流直接返回
        if(!StringUtils.equals(pwGridBo.getDataSource(),wfsDs)){
            return;
        }
        //获取数据行
        PWGridRowBo row = pwGridBo.getRow(1);
        //获取签章单元格
        PWGridCellBo cell = row.getCell(8);
        //设置单元格绑定工作流数据源中的签章
        cell.setCellValue(wfsDs,"signature");
    }
}


3.4效果预览

每个审批节点若有上传签名,在打印时即可展示签名图片。

上传图片


如何打印工作流中节点参与人的签章

1案例介绍目前打印工作流审批线路只能打印固定的任务属性,参与人显示信息,节点名称,审批人,审批时间,审批意见,审批通过规则,审批结...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息