diff --git a/ruoyi-ccdi/src/main/java/com/ruoyi/ccdi/mapper/CcdiEmployeeMapper.java b/ruoyi-ccdi/src/main/java/com/ruoyi/ccdi/mapper/CcdiEmployeeMapper.java index 0dae687..725059a 100644 --- a/ruoyi-ccdi/src/main/java/com/ruoyi/ccdi/mapper/CcdiEmployeeMapper.java +++ b/ruoyi-ccdi/src/main/java/com/ruoyi/ccdi/mapper/CcdiEmployeeMapper.java @@ -43,4 +43,12 @@ public interface CcdiEmployeeMapper extends BaseMapper { * @return 影响行数 */ int insertOrUpdateBatch(@Param("list") List list); + + /** + * 批量插入员工信息 + * + * @param list 员工信息列表 + * @return 影响行数 + */ + int insertBatch(@Param("list") List list); } 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 43d8122..25dd182 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 @@ -236,6 +236,7 @@ public class CcdiEmployeeServiceImpl implements ICcdiEmployeeService { */ @Override @Async("importExecutor") + @Transactional public CompletableFuture importEmployeeAsync(List excelList, Boolean isUpdateSupport) { String taskId = UUID.randomUUID().toString(); long startTime = System.currentTimeMillis(); @@ -531,12 +532,11 @@ public class CcdiEmployeeServiceImpl implements ICcdiEmployeeService { * 批量保存 */ private void saveBatch(List list, int batchSize) { + // 使用真正的批量插入,分批次执行以提高性能 for (int i = 0; i < list.size(); i += batchSize) { int end = Math.min(i + batchSize, list.size()); List subList = list.subList(i, end); - for (CcdiEmployee employee : subList) { - employeeMapper.insert(employee); - } + employeeMapper.insertBatch(subList); } } diff --git a/ruoyi-ccdi/src/main/resources/mapper/ccdi/CcdiEmployeeMapper.xml b/ruoyi-ccdi/src/main/resources/mapper/ccdi/CcdiEmployeeMapper.xml index c1cc766..ce31d9f 100644 --- a/ruoyi-ccdi/src/main/resources/mapper/ccdi/CcdiEmployeeMapper.xml +++ b/ruoyi-ccdi/src/main/resources/mapper/ccdi/CcdiEmployeeMapper.xml @@ -66,4 +66,17 @@ update_time = NOW() + + + INSERT INTO ccdi_employee + (employee_id, name, dept_id, id_card, phone, hire_date, status, + create_time, create_by, update_by, update_time) + VALUES + + (#{item.employeeId}, #{item.name}, #{item.deptId}, #{item.idCard}, + #{item.phone}, #{item.hireDate}, #{item.status}, NOW(), + #{item.createBy}, #{item.updateBy}, NOW()) + + +