Quellcode durchsuchen

清单指引类别库算法更新,把没用过的必套定额也塞到选套中

lishihao vor 3 Jahren
Ursprung
Commit
0f497aa600
1 geänderte Dateien mit 32 neuen und 11 gelöschten Zeilen
  1. 32 11
      modules/std_billsGuidance_lib/facade/facades.js

+ 32 - 11
modules/std_billsGuidance_lib/facade/facades.js

@@ -746,9 +746,11 @@ function getItemClassData(nodes, prefix,
 // 获取选套定额:把所有分类数据的必套定额确定好了先。选套定额就是清单下所有定额除了必套的
 function getOptionalRationIDs(optionalRationData) {
     const optionalRationIDs = [];
-    Object.values(optionalRationData).forEach(optionalRation => {
-        if (optionalRation.length) optionalRationIDs.push(...optionalRation);
-    })
+    if(optionalRationData){
+        Object.values(optionalRationData).forEach(optionalRation => {
+            if (optionalRation.length) optionalRationIDs.push(...optionalRation);
+        })
+    }
     return [...new Set(optionalRationIDs)];
 }
 
@@ -806,19 +808,21 @@ function combineData(codeData, requireRationData, optionalRationData, classGroup
                 };
                 // 一组的必套定额,先去重
                 const unitRation = [];
-                if (requireRationData[classCodeID]) {
+              
+                // 这里是必填选项下绑定必套定额
+                if (requireRationData[classCodeID] && requireRationData[classCodeID].length) {
                     requireRationData[classCodeID].forEach(subItem => {
                         unitRation.push(...new Set(subItem));
                     })
-                }
-
-                // 这里是必填选项下绑定必套定额
-                if (requireRationData[classCodeID] && requireRationData[classCodeID].length) {
                     requiredRationIDs.push(unitRation);
+                    // 这里也要把用过的必套定额先存起来
+                    matchRationList.push(...unitRation);
                 }
                 //这里是必填选项下绑定在蓝色节点下的必套定额
                 if (requireCombineData[classCodeID] && requireCombineData[classCodeID].size) {
                     requiredRationIDs.push([...requireCombineData[classCodeID]]);
+                    // 这里也要把用过的必套定额先存起来
+                    matchRationList.push(...requireCombineData[classCodeID]);
                 }
 
                 // 这里是必填选项下绑定选套定额
@@ -837,13 +841,20 @@ function combineData(codeData, requireRationData, optionalRationData, classGroup
         } else {
             const unitRation = [];
             name = classGroups[classCodeIDs];
-            if (requireRationData[classCodeIDs] && requireRationData[classCodeIDs].length) {
+            if (requireRationData[classCodeIDs] && requireRationData[classCodeIDs].length){
                 requireRationData[classCodeIDs].forEach(subItem => {
                     unitRation.push(...new Set(subItem));
                 })
-                requiredRationIDs.push(unitRation);
+                requiredRationIDs.push(unitRation); 
+                // 这里也要把用过的必套定额先存起来
+                matchRationList.push(...unitRation);
             }
-            if (requireCombineData[classCodeIDs] && requireCombineData[classCodeIDs].size) requiredRationIDs.push([...requireCombineData[classCodeIDs]]);
+          
+            if (requireCombineData[classCodeIDs] && requireCombineData[classCodeIDs].size) {
+                requiredRationIDs.push([...requireCombineData[classCodeIDs]])
+                 // 这里也要把用过的必套定额先存起来
+                 matchRationList.push(...requireCombineData[classCodeIDs]);
+            };
 
             if (optionalRationData[classCodeIDs] && optionalRationData[classCodeIDs].length) {
                 optionalRationIDs.push(...optionalRationData[classCodeIDs]);
@@ -864,6 +875,16 @@ function combineData(codeData, requireRationData, optionalRationData, classGroup
             }
         })
     })
+    // 这里把没有使用过的必套定额也丢到了选套里面
+    Object.values(requireRationData).forEach(data => {
+        data.forEach((rationData) => {
+            rationData.forEach(rationID=>{
+                if (!matchRationList.includes(rationID)) {
+                    unMatchRation.push(rationID);
+                }
+            })
+        })
+    })
     return { itemClassData: finData, unMatchRation };
 }