fix: 优化取消任务慢问题

This commit is contained in:
tangwei 2026-05-07 17:09:26 +08:00
parent a6810efe79
commit 12b9190ccc
4 changed files with 19 additions and 13 deletions

View File

@ -393,7 +393,7 @@ public class FishDraftDataController {
if ("1".equals(result.getCode())) {
status = "FAILED";
}
importTaskService.updateStatus(taskId, status, null);
importTaskService.updateStatus(taskId, status, result.getTempDir(), null);
importTaskService.updateProgress(taskId, result.getTotalCount(), result.getSuccessCount(), result.getFailedCount());
try {

View File

@ -101,7 +101,7 @@ public class ImportTaskController {
public ResponseResult updateStatus(@RequestParam String id,
@RequestParam String status,
@RequestParam(required = false) String errorMsg) {
boolean result = importTaskService.updateStatus(id, status, errorMsg);
boolean result = importTaskService.updateStatus(id, status,null, errorMsg);
return result ? ResponseResult.success("更新成功") : ResponseResult.error("更新失败");
}

View File

@ -41,7 +41,7 @@ public interface IImportTaskService extends IService<ImportTask> {
/**
* 更新任务状态
*/
boolean updateStatus(String id, String status, String errorMsg);
boolean updateStatus(String id, String status,String tempDir, String errorMsg);
/**
* 更新解析进度

View File

@ -83,12 +83,13 @@ public class ImportTaskServiceImpl extends ServiceImpl<ImportTaskMapper, ImportT
@Override
@Transactional(rollbackFor = Exception.class)
public boolean updateStatus(String id, String status, String errorMsg) {
public boolean updateStatus(String id, String status,String tempDir, String errorMsg) {
ImportTask importTask = this.getById(id);
if (importTask == null) {
return false;
}
importTask.setStatus(status);
importTask.setTempDir(tempDir);
if (StringUtils.hasText(errorMsg)) {
importTask.setErrorMsg(errorMsg);
}
@ -184,15 +185,20 @@ public class ImportTaskServiceImpl extends ServiceImpl<ImportTaskMapper, ImportT
if ("CONFIRMED".equals(currentStatus) || "FAILED".equals(currentStatus) || "CANCELLED".equals(currentStatus)) {
return false;
}
if (importTask.getResultJson() != null && !importTask.getResultJson().isEmpty()) {
try {
FishImportResult importResult = objectMapper.readValue(importTask.getResultJson(), FishImportResult.class);
String tempDir = importResult.getTempDir();
// del 方法会递归删除目录及其所有内容
FileUtil.del(tempDir);
} catch (Exception e) {
e.printStackTrace();
// ignore parse error
String temp = importTask.getTempDir();
if (StrUtil.isNotBlank( temp)) {
FileUtil.del(temp);
}else{
if (importTask.getResultJson() != null && !importTask.getResultJson().isEmpty()) {
try {
FishImportResult importResult = objectMapper.readValue(importTask.getResultJson(), FishImportResult.class);
String tempDir = importResult.getTempDir();
// del 方法会递归删除目录及其所有内容
FileUtil.del(tempDir);
} catch (Exception e) {
e.printStackTrace();
// ignore parse error
}
}
}
importTask.setStatus("CANCELLED");