【场景案例】分录上的附件字段批量下载原创
金蝶云社区-Man_what_can_isay
Man_what_can_isay
5人赞赏了该文章 2530次浏览 未经作者许可,禁止转载编辑于2021年07月07日 15:56:33


标签:

附件字段、分录、批量下载

需求背景:

场景:单据分录有附件字段,下载比较繁琐,需要开发一键批量下载。

image.png

分析过程:

 

 image.png

分录上的附件字段下载时,首先要按行点击打开上传界面。然后需要挨个点下载,此时我们可以利用FileService的batchDownload接口实现附件的批量下载。

实现方案:

public class batchdownload extends AbstractFormPlugin {

 

         @Override

         public void afterDoOperation(AfterDoOperationEventArgs args) {

                   // TODO Auto-generated method stub

                   super.afterDoOperation(args);

                  

                   if("batchdownload".equals(args.getOperateKey())) {

                            //根据附件字段id 查询到附件nameurl 构造list

                            List<File> attachments = new ArrayList<File>();

                            DynamicObjectCollection entry = this.getModel().getEntryEntity("kded_entryentity");

                            for (DynamicObject row : entry) {

                                     DynamicObjectCollection atts = row.getDynamicObjectCollection("kded_attachmentfield");

                                     for (DynamicObject att : atts) {

                                               long attid = att.getLong("fbasedataid_id");

                                               DynamicObject attachment = QueryServiceHelper.queryOne("bd_attachment","name,url", new QFilter("id", QCP.equals, attid).toArray());

                                               File aFile =new File(attachment.getString("name"), attachment.getString("url"));

                                               attachments.add(aFile);

                                     }

                            }

                           

                            FileService fs=FileServiceFactory.getAttachmentFileService();

                           

                            //userAgent:浏览器用户代理

                            String userAgent="Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36";

                           

                            //构造BatchDownloadRequest对象

                            Dir testDir = new Dir("test2");//zip文件里的文件夹

                            testDir.setFiles(attachments.toArray(new File[attachments.size()]));    

                            BatchDownloadRequest bdr = new BatchDownloadRequest("test2");

                            bdr.setDirs(new Dir[]{testDir});

                           

                            /**

                            * batchDownload by OutputStream 批量下载

                            */

                            OutputStream out = null;

                                               try {

                                                        out = new FileOutputStream("d:/test1.zip");//下载到本地的路径

                                               } catch (FileNotFoundException e) {

                                                        e.printStackTrace();

                                               }

                            fs.batchDownload(bdr, out, userAgent);

                   }

         }

}

实现效果:

image.png

image.png

赞 5