Files
ccdi/ruoyi-ccdi/src/main/java/com/ruoyi/ccdi/service/ICcdiEmployeeService.java
wkc db46521c8b fix: 修复异步导入方法的阻塞调用问题
## 问题描述
Controller层使用了future.get()阻塞调用,导致异步导入失去意义

## 修复内容
1. 修改ICcdiEmployeeService接口:将返回类型从CompletableFuture<ImportResultVO>改为String
2. 修改CcdiEmployeeServiceImpl:importEmployeeAsync方法立即返回taskId
3. 修改CcdiEmployeeController:移除future.get()调用,直接使用返回的taskId
4. 移除不需要的CompletableFuture导入

## 技术细节
- Service方法保持@Async注解,在独立线程池中执行
- Controller立即返回taskId给前端,不等待导入完成
- 前端可通过/importStatus/{taskId}接口查询导入进度

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-02-06 09:46:27 +08:00

114 lines
2.8 KiB
Java

package com.ruoyi.ccdi.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ruoyi.ccdi.domain.dto.CcdiEmployeeAddDTO;
import com.ruoyi.ccdi.domain.dto.CcdiEmployeeEditDTO;
import com.ruoyi.ccdi.domain.dto.CcdiEmployeeQueryDTO;
import com.ruoyi.ccdi.domain.excel.CcdiEmployeeExcel;
import com.ruoyi.ccdi.domain.vo.CcdiEmployeeVO;
import com.ruoyi.ccdi.domain.vo.ImportFailureVO;
import com.ruoyi.ccdi.domain.vo.ImportResultVO;
import com.ruoyi.ccdi.domain.vo.ImportStatusVO;
import java.util.List;
/**
* 员工信息 服务层
*
* @author ruoyi
* @date 2026-01-28
*/
public interface ICcdiEmployeeService {
/**
* 查询员工列表
*
* @param queryDTO 查询条件
* @return 员工VO集合
*/
List<CcdiEmployeeVO> selectEmployeeList(CcdiEmployeeQueryDTO queryDTO);
/**
* 分页查询员工列表
*
* @param page 分页对象
* @param queryDTO 查询条件
* @return 员工VO分页结果
*/
Page<CcdiEmployeeVO> selectEmployeePage(Page<CcdiEmployeeVO> page, CcdiEmployeeQueryDTO queryDTO);
/**
* 查询员工列表(用于导出)
*
* @param queryDTO 查询条件
* @return 员工Excel实体集合
*/
List<CcdiEmployeeExcel> selectEmployeeListForExport(CcdiEmployeeQueryDTO queryDTO);
/**
* 查询员工详情
*
* @param employeeId 员工ID
* @return 员工VO
*/
CcdiEmployeeVO selectEmployeeById(Long employeeId);
/**
* 新增员工
*
* @param addDTO 新增DTO
* @return 结果
*/
int insertEmployee(CcdiEmployeeAddDTO addDTO);
/**
* 修改员工
*
* @param editDTO 编辑DTO
* @return 结果
*/
int updateEmployee(CcdiEmployeeEditDTO editDTO);
/**
* 批量删除员工
*
* @param employeeIds 需要删除的员工ID
* @return 结果
*/
int deleteEmployeeByIds(Long[] employeeIds);
/**
* 导入员工数据
*
* @param excelList Excel实体列表
* @param isUpdateSupport 是否更新支持
* @return 结果
*/
String importEmployee(List<CcdiEmployeeExcel> excelList, Boolean isUpdateSupport);
/**
* 异步导入员工数据
*
* @param excelList Excel数据列表
* @param isUpdateSupport 是否更新已存在的数据
* @return 任务ID
*/
String importEmployeeAsync(List<CcdiEmployeeExcel> excelList, Boolean isUpdateSupport);
/**
* 查询导入状态
*
* @param taskId 任务ID
* @return 导入状态信息
*/
ImportStatusVO getImportStatus(String taskId);
/**
* 获取导入失败记录
*
* @param taskId 任务ID
* @return 失败记录列表
*/
List<ImportFailureVO> getImportFailures(String taskId);
}