实现功能:前提:confMember是sysUser的子集。
实现:1、将confMember中的人员的isChecked=true;
2、将除了conMember的sysUser数据拼装到;
3、将拼装的参数对应到conMember中,返回拼装好的conMemberList。
报错代码: index:1,size:1 或 index:0,size:0
//商户获取的部门人员列表:作对比,商户人员和本地人员做对比,本地人员有的选中
List<SysUser> sysUsers = securityWebAdminProvider.listByDeptIdWithFilter(confGroup.getDeptId(), AdminConstants.SysRoleType.CASHLOAN_AUDIT_NORMAL, false, true);
if (sysUsers == null) {
logger.error("deptId:{},部门审核人员为空", confGroup.getDeptId());
return new BaseObjResponse<AllocateDetailDto>(RespConstants.GLOBAL_INNER_ERROR);
}
if (confMemberList == null) {
logger.error("groupId:{},查询用户配置不存在", groupId);
return new BaseObjResponse<AllocateDetailDto>(RespConstants.GLOBAL_INNER_ERROR);
}
if (!confMemberList.isEmpty()) {
for (int i = 0; i < sysUsers.size(); i++) {
for (int j = 0; j < confMemberList.size(); j++) {
logger.error("memberId:{},商户审核人员", sysUsers.get(i).getId());
if (sysUsers.get(i).getId().equals(confMemberList.get(j).getMemberId())) {
confMemberList.get(i).setMemberId(confMemberList.get(j).getMemberId());
confMemberList.get(i).setMemberName(confMemberList.get(j).getMemberName());
confMemberList.get(i).setIsChecked(true);
break;
} else {
confMemberList.get(i).setMemberId(sysUsers.get(i).getId());
confMemberList.get(i).setMemberName(sysUsers.get(i).getName());
confMemberList.get(i).setIsChecked(false);
}
}
}
}
分析:其实这是一段错误的conMemberList的set
原因:1、confMemberList.size()有 自己的大小长度并且固定
2、sysUser.size()大于confMemberList.size()长度
3、当 sysUser.size()大于confMemberList.size()长度时候,继续confMemberList.get(i).setMemberId(confMemberList.get(j).getMemberId());会 导致溢出报错。也就是上面的报错信息。比如:sysUser.size()=2;confMemberList.size()=1;当继续执行confMemberList.get(2).setMemberId(confMemberList.get(j).getMemberId()); 但是conMemberList.size()=1,2>1溢出数组
欢迎加入 ****技术交流群:QQ群:681223095,方便问题讨论。博主不一定长期在线,但是qq群里会有很多热心的小伙伴,大家一起讨论解决问题。
关注公众号,更多学习内容给予推送,争取每日更新