/** * Created by Tony on 2017/7/14. * 报表数据提取class,是协助报表模板里指标字段自主提取数据的工具类 */ let JV = require('../rpt_component/jpc_value_define'); let $JE = require('../rpt_component/jpc_rte'); class Rpt_Common{ initialize(Projects) { this.Projects = Projects; }; getSerialNo(fieldId, $CURRENT_RPT, $CURRENT_DATA){ let itemSerialNoRec = $JE.F(fieldId, $CURRENT_RPT); if (itemSerialNoRec) { itemSerialNoRec[JV.PROP_AD_HOC_DATA] = []; for (var innerFmlIdx = 0; innerFmlIdx < $CURRENT_DATA[JV.DATA_DETAIL_DATA][0].length; innerFmlIdx++) { itemSerialNoRec[JV.PROP_AD_HOC_DATA][innerFmlIdx] = (innerFmlIdx + 1); } itemSerialNoRec = null; } }; }; class Rpt_Data_Extractor { constructor () { this.COMMON = new Rpt_Common(); }; initialize(Projects) { this.Projects = Projects; //Projects对象应该从前端传送过来,无需在后端重复查询及构建 /* 结构: { currentPrjId: int, topPrj: [ //单项工程 { subPrjName: String, subPrjId: int, detailPrj: [ //单位工程 { detailPrjName: String, subPrjId: int, } ... ] } ... ] } */ }; prepareData($CURRENT_RPT) { //在报表提取数据前的准备工作,主要有: //1. 确认指标数据的类型(离散/主/从) //2. 根据类型提取数据,排序 // 2.1. header类型 // 2.2. 章类型 // 2.3. detail类型 // 2.4. 排序 }; }