Преглед изворни кода

fix: 生成清单类别库,优化分类数据量太大的情况,生成数据卡死问题

vian пре 3 година
родитељ
комит
6dc3ee635d
1 измењених фајлова са 20 додато и 3 уклоњено
  1. 20 3
      modules/std_billsGuidance_lib/facade/facades.js

+ 20 - 3
modules/std_billsGuidance_lib/facade/facades.js

@@ -525,6 +525,19 @@ async function generateClassData(libID) {
         }
         const guidanceTree = idTree.createNew({id: 'ID', pid: 'ParentID', nid: 'NextSiblingID', rootId: -1, autoUpdate: true});
         guidanceTree.loadDatas(guidanceItems);
+        /* if (!guidanceTree.check(guidanceTree.roots)) {
+            console.log('==================================清单下精灵树结构问题=========================================');
+            console.log('==================================清单下精灵树结构问题=========================================');
+            console.log('==================================清单下精灵树结构问题=========================================');
+            console.log('==================================清单下精灵树结构问题=========================================');
+            console.log('==================================清单下精灵树结构问题=========================================');
+            console.log(billNode.data);
+            console.log('==================================清单下精灵树结构问题=========================================');
+            console.log('==================================清单下精灵树结构问题=========================================');
+            console.log('==================================清单下精灵树结构问题=========================================');
+            console.log('==================================清单下精灵树结构问题=========================================');
+            console.log('==================================清单下精灵树结构问题=========================================');
+        } */
         const itemCharacterData = getItemCharacterData(guidanceTree.roots);
         itemCharacterData.forEach(itemCharacter => {
             billClassData.push({
@@ -539,9 +552,13 @@ async function generateClassData(libID) {
     });
     // 清空旧的分类数据
     await billClassModel.deleteMany({ compilationID: lib.compilationId });
-    if (billClassData.length) {
-        await billClassModel.insertMany(billClassData);
-    }
+    // 之前遇到一次性插入40w条数据的情况,会卡死,循环插入速度快很多
+    while (billClassData.length > 10000){
+        const list = billClassData.splice(0,10000);
+        await billClassModel.insertMany(list);
+    } 
+    await billClassModel.insertMany(billClassData);
+
 }
 
 // 获取分类excel数据