Przeglądaj źródła

1. 09-1copy后的模板不能显示。 2. 09表增加容错性

TonyKang 6 lat temu
rodzic
commit
474fe6a95c

+ 6 - 4
modules/reports/rpt_component/jpc_flow_tab.js

@@ -163,10 +163,12 @@ JpcFlowTabSrv.prototype.createNew = function(){
     JpcFlowTabResult.sorting = function(rptTpl, dataObj, dataSeq) {
         let me = this;
         let FLOW_NODE_STR = me.isEx?JV.NODE_FLOW_INFO_EX:JV.NODE_FLOW_INFO;
-        JpcFieldHelper.findAndPutDataFieldIdx(rptTpl, rptTpl[FLOW_NODE_STR][JV.NODE_FLOW_SEG_SUM][JV.PROP_SUM_FIELDS], me.seg_sum_tab_fields, me.seg_sum_fields_idx, me.isEx);
-        JpcFieldHelper.findAndPutDataFieldIdx(rptTpl, rptTpl[FLOW_NODE_STR][JV.NODE_FLOW_PAGE_SUM][JV.PROP_SUM_FIELDS], me.page_sum_tab_fields, me.page_sum_fields_idx, me.isEx);
-        JpcFieldHelper.findAndPutDataFieldIdx(rptTpl, rptTpl[FLOW_NODE_STR][JV.NODE_FLOW_GROUP][JV.PROP_GROUP_FIELDS], me.group_fields, null, me.isEx);
-        JpcFieldHelper.findAndPutDataFieldIdx(rptTpl, rptTpl[FLOW_NODE_STR][JV.NODE_FLOW_GROUP][JV.PROP_SUM_FIELDS], me.group_sum_fields, null, me.isEx);
+        if (rptTpl[FLOW_NODE_STR][JV.NODE_FLOW_SEG_SUM]) JpcFieldHelper.findAndPutDataFieldIdx(rptTpl, rptTpl[FLOW_NODE_STR][JV.NODE_FLOW_SEG_SUM][JV.PROP_SUM_FIELDS], me.seg_sum_tab_fields, me.seg_sum_fields_idx, me.isEx);
+        if (rptTpl[FLOW_NODE_STR][JV.NODE_FLOW_PAGE_SUM]) JpcFieldHelper.findAndPutDataFieldIdx(rptTpl, rptTpl[FLOW_NODE_STR][JV.NODE_FLOW_PAGE_SUM][JV.PROP_SUM_FIELDS], me.page_sum_tab_fields, me.page_sum_fields_idx, me.isEx);
+        if (rptTpl[FLOW_NODE_STR][JV.NODE_FLOW_GROUP]) {
+            JpcFieldHelper.findAndPutDataFieldIdx(rptTpl, rptTpl[FLOW_NODE_STR][JV.NODE_FLOW_GROUP][JV.PROP_GROUP_FIELDS], me.group_fields, null, me.isEx);
+            JpcFieldHelper.findAndPutDataFieldIdx(rptTpl, rptTpl[FLOW_NODE_STR][JV.NODE_FLOW_GROUP][JV.PROP_SUM_FIELDS], me.group_sum_fields, null, me.isEx);
+        }
         JpcFieldHelper.findAutoHeightFieldIdx(rptTpl, rptTpl[FLOW_NODE_STR][JV.NODE_FLOW_CONTENT][JV.PROP_FLOW_FIELDS], me.auto_height_fields_idx, me.isEx);
         for (let si = 0; si < dataSeq.length; si++) {
             me.segments.push(dataSeq[si].slice(0));

+ 1 - 0
modules/reports/util/rpt_construct_data_util.js

@@ -896,6 +896,7 @@ function sortData(sourceData, sortCfg, prjData) {
                 newTopArr = rst;
             }
             let destArr = [];
+            // fsUtil.writeObjToFile(newTopArr, "D:/GitHome/ConstructionCost/tmp/sortedAndFlattedRstBefore.jsp");
             treeUtil.getFlatArray(newTopArr, destArr);
             replaceActDataArr(sourceData, destArr);
             // fsUtil.writeObjToFile(sourceData.data, "D:/GitHome/ConstructionCost/tmp/sortedAndFlattedRst.jsp");

+ 9 - 2
public/web/treeDataHelper.js

@@ -49,7 +49,7 @@ let tree_Data_Helper = {
                 private_buildNodeData(iter[i], iter[i][SUB_ID], (treeLevel + 1), rtbID);
             }
         };
-
+        //1. 给每个节点设置key, 顺便找Top Node
         for (let i = 0; i < data.length; i++) {
             tmpNodes[prefix + data[i][NODE_ID]] = data[i];
             data[i][ADHOC_PRE_ID] = EMPTY_ID_VAL;
@@ -59,16 +59,23 @@ let tree_Data_Helper = {
                 topArr.push(data[i][NODE_ID]);
             }
         }
+        //2. 通过key,设置好兄弟/父子关系
         for (let i = 0; i < data.length; i++) {
             if (parseInt(data[i][NEXT_ID]) !== EMPTY_ID_VAL) {
                 if (tmpNodes[prefix + data[i][NEXT_ID]] !== undefined){
-                    tmpNodes[prefix + data[i][NEXT_ID]][ADHOC_PRE_ID] = data[i][NODE_ID];
+                    if (tmpNodes[prefix + data[i][NEXT_ID]][P_ID] === data[i][P_ID]) {
+                        tmpNodes[prefix + data[i][NEXT_ID]][ADHOC_PRE_ID] = data[i][NODE_ID];
+                    } else {
+                        tmpNodes[prefix + data[i][NEXT_ID]][ADHOC_PRE_ID] = EMPTY_ID_VAL;
+                        data[i][NEXT_ID] = EMPTY_ID_VAL;
+                    }
                 }
             }
             if (parseInt(data[i][P_ID]) !== EMPTY_ID_VAL) {
                 tmpNodes[prefix + data[i][P_ID]][SUB_ID].push(data[i][NODE_ID]);
             }
         }
+        //3. 开build
         private_buildNodeData(null, topArr, 0, -1);
         //try to release and return
         tmpNodes = null;

+ 4 - 4
test/unit/reports/test_rpt_test_template.js

@@ -43,7 +43,7 @@ let userId_Leng = "5acac1e885bf55000bd055ba"; //小冷User Id2
 // demoPrjId = 720; //QA: DW3
 //demoPrjId = 1626; //QA:
 // demoPrjId = 2260; //QA:
-demoPrjId = 3391; //QA:
+demoPrjId = 3604; //QA:
 //*/
 let userId_Dft = userId_Leng;
 // let userId_Dft = "5a025c4c15074d134c2b9689";
@@ -89,9 +89,9 @@ test('测试 - 测试模板啦: ', function (t) {
                     let pageRst = printCom.outputAsSimpleJSONPageArray(rptTpl, tplData, 1, maxPages, defProperties);
                     if (pageRst) {
                         // fsUtil.writeObjToFile(pageRst, "D:/GitHome/ConstructionCost/tmp/testBuiltPageResult_测试模板.jsp");
-                        rpt_xl_util.exportExcel(pageRst, pagesize, "local_test_rpt_excel", true, null, null, function(uuidName){
-                            console.log("excel uuid: " + uuidName);
-                        });
+                        // rpt_xl_util.exportExcel(pageRst, pagesize, "local_test_rpt_excel", true, null, null, function(uuidName){
+                        //     console.log("excel uuid: " + uuidName);
+                        // });
                         // rpt_pdf_util.export_pdf_file(pageRst, pagesize, 'local_test_rpt_pdf', function(uuidName){
                         //     console.log("pdf uuid: " + uuidName);
                         // });

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

@@ -25,7 +25,9 @@ cfgCacheUtil.setupDftCache();
 let fsUtil = require("../../../public/fsUtil");
 
 let demoPrjId = - 1;
-let demoRptId = 226, pagesize = "A4";
+// let demoRptId = 226;
+let demoRptId = 382; //copied
+let pagesize = "A4";
 
 // let userId_Leng = "59cdf14a0034a1000ba52b97"; //小冷User Id 换成_id了 QQ号
 let userId_Leng = "5acac1e885bf55000bd055ba"; //小冷User Id2