电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

如何将源单附件面板的附件复制到目标单据

来源:金蝶云社区作者:金蝶2024-09-237

如何将源单附件面板的附件复制到目标单据

# 1业务场景 在源单已保存状态下,切换到目标单,并复制源单附件面板上的所有附件到目标单。 # 2实现方案 (1)编写源单的表单插件代码,实现点击切换按钮(自定义按钮),通过FormShowParameter携带当前单据pkId,表单标识,切换到目标单。 (2)编写目标单的表单插件代码,通过源单插件传递的单据pkId,formId,调用接口查询出源单中的附件面板上的附件信息集合。 (3)获取到附件信息集合后,获取到附件URL,通过URL获取到文件流,重新上传成临时附件,获取新的临时附件URL,重新构造新的临时附件信息集合,使用AttachmentPanel的upload()方法模拟附件上传到目标单据。 # 3示例代码 ## 3.1源单据插件示例代码 ``` public class SourceAttachPlugin extends AbstractFormPlugin { //按钮名 private static final String BUTTON = "button"; private static final String ATTACHMENT_PANEL_NAME = "attachmentpanel"; private static final String SHOW_FORM_ID = "targetformid"; @Override public void registerListener(EventObject e) { addItemClickListeners("tbmain"); } @Override public void itemClick(ItemClickEvent evt) { String itemKey = evt.getItemKey(); if (!StringUtils.equals(itemKey, BUTTON)) { return; } //点击按钮打开目标单页面 showForm(); } private void showForm() { FormShowParameter parameter = new BillShowParameter(); parameter.setFormId(SHOW_FORM_ID); parameter.getOpenStyle().setShowType(ShowType.Modal); //源单pkId parameter.setCustomParam("pkId", getModel().getDataEntity().getPkValue()); //源单formId parameter.setCustomParam("preFormId", getModel().getDataEntity().getDataEntityType().getName()); getView().showForm(parameter); } } ``` ## 3.2目标单据插件示例代码 ``` public class TargetAttachPlugin extends AbstractFormPlugin { //源单的附件面板标识 private static final String SOURCE_ATTACHMENT_PANEL_NAME = "attachmentpanel"; private static final String ATTACHMENT_PANEL_NAME = "attachmentpanel"; private static final String FORM_ID = "targetformid"; private static final FileService fileService = FileServiceFactory.getAttachmentFileService(); private static final TempFileCache tempFileCache = CacheFactory.getCommonCacheFactory().getTempFileCache(); @Override public void afterCreateNewData(EventObject e) { FormShowParameter parameter = getView().getFormShowParameter(); //获取源单pkId Object pkId = parameter.getCustomParam("pkId"); //获取源单formId Object preFormId = parameter.getCustomParam("preFormId"); if (pkId == null || "0".equals(pkId) || StringUtils.isBlank(preFormId)) { return; } //获取目标单附件面板控件 AttachmentPanel panel = getControl(ATTACHMENT_PANEL_NAME); //通过源单formId,pkId,源单的附件面板标识,获取源单上该附件面板的附件信息集合 List<Map<String, Object>> attachments = AttachmentServiceHelper.getAttachments((String) preFormId, pkId, SOURCE_ATTACHMENT_PANEL_NAME); List<Map<String, Object>> newAttachm

如何将源单附件面板的附件复制到目标单据

# 1业务场景在源单已保存状态下,切换到目标单,并复制源单附件面板上的所有附件到目标单。# 2实现方案(1)编写源单的表单插件代码,实...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信