diff --git a/ruoyi-ccdi/src/main/java/com/ruoyi/ccdi/controller/CcdiEmployeeController.java b/ruoyi-ccdi/src/main/java/com/ruoyi/ccdi/controller/CcdiEmployeeController.java index fa561f9..d51b702 100644 --- a/ruoyi-ccdi/src/main/java/com/ruoyi/ccdi/controller/CcdiEmployeeController.java +++ b/ruoyi-ccdi/src/main/java/com/ruoyi/ccdi/controller/CcdiEmployeeController.java @@ -28,7 +28,6 @@ import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import java.util.List; -import java.util.concurrent.CompletableFuture; /** * 员工信息Controller @@ -137,11 +136,14 @@ public class CcdiEmployeeController extends BaseController { return error("至少需要一条数据"); } - // 异步导入 - CompletableFuture future = employeeService.importEmployeeAsync(list, updateSupport); + // 异步导入,立即返回taskId + String taskId = employeeService.importEmployeeAsync(list, updateSupport); - // 立即返回taskId - ImportResultVO result = future.get(); + // 构建返回结果 + ImportResultVO result = new ImportResultVO(); + result.setTaskId(taskId); + result.setStatus("PROCESSING"); + result.setMessage("导入任务已提交,正在后台处理"); return success("导入任务已提交,正在后台处理", result); } diff --git a/ruoyi-ccdi/src/main/java/com/ruoyi/ccdi/service/ICcdiEmployeeService.java b/ruoyi-ccdi/src/main/java/com/ruoyi/ccdi/service/ICcdiEmployeeService.java index c38e573..3cc362a 100644 --- a/ruoyi-ccdi/src/main/java/com/ruoyi/ccdi/service/ICcdiEmployeeService.java +++ b/ruoyi-ccdi/src/main/java/com/ruoyi/ccdi/service/ICcdiEmployeeService.java @@ -11,7 +11,6 @@ import com.ruoyi.ccdi.domain.vo.ImportResultVO; import com.ruoyi.ccdi.domain.vo.ImportStatusVO; import java.util.List; -import java.util.concurrent.CompletableFuture; /** * 员工信息 服务层 @@ -92,9 +91,9 @@ public interface ICcdiEmployeeService { * * @param excelList Excel数据列表 * @param isUpdateSupport 是否更新已存在的数据 - * @return CompletableFuture包含导入结果 + * @return 任务ID */ - CompletableFuture importEmployeeAsync(List excelList, Boolean isUpdateSupport); + String importEmployeeAsync(List excelList, Boolean isUpdateSupport); /** * 查询导入状态 diff --git a/ruoyi-ccdi/src/main/java/com/ruoyi/ccdi/service/impl/CcdiEmployeeServiceImpl.java b/ruoyi-ccdi/src/main/java/com/ruoyi/ccdi/service/impl/CcdiEmployeeServiceImpl.java index 25dd182..84fcbd6 100644 --- a/ruoyi-ccdi/src/main/java/com/ruoyi/ccdi/service/impl/CcdiEmployeeServiceImpl.java +++ b/ruoyi-ccdi/src/main/java/com/ruoyi/ccdi/service/impl/CcdiEmployeeServiceImpl.java @@ -25,7 +25,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.*; -import java.util.concurrent.CompletableFuture; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; @@ -232,12 +231,12 @@ public class CcdiEmployeeServiceImpl implements ICcdiEmployeeService { * * @param excelList Excel数据列表 * @param isUpdateSupport 是否更新已存在的数据 - * @return CompletableFuture包含导入结果 + * @return 任务ID */ @Override @Async("importExecutor") @Transactional - public CompletableFuture importEmployeeAsync(List excelList, Boolean isUpdateSupport) { + public String importEmployeeAsync(List excelList, Boolean isUpdateSupport) { String taskId = UUID.randomUUID().toString(); long startTime = System.currentTimeMillis(); @@ -264,12 +263,6 @@ public class CcdiEmployeeServiceImpl implements ICcdiEmployeeService { String finalStatus = result.getFailureCount() == 0 ? "SUCCESS" : "PARTIAL_SUCCESS"; updateImportStatus(taskId, finalStatus, result, startTime); - ImportResultVO resultVO = new ImportResultVO(); - resultVO.setTaskId(taskId); - resultVO.setStatus(finalStatus); - resultVO.setMessage("导入任务已提交"); - - return CompletableFuture.completedFuture(resultVO); } catch (Exception e) { // 处理异常 Map errorData = new HashMap<>(); @@ -277,14 +270,10 @@ public class CcdiEmployeeServiceImpl implements ICcdiEmployeeService { errorData.put("message", "导入失败: " + e.getMessage()); errorData.put("endTime", System.currentTimeMillis()); redisTemplate.opsForHash().putAll(statusKey, errorData); - - ImportResultVO resultVO = new ImportResultVO(); - resultVO.setTaskId(taskId); - resultVO.setStatus("FAILED"); - resultVO.setMessage("导入失败: " + e.getMessage()); - - return CompletableFuture.completedFuture(resultVO); } + + // 立即返回taskId,让调用者可以查询状态 + return taskId; } /**