Browse Source

fix:导出接口base,处理定额人材机的tenderQuantity

vian 5 years ago
parent
commit
87af032bf4
1 changed files with 6 additions and 4 deletions
  1. 6 4
      web/building_saas/standard_interface/export/base.js

+ 6 - 4
web/building_saas/standard_interface/export/base.js

@@ -780,16 +780,17 @@ const INTERFACE_EXPORT_BASE = (() => {
         const projectGLJList = tenderDetail.projectGLJ.datas.gljList;
         const projectGLJList = tenderDetail.projectGLJ.datas.gljList;
         // 计算人材机总消耗量,否则projectGLJ.datas.gljList里的数据不会有消耗量数据
         // 计算人材机总消耗量,否则projectGLJ.datas.gljList里的数据不会有消耗量数据
         gljUtil.calcProjectGLJQuantity(tenderDetail.projectGLJ.datas, tenderDetail.ration_glj.datas, tenderDetail.Ration.datas, tenderDetail.Bills.datas, tenderDetail.property.decimal.glj.quantity, _, scMathUtil);
         gljUtil.calcProjectGLJQuantity(tenderDetail.projectGLJ.datas, tenderDetail.ration_glj.datas, tenderDetail.Ration.datas, tenderDetail.Bills.datas, tenderDetail.property.decimal.glj.quantity, _, scMathUtil);
+        const connectKeyMap = {};
+        const projectGLJIDMap = {};
         projectGLJList.forEach(glj => {
         projectGLJList.forEach(glj => {
+            connectKeyMap[gljUtil.getIndex(glj, gljKeyArray)] = glj.id; // 为了方便后续导出处理,给组成物数据设置上对应项目人材机ID
+            projectGLJIDMap[glj.id] = glj;
             // 项目人材机设置价格信息,否则projectGLJ.datas.gljList里的数据不会有相关价格信息
             // 项目人材机设置价格信息,否则projectGLJ.datas.gljList里的数据不会有相关价格信息
             // 价格信息存在新的priceInfo字段,以免对一些方法造成影响
             // 价格信息存在新的priceInfo字段,以免对一些方法造成影响
             glj.priceInfo = gljUtil.getGLJPrice(glj, tenderDetail.projectGLJ.datas, tenderDetail.property.calcOptions, tenderDetail.labourCoe.datas, decimalInfo, false, _, scMathUtil, {}, tenderDetail.projectGLJ.getTenderPriceCoe(glj, tenderDetail.property));
             glj.priceInfo = gljUtil.getGLJPrice(glj, tenderDetail.projectGLJ.datas, tenderDetail.property.calcOptions, tenderDetail.labourCoe.datas, decimalInfo, false, _, scMathUtil, {}, tenderDetail.projectGLJ.getTenderPriceCoe(glj, tenderDetail.property));
             // 计算合价:人材料总消耗量*预算价
             // 计算合价:人材料总消耗量*预算价
             glj.priceInfo.totalPrice = scMathUtil.roundForObj(glj.priceInfo.tenderPrice * glj.tenderQuantity, 2);
             glj.priceInfo.totalPrice = scMathUtil.roundForObj(glj.priceInfo.tenderPrice * glj.tenderQuantity, 2);
         });
         });
-        // 为了方便后续导出处理,给组成物数据设置上对应项目人材机ID
-        const connectKeyMap = {};
-        projectGLJList.forEach(pGLJ => connectKeyMap[gljUtil.getIndex(pGLJ, gljKeyArray)] = pGLJ.id);
         const ratiosArr = Object.values(tenderDetail.projectGLJ.datas.mixRatioMap);
         const ratiosArr = Object.values(tenderDetail.projectGLJ.datas.mixRatioMap);
         ratiosArr.forEach(ratios => {
         ratiosArr.forEach(ratios => {
             ratios.forEach(ratio => {
             ratios.forEach(ratio => {
@@ -803,7 +804,8 @@ const INTERFACE_EXPORT_BASE = (() => {
         // 处理定额人材机,将定额人材机挂到定额的rationGLJList字段中,同时将定额人材机进行排序、计算调价消耗量
         // 处理定额人材机,将定额人材机挂到定额的rationGLJList字段中,同时将定额人材机进行排序、计算调价消耗量
         tenderDetail.Ration.datas.forEach(ration => {
         tenderDetail.Ration.datas.forEach(ration => {
             ration.rationGLJList = tenderDetail.ration_glj.datas.filter(glj => {
             ration.rationGLJList = tenderDetail.ration_glj.datas.filter(glj => {
-                gljUtil.getTotalQuantity(glj, ration, decimalInfo.ration.quantity, decimalInfo.glj.quantity);
+                const pGLJ = projectGLJIDMap[glj.projectGLJID];
+                glj.tenderQuantity = gljUtil.getRationGLJTenderQuantity(glj, ration, decimalInfo.glj.quantity, scMathUtil, pGLJ);
                 return glj.rationID === ration.ID;
                 return glj.rationID === ration.ID;
             });
             });
             ration.rationGLJList = gljUtil.sortRationGLJ(ration.rationGLJList);
             ration.rationGLJList = gljUtil.sortRationGLJ(ration.rationGLJList);