文件模板维护开发实现方案原创
金蝶云社区-时空蔷薇
时空蔷薇
1人赞赏了该文章 909次浏览 未经作者许可,禁止转载编辑于2021年12月16日 16:49:43

标签:

    文件模板、模板上传

需求背景:

    系统需要提供统一的文档管理功能,对于需要提供报告、证明文件,如差旅报销单需上传出差报告、付款报账单需上传垫付证明等业务场景,以供管理员上传维护ExcelWord等类型文件模板,让用户填单时可以下载文件模板进行填写。

实现方案:

    维护一份基础资料,用于存储单据实体对象与文件模板附件的数据。

    在业务单据上提供模板下载按钮,点击按钮即根据单据实体获取对应的文件模板附件供用户选择下载。(可根据实际业务需要调整)

实现步骤如下:

    1. 新建基础资料【模板】,添加基础资料字段[单据类型]绑定基础资料类型【主实体对象(bos_entityobject)】,添加附件面板,布局如图。基本信息面板的字段均设置为提交锁定,附件面板设置为查看锁定。

    [取消]按钮绑定“关闭”操作;

    [保存]按钮绑定“提交”操作或者“保存”操作(需将操作后状态改为“已提交”),并把“查看可见”去掉,在下载文件模板界面不显示。

    保存后基本信息面板的字段锁定不可编辑,文件模板附件管理员仍可进行编辑,删除或者上传等,维护文件模板附件。

 

图片9.png

 

    2. 业务单据上添加模板下载按钮,如“下载出差报告模板”,标识(kded_downtemplate)

    维护模板下载逻辑插件,监听该按钮的itemClick事件,在itemClick事件获取当前业务单据的实体标识,通过该实体标识匹配步骤1【模板】的[单据类型]的主实体对象编码以获取符合条件的基础资料数据,通过弹窗展示给用户,【模板】的附件面板即可选择下载模板。

 

图片10.png

实现代码:

public class TripReimburseBillEdit extends AbstractBillPlugIn implements TipsListener {
@Override
    public void registerListener(EventObject e) {
        super.registerListener(e);
        this.addItemClickListeners("kded_downtemplate");
    }
    @Override
    public void itemClick(ItemClickEvent evt) {
        super.itemClick(evt);
        String itemKey = evt.getItemKey();
        switch(itemKey) {
            case "kded_downtemplate":
                QFilter filter = new QFilter("kded_billentity.number", QCP.equals, getView().getEntityId());
                //根据当前表单实体ID=模板配置的主实体对象查询文件模板附件
                DynamicObject fileTemplate = QueryServiceHelper.queryOne("kded_filetemplate", "id", filter.toArray());
                if(fileTemplate != null) {
                    BaseShowParameter showParameter = new BaseShowParameter();
                    showParameter.setFormId("kded_filetemplate");
                    showParameter.setPkId(fileTemplate.getLong("id"));
                    showParameter.getOpenStyle().setShowType(ShowType.Modal);
                    //设置表单操作状态为查看
                    showParameter.setStatus(OperationStatus.VIEW);
                    getView().showForm(showParameter);
                } else {
                    getView().showMessage(String.format("单据类型[%s]的相关模板为空,请先配置!", getModel().getDataEntityType().getDisplayName()));
                }
                break;
        default:
                break;
        }
    }
}

实现效果:

1. 维护【模板】文件模板附件

 

图片11.png

2.点击“下载出差报告模板”打开模板下载界面即可进行下载。

 

图片12.png


图标赞 1
1人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!