|
|
@ -2175,7 +2175,8 @@ public class CustomerFormServiceImpl implements CustomerFormService { |
|
|
System.out.println(stringStringHashMap); |
|
|
System.out.println(stringStringHashMap); |
|
|
|
|
|
|
|
|
if(conditionOperator.equals("包含")){ |
|
|
if(conditionOperator.equals("包含")){ |
|
|
if(conditionRight.equals("数据拥有者")){//owner creater
|
|
|
if(conditionRight.equals("数据拥有者")){ |
|
|
|
|
|
//owner creater
|
|
|
//%%%%%%%%%%%%%%%无筛选条件标准化查询代码-------------start
|
|
|
//%%%%%%%%%%%%%%%无筛选条件标准化查询代码-------------start
|
|
|
for(List<Map<String, String>> list :singleAsfChildTableFillRoleMapListsGroupedByRightTableName){ |
|
|
for(List<Map<String, String>> list :singleAsfChildTableFillRoleMapListsGroupedByRightTableName){ |
|
|
ArrayList<String> toSelectTableFeilds = new ArrayList<>(); |
|
|
ArrayList<String> toSelectTableFeilds = new ArrayList<>(); |
|
|
@ -2538,8 +2539,13 @@ public class CustomerFormServiceImpl implements CustomerFormService { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}else{//无法处理的情况,返回空数据列表
|
|
|
}else{//其它数字或文字条件 如:文学家包含李 以like模糊查询来筛选
|
|
|
logger.error("数据范围条件查询出现无法处理的情况---返回空数据列表---" + conditionOperator); |
|
|
|
|
|
|
|
|
/*if(){ |
|
|
|
|
|
|
|
|
|
|
|
}*/ |
|
|
|
|
|
|
|
|
|
|
|
logger.error("数据范围条件查询出现无法处理的情况---返回原数据列表---" + conditionOperator); |
|
|
} |
|
|
} |
|
|
}else if(conditionOperator.equals("不包含")){ |
|
|
}else if(conditionOperator.equals("不包含")){ |
|
|
|
|
|
|
|
|
@ -2935,8 +2941,782 @@ public class CustomerFormServiceImpl implements CustomerFormService { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}else{// == != > < 等符号的情况
|
|
|
}else{ |
|
|
|
|
|
// == != > < 等符号的情况
|
|
|
|
|
|
if(conditionRight.equals("数据拥有者")){ |
|
|
|
|
|
if(conditionOperator.equals("==")){ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//%%%%%%%%%%%%%%%无筛选条件标准化查询代码-------------start
|
|
|
|
|
|
for(List<Map<String, String>> list :singleAsfChildTableFillRoleMapListsGroupedByRightTableName){ |
|
|
|
|
|
ArrayList<String> toSelectTableFeilds = new ArrayList<>(); |
|
|
|
|
|
HashMap<String,String> toSelectTableFeildsMap = new HashMap<>(); |
|
|
|
|
|
for(Map<String,String> map :list){ |
|
|
|
|
|
System.out.println("map===>"+map); |
|
|
|
|
|
toSelectTableFeilds.add("`"+map.get("leftTableField")+"`"); |
|
|
|
|
|
toSelectTableFeilds.add("`creater`"); |
|
|
|
|
|
toSelectTableFeildsMap.put(map.get("leftTableField"),map.get("rightTableField")); |
|
|
|
|
|
} |
|
|
|
|
|
if(list.size()>0){ |
|
|
|
|
|
String leftTableName = "`"+list.get(0).get("leftTableName")+"`"; |
|
|
|
|
|
String rightTableName = list.get(0).get("rightTableName"); |
|
|
|
|
|
//根据currentVal获取currentMastersKey
|
|
|
|
|
|
String currentMastersKey = fieldRecordMapper.queryCurrentMastersKey(currentVal,asfFormName); |
|
|
|
|
|
System.out.println(list.get(0).get("leftTableName")); |
|
|
|
|
|
System.out.println(toSelectTableFeilds); |
|
|
|
|
|
/* |
|
|
|
|
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
//-----------添加筛选条件-----------start--------------------------------------------------------------------------------------
|
|
|
|
|
|
//判断条件中的表单是否有owner字段,若有则以owner判断,没有则以creater作为owner判断
|
|
|
|
|
|
boolean owner = fieldRecordMapper.checkFieldExists(list.get(0).get("leftTableName"), "owner"); |
|
|
|
|
|
String[] conditionLeftSplit = conditionLeft.split(":"); |
|
|
|
|
|
|
|
|
|
|
|
if(owner){//有owner字段
|
|
|
|
|
|
toSelectTableFeilds.add("`owner`"); |
|
|
|
|
|
ArrayList<HashMap<String,Object>> leftTableDetail = fieldRecordMapper.queryAsfLeftMapList(leftTableName,toSelectTableFeilds,currentMastersKey); |
|
|
|
|
|
ArrayList<HashMap<String, Object>> filteredDataTitleMapList = new ArrayList<>(); |
|
|
|
|
|
for(HashMap<String,Object> map:leftTableDetail){ |
|
|
|
|
|
if( conditionLeftSplit[0].equals("orgOrPerson")){//组织机构条件
|
|
|
|
|
|
String targetOrgOrPerson = conditionLeftSplit[1]; |
|
|
|
|
|
|
|
|
|
|
|
String ownerValue; |
|
|
|
|
|
if(StringUtils.isBlank(map.get("owner").toString())){//本条数据owner为空,按照creater判断
|
|
|
|
|
|
ownerValue = map.get("creater").toString(); |
|
|
|
|
|
}else{//owner有值
|
|
|
|
|
|
//本条数据的owner 值为hr系统某个用户的key
|
|
|
|
|
|
ownerValue = map.get("owner").toString(); |
|
|
|
|
|
} |
|
|
|
|
|
ownerValue = "owner:"+ownerValue; |
|
|
|
|
|
/*要判断本条数据的ownerValue是否在targetOrgOrPerson之内 |
|
|
|
|
|
* 1.获取ownerValue的maindeparment(主部门), |
|
|
|
|
|
* 2.从1获取到的主部门id向上查询到所有祖先部门数组, |
|
|
|
|
|
* 3.查看targetOrgOrPerson是否在2查询到的数组中 |
|
|
|
|
|
* 故此处应该调用 queryIfOrgOrPersonContainsCurrentUser方法 |
|
|
|
|
|
* */ |
|
|
|
|
|
Boolean ownerInOrg = queryIfOrgOrPersonContainsCurrentUser( key, token, targetOrgOrPerson, conditionOperator, ownerValue);//有效参数: targetOrgOrPerson
|
|
|
|
|
|
if(ownerInOrg){ |
|
|
|
|
|
filteredDataTitleMapList.add(map); |
|
|
|
|
|
} |
|
|
|
|
|
leftTableDetail = filteredDataTitleMapList; |
|
|
|
|
|
}else if(conditionLeftSplit[0].equals("roleid")){//角色权限条件
|
|
|
|
|
|
String roleId = conditionLeftSplit[2]; |
|
|
|
|
|
String owner1; |
|
|
|
|
|
if(StringUtils.isBlank(map.get("owner").toString())){ |
|
|
|
|
|
owner1 = map.get("creater").toString(); |
|
|
|
|
|
}else{ |
|
|
|
|
|
owner1 = map.get("owner").toString(); |
|
|
|
|
|
} |
|
|
|
|
|
ManCont manCont = userService.getManContByKey(owner1); |
|
|
|
|
|
String currentRoleStr = manCont.getRole(); |
|
|
|
|
|
if(!StringUtils.isBlank(currentRoleStr)){ |
|
|
|
|
|
String[] currentRoleArr = currentRoleStr.split(","); |
|
|
|
|
|
for(String roleItem : currentRoleArr){ |
|
|
|
|
|
if(roleItem.equals(roleId)){ |
|
|
|
|
|
filteredDataTitleMapList.add(map); |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
leftTableDetail = filteredDataTitleMapList; |
|
|
|
|
|
}else{//无效条件,不需要筛选
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
replaceKeys(leftTableDetail,toSelectTableFeildsMap); |
|
|
|
|
|
leftTableDetailMap.put(rightTableName,leftTableDetail); |
|
|
|
|
|
}else{//无owner字段,用creater判断
|
|
|
|
|
|
ArrayList<HashMap<String,Object>> leftTableDetail = fieldRecordMapper.queryAsfLeftMapList(leftTableName,toSelectTableFeilds,currentMastersKey); |
|
|
|
|
|
ArrayList<HashMap<String, Object>> filteredDataTitleMapList = new ArrayList<>(); |
|
|
|
|
|
for(HashMap<String,Object> map:leftTableDetail){ |
|
|
|
|
|
if( conditionLeftSplit[0].equals("orgOrPerson")){//组织机构条件
|
|
|
|
|
|
String targetOrgOrPerson = conditionLeftSplit[1]; |
|
|
|
|
|
|
|
|
|
|
|
String ownerValue; |
|
|
|
|
|
//按照creater判断
|
|
|
|
|
|
ownerValue = map.get("creater").toString(); |
|
|
|
|
|
|
|
|
|
|
|
ownerValue = "owner:"+ownerValue; |
|
|
|
|
|
/*要判断本条数据的ownerValue是否在targetOrgOrPerson之内 |
|
|
|
|
|
* 1.获取ownerValue的maindeparment(主部门), |
|
|
|
|
|
* 2.从1获取到的主部门id向上查询到所有祖先部门数组, |
|
|
|
|
|
* 3.查看targetOrgOrPerson是否在2查询到的数组中 |
|
|
|
|
|
* 故此处应该调用 queryIfOrgOrPersonContainsCurrentUser方法 |
|
|
|
|
|
* */ |
|
|
|
|
|
Boolean ownerInOrg = queryIfOrgOrPersonContainsCurrentUser( key, token, targetOrgOrPerson, conditionOperator, ownerValue);//有效参数: targetOrgOrPerson
|
|
|
|
|
|
if(ownerInOrg){ |
|
|
|
|
|
filteredDataTitleMapList.add(map); |
|
|
|
|
|
} |
|
|
|
|
|
leftTableDetail = filteredDataTitleMapList; |
|
|
|
|
|
}else if(conditionLeftSplit[0].equals("roleid")){//角色权限条件
|
|
|
|
|
|
String roleId = conditionLeftSplit[2]; |
|
|
|
|
|
String owner1; |
|
|
|
|
|
|
|
|
|
|
|
owner1 = map.get("creater").toString(); |
|
|
|
|
|
|
|
|
|
|
|
ManCont manCont = userService.getManContByKey(owner1); |
|
|
|
|
|
String currentRoleStr = manCont.getRole(); |
|
|
|
|
|
if(!StringUtils.isBlank(currentRoleStr)){ |
|
|
|
|
|
String[] currentRoleArr = currentRoleStr.split(","); |
|
|
|
|
|
for(String roleItem : currentRoleArr){ |
|
|
|
|
|
if(roleItem.equals(roleId)){ |
|
|
|
|
|
filteredDataTitleMapList.add(map); |
|
|
|
|
|
break; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
leftTableDetail = filteredDataTitleMapList; |
|
|
|
|
|
}else{//无效条件,不需要筛选
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
replaceKeys(leftTableDetail,toSelectTableFeildsMap); |
|
|
|
|
|
leftTableDetailMap.put(rightTableName,leftTableDetail); |
|
|
|
|
|
} |
|
|
|
|
|
//-----------添加筛选条件------------end-------------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
/*ArrayList<HashMap<String,Object>> leftTableDetail = fieldRecordMapper.queryAsfLeftMapList(leftTableName,toSelectTableFeilds,currentMastersKey); |
|
|
|
|
|
replaceKeys(leftTableDetail,toSelectTableFeildsMap); |
|
|
|
|
|
leftTableDetailMap.put(rightTableName,leftTableDetail);*/ |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 遍历
|
|
|
|
|
|
for (Map.Entry<String, ArrayList<HashMap<String, Object>>> entry : leftTableDetailMap.entrySet()) { |
|
|
|
|
|
//当前子表拼装结果
|
|
|
|
|
|
AsfTableFillResult afr = new AsfTableFillResult(); |
|
|
|
|
|
|
|
|
|
|
|
String keyx = entry.getKey(); |
|
|
|
|
|
ArrayList<HashMap<String, Object>> valueList = entry.getValue(); |
|
|
|
|
|
System.out.println("Key: " + keyx); |
|
|
|
|
|
afr.setTableName(keyx); |
|
|
|
|
|
afr.setTableDetail(valueList); |
|
|
|
|
|
resultList.add(afr); |
|
|
|
|
|
} |
|
|
|
|
|
//%%%%%%%%%%%%%%%无筛选条件标准化查询代码----------------end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}else if(conditionOperator.equals(("!="))){ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//%%%%%%%%%%%%%%%无筛选条件标准化查询代码-------------start
|
|
|
|
|
|
for(List<Map<String, String>> list :singleAsfChildTableFillRoleMapListsGroupedByRightTableName){ |
|
|
|
|
|
ArrayList<String> toSelectTableFeilds = new ArrayList<>(); |
|
|
|
|
|
HashMap<String,String> toSelectTableFeildsMap = new HashMap<>(); |
|
|
|
|
|
for(Map<String,String> map :list){ |
|
|
|
|
|
System.out.println("map===>"+map); |
|
|
|
|
|
toSelectTableFeilds.add("`"+map.get("leftTableField")+"`"); |
|
|
|
|
|
toSelectTableFeilds.add("`creater`"); |
|
|
|
|
|
toSelectTableFeildsMap.put(map.get("leftTableField"),map.get("rightTableField")); |
|
|
|
|
|
} |
|
|
|
|
|
if(list.size()>0){ |
|
|
|
|
|
String leftTableName = "`"+list.get(0).get("leftTableName")+"`"; |
|
|
|
|
|
String rightTableName = list.get(0).get("rightTableName"); |
|
|
|
|
|
//根据currentVal获取currentMastersKey
|
|
|
|
|
|
String currentMastersKey = fieldRecordMapper.queryCurrentMastersKey(currentVal,asfFormName); |
|
|
|
|
|
System.out.println(list.get(0).get("leftTableName")); |
|
|
|
|
|
System.out.println(toSelectTableFeilds); |
|
|
|
|
|
/* |
|
|
|
|
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
//-----------添加筛选条件-----------start--------------------------------------------------------------------------------------
|
|
|
|
|
|
//判断条件中的表单是否有owner字段,若有则以owner判断,没有则以creater作为owner判断
|
|
|
|
|
|
boolean owner = fieldRecordMapper.checkFieldExists(list.get(0).get("leftTableName"), "owner"); |
|
|
|
|
|
String[] conditionLeftSplit = conditionLeft.split(":"); |
|
|
|
|
|
|
|
|
|
|
|
if(owner){//有owner字段
|
|
|
|
|
|
toSelectTableFeilds.add("`owner`"); |
|
|
|
|
|
ArrayList<HashMap<String,Object>> leftTableDetail = fieldRecordMapper.queryAsfLeftMapList(leftTableName,toSelectTableFeilds,currentMastersKey); |
|
|
|
|
|
ArrayList<HashMap<String, Object>> filteredDataTitleMapList = new ArrayList<>(); |
|
|
|
|
|
for(HashMap<String,Object> map:leftTableDetail){ |
|
|
|
|
|
if( conditionLeftSplit[0].equals("orgOrPerson")){//组织机构条件
|
|
|
|
|
|
String targetOrgOrPerson = conditionLeftSplit[1]; |
|
|
|
|
|
|
|
|
|
|
|
String ownerValue; |
|
|
|
|
|
if(StringUtils.isBlank(map.get("owner").toString())){//本条数据owner为空,按照creater判断
|
|
|
|
|
|
ownerValue = map.get("creater").toString(); |
|
|
|
|
|
}else{//owner有值
|
|
|
|
|
|
//本条数据的owner 值为hr系统某个用户的key
|
|
|
|
|
|
ownerValue = map.get("owner").toString(); |
|
|
|
|
|
} |
|
|
|
|
|
ownerValue = "owner:"+ownerValue; |
|
|
|
|
|
/*要判断本条数据的ownerValue是否在targetOrgOrPerson之内 |
|
|
|
|
|
* 1.获取ownerValue的maindeparment(主部门), |
|
|
|
|
|
* 2.从1获取到的主部门id向上查询到所有祖先部门数组, |
|
|
|
|
|
* 3.查看targetOrgOrPerson是否在2查询到的数组中 |
|
|
|
|
|
* 故此处应该调用 queryIfOrgOrPersonContainsCurrentUser方法 |
|
|
|
|
|
* */ |
|
|
|
|
|
Boolean ownerInOrg = queryIfOrgOrPersonContainsCurrentUser( key, token, targetOrgOrPerson, conditionOperator, ownerValue);//有效参数: targetOrgOrPerson
|
|
|
|
|
|
if(!ownerInOrg){ |
|
|
|
|
|
filteredDataTitleMapList.add(map); |
|
|
|
|
|
} |
|
|
|
|
|
leftTableDetail = filteredDataTitleMapList; |
|
|
|
|
|
}else if(conditionLeftSplit[0].equals("roleid")){//角色权限条件
|
|
|
|
|
|
String roleId = conditionLeftSplit[2]; |
|
|
|
|
|
String owner1; |
|
|
|
|
|
if(StringUtils.isBlank(map.get("owner").toString())){ |
|
|
|
|
|
owner1 = map.get("creater").toString(); |
|
|
|
|
|
}else{ |
|
|
|
|
|
owner1 = map.get("owner").toString(); |
|
|
|
|
|
} |
|
|
|
|
|
ManCont manCont = userService.getManContByKey(owner1); |
|
|
|
|
|
String currentRoleStr = manCont.getRole(); |
|
|
|
|
|
if(!StringUtils.isBlank(currentRoleStr)){ |
|
|
|
|
|
String[] currentRoleArr = currentRoleStr.split(","); |
|
|
|
|
|
int count = 0; |
|
|
|
|
|
for(String roleItem : currentRoleArr){ |
|
|
|
|
|
if(roleItem.equals(roleId)){ |
|
|
|
|
|
//filteredDataTitleMapList.add(map);
|
|
|
|
|
|
//break;
|
|
|
|
|
|
count++; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
if(count==0){ |
|
|
|
|
|
filteredDataTitleMapList.add(map); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
leftTableDetail = filteredDataTitleMapList; |
|
|
|
|
|
}else{//无效条件,不需要筛选
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
replaceKeys(leftTableDetail,toSelectTableFeildsMap); |
|
|
|
|
|
leftTableDetailMap.put(rightTableName,leftTableDetail); |
|
|
|
|
|
}else{//无owner字段,用creater判断
|
|
|
|
|
|
ArrayList<HashMap<String,Object>> leftTableDetail = fieldRecordMapper.queryAsfLeftMapList(leftTableName,toSelectTableFeilds,currentMastersKey); |
|
|
|
|
|
ArrayList<HashMap<String, Object>> filteredDataTitleMapList = new ArrayList<>(); |
|
|
|
|
|
for(HashMap<String,Object> map:leftTableDetail){ |
|
|
|
|
|
if( conditionLeftSplit[0].equals("orgOrPerson")){//组织机构条件
|
|
|
|
|
|
String targetOrgOrPerson = conditionLeftSplit[1]; |
|
|
|
|
|
|
|
|
|
|
|
String ownerValue; |
|
|
|
|
|
//按照creater判断
|
|
|
|
|
|
ownerValue = map.get("creater").toString(); |
|
|
|
|
|
|
|
|
|
|
|
ownerValue = "owner:"+ownerValue; |
|
|
|
|
|
/*要判断本条数据的ownerValue是否在targetOrgOrPerson之内 |
|
|
|
|
|
* 1.获取ownerValue的maindeparment(主部门), |
|
|
|
|
|
* 2.从1获取到的主部门id向上查询到所有祖先部门数组, |
|
|
|
|
|
* 3.查看targetOrgOrPerson是否在2查询到的数组中 |
|
|
|
|
|
* 故此处应该调用 queryIfOrgOrPersonContainsCurrentUser方法 |
|
|
|
|
|
* */ |
|
|
|
|
|
Boolean ownerInOrg = queryIfOrgOrPersonContainsCurrentUser( key, token, targetOrgOrPerson, conditionOperator, ownerValue);//有效参数: targetOrgOrPerson
|
|
|
|
|
|
if(ownerInOrg){ |
|
|
|
|
|
filteredDataTitleMapList.add(map); |
|
|
|
|
|
} |
|
|
|
|
|
leftTableDetail = filteredDataTitleMapList; |
|
|
|
|
|
}else if(conditionLeftSplit[0].equals("roleid")){//角色权限条件
|
|
|
|
|
|
String roleId = conditionLeftSplit[2]; |
|
|
|
|
|
String owner1; |
|
|
|
|
|
|
|
|
|
|
|
owner1 = map.get("creater").toString(); |
|
|
|
|
|
|
|
|
|
|
|
ManCont manCont = userService.getManContByKey(owner1); |
|
|
|
|
|
String currentRoleStr = manCont.getRole(); |
|
|
|
|
|
if(!StringUtils.isBlank(currentRoleStr)){ |
|
|
|
|
|
String[] currentRoleArr = currentRoleStr.split(","); |
|
|
|
|
|
int count = 0; |
|
|
|
|
|
for(String roleItem : currentRoleArr){ |
|
|
|
|
|
if(roleItem.equals(roleId)){ |
|
|
|
|
|
//filteredDataTitleMapList.add(map);
|
|
|
|
|
|
//break;
|
|
|
|
|
|
count++; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
if(count==0){ |
|
|
|
|
|
filteredDataTitleMapList.add(map); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
leftTableDetail = filteredDataTitleMapList; |
|
|
|
|
|
}else{//无效条件,不需要筛选
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
replaceKeys(leftTableDetail,toSelectTableFeildsMap); |
|
|
|
|
|
leftTableDetailMap.put(rightTableName,leftTableDetail); |
|
|
|
|
|
} |
|
|
|
|
|
//-----------添加筛选条件------------end-------------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
/*ArrayList<HashMap<String,Object>> leftTableDetail = fieldRecordMapper.queryAsfLeftMapList(leftTableName,toSelectTableFeilds,currentMastersKey); |
|
|
|
|
|
replaceKeys(leftTableDetail,toSelectTableFeildsMap); |
|
|
|
|
|
leftTableDetailMap.put(rightTableName,leftTableDetail);*/ |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 遍历
|
|
|
|
|
|
for (Map.Entry<String, ArrayList<HashMap<String, Object>>> entry : leftTableDetailMap.entrySet()) { |
|
|
|
|
|
//当前子表拼装结果
|
|
|
|
|
|
AsfTableFillResult afr = new AsfTableFillResult(); |
|
|
|
|
|
|
|
|
|
|
|
String keyx = entry.getKey(); |
|
|
|
|
|
ArrayList<HashMap<String, Object>> valueList = entry.getValue(); |
|
|
|
|
|
System.out.println("Key: " + keyx); |
|
|
|
|
|
afr.setTableName(keyx); |
|
|
|
|
|
afr.setTableDetail(valueList); |
|
|
|
|
|
resultList.add(afr); |
|
|
|
|
|
} |
|
|
|
|
|
//%%%%%%%%%%%%%%%无筛选条件标准化查询代码----------------end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}else{ |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
}else if(conditionRight.equals("数据所属部门")){ |
|
|
|
|
|
if(conditionOperator.equals("==")){ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//%%%%%%%%%%%%%%%无筛选条件标准化查询代码-------------start
|
|
|
|
|
|
for(List<Map<String, String>> list :singleAsfChildTableFillRoleMapListsGroupedByRightTableName){ |
|
|
|
|
|
ArrayList<String> toSelectTableFeilds = new ArrayList<>(); |
|
|
|
|
|
HashMap<String,String> toSelectTableFeildsMap = new HashMap<>(); |
|
|
|
|
|
for(Map<String,String> map :list){ |
|
|
|
|
|
System.out.println("map===>"+map); |
|
|
|
|
|
toSelectTableFeilds.add("`"+map.get("leftTableField")+"`"); |
|
|
|
|
|
toSelectTableFeilds.add("`creater`"); |
|
|
|
|
|
toSelectTableFeildsMap.put(map.get("leftTableField"),map.get("rightTableField")); |
|
|
|
|
|
} |
|
|
|
|
|
if(list.size()>0){ |
|
|
|
|
|
String leftTableName = "`"+list.get(0).get("leftTableName")+"`"; |
|
|
|
|
|
String rightTableName = list.get(0).get("rightTableName"); |
|
|
|
|
|
//根据currentVal获取currentMastersKey
|
|
|
|
|
|
String currentMastersKey = fieldRecordMapper.queryCurrentMastersKey(currentVal,asfFormName); |
|
|
|
|
|
System.out.println(list.get(0).get("leftTableName")); |
|
|
|
|
|
System.out.println(toSelectTableFeilds); |
|
|
|
|
|
/* |
|
|
|
|
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
//-----------添加筛选条件-----------start--------------------------------------------------------------------------------------
|
|
|
|
|
|
//判断条件中的表单是否有owner字段,若有则以owner判断,没有则以creater作为owner判断
|
|
|
|
|
|
boolean owner = fieldRecordMapper.checkFieldExists(list.get(0).get("leftTableName"), "owner"); |
|
|
|
|
|
boolean org = fieldRecordMapper.checkFieldExists(list.get(0).get("leftTableName"), "org"); |
|
|
|
|
|
String[] conditionLeftSplit = conditionLeft.split(":"); |
|
|
|
|
|
if(owner){ |
|
|
|
|
|
toSelectTableFeilds.add("`owner`"); |
|
|
|
|
|
} |
|
|
|
|
|
if(org){ |
|
|
|
|
|
toSelectTableFeilds.add("`org`"); |
|
|
|
|
|
} |
|
|
|
|
|
//有org时,用org判断,没有org字段和org为空时,取owner的org,没有org也没有owner时,取creater的org
|
|
|
|
|
|
if(org){//使用org判断
|
|
|
|
|
|
ArrayList<HashMap<String,Object>> leftTableDetail = fieldRecordMapper.queryAsfLeftMapList(leftTableName,toSelectTableFeilds,currentMastersKey); |
|
|
|
|
|
ArrayList<HashMap<String, Object>> filteredDataTitleMapList = new ArrayList<>(); |
|
|
|
|
|
for(HashMap<String,Object> map:leftTableDetail){ |
|
|
|
|
|
if( conditionLeftSplit[0].equals("orgOrPerson")){//组织机构条件
|
|
|
|
|
|
String targetOrgOrPerson = conditionLeftSplit[1]; |
|
|
|
|
|
|
|
|
|
|
|
String orgValue=""; |
|
|
|
|
|
if(StringUtils.isBlank(map.get("org").toString())){//本条数据org为空
|
|
|
|
|
|
if(owner){//使用owner判断
|
|
|
|
|
|
if(!StringUtils.isBlank(map.get("owner").toString())){//本条数据owner不为空
|
|
|
|
|
|
//根据用户key获取用户所属部门
|
|
|
|
|
|
ManCont manContById = userService.getManContByKey(map.get("owner").toString()); |
|
|
|
|
|
String adminOrg = manContById.getAdminOrg().toString(); |
|
|
|
|
|
orgValue = adminOrg; |
|
|
|
|
|
}else{//使用creater判断
|
|
|
|
|
|
ManCont manContById = userService.getManContByKey(map.get("creater").toString()); |
|
|
|
|
|
String adminOrg = manContById.getAdminOrg().toString(); |
|
|
|
|
|
orgValue = adminOrg; |
|
|
|
|
|
} |
|
|
|
|
|
}else{//使用creater判断
|
|
|
|
|
|
ManCont manContById = userService.getManContByKey(map.get("creater").toString()); |
|
|
|
|
|
String adminOrg = manContById.getAdminOrg().toString(); |
|
|
|
|
|
orgValue = adminOrg; |
|
|
|
|
|
} |
|
|
|
|
|
}else{//org有值
|
|
|
|
|
|
//本条数据的owner 值为hr系统某个用户的key
|
|
|
|
|
|
orgValue = map.get("org").toString(); |
|
|
|
|
|
} |
|
|
|
|
|
orgValue = "org:"+orgValue; |
|
|
|
|
|
/*要判断本条数据的ownerValue是否在targetOrgOrPerson之内 |
|
|
|
|
|
* 1.获取ownerValue的maindeparment(主部门), |
|
|
|
|
|
* 2.从1获取到的主部门id向上查询到所有祖先部门数组, |
|
|
|
|
|
* 3.查看targetOrgOrPerson是否在2查询到的数组中 |
|
|
|
|
|
* 故此处应该调用 queryIfOrgOrPersonContainsCurrentUser方法 |
|
|
|
|
|
* */ |
|
|
|
|
|
Boolean orgInOrg = queryIfOrgOrPersonContainsCurrentUser( key, token, targetOrgOrPerson, conditionOperator, orgValue);//有效参数: targetOrgOrPerson
|
|
|
|
|
|
if(orgInOrg){ |
|
|
|
|
|
filteredDataTitleMapList.add(map); |
|
|
|
|
|
} |
|
|
|
|
|
leftTableDetail = filteredDataTitleMapList; |
|
|
|
|
|
}else if(conditionLeftSplit[0].equals("roleid")){//角色权限条件 ------exp:数据所属部门包含超级管理员 无效条件
|
|
|
|
|
|
|
|
|
|
|
|
}else{//无效条件,不需要筛选
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
replaceKeys(leftTableDetail,toSelectTableFeildsMap); |
|
|
|
|
|
leftTableDetailMap.put(rightTableName,leftTableDetail); |
|
|
|
|
|
|
|
|
|
|
|
}else{ |
|
|
|
|
|
if(owner){//得到owner的org进行判断
|
|
|
|
|
|
ArrayList<HashMap<String,Object>> leftTableDetail = fieldRecordMapper.queryAsfLeftMapList(leftTableName,toSelectTableFeilds,currentMastersKey); |
|
|
|
|
|
ArrayList<HashMap<String, Object>> filteredDataTitleMapList = new ArrayList<>(); |
|
|
|
|
|
for(HashMap<String,Object> map:leftTableDetail){ |
|
|
|
|
|
if( conditionLeftSplit[0].equals("orgOrPerson")){//组织机构条件
|
|
|
|
|
|
String targetOrgOrPerson = conditionLeftSplit[1]; |
|
|
|
|
|
|
|
|
|
|
|
String orgValue=""; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(!StringUtils.isBlank(map.get("owner").toString())){//本条数据owner不为空
|
|
|
|
|
|
//根据用户key获取用户所属部门
|
|
|
|
|
|
ManCont manContById = userService.getManContByKey(map.get("owner").toString()); |
|
|
|
|
|
String adminOrg = manContById.getAdminOrg().toString(); |
|
|
|
|
|
orgValue = adminOrg; |
|
|
|
|
|
}else{//使用creater判断
|
|
|
|
|
|
ManCont manContById = userService.getManContByKey(map.get("creater").toString()); |
|
|
|
|
|
String adminOrg = manContById.getAdminOrg().toString(); |
|
|
|
|
|
orgValue = adminOrg; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
orgValue = "org:"+orgValue; |
|
|
|
|
|
/*要判断本条数据的ownerValue是否在targetOrgOrPerson之内 |
|
|
|
|
|
* 1.获取ownerValue的maindeparment(主部门), |
|
|
|
|
|
* 2.从1获取到的主部门id向上查询到所有祖先部门数组, |
|
|
|
|
|
* 3.查看targetOrgOrPerson是否在2查询到的数组中 |
|
|
|
|
|
* 故此处应该调用 queryIfOrgOrPersonContainsCurrentUser方法 |
|
|
|
|
|
* */ |
|
|
|
|
|
Boolean orgInOrg = queryIfOrgOrPersonContainsCurrentUser( key, token, targetOrgOrPerson, conditionOperator, orgValue);//有效参数: targetOrgOrPerson
|
|
|
|
|
|
if(orgInOrg){ |
|
|
|
|
|
filteredDataTitleMapList.add(map); |
|
|
|
|
|
} |
|
|
|
|
|
leftTableDetail = filteredDataTitleMapList; |
|
|
|
|
|
}else if(conditionLeftSplit[0].equals("roleid")){//角色权限条件 ------exp:数据所属部门包含超级管理员 无效条件
|
|
|
|
|
|
|
|
|
|
|
|
}else{//无效条件,不需要筛选
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
replaceKeys(leftTableDetail,toSelectTableFeildsMap); |
|
|
|
|
|
leftTableDetailMap.put(rightTableName,leftTableDetail); |
|
|
|
|
|
}else{//得到creater的org进行判断
|
|
|
|
|
|
ArrayList<HashMap<String,Object>> leftTableDetail = fieldRecordMapper.queryAsfLeftMapList(leftTableName,toSelectTableFeilds,currentMastersKey); |
|
|
|
|
|
ArrayList<HashMap<String, Object>> filteredDataTitleMapList = new ArrayList<>(); |
|
|
|
|
|
for(HashMap<String,Object> map:leftTableDetail){ |
|
|
|
|
|
if( conditionLeftSplit[0].equals("orgOrPerson")){//组织机构条件
|
|
|
|
|
|
String targetOrgOrPerson = conditionLeftSplit[1]; |
|
|
|
|
|
|
|
|
|
|
|
String orgValue=""; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//使用creater判断
|
|
|
|
|
|
ManCont manContById = userService.getManContByKey(map.get("creater").toString()); |
|
|
|
|
|
String adminOrg = manContById.getAdminOrg().toString(); |
|
|
|
|
|
orgValue = adminOrg; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
orgValue = "org:"+orgValue; |
|
|
|
|
|
/*要判断本条数据的ownerValue是否在targetOrgOrPerson之内 |
|
|
|
|
|
* 1.获取ownerValue的maindeparment(主部门), |
|
|
|
|
|
* 2.从1获取到的主部门id向上查询到所有祖先部门数组, |
|
|
|
|
|
* 3.查看targetOrgOrPerson是否在2查询到的数组中 |
|
|
|
|
|
* 故此处应该调用 queryIfOrgOrPersonContainsCurrentUser方法 |
|
|
|
|
|
* */ |
|
|
|
|
|
Boolean orgInOrg = queryIfOrgOrPersonContainsCurrentUser( key, token, targetOrgOrPerson, conditionOperator, orgValue);//有效参数: targetOrgOrPerson
|
|
|
|
|
|
if(orgInOrg){ |
|
|
|
|
|
filteredDataTitleMapList.add(map); |
|
|
|
|
|
} |
|
|
|
|
|
leftTableDetail = filteredDataTitleMapList; |
|
|
|
|
|
}else if(conditionLeftSplit[0].equals("roleid")){//角色权限条件 ------exp:数据所属部门包含超级管理员 无效条件
|
|
|
|
|
|
|
|
|
|
|
|
}else{//无效条件,不需要筛选
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
replaceKeys(leftTableDetail,toSelectTableFeildsMap); |
|
|
|
|
|
leftTableDetailMap.put(rightTableName,leftTableDetail); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
//-----------添加筛选条件------------end-------------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
/*ArrayList<HashMap<String,Object>> leftTableDetail = fieldRecordMapper.queryAsfLeftMapList(leftTableName,toSelectTableFeilds,currentMastersKey); |
|
|
|
|
|
replaceKeys(leftTableDetail,toSelectTableFeildsMap); |
|
|
|
|
|
leftTableDetailMap.put(rightTableName,leftTableDetail);*/ |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 遍历
|
|
|
|
|
|
for (Map.Entry<String, ArrayList<HashMap<String, Object>>> entry : leftTableDetailMap.entrySet()) { |
|
|
|
|
|
//当前子表拼装结果
|
|
|
|
|
|
AsfTableFillResult afr = new AsfTableFillResult(); |
|
|
|
|
|
|
|
|
|
|
|
String keyx = entry.getKey(); |
|
|
|
|
|
ArrayList<HashMap<String, Object>> valueList = entry.getValue(); |
|
|
|
|
|
System.out.println("Key: " + keyx); |
|
|
|
|
|
afr.setTableName(keyx); |
|
|
|
|
|
afr.setTableDetail(valueList); |
|
|
|
|
|
resultList.add(afr); |
|
|
|
|
|
} |
|
|
|
|
|
//%%%%%%%%%%%%%%%无筛选条件标准化查询代码----------------end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}else if(conditionOperator.equals(("!="))){ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//%%%%%%%%%%%%%%%无筛选条件标准化查询代码-------------start
|
|
|
|
|
|
for(List<Map<String, String>> list :singleAsfChildTableFillRoleMapListsGroupedByRightTableName){ |
|
|
|
|
|
ArrayList<String> toSelectTableFeilds = new ArrayList<>(); |
|
|
|
|
|
HashMap<String,String> toSelectTableFeildsMap = new HashMap<>(); |
|
|
|
|
|
for(Map<String,String> map :list){ |
|
|
|
|
|
System.out.println("map===>"+map); |
|
|
|
|
|
toSelectTableFeilds.add("`"+map.get("leftTableField")+"`"); |
|
|
|
|
|
toSelectTableFeilds.add("`creater`"); |
|
|
|
|
|
toSelectTableFeildsMap.put(map.get("leftTableField"),map.get("rightTableField")); |
|
|
|
|
|
} |
|
|
|
|
|
if(list.size()>0){ |
|
|
|
|
|
String leftTableName = "`"+list.get(0).get("leftTableName")+"`"; |
|
|
|
|
|
String rightTableName = list.get(0).get("rightTableName"); |
|
|
|
|
|
//根据currentVal获取currentMastersKey
|
|
|
|
|
|
String currentMastersKey = fieldRecordMapper.queryCurrentMastersKey(currentVal,asfFormName); |
|
|
|
|
|
System.out.println(list.get(0).get("leftTableName")); |
|
|
|
|
|
System.out.println(toSelectTableFeilds); |
|
|
|
|
|
/* |
|
|
|
|
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
//-----------添加筛选条件-----------start--------------------------------------------------------------------------------------
|
|
|
|
|
|
//判断条件中的表单是否有owner字段,若有则以owner判断,没有则以creater作为owner判断
|
|
|
|
|
|
boolean owner = fieldRecordMapper.checkFieldExists(list.get(0).get("leftTableName"), "owner"); |
|
|
|
|
|
boolean org = fieldRecordMapper.checkFieldExists(list.get(0).get("leftTableName"), "org"); |
|
|
|
|
|
String[] conditionLeftSplit = conditionLeft.split(":"); |
|
|
|
|
|
if(owner){ |
|
|
|
|
|
toSelectTableFeilds.add("`owner`"); |
|
|
|
|
|
} |
|
|
|
|
|
if(org){ |
|
|
|
|
|
toSelectTableFeilds.add("`org`"); |
|
|
|
|
|
} |
|
|
|
|
|
//有org时,用org判断,没有org字段和org为空时,取owner的org,没有org也没有owner时,取creater的org
|
|
|
|
|
|
if(org){//使用org判断
|
|
|
|
|
|
ArrayList<HashMap<String,Object>> leftTableDetail = fieldRecordMapper.queryAsfLeftMapList(leftTableName,toSelectTableFeilds,currentMastersKey); |
|
|
|
|
|
ArrayList<HashMap<String, Object>> filteredDataTitleMapList = new ArrayList<>(); |
|
|
|
|
|
for(HashMap<String,Object> map:leftTableDetail){ |
|
|
|
|
|
if( conditionLeftSplit[0].equals("orgOrPerson")){//组织机构条件
|
|
|
|
|
|
String targetOrgOrPerson = conditionLeftSplit[1]; |
|
|
|
|
|
|
|
|
|
|
|
String orgValue=""; |
|
|
|
|
|
if(StringUtils.isBlank(map.get("org").toString())){//本条数据org为空
|
|
|
|
|
|
if(owner){//使用owner判断
|
|
|
|
|
|
if(!StringUtils.isBlank(map.get("owner").toString())){//本条数据owner不为空
|
|
|
|
|
|
//根据用户key获取用户所属部门
|
|
|
|
|
|
ManCont manContById = userService.getManContByKey(map.get("owner").toString()); |
|
|
|
|
|
String adminOrg = manContById.getAdminOrg().toString(); |
|
|
|
|
|
orgValue = adminOrg; |
|
|
|
|
|
}else{//使用creater判断
|
|
|
|
|
|
ManCont manContById = userService.getManContByKey(map.get("creater").toString()); |
|
|
|
|
|
String adminOrg = manContById.getAdminOrg().toString(); |
|
|
|
|
|
orgValue = adminOrg; |
|
|
|
|
|
} |
|
|
|
|
|
}else{//使用creater判断
|
|
|
|
|
|
ManCont manContById = userService.getManContByKey(map.get("creater").toString()); |
|
|
|
|
|
String adminOrg = manContById.getAdminOrg().toString(); |
|
|
|
|
|
orgValue = adminOrg; |
|
|
|
|
|
} |
|
|
|
|
|
}else{//org有值
|
|
|
|
|
|
//本条数据的owner 值为hr系统某个用户的key
|
|
|
|
|
|
orgValue = map.get("org").toString(); |
|
|
|
|
|
} |
|
|
|
|
|
orgValue = "org:"+orgValue; |
|
|
|
|
|
/*要判断本条数据的ownerValue是否在targetOrgOrPerson之内 |
|
|
|
|
|
* 1.获取ownerValue的maindeparment(主部门), |
|
|
|
|
|
* 2.从1获取到的主部门id向上查询到所有祖先部门数组, |
|
|
|
|
|
* 3.查看targetOrgOrPerson是否在2查询到的数组中 |
|
|
|
|
|
* 故此处应该调用 queryIfOrgOrPersonContainsCurrentUser方法 |
|
|
|
|
|
* */ |
|
|
|
|
|
Boolean orgInOrg = queryIfOrgOrPersonContainsCurrentUser( key, token, targetOrgOrPerson, conditionOperator, orgValue);//有效参数: targetOrgOrPerson
|
|
|
|
|
|
if(!orgInOrg){ |
|
|
|
|
|
filteredDataTitleMapList.add(map); |
|
|
|
|
|
} |
|
|
|
|
|
leftTableDetail = filteredDataTitleMapList; |
|
|
|
|
|
}else if(conditionLeftSplit[0].equals("roleid")){//角色权限条件 ------exp:数据所属部门包含超级管理员 无效条件
|
|
|
|
|
|
|
|
|
|
|
|
}else{//无效条件,不需要筛选
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
replaceKeys(leftTableDetail,toSelectTableFeildsMap); |
|
|
|
|
|
leftTableDetailMap.put(rightTableName,leftTableDetail); |
|
|
|
|
|
|
|
|
|
|
|
}else{ |
|
|
|
|
|
if(owner){//得到owner的org进行判断
|
|
|
|
|
|
ArrayList<HashMap<String,Object>> leftTableDetail = fieldRecordMapper.queryAsfLeftMapList(leftTableName,toSelectTableFeilds,currentMastersKey); |
|
|
|
|
|
ArrayList<HashMap<String, Object>> filteredDataTitleMapList = new ArrayList<>(); |
|
|
|
|
|
for(HashMap<String,Object> map:leftTableDetail){ |
|
|
|
|
|
if( conditionLeftSplit[0].equals("orgOrPerson")){//组织机构条件
|
|
|
|
|
|
String targetOrgOrPerson = conditionLeftSplit[1]; |
|
|
|
|
|
|
|
|
|
|
|
String orgValue=""; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(!StringUtils.isBlank(map.get("owner").toString())){//本条数据owner不为空
|
|
|
|
|
|
//根据用户key获取用户所属部门
|
|
|
|
|
|
ManCont manContById = userService.getManContByKey(map.get("owner").toString()); |
|
|
|
|
|
String adminOrg = manContById.getAdminOrg().toString(); |
|
|
|
|
|
orgValue = adminOrg; |
|
|
|
|
|
}else{//使用creater判断
|
|
|
|
|
|
ManCont manContById = userService.getManContByKey(map.get("creater").toString()); |
|
|
|
|
|
String adminOrg = manContById.getAdminOrg().toString(); |
|
|
|
|
|
orgValue = adminOrg; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
orgValue = "org:"+orgValue; |
|
|
|
|
|
/*要判断本条数据的ownerValue是否在targetOrgOrPerson之内 |
|
|
|
|
|
* 1.获取ownerValue的maindeparment(主部门), |
|
|
|
|
|
* 2.从1获取到的主部门id向上查询到所有祖先部门数组, |
|
|
|
|
|
* 3.查看targetOrgOrPerson是否在2查询到的数组中 |
|
|
|
|
|
* 故此处应该调用 queryIfOrgOrPersonContainsCurrentUser方法 |
|
|
|
|
|
* */ |
|
|
|
|
|
Boolean orgInOrg = queryIfOrgOrPersonContainsCurrentUser( key, token, targetOrgOrPerson, conditionOperator, orgValue);//有效参数: targetOrgOrPerson
|
|
|
|
|
|
if(!orgInOrg){ |
|
|
|
|
|
filteredDataTitleMapList.add(map); |
|
|
|
|
|
} |
|
|
|
|
|
leftTableDetail = filteredDataTitleMapList; |
|
|
|
|
|
}else if(conditionLeftSplit[0].equals("roleid")){//角色权限条件 ------exp:数据所属部门包含超级管理员 无效条件
|
|
|
|
|
|
|
|
|
|
|
|
}else{//无效条件,不需要筛选
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
replaceKeys(leftTableDetail,toSelectTableFeildsMap); |
|
|
|
|
|
leftTableDetailMap.put(rightTableName,leftTableDetail); |
|
|
|
|
|
}else{//得到creater的org进行判断
|
|
|
|
|
|
ArrayList<HashMap<String,Object>> leftTableDetail = fieldRecordMapper.queryAsfLeftMapList(leftTableName,toSelectTableFeilds,currentMastersKey); |
|
|
|
|
|
ArrayList<HashMap<String, Object>> filteredDataTitleMapList = new ArrayList<>(); |
|
|
|
|
|
for(HashMap<String,Object> map:leftTableDetail){ |
|
|
|
|
|
if( conditionLeftSplit[0].equals("orgOrPerson")){//组织机构条件
|
|
|
|
|
|
String targetOrgOrPerson = conditionLeftSplit[1]; |
|
|
|
|
|
|
|
|
|
|
|
String orgValue=""; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//使用creater判断
|
|
|
|
|
|
ManCont manContById = userService.getManContByKey(map.get("creater").toString()); |
|
|
|
|
|
String adminOrg = manContById.getAdminOrg().toString(); |
|
|
|
|
|
orgValue = adminOrg; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
orgValue = "org:"+orgValue; |
|
|
|
|
|
/*要判断本条数据的ownerValue是否在targetOrgOrPerson之内 |
|
|
|
|
|
* 1.获取ownerValue的maindeparment(主部门), |
|
|
|
|
|
* 2.从1获取到的主部门id向上查询到所有祖先部门数组, |
|
|
|
|
|
* 3.查看targetOrgOrPerson是否在2查询到的数组中 |
|
|
|
|
|
* 故此处应该调用 queryIfOrgOrPersonContainsCurrentUser方法 |
|
|
|
|
|
* */ |
|
|
|
|
|
Boolean orgInOrg = queryIfOrgOrPersonContainsCurrentUser( key, token, targetOrgOrPerson, conditionOperator, orgValue);//有效参数: targetOrgOrPerson
|
|
|
|
|
|
if(!orgInOrg){ |
|
|
|
|
|
filteredDataTitleMapList.add(map); |
|
|
|
|
|
} |
|
|
|
|
|
leftTableDetail = filteredDataTitleMapList; |
|
|
|
|
|
}else if(conditionLeftSplit[0].equals("roleid")){//角色权限条件 ------exp:数据所属部门包含超级管理员 无效条件
|
|
|
|
|
|
|
|
|
|
|
|
}else{//无效条件,不需要筛选
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
replaceKeys(leftTableDetail,toSelectTableFeildsMap); |
|
|
|
|
|
leftTableDetailMap.put(rightTableName,leftTableDetail); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
//-----------添加筛选条件------------end-------------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
/*ArrayList<HashMap<String,Object>> leftTableDetail = fieldRecordMapper.queryAsfLeftMapList(leftTableName,toSelectTableFeilds,currentMastersKey); |
|
|
|
|
|
replaceKeys(leftTableDetail,toSelectTableFeildsMap); |
|
|
|
|
|
leftTableDetailMap.put(rightTableName,leftTableDetail);*/ |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// 遍历
|
|
|
|
|
|
for (Map.Entry<String, ArrayList<HashMap<String, Object>>> entry : leftTableDetailMap.entrySet()) { |
|
|
|
|
|
//当前子表拼装结果
|
|
|
|
|
|
AsfTableFillResult afr = new AsfTableFillResult(); |
|
|
|
|
|
|
|
|
|
|
|
String keyx = entry.getKey(); |
|
|
|
|
|
ArrayList<HashMap<String, Object>> valueList = entry.getValue(); |
|
|
|
|
|
System.out.println("Key: " + keyx); |
|
|
|
|
|
afr.setTableName(keyx); |
|
|
|
|
|
afr.setTableDetail(valueList); |
|
|
|
|
|
resultList.add(afr); |
|
|
|
|
|
} |
|
|
|
|
|
//%%%%%%%%%%%%%%%无筛选条件标准化查询代码----------------end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}else{ |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
}else{ |
|
|
|
|
|
//自定义数字或文字条件值
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
}else{//没有设置筛选条件
|
|
|
}else{//没有设置筛选条件
|
|
|
|