From 5072520172e8f45e3ccb8afc26cf0c8186ba4cdd Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期一, 19 十月 2026 16:31:42 +0800
Subject: [PATCH] refactor(mes): 重构质量管理和批次绑定功能
---
yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/qrexport/MesProQrExportTaskServiceImpl.java | 13 +++++++++++++
1 files changed, 13 insertions(+), 0 deletions(-)
diff --git a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/qrexport/MesProQrExportTaskServiceImpl.java b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/qrexport/MesProQrExportTaskServiceImpl.java
index e6adab6..711cdda 100644
--- a/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/qrexport/MesProQrExportTaskServiceImpl.java
+++ b/yudao-module-mes/src/main/java/cn/iocoder/yudao/module/mes/service/pro/qrexport/MesProQrExportTaskServiceImpl.java
@@ -15,6 +15,7 @@
import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;
+import org.springframework.web.context.request.async.AsyncRequestNotUsableException;
import java.io.BufferedInputStream;
import java.io.File;
@@ -193,6 +194,7 @@
response.setHeader("Content-Range", "bytes " + start + "-" + end + "/" + fileSize);
}
response.setContentLengthLong(length);
+ long sent = 0;
try (InputStream in = new BufferedInputStream(new FileInputStream(file))) {
in.skipNBytes(start);
OutputStream out = response.getOutputStream();
@@ -205,8 +207,19 @@
}
out.write(buffer, 0, read);
remaining -= read;
+ sent += read;
}
out.flush();
+ } catch (AsyncRequestNotUsableException e) {
+ // 娴忚鍣ㄥ彇娑堛�佺綉缁滄柇寮�鎴栦唬鐞嗗叧闂繛鎺ユ椂锛屽搷搴斿凡缁忎笉鍙啓锛屼笉鑳藉啀杩斿洖 JSON 閿欒銆�
+ // ZIP 淇濈暀鍒版竻鐞嗘椂闂达紝鍓嶇鍙噸璇曞綋鍓嶅垎娈碉紱璁板綍鑼冨洿涓庤繘搴︿究浜庢帓鏌ラ绻佹柇寮�銆�
+ log.warn("[download][瀹㈡埛绔腑鏂� taskId={}, range={}, sent={}/{} bytes: {}]",
+ id, range, sent, length, e.getMessage());
+ } catch (IOException e) {
+ // ZIP 鍝嶅簲澶村凡缁忓啓鍏ワ紝涓嶈兘浜ょ粰鍏ㄥ眬寮傚父澶勭悊鍣ㄥ簭鍒楀寲 CommonResult銆�
+ // Content-Length 涓嶅尮閰嶄細璁╁鎴风鍒ゅ畾鏈澶辫触骞堕噸璇曘��
+ log.error("[download][浼犺緭澶辫触 taskId={}, range={}, sent={}/{} bytes]",
+ id, range, sent, length, e);
}
} finally {
activeDownloads.computeIfPresent(id, (key, count) -> count > 1 ? count - 1 : null);
--
Gitblit v1.9.3