From 322f46d7df84a2ddad49f57139e7e3f8e8633a3e Mon Sep 17 00:00:00 2001 From: fengyuan_yang <1976974459@qq.com> Date: Tue, 4 Aug 2026 16:19:56 +0800 Subject: [PATCH] =?UTF-8?q?2026-08-04=20TID=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/gaotao/config/RestTemplateConfig.java | 8 ++-- .../controller/ScheduleController.java | 39 ++++++++++--------- 2 files changed, 24 insertions(+), 23 deletions(-) diff --git a/src/main/java/com/gaotao/config/RestTemplateConfig.java b/src/main/java/com/gaotao/config/RestTemplateConfig.java index 387dcab..b9754d8 100644 --- a/src/main/java/com/gaotao/config/RestTemplateConfig.java +++ b/src/main/java/com/gaotao/config/RestTemplateConfig.java @@ -15,16 +15,16 @@ public class RestTemplateConfig { /** * ERP接口调用超时配置 * - 连接超时:60秒(建立连接的最长等待时间) - * - 读取超时:120秒(等待ERP接口处理响应的最长时间,ERP处理较慢需要更长等待) + * - 读取超时:600秒(日志上传等大文件场景,接口处理可能较慢) */ @Bean public RestTemplate restTemplate() { SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory(); // 设置连接超时时间(毫秒)- 60秒 factory.setConnectTimeout(60000); - // 设置读取超时时间(毫秒)- 120秒 - // 用于等待ERP接口处理响应,ERP接口处理较慢,需要较长的等待时间 - factory.setReadTimeout(120000); + // 设置读取超时时间(毫秒)- 600秒 + // 用于等待MES/ERP接口处理响应,大文件上传场景需要更长等待时间 + factory.setReadTimeout(600000); return new RestTemplate(factory); } diff --git a/src/main/java/com/gaotao/modules/schedule/controller/ScheduleController.java b/src/main/java/com/gaotao/modules/schedule/controller/ScheduleController.java index 3983887..0610caf 100644 --- a/src/main/java/com/gaotao/modules/schedule/controller/ScheduleController.java +++ b/src/main/java/com/gaotao/modules/schedule/controller/ScheduleController.java @@ -17,7 +17,7 @@ import com.gaotao.modules.shopOrder.entity.OperatorData; import com.gaotao.modules.sys.controller.AbstractController; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; -import org.springframework.core.io.ByteArrayResource; +import org.springframework.core.io.InputStreamResource; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; @@ -35,6 +35,7 @@ import org.springframework.web.client.RestTemplate; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.util.UriComponentsBuilder; +import java.io.IOException; import java.nio.charset.StandardCharsets; import java.text.ParseException; import java.util.HashMap; @@ -2452,15 +2453,7 @@ public class ScheduleController extends AbstractController { body.add("date", date); body.add("shift", shift); body.add("operatorNo", operatorNo); - - final byte[] fileBytes = log.getBytes(); - final String fileName = StringUtils.hasText(log.getOriginalFilename()) ? log.getOriginalFilename() : "upload.log"; - body.add("log", new ByteArrayResource(fileBytes) { - @Override - public String getFilename() { - return fileName; - } - }); + body.add("log", buildMultipartFileResource(log, "upload.log")); HttpEntity> requestEntity = new HttpEntity<>(body, headers); ResponseEntity response = restTemplate.exchange( @@ -2555,15 +2548,7 @@ public class ScheduleController extends AbstractController { MultiValueMap body = new LinkedMultiValueMap<>(); body.add("machineNo", machineNo); body.add("date", date); - - final byte[] fileBytes = log.getBytes(); - final String fileName = StringUtils.hasText(log.getOriginalFilename()) ? log.getOriginalFilename() : "upload_mt.log"; - body.add("log", new ByteArrayResource(fileBytes) { - @Override - public String getFilename() { - return fileName; - } - }); + body.add("log", buildMultipartFileResource(log, "upload_mt.log")); HttpEntity> requestEntity = new HttpEntity<>(body, headers); ResponseEntity response = restTemplate.exchange( @@ -2585,6 +2570,22 @@ public class ScheduleController extends AbstractController { } } + private InputStreamResource buildMultipartFileResource(MultipartFile file, String defaultFileName) throws IOException { + final String fileName = StringUtils.hasText(file.getOriginalFilename()) ? file.getOriginalFilename() : defaultFileName; + final long fileSize = file.getSize(); + return new InputStreamResource(file.getInputStream()) { + @Override + public String getFilename() { + return fileName; + } + + @Override + public long contentLength() { + return fileSize; + } + }; + } + private String buildMesApiUrl(String path) { String baseUrl = StringUtils.hasText(mesLogsBaseUrl) ? mesLogsBaseUrl.trim() : "http://logs.bt.in/api/logs"; if (baseUrl.endsWith("/")) {