liwenxuan 1 year ago
parent
commit
349ae1f1a4
  1. 788
      src/main/java/com/hxgk/lowcode/service/impl/CustomerFormServiceImpl.java

788
src/main/java/com/hxgk/lowcode/service/impl/CustomerFormServiceImpl.java

@ -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{//没有设置筛选条件

Loading…
Cancel
Save