Files
ccdi/assets/项目异步文件上传/task.md
2026-03-04 16:32:41 +08:00

1.7 KiB
Raw Blame History

项目异步文件上传功能

数据库

  • 文件上传记录表记录项目下所有文件的上传记录。项目id流水分析平台的项目id文件id文件名称文件大小文件状态上传中、解析中、解析成功、解析失败主体名称主体账号上传时间上传人

流程

  • 在项目详情的上传数据页面,点击流水导入的上传流水按钮
  • 批量选择文件,点击确认
  • 每个文件都需要调接口传输到流水分析平台。建一个线程池,然后每个文件一个线程进行异步处理。处理流程如下
    1. 在文件上传表中插入一条该文件的记录,关联文件与项目和保存文件参数,此时文件状态为上传中
    2. 调用流水分析平台的上传文件接口获取返回参数中的logId将状态更新为解析中并更新数据库
    3. 轮询调用判断文件是否解析结束接口间隔2秒如果parsing为true继续如果为false或者轮询达到300次则结束
    4. 调用文件上传后获取单个文件上传后的状态接口status等于-5且uploadStatusDesc等于data.wait.confirm.newaccount表示文件上传后解析成功从返回值中获取enterpriseNameList更新到主体名称accountNoList更新到主体账号文件状态更新为解析成功反之将文件状态更新为解析失败
    5. 解析成功后,轮询调用获取流水列表并存储到兰溪本地接口,获取所有的流水,通过批量插入的方式保存到流水表中

设计

  • 线程池容量为200个线程。如果线程池空闲线程不足则提示系统繁忙稍后再试
  • 方法中添加完善的日志
  • 每次调用文件上传接口产生的日志单独生成一个日志文件,方便进行维护