public Map<String,Set<String>> getDepGroupList(List<String> orgIdList) { Map<String,Set<String>> resMap = new HashMap<>(2); Set<String> depcodes = new HashSet<>(); Set<String> groupcodes = new HashSet<>(); List<SmsOrgEntity> orgList = smsOrgService.list(new LambdaQueryWrapper<SmsOrgEntity>().in(SmsOrgEntity::getId, orgIdList)); orgList.forEach(org -> { String depcode = ""; String groupcode = ""; if ("5".equals(org.getLevelcode())) { groupcode = org.getOrgcode(); } if ("4".equals(org.getLevelcode())) { depcode = org.getOrgcode(); } if (StrUtil.isEmpty(depcode) || StrUtil.isEmpty(groupcode)) { String[] orgArr = forGetDepGroupCode(depcode, groupcode, org.getSupercode()); depcode = orgArr[0]; groupcode = orgArr[1]; } if (!StrUtil.isBlank(depcode)) { depcodes.add(depcode); } if (!StrUtil.isBlank(groupcode)) { groupcodes.add(groupcode); } }); resMap.put("depcodes", depcodes); resMap.put("groupcodes", groupcodes); return resMap; } /** * 递归获取部门code和小组code * @param depcode 部门code * @param groupcode 小组code * @param parentCode 父组织code */ public String[] forGetDepGroupCode(String depcode, String groupcode, String parentCode) { if (StrUtil.isEmpty(parentCode)) { return new String[]{depcode, groupcode}; } SmsOrgEntity org = smsOrgService.getOne(new LambdaQueryWrapper<SmsOrgEntity>().eq(SmsOrgEntity::getOrgcode, parentCode)); if (ObjectUtil.isEmpty(org)) { return new String[]{depcode, groupcode}; } if ("5".equals(org.getLevelcode())) { groupcode = org.getOrgcode(); } if ("4".equals(org.getLevelcode())) { depcode = org.getOrgcode(); } if (StrUtil.isEmpty(depcode) || StrUtil.isEmpty(groupcode)) { String[] orgArr = forGetDepGroupCode(depcode, groupcode, org.getSupercode()); depcode = orgArr[0]; groupcode = orgArr[1]; } return new String[]{depcode, groupcode}; }
时间: 2024-02-14 10:25:07 浏览: 124
这段代码是一个Java方法,用于根据给定的orgIdList获取部门code和小组code的映射关系。方法中首先创建了一个空的HashMap作为结果集,然后定义了两个HashSet用于存储部门code和小组code。接下来通过orgIdList查询对应的SmsOrgEntity对象列表,并对列表进行遍历。在遍历过程中,根据SmsOrgEntity对象的levelcode属性判断其是部门还是小组,然后将对应的orgcode赋值给depcode或groupcode。如果depcode或groupcode为空,则调用forGetDepGroupCode方法递归获取depcode和groupcode。最后将depcode和groupcode添加到对应的HashSet中,并将HashSet添加到结果集中返回。
forGetDepGroupCode方法是一个递归方法,用于根据父组织code获取部门code和小组code。方法首先判断parentCode是否为空,如果为空则直接返回depcode和groupcode。否则根据parentCode查询对应的SmsOrgEntity对象,然后根据levelcode属性判断其是部门还是小组,并将对应的orgcode赋值给depcode或groupcode。如果depcode或groupcode为空,则调用自身递归获取depcode和groupcode。最后返回depcode和groupcode。
这段代码的作用是根据给定的orgIdList获取部门code和小组code的映射关系,并以Map形式返回。其中使用了递归方法forGetDepGroupCode来处理父组织code获取子组织code的情况。
阅读全文