소스 검색

汇总表逻辑code sync

TonyKang 7 년 전
부모
커밋
b19b0134ec
1개의 변경된 파일52개의 추가작업 그리고 14개의 파일을 삭제
  1. 52 14
      modules/reports/util/rpt_construct_data_util.js

+ 52 - 14
modules/reports/util/rpt_construct_data_util.js

@@ -13,6 +13,7 @@ let treeUtil = require('../../../public/treeUtil');
 let projectConst = consts.projectConst;
 let projectConstList = consts.projectConstList;
 const gljUtil = require('../../../public/gljUtil');
+// const pm_facade = require('../../pm/facade/pm_facade');
 
 
 const GLJ_TYPE = {
@@ -124,7 +125,7 @@ class Rpt_Data_Extractor {
     };
 
     //-- 根据报表模板映射指标(非离散指标)的定义,罗列出所有需要用到的data对象key,作为数据请求的过滤依据
-    getDataRequestFilter() {
+    getDataRequestFilter(summaryRst) {
         let rst = [];
         let tpl = this.rptTpl;
         let pri_func_chk_filter = function (field) {
@@ -157,6 +158,17 @@ class Rpt_Data_Extractor {
                     }
                 }
             }
+            if (summaryRst instanceof Array) {
+                for (let key of consts.summaryConstList) {
+                    if (summaryRst.indexOf(key) < 0) {
+                        if (field[JV.PROP_FIELD_EXP_MAP]) {
+                            if (field[JV.PROP_FIELD_EXP_MAP].indexOf('.' + key + '.') >= 0) {
+                                summaryRst.push(key);
+                            }
+                        }
+                    }
+                }
+            }
         };
         let pri_setup_filter = function (FIELD_LIST_KEY) {
             if (tpl[JV.NODE_FIELD_MAP][FIELD_LIST_KEY]) {
@@ -212,19 +224,38 @@ class Rpt_Data_Extractor {
         let tpl = this.rptTpl;
         this.COMMON.initialize(tpl, rawDataObj);
         $PROJECT.COMMON = this.COMMON;
-        $PROJECT.MAIN["myOwnRawDataObj"] = rawDataObj.prj._doc;
-        $PROJECT.MAIN.getProperty = ext_mainGetPropety;
-        $PROJECT.MAIN.getFee = ext_mainGetFee;
-        for (let item of rawDataObj.prjData) {
-            setupFunc($PROJECT.DETAIL, item.moduleName, item);
-        }
-        let projectGLJDatas = getModuleDataByKey(rawDataObj.prjData, "projectGLJ");
-        let rationGLJDatas = getModuleDataByKey(rawDataObj.prjData, "ration_glj");
-        let rationDatas = getModuleDataByKey(rawDataObj.prjData, "ration");
-        let billsDatas = getModuleDataByKey(rawDataObj.prjData, "bills");
-        let decimal = rawDataObj.prj.property.decimal.glj.quantity;
-        if (projectGLJDatas && rationGLJDatas && rationDatas && billsDatas) {
-            gljUtil.calcProjectGLJQuantity(projectGLJDatas.data, rationGLJDatas.data, rationDatas.data, billsDatas.data, decimal);
+        if (rawDataObj.hasOwnProperty(`prj`)) {
+            setupMainFunc($PROJECT, `MAIN`, rawDataObj.prj._doc);
+            // $PROJECT.MAIN["myOwnRawDataObj"] = rawDataObj.prj._doc;
+            // $PROJECT.MAIN.getProperty = ext_mainGetPropety;
+            // $PROJECT.MAIN.getFee = ext_mainGetFee;
+            for (let item of rawDataObj.prjData) {
+                setupFunc($PROJECT.DETAIL, item.moduleName, item);
+            }
+            let projectGLJDatas = getModuleDataByKey(rawDataObj.prjData, "projectGLJ");
+            let rationGLJDatas = getModuleDataByKey(rawDataObj.prjData, "ration_glj");
+            let rationDatas = getModuleDataByKey(rawDataObj.prjData, "ration");
+            let billsDatas = getModuleDataByKey(rawDataObj.prjData, "bills");
+            let decimal = rawDataObj.prj.property.decimal.glj.quantity;
+            if (projectGLJDatas && rationGLJDatas && rationDatas && billsDatas) {
+                gljUtil.calcProjectGLJQuantity(projectGLJDatas.data, rationGLJDatas.data, rationDatas.data, billsDatas.data, decimal);
+            }
+        }
+        //还有汇总的...
+        if (rawDataObj.hasOwnProperty(`Construct`) || rawDataObj.hasOwnProperty(`ConstructDetail`) || rawDataObj.hasOwnProperty(`Segment`) || rawDataObj.hasOwnProperty(`SegmentDetail`)) {
+            $PROJECT.SUMMARY = {};
+            if (rawDataObj.Construct) {
+                setupMainFunc($PROJECT.SUMMARY, `Construct`, rawDataObj.Construct);
+            }
+            if (rawDataObj.ConstructDetail) {
+                setupFunc($PROJECT.SUMMARY, `ConstructDetail`, {"data": rawDataObj.ConstructDetail});
+            }
+            if (rawDataObj.Segment) {
+                setupMainFunc($PROJECT.SUMMARY, `Segment`, rawDataObj.Construct);
+            }
+            if (rawDataObj.SegmentDetail) {
+                setupFunc($PROJECT.SUMMARY, `SegmentDetail`, {"data": rawDataObj.SegmentDetail});
+            }
         }
 
         if (tpl[JV.NODE_MAP_DATA_HANDLE_INFO]) {
@@ -959,6 +990,13 @@ function sortData(sourceData, sortCfg, prjData) {
     return rst;
 }
 
+function setupMainFunc(obj, prop, ownRawObj) {
+    obj[prop] = {};
+    obj[prop]["myOwnRawDataObj"] = ownRawObj;
+    obj[prop].getProperty = ext_mainGetPropety;
+    obj[prop].getFee = ext_mainGetFee;
+}
+
 function setupFunc(obj, prop, ownRawObj) {
     obj[prop] = {};
     obj[prop]["myOwnRawDataObj"] = ownRawObj;