Переглянути джерело

人材机跨对象引用问题

TonyKang 7 роки тому
батько
коміт
70ec677ffc

+ 37 - 4
modules/reports/util/rpt_construct_data_util.js

@@ -457,6 +457,28 @@ function filterData(sourceData, handleCfg, prjData) {
         let compRst = true;
         let curComparePrjData = null;
         let startIdx = 0;
+        let private_ref_join = function(refKey, targetDataKey, targetPropertyKey) {
+            let rst = null, objDataArr = null;
+            curComparePrjData = getModuleDataByKey(prjData, targetDataKey);
+            try {
+                if (curComparePrjData !== null) {
+                    if (targetDataKey === "projectGLJ") {
+                        objDataArr = curComparePrjData.data.gljList;
+                    } else {
+                        objDataArr = curComparePrjData.data;
+                    }
+                    for (let dtl of objDataArr) {
+                        if (item[refKey] === dtl[targetPropertyKey]) {
+                            rst = dtl;
+                            break;
+                        }
+                    }
+                }
+            } finally {
+                curComparePrjData = null;
+            }
+            return rst;
+        };
         for (let cfg of filterCfg[JV.PROP_FILTER_KEYS]) {
             if (cfg[JV.PROP_FILTER_COMPARE_VAL]) {
                 //比较key值
@@ -464,10 +486,21 @@ function filterData(sourceData, handleCfg, prjData) {
                 if (keys.length > 1) {
                     let lastObj = item;
                     for (let i = 0; i < keys.length - 1; i++) {
-                        lastObj = item[keys[i]];
-                        if (!(lastObj)) {
-                            compRst = false;
-                            break;
+                        if (keys[i].indexOf("ref_join(") === 0) {
+                            let params = keys[i].slice(9, keys[i].length - 1).split(",");
+                            if (params.length === 3) {
+                                lastObj = private_ref_join(params[0], params[1], params[2]);
+                            }
+                            if (!(lastObj)) {
+                                compRst = false;
+                                break;
+                            }
+                        } else {
+                            lastObj = item[keys[i]];
+                            if (!(lastObj)) {
+                                compRst = false;
+                                break;
+                            }
                         }
                     }
                     if (lastObj) {

+ 1 - 1
public/web/rpt_value_define.js

@@ -189,7 +189,7 @@ const JV = {
     PROP_SEG_GRP_IDX: "segGrpRecStartIdx",
     PROP_PRE_ADD_GRP_REC_INFO: "preAddPageGrpInfo",
     PROP_INSERTED_GRP_REC: "insertedGrpRecAmt",
-    PROP_GRP_LINES: "me.group_lines_amt",
+    PROP_GRP_LINES: "group_lines_amt",
 
     RUN_TYPE_BEFORE_PAGING: "before_paging",
     RUN_TYPE_BEFORE_OUTPUT: "before_output",

+ 1 - 1
test/unit/reports/test_tpl_09_1.js

@@ -59,7 +59,7 @@ test('测试 - 测试模板啦: ', function (t) {
         rptTplDataFacade.prepareProjectData(userId_Dft, demoPrjId, filter, function (err, msg, rawDataObj) {
             if (!err) {
                 try {
-                    // fsUtil.writeObjToFile(rawDataObj, "D:/GitHome/ConstructionCost/tmp/rptTplRawDataObject_建筑09-1表.jsp");
+                    fsUtil.writeObjToFile(rawDataObj, "D:/GitHome/ConstructionCost/tmp/rptTplRawDataObject_建筑09-1表.jsp");
                     let tplData = rptDataUtil.assembleData(rawDataObj);
                     // fsUtil.writeObjToFile(tplData, "D:/GitHome/ConstructionCost/tmp/rptTplAssembledData_建筑09-1表.jsp");
                     //it's time to build the report!!!

+ 2 - 1
test/unit/reports/test_tpl_11.js

@@ -26,7 +26,8 @@ cfgCacheUtil.setupDftCache();
 let fsUtil = require("../../../public/fsUtil");
 
 let demoPrjId = - 1;
-let demoRptId = 247, pagesize = "A4";
+//let demoRptId = 247, pagesize = "A4";
+let demoRptId = 281, pagesize = "A4"; //281: 11-2
 
 // let userId_Leng = "59cdf14a0034a1000ba52b97"; //小冷User Id 换成_id了 QQ号
 let userId_Leng = "5acac1e885bf55000bd055ba"; //小冷User Id2