fix(ccdi-project): truncate upload error messages

This commit is contained in:
wkc
2026-03-09 16:51:28 +08:00
parent 763e39d153
commit 041974b318
3 changed files with 86 additions and 7 deletions

View File

@@ -50,6 +50,8 @@ import java.util.concurrent.RejectedExecutionException;
@Service
public class CcdiFileUploadServiceImpl implements ICcdiFileUploadService {
private static final int MAX_ERROR_MESSAGE_LENGTH = 2000;
@Data
private static class FetchBankStatementResult {
private boolean success;
@@ -330,10 +332,26 @@ public class CcdiFileUploadServiceImpl implements ICcdiFileUploadService {
CcdiFileUploadRecord record = new CcdiFileUploadRecord();
record.setId(recordId);
record.setFileStatus(status);
record.setErrorMessage(errorMessage);
record.setErrorMessage(normalizeErrorMessage(errorMessage));
recordMapper.updateById(record);
}
private void updateFailedRecord(CcdiFileUploadRecord record, String errorMessage) {
record.setFileStatus("parsed_failed");
record.setErrorMessage(normalizeErrorMessage(errorMessage));
recordMapper.updateById(record);
}
private String normalizeErrorMessage(String errorMessage) {
if (!StringUtils.hasText(errorMessage)) {
return null;
}
if (errorMessage.length() <= MAX_ERROR_MESSAGE_LENGTH) {
return errorMessage;
}
return errorMessage.substring(0, MAX_ERROR_MESSAGE_LENGTH);
}
/**
* 异步处理单个文件的完整流程
* 包含:上传 → 轮询解析状态 → 获取结果 → 保存流水数据
@@ -444,9 +462,7 @@ public class CcdiFileUploadServiceImpl implements ICcdiFileUploadService {
FetchBankStatementResult fetchResult =
fetchAndSaveBankStatements(projectId, lsfxProjectId, logId);
if (!fetchResult.isSuccess()) {
record.setFileStatus("parsed_failed");
record.setErrorMessage(fetchResult.getErrorMessage());
recordMapper.updateById(record);
updateFailedRecord(record, fetchResult.getErrorMessage());
return;
}
@@ -459,9 +475,7 @@ public class CcdiFileUploadServiceImpl implements ICcdiFileUploadService {
} else {
// 解析失败
log.warn("【文件上传】步骤6: 解析失败: status={}, desc={}", status, uploadStatusDesc);
record.setFileStatus("parsed_failed");
record.setErrorMessage("解析失败: " + uploadStatusDesc);
recordMapper.updateById(record);
updateFailedRecord(record, "解析失败: " + uploadStatusDesc);
}
log.info("【文件上传】处理完成: fileName={}", record.getFileName());