公共服务导出-代码逻辑梳理
2024-02-18 10:48:04 0 举报
公共服务导出-技术方案设计
作者其他创作
大纲/内容
导出异常,抛异常,将mq放队尾
MQ -ACK
推送钉钉
3、以下载菜单编码为key,条件实体字符串为value,存入redis,作为防重校验
1、点击下载
下载场景配置表:仅公共导出会查场景id,状态,(0为未启用,1已启用,-1软删除),下载条件体,服务名,下载菜单名称,下载菜单编码(唯一非空)下载限制值
异步
14、调用工具类,将所有的文档子表链接压缩到一个压缩包中
16、发送任务下载成功mq
8、根据tag来接收消息
12、更新子任务的文件下载链接和状态
12、更新子表状态为失败
13、查询主任务id下是否所有任务都已成功,
或者弄个定时任务来做失败补偿
业务系统
17、接收mq
MQ-ACK
任务表:任务id,任务状态,(0为未下载/下载中,1下载成功,2下载失败,-1软删除),文件下载链接,推送状态(0未推送/推送失败,1已推送)下载菜单编码,下载人工号,下载版本号,基础字段
新开发一个下载接口
10、处理导出任务
重复的
生成任务码、菜单编号(用于定位调用那个接口)
18、根据工号和下载菜单名称,来进行钉钉推送
MQ
15、上传压缩包,并更新主表文档链接和状态
成功
失败
4、根据菜单编码获取对应handler,调用统计接口,获取此次下载的数据量和限制值
9、根据菜单编号获取对应的handler
公共导出服务
2、直接调用公共导出服务
子任务表:任务id,子任务id,分页号(代表这是总任务的第几个子任务)子任务状态(0为未下载/下载中,1下载成功,2下载失败,-1软删除),子文件下载链接,下载菜单编码
下载失败的,是否直接推送钉钉,让用户核实情况后重新下载?
19、推送工号、下载菜单、版本号、文档链接
已有下载任务,请勿重复下载
20、更新任务表推送状态字段
6、落库任务总表和任务子表
4、返回前端已创建下载任务。
11、将导出的文件上传
1、确认下载菜单编号: 服务名缩写+下载的菜单名(或者序号)2、在公共导出服务数据库中,创建一条下载场景数据,包含:下载菜单编号、菜单对应的下载接口路径、自定义处理器(handler)/默认公共处理器CommonHandler(默认俩方法,分页下载和统计;一个静态变量下载的限制值)分页下载根据子任务的分页号来分页下载数据3、在公共导出服务,实现公共导出handler,实现自身的导出逻辑和统计下载量的逻辑。4、公共导出服务有一个工厂,在服务启动的时候,会将目前配置的所有handler加载到map并放到内存中,用于根据菜单编号获取对应的handler
7、发送下载子任务mq→①以业务系统服务名为mq的topic②以菜单编码为mq的TAG注:如果属于公共导出处理逻辑的,tag为common。
5、直接按照限制值进行拆分
定时任务:扫描下载任务子表,按时间查询,优先处理老下载任务,查询200个失败的
0 条评论
下一页