ecology9接口实现给第三方传输附件下载地址(无需token)

背景需求

本人的需求是在节点后插入自定义接口,将该流程的所有附件的下载地址传输给第三方网站。

理论(不一定正确)

我是按照断点调试去一步一步跟踪,看到了他的sql语句

结论如下:

1 获取表名称及请求id

在接口的方法里面
在这里插入图片描述
我们可以通过 下面的方法 获取到 表单名称和requestid

//获取到该流程的表单名称
        String billTableName = requestInfo.getRequestManager().getBillTableName();
        //获取请求requestid
        String requestid = requestInfo.getRequestid();
2 获取附件传输的docid

根据这两个参数我们可以得到这个请求的表单所有信息

select * from formtable_main_20 where requestid=33034

我这个流程没有几个字段所以信息就这么点
在这里插入图片描述
最主要的是得到fjcs这个字段里面的docid

3 根据docid获取到 imagefileid

docid与imagefileid关联是在这个表里面

select  * FROM   docimagefile

在这里插入图片描述
然后附件都是存储在这个表里面的

select  * FROM   imagefile

在这里插入图片描述

4 剩下的是根据 imagefile表里面的存放路径进行下载了

这里有两种方式:第一种自定义一个api进行代码编写。(记得把自定义的api添加到免登录路径)
**第二种是走他写好的下载api ddcode这个参数得传 不然就要登录 **

http://localhost:8080/weaver/weaver.file.FileDownload?fileid=1742&download=1&requestid=&ddcode=6432f8a6641823a6

代码

在这里插入图片描述

private String getfileurlByrequsetID(RequestInfo requestInfo) {
        ArrayList result=new ArrayList();
        //获取到该流程的表单名称
        String billTableName = requestInfo.getRequestManager().getBillTableName();
        //获取请求requestid
        String requestid = requestInfo.getRequestid();
        //通过 请求id+表名  获取 fjcs 的docid
        RecordSet set =new RecordSet();
        String sql="select fjcs from "+billTableName+" where requestid = ?";
        set.executeQuery(sql,requestid);
        ArrayList docids=new ArrayList();
        //这个 不管是几个ids   都是放在[0]里面的 用逗号隔开的
        while (set.next()){
           docids.add( set.getString("fjcs"));
        }
        //通过docids 获取到 fileid 以及 名称

            //拼接
        sql ="select  imagefileid AS ID , imagefilename as name  FROM   docimagefile WHERE  docimagefile.docid IN ("+docids.get(0)+") ";
            //执行
        set.executeQuery(sql);
        String id="";
        String name="";
        String url="";
        while (set.next()){
            id=set.getString("ID");
            name=set.getString("name");
            //对应id 和  name  进行 拼接
            url=geturl(id);
            HashMap t=new HashMap();
            t.put("filename",name);
            t.put("url",url);
            result.add(t);

        }


        return  JSONUtil.toJsonStr(result);
    }


// 这个是拼接自己对应的ip+端口号
    private String geturl(String fileid){
        String ddcode=getFileDecode(new Integer(fileid));
        //自己进行拼接端口号
        String oAurlprefix = ZycUtil.getOAurlprefix();
        String url=oAurlprefix+"weaver/weaver.file.FileDownload?fileid="+fileid+"&download=1&requestid=&ddcode="+ddcode;
        return  url;
    }



    //这是  泛微官方的GetReqResourceCmd 这个类下面的方法  不生成ddcode 的话  直接下载需要登录
    private static String getFileDecode(int var0) {
        DesUtils var1 = null;

        try {
            var1 = new DesUtils();
        } catch (Exception var5) {
        }

        String var2 = "1_" + var0;

        try {
            var2 = var1.encrypt(var2);
        } catch (Exception var4) {
        }

        return var2;
    }
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值