## 问题描述
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>
114 lines
2.8 KiB
Java
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);
|
|
}
|