销售易文件同步
2025-09-03 17:38:34 0 举报
AI智能生成
销售易文件同步
作者其他创作
大纲/内容
1、同步合同文件<br>
2、开启定时任务,<br>把需要同步文件的合同放入redis map结构中<br>
详细步骤:每5分钟查询合同表,将未同步状态的合同id和其他字段信息放入redis map结构中,<br><font color="#e74f4c">(不同类型的文件,分别维护一个不同的map,如:合同类型</font><font color="#e74f4c">一个map,项目类型</font><font color="#e74f4c">一个map)<br>(为了提升性能,还可以针对合同进行分片,如:根据合同id%10,产生10个map)<br></font><br>
3、调用销售易获取合同文件的接口,<br>并更新到redis map中<br>
详细步骤:如果接口没有做频率限制,则可以开启多个线程(线程池维护线程生命周期)进行接口的调用,<br>如果接口做了频率限制,则开启一个线程根据频率限制的时长进行接口的顺序调用。<font color="#e74f4c"><br></font>接口调用成功后,把合同文件的信息放到redis map中。<br><font color="#e74f4c">接口调用失败(超过3次),则更新合同表的status状态为失败,并删除map中的合同记录</font><br>
4、启动多线程去拿到map中的数据,<br>多线程处理下载合同文件并转移到minio中<br>
4、详细步骤:如果合同的map没分片,则启动一个线程去进行合同文件的下载并转移到minio中,<br>如果有分片,则根据分片的数量,启动相应数量的线程(线程池维护线程)<br>进行合同文件的下载并转移到minio中。<br><font color="#e74f4c">(利用redis map的HSCAN功能,类似于分页获取合同数据,然后根据获取的合同的数量<br>创建相同数量的线程并放入线程池中进行文件的下载并转移到minio中)<br>(根据文件同步的结果,更新合同表的status状态为同步完成或者失败,更新同步文件表;<br>如果同步成功,或者超过同步次数但是没有成功,则删除map中的这条合同记录)<br></font><br>
表结构
合同表
主键id
contract_id(合同id)<br>
contract_code(合同编号)<br>
status(状态(0=未同步,1=进行中,2=同步完成,3=同步失败))<br>
syn_count(同步次数)<font color="#e74f4c">(代码逻辑中可设置超过3次没成功,就算失败,人工介入排查错误)</font><br>
error_message(同步失败报错信息)<br>
sync_start_time(同步开始时间)<br>
sync_end_time(同步结束时间)<br>
同步文件表
主键id<br>
sync_file_id(文件id)<br>
sync_file_name(文件名称)<br>
sync_file_md5(文件md5值)<br>
minio_file_url(文件url)<br>
sync_id(同步id,关联合同,项目)<br>
sync_code(同步编码,关联合同编码,项目编码)<br>
sync_file_type(文件类型(1=合同,2=项目))<br>
sync_start_time(同步开始时间)<br>
sync_end_time(同步结束时间)<br>
2、同步项目文件<font color="#e74f4c">(步骤参考:1、同步合同文件)<br></font><br>
0 条评论
下一页