From 652824b84a1e3e1d4ed87f83d02919224e27b566 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8D=92?= Date: Fri, 7 Nov 2025 16:11:17 +0800 Subject: [PATCH] 1 --- .../TencentDocDelayedPushServiceImpl.java | 52 +++++++++++-------- 1 file changed, 31 insertions(+), 21 deletions(-) diff --git a/ruoyi-system/src/main/java/com/ruoyi/jarvis/service/impl/TencentDocDelayedPushServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/jarvis/service/impl/TencentDocDelayedPushServiceImpl.java index 886e2b5..bfa752b 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/jarvis/service/impl/TencentDocDelayedPushServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/jarvis/service/impl/TencentDocDelayedPushServiceImpl.java @@ -7,12 +7,13 @@ import com.ruoyi.jarvis.service.ITencentDocDelayedPushService; import com.ruoyi.jarvis.service.ITencentDocTokenService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.springframework.beans.BeansException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import org.springframework.http.*; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; import org.springframework.stereotype.Service; import org.springframework.util.StringUtils; -import org.springframework.web.client.RestTemplate; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; @@ -33,7 +34,7 @@ import java.util.concurrent.TimeUnit; * @author system */ @Service -public class TencentDocDelayedPushServiceImpl implements ITencentDocDelayedPushService { +public class TencentDocDelayedPushServiceImpl implements ITencentDocDelayedPushService, ApplicationContextAware { private static final Logger log = LoggerFactory.getLogger(TencentDocDelayedPushServiceImpl.class); @@ -49,7 +50,7 @@ public class TencentDocDelayedPushServiceImpl implements ITencentDocDelayedPushS @Autowired private ITencentDocTokenService tokenService; - private final RestTemplate restTemplate = new RestTemplate(); + private ApplicationContext applicationContext; /** * 延迟时间(分钟),可通过配置文件修改 @@ -77,6 +78,11 @@ public class TencentDocDelayedPushServiceImpl implements ITencentDocDelayedPushS */ private ScheduledExecutorService scheduler; + @Override + public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { + this.applicationContext = applicationContext; + } + /** * 初始化定时任务 */ @@ -290,26 +296,30 @@ public class TencentDocDelayedPushServiceImpl implements ITencentDocDelayedPushS ); log.info("✓ 创建批量推送记录,批次ID: {}", batchId); - // 使用RestTemplate调用本地Controller(内部调用,无需认证) - String url = "http://localhost:30313/jarvis-api/jarvis/tendoc/fillLogisticsByOrderNo?batchId=" + batchId; - - HttpHeaders headers = new HttpHeaders(); - headers.setContentType(MediaType.APPLICATION_JSON); - - // 构造请求体 - String requestBody = "{}"; - - HttpEntity request = new HttpEntity<>(requestBody, headers); - + // 直接通过 ApplicationContext 获取 Controller Bean 并调用方法 + // 这样避免了 HTTP 调用,是后端内部方法调用 try { - log.info("调用批量同步API: {}", url); - ResponseEntity response = restTemplate.postForEntity(url, request, String.class); + log.info("开始调用批量同步方法(后端内部调用)..."); - log.info("批量同步调用完成,HTTP状态码: {}", response.getStatusCodeValue()); - log.info("批量同步结果: {}", response.getBody()); + // 获取 TencentDocController Bean + Object controller = applicationContext.getBean("tencentDocController"); - // 注意:由于是内部调用,401错误说明需要添加@Anonymous注解 - // 暂时记录日志,后续需要修改Controller添加@Anonymous注解 + // 通过反射调用 fillLogisticsByOrderNo 方法 + java.lang.reflect.Method method = controller.getClass().getMethod( + "fillLogisticsByOrderNo", + java.util.Map.class + ); + + // 构造参数 + java.util.Map params = new java.util.HashMap<>(); + params.put("batchId", batchId); + params.put("fileId", fileId); + params.put("sheetId", sheetId); + + // 调用方法 + Object result = method.invoke(controller, params); + + log.info("✓ 批量同步执行完成,结果: {}", result); } catch (Exception ex) { log.error("批量同步调用失败", ex);