本来需求是:对所有勾选的项目,要找到这个项目所有的关联的项目,然后都要做统一的操作。
之前我一直是遍历这些项目,一个一个找关联项目。这样就需要访问很多此数据库,性能特别低。
后面改进成:汇总所有的勾选项目,在数据库中一次性寻找,并汇总到一个Array中
function findRelatedProjectId(queryString) {
//queryString 形式'111','222','333','444',...,'nnn'
//这个function是为了找到传入的projectId相关联的拆分项目id的
//如果传入的是source_project_id, 那么返回的就是source_project_id + separate_project_id
//如果传入的是separate_project_id, 那么返回的也是source_project_id + separate_project_id
//如果没有相关联的id那就返回本身
var returnString = queryString + ",";
//把这个id当成拆分前的,找拆分后的
var checkSeperateList = DocumentUtils.excuteQueryForList("SELECT SEPARATE_PROJECT_ID FROM TABLE a WHERE SOURCE_PROJECT_ID in (" + queryString + ")");
if (checkSeperateList != null && checkSeperateList.size() > 0) {
//看看作为总的项目有没有拆分项目
for(var it=checkSeperateList.iterator(); it.hasNext();) {
var dataMap = it.next();
returnString = returnString + "'" + dataMap.get("SEPARATE_PROJECT_ID") + "',";
}
}
//看是不是拆分后的
var checkSourceList = DocumentUtils.excuteQueryForList("SELECT SOURCE_PROJECT_ID FROM TABLE a WHERE SEPARATE_PROJECT_ID in (" + queryString + ")");
if (checkSourceList != null && checkSourceList.size() > 0) {
var sourceProjectIds = "";
for(var it=checkSourceList.iterator(); it.hasNext();) {
var dataMap2 = it.next();
returnString = returnString + "'" + dataMap2.get("SOURCE_PROJECT_ID") + "',";
sourceProjectIds = sourceProjectIds + "'" + dataMap2.get("SOURCE_PROJECT_ID") + "',";
}
//需要寻找兄弟项目
sourceProjectIds = sourceProjectIds.substr(0, sourceProjectIds.length - 1);
DocumentUtils.println("sourceProjectIds总项目id格式:" + sourceProjectIds);
var tempList = DocumentUtils.excuteQueryForList("SELECT SEPARATE_PROJECT_ID FROM TABLE a WHERE SOURCE_PROJECT_ID in (" + sourceProjectIds + ") and SEPARATE_PROJECT_ID not in (" + queryString + ")");
if (tempList != null && tempList.size() > 0) {
for(var it=tempList.iterator(); it.hasNext();) {
var dataMap3 = it.next();
returnString = returnString + "'" + dataMap3.get("SEPARATE_PROJECT_ID") + "',";
}
}
}
//sourceProjectIds = sourceProjectIds.substr(0, sourceProjectIds.length - 1);
DocumentUtils.println("最后打印一下这些收集的项目:" + returnString);
returnString = returnString.replace(/'/g,"");
DocumentUtils.println("返回的是replace的字符串:" + returnString);
returnString = returnString.substr(0, returnString.length - 1);
return returnString;
}