市场JIT批量上传流程图
2022-01-06 17:30:35 15 举报
市场JIT批量上传流程图
作者其他创作
大纲/内容
定时任务开始
失败
根据文件状态判断是否需要重新读取excel插入db
根据excel内容,查询出skuCode和jitId,准备数据。此时文件状态是 1 待处理
老逻辑
有
不做原子性考虑
修改文件为 导入excel插入临时表成功(35)
35 : 正常场景31:说明调接口 中断了,会有钩子函数把 1 改成 31这两种都不需要重新读取excel 插入db
是
推mq
批量要求送货页面
回写oss,修改文件状态,删除redis文件锁
调PMS接口
回写oss(若数据超过5w行数则直接展示在页面,不回写)
只要有一个加锁失败
判断是否是全量数据
修改文件状态为 有SKC正在触发JIT送货,删除redisjit锁,直接修改文件状态,不回写oss
若插入过程中失败了,那么文件状态是 34 插入明细表处理中 (这里不需要钩子函数)
判断是否是采购jit
34:说明插入被打断,需要重新插db
根据当前机器ip,判断当前机器上正在处理的任务,是否大于 apoll配置的阀值(默认1)
导入异常明细表import_exception_detail
直接返回
批量处理jit发货
没有
校验数据
没有超过
将文件状态改成 34 插入明细表处理中
修改文件状态,删除redis文件锁
若是34 导入excel插入明细表处理中
重新批量插入临时表,对比db中的数据,插入db没有的数据。修改文件状态为 35 。
不是,说明是被发布打断
只要有一个不是的
修改表
成功
根据jitId的进行redis加锁
这里不会回写oss
去临时表查询全量数据
统一 将文件改为1 待处理(如果中断,会有钩子函数改成31等待处理),处理任务
按机器的数量取余数,余数等于index的则在当前机器上执行(文件id%总分片数)
是否有数据执行
超过阀值
提交
重新插入也有可能中断。但是只要执行,文件状态就是 34 ,下次任务依然会扫描到
批量处理发货开始
查询db中的数据(状态为 未处理的)
删除jit锁
jit导入定时任务,每隔1min执行一次(计算)
回写oss,删除redis的jit锁
全部加锁成功
判断调接口是否有失败的
这里是调接口是 一个skc下又所有skuCode一起调用
dms应用
将处理后的数据放入临时表,状态未待处理(可能会因为重新发布而只插入部分数据,放入定时任务检查)
全部都是
35 为正常场景;34 是 应用服务 插入db被打断;31 是计算服务被中断
调接口后,修改临时表状态
收藏
0 条评论
回复 删除
下一页