Browse Source

add new value retrieve function and test case

TonyKang 7 years ago
parent
commit
56001323c2
2 changed files with 151 additions and 25 deletions
  1. 36 25
      modules/reports/util/rpt_construct_data_util.js
  2. 115 0
      test/unit/reports/test_cover_02.js

+ 36 - 25
modules/reports/util/rpt_construct_data_util.js

@@ -735,33 +735,39 @@ function ext_getFee(feeKey, dtlFeeKey) {
     let dtObj = parentObj["myOwnRawDataObj"];
     if (feeKey && dtObj) {
         for (let dItem of dtObj.data) {
-            let hasValue = false;
-            if (dItem.hasOwnProperty("fees")) {
-                for (let fee of dItem["fees"]) {
-                    if (fee["fieldName"] === feeKey) {
-                        if (dtlFeeKey) {
-                            rst.push(fee[dtlFeeKey]);
-                        } else {
-                            rst.push(fee["unitFee"]);
-                        }
-                        hasValue = true;
-                        break;
-                    }
+            rst.push(pri_getFee(dItem, feeKey, dtlFeeKey));
+        }
+    }
+    for (let i = 0; i < rst.length; i++) {
+        rst[i] = parseFloat(rst[i]);
+    }
+    return rst;
+}
+
+function pri_getFee(dItem, feeKey, dtlFeeKey) {
+    let rst = 0;
+    let hasValue = false;
+    if (dItem.hasOwnProperty("fees")) {
+        for (let fee of dItem["fees"]) {
+            if (fee["fieldName"] === feeKey) {
+                if (dtlFeeKey) {
+                    rst = fee[dtlFeeKey];
+                } else {
+                    rst = fee["unitFee"];
                 }
-            } else if (dItem.hasOwnProperty(feeKey)) {
-                hasValue = true;
-                rst.push(dItem[feeKey]);
-            } else {
                 hasValue = true;
-                rst.push(0);
-            }
-            if (!hasValue) {
-                rst.push(0);
+                break;
             }
         }
+    } else if (dItem.hasOwnProperty(feeKey)) {
+        hasValue = true;
+        rst = dItem[feeKey];
+    } else {
+        hasValue = true;
+        rst = 0;
     }
-    for (let i = 0; i < rst.length; i++) {
-        rst[i] = parseFloat(rst[i]);
+    if (!hasValue) {
+        rst = 0;
     }
     return rst;
 }
@@ -868,7 +874,7 @@ function ext_getPropertyByFlag(flagVal, rstKey, dftValIfEmpty) {
     if (flagVal && rstKey && dtObj) {
         let isArr = (flagVal instanceof Array);
         for (let dItem of dtObj.data) {
-            let doc = (dItem._doc === null || dItem._doc === undefined)?dItem:dItem._doc;
+            let doc = (dItem._doc)?dItem._doc:dItem;
             if (doc.hasOwnProperty("flags")) {
                 let bFlag = false;
                 for (let flagItem of doc.flags) {
@@ -882,13 +888,18 @@ function ext_getPropertyByFlag(flagVal, rstKey, dftValIfEmpty) {
                     if (bFlag) break;
                 }
                 if (bFlag) {
-                    rst.push(doc[rstKey]);
+                    let keys = rstKey.split(".");
+                    if (keys[0] === "fees") {
+                        rst.push(pri_getFee(doc, "common", keys[1]));
+                    } else {
+                        //其他,比如名称什么
+                    }
                     break;
                 }
             }
         }
     }
-    if (rst.length === 0 && dftValIfEmpty) {
+    if (rst.length === 0 && dftValIfEmpty !== null) {
         rst.push(dftValIfEmpty);
     }
     return rst;

+ 115 - 0
test/unit/reports/test_cover_02.js

@@ -0,0 +1,115 @@
+/**
+ * Created by Tony on 2017/12/18.
+ */
+
+let test = require('tape');
+import JpcEx from "../../../modules/reports/rpt_component/jpc_ex";
+import JV from "../../../modules/reports/rpt_component/jpc_value_define";
+let mongoose = require("mongoose");
+let fileUtils = require("../../../modules/common/fileUtils");
+let path = require('path');
+let dbm = require("../../../config/db/db_manager");
+let rpt_cfg = require('./rpt_cfg');
+dbm.connect();
+let consts = require('../../../modules/main/models/project_consts');
+let projectConsts = consts.projectConst;
+fileUtils.getGlobbedFiles('../../../modules/complementary_glj_lib/models/*.js').forEach(function(modelPath) {
+    require(path.resolve(modelPath));
+});
+
+fileUtils.getGlobbedFiles('../../../modules/ration_glj/models/*.js').forEach(function(modelPath) {
+    require(path.resolve(modelPath));
+});
+
+//引入报表模块
+fileUtils.getGlobbedFiles('../../../modules/reports/models/*.js').forEach(function(modelPath) {
+    require(path.resolve(modelPath));
+})
+
+//暂时引入其它模块的model
+require('../../../modules/fee_rates/models/fee_rates');
+// 引入人工系数模块
+require('../../../modules/main/models/labour_coe_model');
+require('../../../modules/main/models/calc_program_model');
+
+let fsUtil = require("../../../public/fsUtil");
+
+let prjMdl = require('../../../modules/pm/models/project_model');
+let projectDataMdl = require('../../../modules/main/models/project');
+let demoPrjId = - 1;
+let demoRptId = 229, pagesize = "A4";
+
+let userId_Leng = 1142; //小冷User Id
+demoPrjId = 1296; //QA:
+//*/
+ let userId_Dft = userId_Leng;
+ /*/
+let userId_Dft = 76075;
+//*/
+
+let rptTplFacade = require("../../../modules/reports/facade/rpt_template_facade");
+let rptTplDataFacade = require("../../../modules/reports/facade/rpt_tpl_data_facade");
+
+import rptDataExtractor from "../../../modules/reports/util/rpt_construct_data_util";
+
+let fs = require('fs');
+//设置Date Format函数
+fs.readFile(__dirname.slice(0, __dirname.length - 18) + '/public/web/date_util.js', 'utf8', 'r', function (err, data) {
+    eval(data);
+});
+
+//*
+test('测试 - 打开模板: 封-1 ', function (t) {
+    rptTplFacade.getRptTemplate(demoRptId).then(function(rptTpl) {
+        let rptDataUtil = new rptDataExtractor();
+        rptDataUtil.initialize(rptTpl._doc);
+        let filter = rptDataUtil.getDataRequestFilter();
+        // console.log(filter);
+        //正常应该根据报表模板定义的数据类型来请求数据
+        rptTplDataFacade.prepareProjectData(userId_Dft, demoPrjId, filter, function (err, msg, rawDataObj) {
+            if (!err) {
+                try {
+                    // fsUtil.writeObjToFile(rawDataObj, "D:/GitHome/ConstructionCost/tmp/rptTplRawDataObject.js");
+                    let tplData = rptDataUtil.assembleData(rawDataObj);
+                    //build the report
+                    let printCom = JpcEx.createNew();
+                    rptTpl[JV.NODE_MAIN_INFO][JV.NODE_PAGE_INFO][JV.PROP_PAGE_SIZE] = pagesize;
+                    let defProperties = rpt_cfg;
+                    let dftOption = JV.PAGING_OPTION_NORMAL;
+                    printCom.initialize(rptTpl);
+                    printCom.analyzeData(rptTpl, tplData, defProperties, dftOption);
+                    let maxPages = printCom.totalPages;
+                    let pageRst = printCom.outputAsSimpleJSONPageArray(rptTpl, tplData, 1, maxPages, defProperties);
+                    if (pageRst) {
+                        fsUtil.writeObjToFile(pageRst, "D:/GitHome/ConstructionCost/tmp/testBuiltPageResult.js");
+                    } else {
+                        console.log("oh! no pages were created!");
+                    }
+                } catch (ex) {
+                    console.log(ex);
+                    t.pass('pass with exception!');
+                    t.end();
+                }
+
+                t.pass('pass succeeded!');
+                t.end();
+            } else {
+                console.log(msg);
+                t.pass('pass with error!');
+                t.end();
+            }
+        })
+    });
+});
+//*/
+
+test('close the connection', function (t) {
+    setTimeout(function () {
+        mongoose.disconnect();
+        t.pass('closing db connection');
+        t.end();
+    }, 3000);
+    // mongoose.disconnect();
+    // t.pass('closing db connection');
+    // t.end();
+});