Quellcode durchsuchen

feat:批量导入sql执行上限为1000条数据分批执行

韩帛霖 vor 1 Jahr
Ursprung
Commit
3e4eea476e

+ 14 - 23
ruoyi-admin/src/main/java/com/ruoyi/web/controller/dragForm/CommonFileController.java

@@ -5,49 +5,33 @@ import com.alibaba.fastjson2.JSON;
 import com.alibaba.fastjson2.JSONObject;
 import com.alibaba.fastjson2.TypeReference;
 import com.ruoyi.common.annotation.Anonymous;
-import com.ruoyi.common.annotation.Log;
 import com.ruoyi.common.config.RuoYiConfig;
 import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.core.domain.AjaxResult;
-import com.ruoyi.common.core.domain.entity.SysUser;
-import com.ruoyi.common.enums.BusinessType;
-import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.file.FileUploadUtils;
 import com.ruoyi.common.utils.file.FileUtils;
-import com.ruoyi.common.utils.poi.ExcelUtil;
 import com.ruoyi.framework.config.ServerConfig;
 import com.ruoyi.system.entity.CommonEntity;
-import com.ruoyi.system.entity.TableInfo;
 import com.ruoyi.system.entity.TableSql;
 import com.ruoyi.system.service.ICommonService;
 import com.ruoyi.system.service.IDataSourceService;
 import com.ruoyi.system.service.ITableSqlService;
-import io.lettuce.core.ScriptOutputType;
 import io.swagger.annotations.ApiOperation;
-import io.swagger.models.auth.In;
-import org.apache.poi.ss.formula.functions.T;
-import org.apache.poi.ss.usermodel.Cell;
-import org.apache.poi.ss.usermodel.Sheet;
-import org.apache.poi.ss.usermodel.Workbook;
-import org.apache.poi.xssf.usermodel.XSSFWorkbook;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.MediaType;
-import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
 import javax.annotation.Resource;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileReader;
-import java.util.*;
-
-import org.apache.poi.ss.usermodel.*;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 import static com.ruoyi.common.core.domain.AjaxResult.success;
 
@@ -215,7 +199,6 @@ public class CommonFileController {
             if (listMap.size() <= 1) {
                 return AjaxResult.warn("请检查表格中的数据!");
             }
-
             // 得到当前导出入数据的格式k/v
             TableSql tableSql = iTableSqlService.selectTableSqlByTSqlKey(sqlKey);
             // 存储 字段描述:字段列名
@@ -252,13 +235,21 @@ public class CommonFileController {
                     // 新增       // 删除当前map中的k/v
                     item.put(listMap.get(0).get(mKey), item.remove(mKey));
                 });
+                // 如果value为空就清空
+                item.entrySet().removeIf(entry -> entry.getValue() == null);
             });
             listMap.remove(0);
             CommonEntity commonEntity = new CommonEntity();
             commonEntity.setBasicMap(JSONObject.parseObject("{ \"tableName\":\"" + tableName + "\"}", new TypeReference<Map<String, Object>>() {
             }));
-            commonEntity.setAddListMap(listMap);
-            return success(commonService.batchInsert(commonEntity));
+            int state = 0;  // 返回状态值
+            int batchSize = 1000; // 设置批量新增每次执行添加sql上线为1000条
+            for (int i = 0; i < listMap.size(); i += batchSize) {
+                int end = Math.min(listMap.size(), i + batchSize);
+                commonEntity.setAddListMap(listMap.subList(i, end));
+                state = commonService.batchInsert(commonEntity);
+            }
+            return success(state);
         } catch (Exception e) {
             return AjaxResult.error(e.getMessage());
         }