|
@@ -143,6 +143,36 @@ class Rpt_Data_Extractor {
|
|
|
pri_setup_filter(JV.NODE_DETAIL_FIELDS);
|
|
|
pri_setup_filter(JV.NODE_MASTER_FIELDS_EX);
|
|
|
pri_setup_filter(JV.NODE_DETAIL_FIELDS_EX);
|
|
|
+ if (tpl[JV.NODE_MAP_DATA_HANDLE_INFO] && tpl[JV.NODE_MAP_DATA_HANDLE_INFO].length > 0) {
|
|
|
+ for (let preHandle of tpl[JV.NODE_MAP_DATA_HANDLE_INFO]) {
|
|
|
+ if (rst.indexOf(preHandle[JV.PROP_DATA_KEY]) < 0) {
|
|
|
+ rst.push(preHandle[JV.PROP_DATA_KEY]);
|
|
|
+ }
|
|
|
+ if (preHandle[JV.PROP_HANDLE_TYPE] === JV.PROP_HANDLE_TYPE_FILTER) {
|
|
|
+ if (preHandle[JV.PROP_FILTER_KEYS]) {
|
|
|
+ for (let filter of preHandle[JV.PROP_FILTER_KEYS]) {
|
|
|
+ if (filter[JV.PROP_FILTER_COMPARE_OBJ] && rst.indexOf(filter[JV.PROP_FILTER_COMPARE_OBJ]) < 0) {
|
|
|
+ rst.push(filter[JV.PROP_FILTER_COMPARE_OBJ]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if (preHandle[JV.PROP_HANDLE_TYPE] === JV.PROP_HANDLE_TYPE_SUM) {
|
|
|
+ if (preHandle[JV.PROP_SUM_GROUP_KEYS]) {
|
|
|
+ for (let grpKey of preHandle[JV.PROP_SUM_GROUP_KEYS]) {
|
|
|
+ if (grpKey.seeking_parent && rst.indexOf(grpKey.seeking_parent) < 0) {
|
|
|
+ rst.push(grpKey.seeking_parent);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if (preHandle[JV.PROP_PARENT_CHILD_SORT_KEY] && preHandle[JV.PROP_PARENT_CHILD_SORT_KEY].length > 0) {
|
|
|
+ for (let item of preHandle[JV.PROP_PARENT_CHILD_SORT_KEY]) {
|
|
|
+ if (rst.indexOf(item[JV.PROP_PARENT_DATA_KEY]) < 0) {
|
|
|
+ rst.push(item[JV.PROP_PARENT_DATA_KEY]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
if (rst.length === 0) {
|
|
|
rst.push(projectConst.RATION_ASS);
|
|
|
}
|
|
@@ -279,41 +309,69 @@ function filterData(sourceData, handleCfg, prjData) {
|
|
|
tempRstArr.push(item);
|
|
|
}
|
|
|
}
|
|
|
- let private_chkVal = function (src, dest, compStr) {
|
|
|
+ let private_chkVal = function (src, compVal, compStr) {
|
|
|
let rst = true;
|
|
|
switch (compStr) {
|
|
|
case "==" :
|
|
|
- rst = (src == dest);
|
|
|
+ rst = (src == compVal);
|
|
|
break;
|
|
|
case "===" :
|
|
|
- rst = (src === dest);
|
|
|
+ rst = (src === compVal);
|
|
|
break;
|
|
|
case ">" :
|
|
|
- rst = (src > dest);
|
|
|
+ rst = (src > compVal);
|
|
|
break;
|
|
|
case ">=" :
|
|
|
- rst = (src >= dest);
|
|
|
+ rst = (src >= compVal);
|
|
|
break;
|
|
|
case "<" :
|
|
|
- rst = (src < dest);
|
|
|
+ rst = (src < compVal);
|
|
|
break;
|
|
|
case "<=" :
|
|
|
- rst = (src <= dest);
|
|
|
+ rst = (src <= compVal);
|
|
|
break;
|
|
|
case "!=" :
|
|
|
- rst = (src != dest);
|
|
|
+ rst = (src != compVal);
|
|
|
break;
|
|
|
case "!==" :
|
|
|
- rst = (src !== dest);
|
|
|
+ rst = (src !== compVal);
|
|
|
+ break;
|
|
|
+ case "in" :
|
|
|
+ if (compVal instanceof Array) {
|
|
|
+ rst = compVal.indexOf(src) >= 0;
|
|
|
+ } else {
|
|
|
+ //string,需要转类型
|
|
|
+ let newCv = JSON.parse(compVal);
|
|
|
+ if (newCv instanceof Array) {
|
|
|
+ rst = newCv.indexOf(src) >= 0;
|
|
|
+ } else {
|
|
|
+ rst = false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case "not in":
|
|
|
+ if (compVal instanceof Array) {
|
|
|
+ rst = compVal.indexOf(src) < 0;
|
|
|
+ } else {
|
|
|
+ //string,需要转类型
|
|
|
+ let newCv = JSON.parse(compVal);
|
|
|
+ if (newCv instanceof Array) {
|
|
|
+ rst = newCv.indexOf(src) < 0;
|
|
|
+ } else {
|
|
|
+ rst = true;
|
|
|
+ }
|
|
|
+ }
|
|
|
break;
|
|
|
default:
|
|
|
rst = true;
|
|
|
}
|
|
|
return rst;
|
|
|
};
|
|
|
+ let compareObj = {};
|
|
|
for (let item of tempRstArr) {
|
|
|
let compRst = true;
|
|
|
let curComparePrjData = null;
|
|
|
+ let startIdx = 0;
|
|
|
for (let cfg of handleCfg[JV.PROP_FILTER_KEYS]) {
|
|
|
if (cfg[JV.PROP_FILTER_COMPARE_VAL]) {
|
|
|
//比较key值
|
|
@@ -323,11 +381,28 @@ function filterData(sourceData, handleCfg, prjData) {
|
|
|
if (!curComparePrjData) {
|
|
|
curComparePrjData = getModuleDataByKey(prjData, cfg[JV.PROP_FILTER_COMPARE_OBJ]);
|
|
|
}
|
|
|
- for (let data of curComparePrjData.data) {
|
|
|
- compRst = private_chkVal(item[cfg.key], data[cfg[JV.PROP_FILTER_COMPARE_OBJ_KEY]], cfg[JV.PROP_FILTER_CONDITION]);
|
|
|
- if (compRst) break;
|
|
|
+ if (cfg[JV.PROP_FILTER_CONDITION] === "in" || cfg[JV.PROP_FILTER_CONDITION] === "not in") {
|
|
|
+ let compareArr = null;
|
|
|
+ if (!compareObj.hasOwnProperty(cfg[JV.PROP_FILTER_COMPARE_OBJ_KEY] + startIdx.toString())) {
|
|
|
+ compareObj[cfg[JV.PROP_FILTER_COMPARE_OBJ_KEY] + startIdx.toString()] = [];
|
|
|
+ compareArr = compareObj[cfg[JV.PROP_FILTER_COMPARE_OBJ_KEY] + startIdx.toString()];
|
|
|
+ for (let data of curComparePrjData.data) {
|
|
|
+ if (compareArr.indexOf(data[cfg[JV.PROP_FILTER_COMPARE_OBJ_KEY]]) < 0) {
|
|
|
+ compareArr.push(data[cfg[JV.PROP_FILTER_COMPARE_OBJ_KEY]]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ compareArr = compareObj[cfg[JV.PROP_FILTER_COMPARE_OBJ_KEY] + startIdx.toString()];
|
|
|
+ }
|
|
|
+ compRst = private_chkVal(item[cfg.key], compareArr, cfg[JV.PROP_FILTER_CONDITION]);
|
|
|
+ } else {
|
|
|
+ for (let data of curComparePrjData.data) {
|
|
|
+ compRst = private_chkVal(item[cfg.key], data[cfg[JV.PROP_FILTER_COMPARE_OBJ_KEY]], cfg[JV.PROP_FILTER_CONDITION]);
|
|
|
+ if (compRst) break;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
+ startIdx++;
|
|
|
}
|
|
|
if (compRst) {
|
|
|
rstArr.push(item);
|