实现功能:前提:confMember是sysUser的子集。java
实现:一、将confMember中的人员的isChecked=true;数组
二、将除了conMember的sysUser数据拼装到;ide
三、将拼装的参数对应到conMember中,返回拼装好的conMemberList。code
报错代码: index:1,size:1 或 index:0,size:0get
//商户获取的部门人员列表:做对比,商户人员和本地人员作对比,本地人员有的选中 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的setit
缘由:一、confMemberList.size()有 本身的大小长度而且固定class
二、sysUser.size()大于confMemberList.size()长度配置
三、当 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溢出数组List