Browse Source

fix: 工料机总消耗量计算忽略找不到父清单的定额

zhangweicheng 3 years ago
parent
commit
f076b6bdd2
2 changed files with 9 additions and 2 deletions
  1. 7 2
      public/web/gljUtil.js
  2. 2 0
      web/building_saas/main/js/views/project_glj_view.js

+ 7 - 2
public/web/gljUtil.js

@@ -9,6 +9,7 @@ let gljUtil = {
         let mixRatioMap = projectGLJDatas.mixRatioMap;
         let rations = rationDatas;
         let rationMap = _.indexBy(rations,'ID');
+        let billsMap = _.indexBy(billsDatas,'ID');
         let quantityMap={};
         let rationGljGroup = _.groupBy(rationGLJDatas,'projectGLJID');
         let IDarray =  this.getSubdivisionAndTechBillsLeavesID(billsDatas);//分别取分部分项和技术措施项目的所有叶子清单ID
@@ -23,7 +24,7 @@ let gljUtil = {
             pglj[tField] = 0;
             pglj[qField] = 0;
             let gljGroup = rationGljGroup[pglj.id]?rationGljGroup[pglj.id]:[];//定额工料机没有,有可能是定额类型的工料机
-            let result = this.getQuantityPerGLJ(gljGroup,rations,rationMap,pglj,billIDs,tech_billIDS,q_decimal,_,scMathUtil);
+            let result = this.getQuantityPerGLJ(gljGroup,rations,rationMap,pglj,billIDs,tech_billIDS,billsMap,q_decimal,_,scMathUtil);
             pglj[sField] = result.subdivisionQuantity;
             pglj[tField] = result.techQuantity;
             pglj[qField] = result.quantity;
@@ -56,7 +57,7 @@ let gljUtil = {
             }
         }
     },
-    getQuantityPerGLJ : function (ration_glj_list,rations,rationMap,pglj,billIDs,tech_billIDS,q_decimal,_,scMathUtil) {
+    getQuantityPerGLJ : function (ration_glj_list,rations,rationMap,pglj,billIDs,tech_billIDS,billsMap,q_decimal,_,scMathUtil) {
         let result={};
         let quantity_sum=0;//工料机汇总消耗量
         let sum = 0;//分部分项总消耗量
@@ -64,6 +65,9 @@ let gljUtil = {
         let tender_qantity_sum = 0;
         for(let rg of ration_glj_list){
             let tem_ration = rationMap[rg.rationID];
+            if(tem_ration){
+                if(!billsMap[tem_ration.billsItemID]) continue;//如果定额工料的父项没有找到,则忽略
+            }
             let r_quantity = tem_ration?scMathUtil.roundForObj(tem_ration.quantity,q_decimal):0;
             let glj_quantity = scMathUtil.roundForObj(rg.quantity, q_decimal);
             let tender_r_quantity = r_quantity;
@@ -88,6 +92,7 @@ let gljUtil = {
         }
         //2019-11-07 定额类型工料机已经屏蔽,如果打开,记得加上调价后的消耗量
         for(let ra of rations){//计算定额类型工料机的消耗量
+            if(!billsMap[ra.billsItemID]) continue;//如果定额工料的父项没有找到,则忽略
             if(ra.type == this.rationType.gljRation&&ra.projectGLJID===pglj.id){
                 let r_quantity = scMathUtil.roundForObj(ra.quantity,q_decimal);
                 r_quantity = r_quantity?r_quantity:0;

+ 2 - 0
web/building_saas/main/js/views/project_glj_view.js

@@ -517,6 +517,8 @@ let projectGljObject = {
       }
       for (let r of projectObj.project.Ration.datas) {
         if (rationIDMap[r.ID] || (r.type == rationType.gljRation && r.projectGLJID == projectGLJData.id)) {
+          let billNode =  projectObj.project.mainTree.findNode(r.billsItemID);////如果定额工料的父项没有找到,则忽略
+          if(!billNode) continue;
           rations.push(r);
         }
       }