From 349ae1f1a4c156e3e77005d4bd2fd1080465cc1f Mon Sep 17 00:00:00 2001 From: liwenxuan <1298531568@qq.com> Date: Sun, 29 Sep 2024 16:26:31 +0800 Subject: [PATCH] 1 --- .../service/impl/CustomerFormServiceImpl.java | 788 +++++++++++++++++- 1 file changed, 784 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/hxgk/lowcode/service/impl/CustomerFormServiceImpl.java b/src/main/java/com/hxgk/lowcode/service/impl/CustomerFormServiceImpl.java index 97bc1f6..fe46a58 100644 --- a/src/main/java/com/hxgk/lowcode/service/impl/CustomerFormServiceImpl.java +++ b/src/main/java/com/hxgk/lowcode/service/impl/CustomerFormServiceImpl.java @@ -2175,7 +2175,8 @@ public class CustomerFormServiceImpl implements CustomerFormService { System.out.println(stringStringHashMap); if(conditionOperator.equals("包含")){ - if(conditionRight.equals("数据拥有者")){//owner creater + if(conditionRight.equals("数据拥有者")){ + //owner creater //%%%%%%%%%%%%%%%无筛选条件标准化查询代码-------------start for(List> list :singleAsfChildTableFillRoleMapListsGroupedByRightTableName){ ArrayList toSelectTableFeilds = new ArrayList<>(); @@ -2538,8 +2539,13 @@ public class CustomerFormServiceImpl implements CustomerFormService { - }else{//无法处理的情况,返回空数据列表 - logger.error("数据范围条件查询出现无法处理的情况---返回空数据列表---" + conditionOperator); + }else{//其它数字或文字条件 如:文学家包含李 以like模糊查询来筛选 + + /*if(){ + + }*/ + + logger.error("数据范围条件查询出现无法处理的情况---返回原数据列表---" + conditionOperator); } }else if(conditionOperator.equals("不包含")){ @@ -2935,8 +2941,782 @@ public class CustomerFormServiceImpl implements CustomerFormService { - }else{// == != > < 等符号的情况 + }else{ + // == != > < 等符号的情况 + if(conditionRight.equals("数据拥有者")){ + if(conditionOperator.equals("==")){ + + + + + + + //%%%%%%%%%%%%%%%无筛选条件标准化查询代码-------------start + for(List> list :singleAsfChildTableFillRoleMapListsGroupedByRightTableName){ + ArrayList toSelectTableFeilds = new ArrayList<>(); + HashMap toSelectTableFeildsMap = new HashMap<>(); + for(Map 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> leftTableDetail = fieldRecordMapper.queryAsfLeftMapList(leftTableName,toSelectTableFeilds,currentMastersKey); + ArrayList> filteredDataTitleMapList = new ArrayList<>(); + for(HashMap 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> leftTableDetail = fieldRecordMapper.queryAsfLeftMapList(leftTableName,toSelectTableFeilds,currentMastersKey); + ArrayList> filteredDataTitleMapList = new ArrayList<>(); + for(HashMap 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> leftTableDetail = fieldRecordMapper.queryAsfLeftMapList(leftTableName,toSelectTableFeilds,currentMastersKey); + replaceKeys(leftTableDetail,toSelectTableFeildsMap); + leftTableDetailMap.put(rightTableName,leftTableDetail);*/ + } + + } + + // 遍历 + for (Map.Entry>> entry : leftTableDetailMap.entrySet()) { + //当前子表拼装结果 + AsfTableFillResult afr = new AsfTableFillResult(); + + String keyx = entry.getKey(); + ArrayList> 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> list :singleAsfChildTableFillRoleMapListsGroupedByRightTableName){ + ArrayList toSelectTableFeilds = new ArrayList<>(); + HashMap toSelectTableFeildsMap = new HashMap<>(); + for(Map 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> leftTableDetail = fieldRecordMapper.queryAsfLeftMapList(leftTableName,toSelectTableFeilds,currentMastersKey); + ArrayList> filteredDataTitleMapList = new ArrayList<>(); + for(HashMap 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> leftTableDetail = fieldRecordMapper.queryAsfLeftMapList(leftTableName,toSelectTableFeilds,currentMastersKey); + ArrayList> filteredDataTitleMapList = new ArrayList<>(); + for(HashMap 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> leftTableDetail = fieldRecordMapper.queryAsfLeftMapList(leftTableName,toSelectTableFeilds,currentMastersKey); + replaceKeys(leftTableDetail,toSelectTableFeildsMap); + leftTableDetailMap.put(rightTableName,leftTableDetail);*/ + } + + } + + // 遍历 + for (Map.Entry>> entry : leftTableDetailMap.entrySet()) { + //当前子表拼装结果 + AsfTableFillResult afr = new AsfTableFillResult(); + + String keyx = entry.getKey(); + ArrayList> 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> list :singleAsfChildTableFillRoleMapListsGroupedByRightTableName){ + ArrayList toSelectTableFeilds = new ArrayList<>(); + HashMap toSelectTableFeildsMap = new HashMap<>(); + for(Map 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> leftTableDetail = fieldRecordMapper.queryAsfLeftMapList(leftTableName,toSelectTableFeilds,currentMastersKey); + ArrayList> filteredDataTitleMapList = new ArrayList<>(); + for(HashMap 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> leftTableDetail = fieldRecordMapper.queryAsfLeftMapList(leftTableName,toSelectTableFeilds,currentMastersKey); + ArrayList> filteredDataTitleMapList = new ArrayList<>(); + for(HashMap 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> leftTableDetail = fieldRecordMapper.queryAsfLeftMapList(leftTableName,toSelectTableFeilds,currentMastersKey); + ArrayList> filteredDataTitleMapList = new ArrayList<>(); + for(HashMap 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> leftTableDetail = fieldRecordMapper.queryAsfLeftMapList(leftTableName,toSelectTableFeilds,currentMastersKey); + replaceKeys(leftTableDetail,toSelectTableFeildsMap); + leftTableDetailMap.put(rightTableName,leftTableDetail);*/ + } + + } + + // 遍历 + for (Map.Entry>> entry : leftTableDetailMap.entrySet()) { + //当前子表拼装结果 + AsfTableFillResult afr = new AsfTableFillResult(); + + String keyx = entry.getKey(); + ArrayList> 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> list :singleAsfChildTableFillRoleMapListsGroupedByRightTableName){ + ArrayList toSelectTableFeilds = new ArrayList<>(); + HashMap toSelectTableFeildsMap = new HashMap<>(); + for(Map 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> leftTableDetail = fieldRecordMapper.queryAsfLeftMapList(leftTableName,toSelectTableFeilds,currentMastersKey); + ArrayList> filteredDataTitleMapList = new ArrayList<>(); + for(HashMap 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> leftTableDetail = fieldRecordMapper.queryAsfLeftMapList(leftTableName,toSelectTableFeilds,currentMastersKey); + ArrayList> filteredDataTitleMapList = new ArrayList<>(); + for(HashMap 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> leftTableDetail = fieldRecordMapper.queryAsfLeftMapList(leftTableName,toSelectTableFeilds,currentMastersKey); + ArrayList> filteredDataTitleMapList = new ArrayList<>(); + for(HashMap 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> leftTableDetail = fieldRecordMapper.queryAsfLeftMapList(leftTableName,toSelectTableFeilds,currentMastersKey); + replaceKeys(leftTableDetail,toSelectTableFeildsMap); + leftTableDetailMap.put(rightTableName,leftTableDetail);*/ + } + + } + + // 遍历 + for (Map.Entry>> entry : leftTableDetailMap.entrySet()) { + //当前子表拼装结果 + AsfTableFillResult afr = new AsfTableFillResult(); + + String keyx = entry.getKey(); + ArrayList> valueList = entry.getValue(); + System.out.println("Key: " + keyx); + afr.setTableName(keyx); + afr.setTableDetail(valueList); + resultList.add(afr); + } + //%%%%%%%%%%%%%%%无筛选条件标准化查询代码----------------end + + + + + + + + + + + + }else{ + + } + + }else{ + //自定义数字或文字条件值 + + } } }else{//没有设置筛选条件