【电子回单】中行任务失败,提示 xxx.zip is not a valid file path原创
金蝶云社区-Jasmine_wzw
Jasmine_wzw
1人赞赏了该文章 1044次浏览 未经作者许可,禁止转载编辑于2023年08月31日 17:40:05

问题描述:

    如附件截图所示,中国银行下载回单失败,提示:

请检查:1、银行SFTP是否可以连接;2、银行SFTP根目录是否存在文件

image.png


分析解答:

    银企的business日志显示,通过接口b2e0500查询到了回单文件名:

[2022-12-14 14:03:08,342   INFO] 读取到572字节:

[2022-12-14 14:03:08,342   INFO] <?xml version="1.0" encoding="UTF-8"?><bocb2e version="120" locale="zh_CN">

<head>

<termid>E192168100011</termid>

<trnid>1850f3aafc6</trnid>

<custid>307934626</custid>

<cusopr>311722878</cusopr>

<trncod>b2e0500</trncod>

<token>ACD49EA1202895F0B87899EFC1613B85</token>

</head>

<trans>

<trn-b2e0500-rs>

<status>

<rspcod>B001</rspcod>

<rspmsg>ok</rspmsg>

</status>

<b2e0500-rs>

<status>

<rspcod>B001</rspcod>

<rspmsg>ok</rspmsg>

</status>

<filename>70594840_20221214_7802_1850f3aafc6.zip</filename>

</b2e0500-rs>

</trn-b2e0500-rs>

</trans>

</bocb2e>

image.png


        但回单日志显示如下:

2022-12-14 14:09:00.392  INFO [BOC_NET,download,] 5024 --- [QuartzScheduler_Worker-1] c.k.bos.bank.boc.net.message.SFTPUtils  : 中行-建立SFTP连接成功。

2022-12-14 14:09:00.392  INFO [BOC_NET,download,] 5024 --- [QuartzScheduler_Worker-1] c.k.b.b.b.n.j.BocNetReceiptDownloadJob  : downFileByFileName里的ftpPath = /

2022-12-14 14:09:00.392  INFO [BOC_NET,download,] 5024 --- [QuartzScheduler_Worker-1] c.k.bos.bank.boc.net.message.SFTPUtils  : 切换到ftp目录:/

2022-12-14 14:09:00.482 ERROR [BOC_NET,download,] 5024 --- [QuartzScheduler_Worker-1] c.k.bos.bank.boc.net.message.SFTPUtils  : 下载文件70594840_20221214_7802_1850f3e592a.zip失败:

com.jcraft.jsch.SftpException: /70594840_20221214_7802_1850f3e592a.zip is not a valid file path

image.png


        通过winscp连到银行的sftp上查看,发现回单是推送到一个子路径下(/Inbox),不在根目录下:

image.png


        所以到回单系统-配置项-银行配置中,【银行SFTP文件保存子路径】的值设置为 /Inbox,保存后重启回单模块,再去重新下载回单,任务显示下载完成后了,如下:

image.png


    不过目前遇到的客户,银行推送zip文件都是推送到根目录下的,很少遇到推送到子目录 /Inbox下的。所以一般不要这么配置,除非遇到上述场景。


    另外,更为常见的错误如下图所示,失败原因:

共计1个文件下载失败,使用SFTP下载回单文件发生异常:/72915202_20230629_7802_18905ed3dfd.zip is not a valid file path

image.png

    从任务的处理时间看,是下午14:57去连中行SFTP下载文件的,那么这个时间点zip文件是否存在呢?可以使用winscp连上中行SFTP看下:

1、根目录下是否存在72915202_20230629_7802_18905ed3dfd.zip这个文件?

2、如果72915202_20230629_7802_18905ed3dfd.zip文件存在,那么该文件的创建时间是不是晚于任务的处理时间?

    一般情况下,调度方式使用【正式使用】就可以,因为从预处理到下载间隔30分钟,非高峰期银行一般10分钟左右会推送文件过来,所以30分钟的间隔时间可以满足要求;如果30分钟没有推送过来,系统过60分钟会再次下载,此时如果银行还没推送zip文件过来,那任务就失败了。点【重新下载】会再次发请求,银行返回的zip文件名也会变化。

3、如果调度模式为【正式使用】还是经常任务失败,那一般来说是银行推送的太慢了,在90分钟内都推送不过来,那这种情况下可以改为自定义调度,下载调度开始时间 晚于 预处理调度开始时间 3个小时。或者把下载调度的调度周期设置为120分钟。

image.png

赞 1