From 17927228e41e78c07483d015d189806f0bfa3c73 Mon Sep 17 00:00:00 2001 From: liwenxuan <1298531568@qq.com> Date: Thu, 8 Aug 2024 11:35:06 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=B3=E8=81=94=E8=A1=A8=E5=8D=95---?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E8=8C=83=E5=9B=B4=E6=9D=A1=E4=BB=B6=E6=95=88?= =?UTF-8?q?=E6=9E=9C=E5=AE=9E=E7=8E=B0---=E7=BB=84=E7=BB=87=E6=9C=BA?= =?UTF-8?q?=E6=9E=84=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/CustomerFormServiceImpl.java | 401 +++++++++++++++--- 1 file changed, 349 insertions(+), 52 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 f3bef96..1f05eff 100644 --- a/src/main/java/com/hxgk/lowcode/service/impl/CustomerFormServiceImpl.java +++ b/src/main/java/com/hxgk/lowcode/service/impl/CustomerFormServiceImpl.java @@ -635,6 +635,10 @@ public class CustomerFormServiceImpl implements CustomerFormService { } return str; } + + /*private List> handleLeftArrLength3(String right,String operator,String left,ArrayList toSelectDataTitles){ + return null; + }*/ /* 关联表单组件下拉数据标题选项获取(所有) */ @@ -681,6 +685,8 @@ public class CustomerFormServiceImpl implements CustomerFormService { //System.out.println(right); if(operator.equals("包含")){ if(right.equals("数据拥有者")){ + //此时条件为数据拥有者owner需判断关联表单是否含有owner字段,若不存在,则不过滤 + boolean owner = fieldRecordMapper.checkFieldExists(asfFormName, "owner"); try { // 可能抛出异常的代码 String[] leftArr = left.split(":"); @@ -689,11 +695,11 @@ public class CustomerFormServiceImpl implements CustomerFormService { List> filteredDataTitleMapList = new ArrayList<>(); - //此时条件为数据拥有者owner需判断关联表单是否含有owner字段,若不存在,则不过滤 - boolean owner = fieldRecordMapper.checkFieldExists(asfFormName, "owner"); + if(owner){//有owner字段 也就是数据拥有者 //增加owner条件 toSelectDataTitles.add("owner"); + dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles); for(TreeMap map :dataTitleMapList){ if(StringUtils.isBlank(map.get("owner").toString())){//本条数据owner为空 @@ -703,11 +709,11 @@ public class CustomerFormServiceImpl implements CustomerFormService { String ownerValue = map.get("owner").toString(); ownerValue = "owner:"+ownerValue; /*要判断本条数据的ownerValue是否在targetOrgOrPerson之内 - * 1.获取ownerValue的maindeparment(主部门), - * 2.从1获取到的主部门id向上查询到所有祖先部门数组, - * 3.查看targetOrgOrPerson是否在2查询到的数组中 - * 故此处应该调用 queryIfOrgOrPersonContainsCurrentUser方法 - * */ + * 1.获取ownerValue的maindeparment(主部门), + * 2.从1获取到的主部门id向上查询到所有祖先部门数组, + * 3.查看targetOrgOrPerson是否在2查询到的数组中 + * 故此处应该调用 queryIfOrgOrPersonContainsCurrentUser方法 + * */ Boolean ownerInOrg = queryIfOrgOrPersonContainsCurrentUser( key, token, targetOrgOrPerson, operator, ownerValue);//有效参数: targetOrgOrPerson if(ownerInOrg){ filteredDataTitleMapList.add(map); @@ -715,20 +721,30 @@ public class CustomerFormServiceImpl implements CustomerFormService { } } dataTitleMapList = filteredDataTitleMapList; - }else{//返回所有数据标题 dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles);//全部数据标题 } - for(TreeMap item : dataTitleMapList){ + + + + /*for(TreeMap item : dataTitleMapList){ System.out.println(item); - } + }*/ }else if(leftArr.length==3){// roleid:rootid:4 formField:15:id 1.主表字段条件 2.角色权限条件 + //System.out.println(right+"----"+operator+"----"+left+"----"+toSelectDataTitles); + //dataTitleMapList = handleLeftArrLength3(right, operator, left, toSelectDataTitles); if(leftArr[0].equals("roleid")){ + System.out.println(right+"----"+operator+"----"+left+"----"+toSelectDataTitles);//高管包含数据拥有者 + String roleId = leftArr[2]; + /* + + * */ + //查出 }else if(leftArr[0].equals("formField")){ }else{//不应该存在的东西 - logger.error("数据范围条件查询出现异常直接返回全部数据标题--不应该存在的东西" + leftOperatorsAndRight); - dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles);//数据范围条件查询出现异常直接返回全部数据标题 + logger.error("数据范围条件查询出现不应该存在的条件---返回空数据标题列表---" + leftOperatorsAndRight+"---"+dataTitleMapList); + dataTitleMapList = new ArrayList<>(); } }else if(leftArr.length==4){// formField:44:table1722576832462:input1722576838785 子表字段条件 @@ -736,18 +752,76 @@ public class CustomerFormServiceImpl implements CustomerFormService { } catch (Exception e) { e.printStackTrace(); - logger.error("数据范围条件查询出现异常直接返回全部数据标题" + leftOperatorsAndRight); - dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles);//数据范围条件查询出现异常直接返回全部数据标题 + logger.error("数据范围条件查询出现异常---返回空数据标题列表---" + leftOperatorsAndRight+"---"+dataTitleMapList); + dataTitleMapList = new ArrayList<>(); } }else if(right.equals("数据所属部门")){ try { // 可能抛出异常的代码 + String[] leftArr = left.split(":"); + if(leftArr.length==2){//orgOrPerson:102 组织机构条件 例:企管部包含数据拥有者 + String targetOrgOrPerson = leftArr[1]; + + + List> filteredDataTitleMapList = new ArrayList<>(); + //此时条件为数据拥有者owner需判断关联表单是否含有owner字段,若不存在,则不过滤 + boolean org = fieldRecordMapper.checkFieldExists(asfFormName, "org"); + boolean owner = fieldRecordMapper.checkFieldExists(asfFormName, "owner"); + if(owner){//有owner字段 也就是数据拥有者 + //增加owner条件 + toSelectDataTitles.add("owner"); + } + if(org){//有org字段 也就是数据所属部门 + //增加org条件 + toSelectDataTitles.add("org"); + + dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles); + for(TreeMap map :dataTitleMapList){ + if(StringUtils.isBlank(map.get("org").toString())){//本条数据owner为空 + //filteredDataTitleMapList.add(map); + }else{//org有值 + //本条数据的org 值为hr系统orgcont表的id + String orgValue = map.get("org").toString(); + orgValue = "org:"+orgValue; + /*要判断本条数据的orgValue是否在targetOrgOrPerson之内 + * + * 1.orgValue向上查询到所有祖先部门数组,数组中也要加入orgValue + * 2.查看targetOrgOrPerson是否在1查询到的数组中 + * 故此处应该调用 queryIfOrgOrPersonContainsCurrentUser方法 + * */ + Boolean orgInOrg = queryIfOrgOrPersonContainsCurrentUser( key, token, targetOrgOrPerson, operator, orgValue);//有效参数: targetOrgOrPerson + if(orgInOrg){ + filteredDataTitleMapList.add(map); + } + } + } + dataTitleMapList = filteredDataTitleMapList; + + }else{//返回所有数据标题 + dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles);//全部数据标题 + } + /*for(TreeMap item : dataTitleMapList){ + System.out.println(item); + }*/ + }else if(leftArr.length==3){// roleid:rootid:4 formField:15:id 1.主表字段条件 2.角色权限条件 + if(leftArr[0].equals("roleid")){ + }else if(leftArr[0].equals("formField")){ + + }else{//不应该存在的东西 + logger.error("数据范围条件查询出现不应该存在的条件---返回空数据标题列表---" + leftOperatorsAndRight+"---"+dataTitleMapList); + dataTitleMapList = new ArrayList<>(); + } + }else if(leftArr.length==4){// formField:44:table1722576832462:input1722576838785 子表字段条件 + + } } catch (Exception e) { - logger.error("数据范围条件查询出现异常直接返回全部数据标题" + leftOperatorsAndRight); - dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles);//数据范围条件查询出现异常直接返回全部数据标题d + e.printStackTrace(); + logger.error("数据范围条件查询出现异常---返回空数据标题列表---" + leftOperatorsAndRight+"---"+dataTitleMapList); + dataTitleMapList = new ArrayList<>(); } }else{//无法处理的情况,直接返回全部数据标题 - dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles); + logger.error("数据范围条件查询出现无法处理的情况---返回空数据标题列表---" + leftOperatorsAndRight+"---"+dataTitleMapList); + dataTitleMapList = new ArrayList<>(); } }else if(operator.equals("不包含")){ if(right.equals("数据拥有者")){ @@ -789,16 +863,16 @@ public class CustomerFormServiceImpl implements CustomerFormService { }else{//返回所有数据标题 dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles);//全部数据标题 } - for(TreeMap item : dataTitleMapList){ + /*for(TreeMap item : dataTitleMapList){ System.out.println(item); - } + }*/ }else if(leftArr.length==3){// roleid:rootid:4 formField:15:id 1.主表字段条件 2.角色权限条件 if(leftArr[0].equals("roleid")){ }else if(leftArr[0].equals("formField")){ }else{//不应该存在的东西 - logger.error("数据范围条件查询出现异常直接返回全部数据标题--不应该存在的东西" + leftOperatorsAndRight); - dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles);//数据范围条件查询出现异常直接返回全部数据标题 + logger.error("数据范围条件查询出现不应该存在的条件---返回空数据标题列表---" + leftOperatorsAndRight+"---"+dataTitleMapList); + dataTitleMapList = new ArrayList<>(); } }else if(leftArr.length==4){// formField:44:table1722576832462:input1722576838785 子表字段条件 @@ -806,18 +880,76 @@ public class CustomerFormServiceImpl implements CustomerFormService { } catch (Exception e) { e.printStackTrace(); - logger.error("数据范围条件查询出现异常直接返回全部数据标题" + leftOperatorsAndRight); - dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles);//数据范围条件查询出现异常直接返回全部数据标题 + logger.error("数据范围条件查询出现异常---返回空数据标题列表---" + leftOperatorsAndRight+"---"+dataTitleMapList); + dataTitleMapList = new ArrayList<>(); } }else if(right.equals("数据所属部门")){ try { // 可能抛出异常的代码 + String[] leftArr = left.split(":"); + if(leftArr.length==2){//orgOrPerson:102 组织机构条件 例:企管部包含数据拥有者 + String targetOrgOrPerson = leftArr[1]; + + + List> filteredDataTitleMapList = new ArrayList<>(); + //此时条件为数据拥有者owner需判断关联表单是否含有owner字段,若不存在,则不过滤 + boolean org = fieldRecordMapper.checkFieldExists(asfFormName, "org"); + boolean owner = fieldRecordMapper.checkFieldExists(asfFormName, "owner"); + if(owner){//有owner字段 也就是数据拥有者 + //增加owner条件 + toSelectDataTitles.add("owner"); + } + if(org){//有org字段 也就是数据所属部门 + //增加org条件 + toSelectDataTitles.add("org"); + + dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles); + for(TreeMap map :dataTitleMapList){ + if(StringUtils.isBlank(map.get("org").toString())){//本条数据owner为空 + filteredDataTitleMapList.add(map); + }else{//org有值 + //本条数据的org 值为hr系统orgcont表的id + String orgValue = map.get("org").toString(); + orgValue = "org:"+orgValue; + /*要判断本条数据的orgValue是否在targetOrgOrPerson之内 + * + * 1.orgValue向上查询到所有祖先部门数组,数组中也要加入orgValue + * 2.查看targetOrgOrPerson是否在1查询到的数组中 + * 故此处应该调用 queryIfOrgOrPersonContainsCurrentUser方法 + * */ + Boolean orgInOrg = queryIfOrgOrPersonContainsCurrentUser( key, token, targetOrgOrPerson, operator, orgValue);//有效参数: targetOrgOrPerson + if(!orgInOrg){ + filteredDataTitleMapList.add(map); + } + } + } + dataTitleMapList = filteredDataTitleMapList; + + }else{//返回所有数据标题 + dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles);//全部数据标题 + } + /*for(TreeMap item : dataTitleMapList){ + System.out.println(item); + }*/ + }else if(leftArr.length==3){// roleid:rootid:4 formField:15:id 1.主表字段条件 2.角色权限条件 + if(leftArr[0].equals("roleid")){ + }else if(leftArr[0].equals("formField")){ + + }else{//不应该存在的东西 + logger.error("数据范围条件查询出现不应该存在的条件---返回空数据标题列表---" + leftOperatorsAndRight+"---"+dataTitleMapList); + dataTitleMapList = new ArrayList<>(); + } + }else if(leftArr.length==4){// formField:44:table1722576832462:input1722576838785 子表字段条件 + + } } catch (Exception e) { - logger.error("数据范围条件查询出现异常直接返回全部数据标题" + leftOperatorsAndRight); - dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles);//数据范围条件查询出现异常直接返回全部数据标题 + e.printStackTrace(); + logger.error("数据范围条件查询出现异常---返回空数据标题列表---" + leftOperatorsAndRight+"---"+dataTitleMapList); + dataTitleMapList = new ArrayList<>(); } }else{//无法处理的情况,直接返回全部数据标题 - dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles); + logger.error("数据范围条件查询出现无法处理的情况---返回空数据标题列表---" + leftOperatorsAndRight+"---"+dataTitleMapList); + dataTitleMapList = new ArrayList<>(); } }else{// == != > < 等符号的情况 if(right.equals("数据拥有者")){ @@ -860,16 +992,16 @@ public class CustomerFormServiceImpl implements CustomerFormService { }else{//返回所有数据标题 dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles);//全部数据标题 } - for(TreeMap item : dataTitleMapList){ + /*for(TreeMap item : dataTitleMapList){ System.out.println(item); - } + }*/ }else if(leftArr.length==3){// roleid:rootid:4 formField:15:id 1.主表字段条件 2.角色权限条件 if(leftArr[0].equals("roleid")){ }else if(leftArr[0].equals("formField")){ }else{//不应该存在的东西 - logger.error("数据范围条件查询出现异常直接返回全部数据标题--不应该存在的东西" + leftOperatorsAndRight); - dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles);//数据范围条件查询出现异常直接返回全部数据标题 + logger.error("数据范围条件查询出现不应该存在的条件---返回空数据标题列表---" + leftOperatorsAndRight+"---"+dataTitleMapList); + dataTitleMapList = new ArrayList<>(); } }else if(leftArr.length==4){// formField:44:table1722576832462:input1722576838785 子表字段条件 @@ -877,8 +1009,8 @@ public class CustomerFormServiceImpl implements CustomerFormService { } catch (Exception e) { e.printStackTrace(); - logger.error("数据范围条件查询出现异常直接返回全部数据标题" + leftOperatorsAndRight); - dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles);//数据范围条件查询出现异常直接返回全部数据标题 + logger.error("数据范围条件查询出现异常---返回空数据标题列表---" + leftOperatorsAndRight+"---"+dataTitleMapList); + dataTitleMapList = new ArrayList<>(); } }else if(operator.equals("!=")){ try { @@ -919,16 +1051,16 @@ public class CustomerFormServiceImpl implements CustomerFormService { }else{//返回所有数据标题 dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles);//全部数据标题 } - for(TreeMap item : dataTitleMapList){ + /*for(TreeMap item : dataTitleMapList){ System.out.println(item); - } + }*/ }else if(leftArr.length==3){// roleid:rootid:4 formField:15:id 1.主表字段条件 2.角色权限条件 if(leftArr[0].equals("roleid")){ }else if(leftArr[0].equals("formField")){ }else{//不应该存在的东西 - logger.error("数据范围条件查询出现异常直接返回全部数据标题--不应该存在的东西" + leftOperatorsAndRight); - dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles);//数据范围条件查询出现异常直接返回全部数据标题 + logger.error("数据范围条件查询出现不应该存在的条件---返回空数据标题列表---" + leftOperatorsAndRight+"---"+dataTitleMapList); + dataTitleMapList = new ArrayList<>(); } }else if(leftArr.length==4){// formField:44:table1722576832462:input1722576838785 子表字段条件 @@ -936,38 +1068,157 @@ public class CustomerFormServiceImpl implements CustomerFormService { } catch (Exception e) { e.printStackTrace(); - logger.error("数据范围条件查询出现异常直接返回全部数据标题" + leftOperatorsAndRight); - dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles);//数据范围条件查询出现异常直接返回全部数据标题 + logger.error("数据范围条件查询出现异常---返回空数据标题列表---" + leftOperatorsAndRight+"---"+dataTitleMapList); + dataTitleMapList = new ArrayList<>(); } }else{//无法处理的情况,直接返回全部数据标题 - dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles); + logger.error("数据范围条件查询出现无法处理的情况---返回空数据标题列表---" + leftOperatorsAndRight+"---"+dataTitleMapList); + dataTitleMapList = new ArrayList<>(); } }else if(right.equals("数据所属部门")){ if(operator.equals("==")){ try { // 可能抛出异常的代码 + String[] leftArr = left.split(":"); + if(leftArr.length==2){//orgOrPerson:102 组织机构条件 例:企管部包含数据拥有者 + String targetOrgOrPerson = leftArr[1]; + + + List> filteredDataTitleMapList = new ArrayList<>(); + //此时条件为数据拥有者owner需判断关联表单是否含有owner字段,若不存在,则不过滤 + boolean org = fieldRecordMapper.checkFieldExists(asfFormName, "org"); + boolean owner = fieldRecordMapper.checkFieldExists(asfFormName, "owner"); + if(owner){//有owner字段 也就是数据拥有者 + //增加owner条件 + toSelectDataTitles.add("owner"); + } + if(org){//有org字段 也就是数据所属部门 + //增加org条件 + toSelectDataTitles.add("org"); + + dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles); + for(TreeMap map :dataTitleMapList){ + if(StringUtils.isBlank(map.get("org").toString())){//本条数据owner为空 + //filteredDataTitleMapList.add(map); + }else{//org有值 + //本条数据的org 值为hr系统orgcont表的id + String orgValue = map.get("org").toString(); + orgValue = "org:"+orgValue; + /*要判断本条数据的orgValue是否在targetOrgOrPerson之内 + * + * 1.orgValue向上查询到所有祖先部门数组,数组中也要加入orgValue + * 2.查看targetOrgOrPerson是否在1查询到的数组中 + * 故此处应该调用 queryIfOrgOrPersonContainsCurrentUser方法 + * */ + Boolean orgEqualsOrg = queryIfOrgOrPersonContainsCurrentUser( key, token, targetOrgOrPerson, operator, orgValue);//有效参数: targetOrgOrPerson + if(orgEqualsOrg){ + filteredDataTitleMapList.add(map); + } + } + } + dataTitleMapList = filteredDataTitleMapList; + + }else{//返回所有数据标题 + dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles);//全部数据标题 + } + /*for(TreeMap item : dataTitleMapList){ + System.out.println(item); + }*/ + }else if(leftArr.length==3){// roleid:rootid:4 formField:15:id 1.主表字段条件 2.角色权限条件 + if(leftArr[0].equals("roleid")){ + }else if(leftArr[0].equals("formField")){ + + }else{//不应该存在的东西 + logger.error("数据范围条件查询出现不应该存在的条件---返回空数据标题列表---" + leftOperatorsAndRight+"---"+dataTitleMapList); + dataTitleMapList = new ArrayList<>(); + } + }else if(leftArr.length==4){// formField:44:table1722576832462:input1722576838785 子表字段条件 + + } } catch (Exception e) { - logger.error("数据范围条件查询出现异常直接返回全部数据标题" + leftOperatorsAndRight); - dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles);//数据范围条件查询出现异常直接返回全部数据标题 + e.printStackTrace(); + logger.error("数据范围条件查询出现异常---返回空数据标题列表---" + leftOperatorsAndRight+"---"+dataTitleMapList); + dataTitleMapList = new ArrayList<>(); } }else if(operator.equals("!=")){ try { // 可能抛出异常的代码 + String[] leftArr = left.split(":"); + if(leftArr.length==2){//orgOrPerson:102 组织机构条件 例:企管部包含数据拥有者 + String targetOrgOrPerson = leftArr[1]; + + + List> filteredDataTitleMapList = new ArrayList<>(); + //此时条件为数据拥有者owner需判断关联表单是否含有owner字段,若不存在,则不过滤 + boolean org = fieldRecordMapper.checkFieldExists(asfFormName, "org"); + boolean owner = fieldRecordMapper.checkFieldExists(asfFormName, "owner"); + if(owner){//有owner字段 也就是数据拥有者 + //增加owner条件 + toSelectDataTitles.add("owner"); + } + if(org){//有org字段 也就是数据所属部门 + //增加org条件 + toSelectDataTitles.add("org"); + + dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles); + for(TreeMap map :dataTitleMapList){ + if(StringUtils.isBlank(map.get("org").toString())){//本条数据owner为空 + //filteredDataTitleMapList.add(map); + }else{//org有值 + //本条数据的org 值为hr系统orgcont表的id + String orgValue = map.get("org").toString(); + orgValue = "org:"+orgValue; + /*要判断本条数据的orgValue是否在targetOrgOrPerson之内 + * + * 1.orgValue向上查询到所有祖先部门数组,数组中也要加入orgValue + * 2.查看targetOrgOrPerson是否在1查询到的数组中 + * 故此处应该调用 queryIfOrgOrPersonContainsCurrentUser方法 + * */ + Boolean orgEqualsOrg = queryIfOrgOrPersonContainsCurrentUser( key, token, targetOrgOrPerson, operator, orgValue);//有效参数: targetOrgOrPerson + if(!orgEqualsOrg){ + filteredDataTitleMapList.add(map); + } + } + } + dataTitleMapList = filteredDataTitleMapList; + + }else{//返回所有数据标题 + dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles);//全部数据标题 + } + /*for(TreeMap item : dataTitleMapList){ + System.out.println(item); + }*/ + }else if(leftArr.length==3){// roleid:rootid:4 formField:15:id 1.主表字段条件 2.角色权限条件 + if(leftArr[0].equals("roleid")){ + }else if(leftArr[0].equals("formField")){ + + }else{//不应该存在的东西 + + logger.error("数据范围条件查询出现不应该出现的条件---返回空数据标题列表---" + leftOperatorsAndRight+"---"+dataTitleMapList); + dataTitleMapList = new ArrayList<>(); + } + }else if(leftArr.length==4){// formField:44:table1722576832462:input1722576838785 子表字段条件 + + } } catch (Exception e) { - logger.error("数据范围条件查询出现异常直接返回全部数据标题" + leftOperatorsAndRight); - dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles);//数据范围条件查询出现异常直接返回全部数据标题 + e.printStackTrace(); + logger.error("数据范围条件查询出现异常---返回空数据标题列表---" + leftOperatorsAndRight+"---"+dataTitleMapList); + dataTitleMapList = new ArrayList<>(); } }else{//无法处理的情况,直接返回全部数据标题 - logger.error("数据范围条件查询出现异常直接返回全部数据标题" + leftOperatorsAndRight); - dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles); + logger.error("数据范围条件查询出现无法处理的情况---返回空数据标题列表---" + leftOperatorsAndRight+"---"+dataTitleMapList); + dataTitleMapList = new ArrayList<>(); } }else{//这边对于数字的情况>,>=,<,<=是生效的,文字的情况则不生效,==和!=条件必定生效 try { - // 可能抛出异常的代码 - int a = 1/0; + System.out.println(right+"----"+operator+"----"+left); + + } catch (Exception e) { - logger.error("数据范围条件查询出现异常直接返回全部数据标题" + leftOperatorsAndRight); - dataTitleMapList = getDataTitles(asfFormName,toSelectDataTitles);//数据范围条件查询出现异常直接返回全部数据标题 + e.printStackTrace(); + logger.error("数据范围条件查询出现异常---返回空数据标题列表---" + leftOperatorsAndRight+"---"+dataTitleMapList); + dataTitleMapList = new ArrayList<>(); + } } } @@ -1042,11 +1293,12 @@ public class CustomerFormServiceImpl implements CustomerFormService { List> newDataTitles = new ArrayList<>(); List> dataTitles = fieldRecordMapper.getDataTitles(asfFormName, toSelectDataTitles); //没有owner的,creater的key改为owner,有owner但owner为空的,creater的value给owner + //没有org的 processDataTitles(dataTitles); return dataTitles; } - public static void processDataTitles(List> dataTitles) { + public void processDataTitles(List> dataTitles) { for (TreeMap map : dataTitles) { if (!map.containsKey("owner")) { Object creatorValue = map.get("creater"); @@ -1056,6 +1308,23 @@ public class CustomerFormServiceImpl implements CustomerFormService { } else if(map.get("owner") != null&&StringUtils.isBlank(map.get("owner").toString())){ map.put("owner", map.get("creater")); } + + if (!map.containsKey("org")) { + Object creatorValue = map.get("creater"); + String maindeparment = userService.getManContByKey(creatorValue.toString()).getMaindeparment().toString(); + Object maindeparmentObj = maindeparment; + map.put("org", maindeparment); + } else if (map.get("org") == null) { + Object creatorValue = map.get("creater"); + String maindeparment = userService.getManContByKey(creatorValue.toString()).getMaindeparment().toString(); + Object maindeparmentObj = maindeparment; + map.put("org", maindeparmentObj); + } else if(map.get("org") != null&&StringUtils.isBlank(map.get("org").toString())){ + Object creatorValue = map.get("creater"); + String maindeparment = userService.getManContByKey(creatorValue.toString()).getMaindeparment().toString(); + Object maindeparmentObj = maindeparment; + map.put("org", maindeparmentObj); + } } } @@ -1263,9 +1532,37 @@ public class CustomerFormServiceImpl implements CustomerFormService { } - }/*else if(){ + }else if(rightArr[0].equals("org")){ + //System.out.println(targetOrgOrPerson+"-----"+condition+"-----"+right); + if(condition.equals("==")||condition.equals("!=")){ + System.out.println(targetOrgOrPerson+"-----"+condition+"-----"+right); + if(rightArr[1].equals(targetOrgOrPerson)){ + return true; + }else{ + return false; + } + }else{ + //System.out.println(targetOrgOrPerson+"-----"+condition+"-----"+right); + String orgId = rightArr[1]; + Tree orgAndManTree = hrService.getOrgAndManTree(); + //所有祖先部门 + List ancestorIds = orgAndManTree.getAncestorIds(orgId); + ancestorIds.add(orgId); + int count = 0; + for(String str : ancestorIds){ + if(str.equals(targetOrgOrPerson)){ + count++; + } + } + //count=0代表owner不在指定的部门内 + if(count==0){ + return false; + }else{ + return true; + } + } - }*/else{ + }else{ logger.error("queryIfOrgOrPersonContainsCurrentUser的参数right的值走到了else分支"); return false; }