浏览代码

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

zhangweicheng 4 年之前
父节点
当前提交
cd271bb683
共有 2 个文件被更改,包括 9 次插入2 次删除
  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

@@ -10,6 +10,7 @@ let gljUtil = {
       com_electrovalence = projectGLJDatas.com_electrovalence;
     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
@@ -29,7 +30,7 @@ let gljUtil = {
       pglj[qField] = 0;
       pglj[mField] = 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[qField] = result.quantity;
       pglj.tenderQuantity = result.tenderQuantity;
       quantityMap[pg_index] = pglj;
@@ -169,12 +170,15 @@ let gljUtil = {
     // 场外运输损耗率%+(装卸总次数-1)*每增加一次装卸损耗率%
     return (offSiteTransportLossRate + (totalLoadingTimes - 1) * handlingLossRate);
   },
-  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 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;
@@ -192,6 +196,7 @@ let gljUtil = {
       tender_qantity_sum = scMathUtil.roundForObj(tender_qantity_sum + tender_total, q_decimal);
     }
     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

@@ -317,6 +317,8 @@ 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);
             } 
          }