From dc1ad2b146bd1f66b4f411d02cc920ccc80ec88e Mon Sep 17 00:00:00 2001
From: 13693261870 <252740454@qq.com>
Date: 星期六, 10 六月 2023 16:06:04 +0800
Subject: [PATCH] 解决矢量数据批量插入过多时报错

---
 src/main/java/com/lf/server/service/data/UploadService.java |   22 +++++++++++++++++++++-
 1 files changed, 21 insertions(+), 1 deletions(-)

diff --git a/src/main/java/com/lf/server/service/data/UploadService.java b/src/main/java/com/lf/server/service/data/UploadService.java
index 5660dad..12a4530 100644
--- a/src/main/java/com/lf/server/service/data/UploadService.java
+++ b/src/main/java/com/lf/server/service/data/UploadService.java
@@ -1,5 +1,6 @@
 package com.lf.server.service.data;
 
+import com.google.common.collect.Lists;
 import com.lf.server.entity.all.BaseEntity;
 import com.lf.server.entity.all.StaticData;
 import com.lf.server.entity.data.*;
@@ -236,7 +237,7 @@
         }
         setCreateInfo(list, mf);
 
-        int rows = basicMapper.insertBatch(list);
+        int rows = batchInserts(basicMapper, list);
         if (rows > 0) {
             mf.setEntity(mf.getTab());
             mf.setTab(tabName);
@@ -245,6 +246,25 @@
     }
 
     /**
+     * 鎵归噺鎻掑叆
+     */
+    private <T>  int batchInserts(BasicMapper basicMapper, List<T> list) {
+        int rows = 0;
+        int count = (int) Math.ceil(list.size() / StaticData.D100);
+
+        List<List<T>> subLists = Lists.partition(list, count);
+        for (List<T> sub : subLists) {
+            try {
+                rows += basicMapper.insertBatch(sub);
+            } catch (Exception ex) {
+                log.error(ex);
+            }
+        }
+
+        return rows;
+    }
+
+    /**
      * 璁剧疆鍒涘缓淇℃伅
      */
     private <T> void setCreateInfo(List<T> list, MetaFileEntity mf) {

--
Gitblit v1.9.3