对接第三方系统-一定要有重推的工具

📅 2026/8/25 20:21:44
对接第三方系统-一定要有重推的工具
我这边的业务系统要对接的第三方系统非常的多比如:金蝶低代码平台北森合思君子签合同系统钉钉等等。。。。而一旦涉及到调用第三方系统则必须处理一个事情对方系统不稳定。这个是逃避不了的必须在设计的阶段就考虑这个事情像对方系统出故障对方系统接口超时等现象经常发生。但这样的事情发生后你不能说没有办法?当系统的代码无法自动处理的时候我们需要人工介入而人工处理的时候必定需要用到工具。这就是我们这篇内容要讲的重推。也即是我们需要将推送失败的请求能方便的再次推送。下面用单据号重新推送作为例子。用定时任务作为重推工具这是我常用的做法通过在定时任务里把入参贴进去后点击执行。定时任务就会根据入参进行单据重推的工具。/** * 单据重推到低代码平台条件对象 * */AllArgsConstructorNoArgsConstructorDatapublicclassRePushDocsToLowCodePlatformConditionDTO{/** * 多个单据号,按照逗号分隔 */privateStringdocsNos;}比如我要重新推送2个单据到低代码平台那么可以如下传参{ docsNos:SH001,SH001 }然后在你使用的定时任务框架界面里执行即可。比如我这边用的是阿里的SchedulerX就可以如下操作在我这边的各种微服务工程了存在了大量的用定时任务做重推工具的如下图都是RePush开头的。当然有些单据本来就是用定时任务来推送到第三方平台的比如一天推送一次一个小时推送一次等。像这种的话你就可以可以直接在原来的定时任务里做一下改造支持传入参数按照指定的条件推送即可。比如OverridepublicListDocsEntitygetNewlyCreatedDocsList(DocsSyncToXXXConditionDTOqueryCondition){LambdaQueryWrapperDocsPOlambdaQueryWrappernewLambdaQueryWrapper();lambdaQueryWrapper.eq(DocsPO::getIsDeleted,0);if(queryCondition!null){if(StringUtils.isNotBlank(queryCondition.getDocsNos())){lambdaQueryWrapper.in(DocsPO::getDocsNo,Arrays.stream(queryCondition.getDocsNos().split(,)).collect(Collectors.toList()));}}else{DatecurrentDaynewDate();DateyesterdayDateUtils.minusDays(currentDay,1);lambdaQueryWrapper.eq(DocsPO::getStatus,DocsStatusEnum.INIT.getCode());lambdaQueryWrapper.ge(DocsPO::getCreateTime,DateUtils.formatDate(yesterday) 00:00:00);lambdaQueryWrapper.le(DocsPO::getCreateTime,DateUtils.formatDate(currentDay) 23:59:59);}ListDocsPODocsPoListDocsMapper.selectList(lambdaQueryWrapper);}就是把条件对象传递进去当条件对象有值时用条件对象里的没有的话就使用定时任务默认的条件。好我们小结一下。由于第三方存在不稳定的情况而我们系统的自动化处理程序又无法每次都解决这个时候就需要借助工具进行手动重新推送的动作。当然能不能重推是有个人工线下核实的过程的确定可以了才能操作。另外呢在技术设计上你最好要有一个习惯第三方一定会出事的要在设计上做好充分的准备。