|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult; | 
|---|
|  |  |  | import com.doumee.biz.system.SystemDictDataBiz; | 
|---|
|  |  |  | import com.doumee.biz.zbom.model.IamUserRoleModel; | 
|---|
|  |  |  | import com.doumee.biz.zbom.model.IamUserTypeModel; | 
|---|
|  |  |  | import com.doumee.config.Jwt.JwtPayLoad; | 
|---|
|  |  |  | import com.doumee.config.Jwt.JwtTokenUtil; | 
|---|
|  |  |  | import com.doumee.core.annotation.excel.ExcelImporter; | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private void dealUserDataBiz(List<UserImport> finalDataList, Date date, LoginUserInfo loginUserInfo) { | 
|---|
|  |  |  | private void dealUserDataBiz(List<UserImport> dataList, Date date, LoginUserInfo loginUserInfo) { | 
|---|
|  |  |  | try { | 
|---|
|  |  |  | List<Users> list =  usersMapper.selectJoinList(Users.class,new MPJLambdaWrapper<Users>() | 
|---|
|  |  |  | .selectAll(Users.class) | 
|---|
|  |  |  | ); | 
|---|
|  |  |  | List<Users> insertList = new ArrayList<>(); | 
|---|
|  |  |  | List<Users> updateList = new ArrayList<>(); | 
|---|
|  |  |  | for(int i=0;i<dataList.size();i++){ | 
|---|
|  |  |  | UserImport model = dataList.get(i); | 
|---|
|  |  |  | if(StringUtils.isBlank(model.getName()) | 
|---|
|  |  |  | &&StringUtils.isBlank(model.getCode()) ){ | 
|---|
|  |  |  | continue; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | Users user = checkModelParam(model,insertList,updateList,i,loginUserInfo,list,date); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(insertList .size() >0){ | 
|---|
|  |  |  | int temp = 0; | 
|---|
|  |  |  | while(temp < insertList.size()){ | 
|---|
|  |  |  | int index; | 
|---|
|  |  |  | if(temp + 500 <= insertList.size()){ | 
|---|
|  |  |  | index = temp+500; | 
|---|
|  |  |  | }else{ | 
|---|
|  |  |  | index = insertList.size(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | usersMapper.insert(insertList.subList(temp,index)); | 
|---|
|  |  |  | temp = index; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(updateList .size() >0){ | 
|---|
|  |  |  | for(Users s : updateList){ | 
|---|
|  |  |  | //遍历更新数据 | 
|---|
|  |  |  | usersMapper.updateById(s); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }catch (BusinessException e){ | 
|---|
|  |  |  | throw e; | 
|---|
|  |  |  | }catch (Exception e){ | 
|---|
|  |  |  | throw  new BusinessException(ResponseStatus.SERVER_ERROR.getCode(),"信息导入失败,请稍后重试"); | 
|---|
|  |  |  | }finally { | 
|---|
|  |  |  | executor.shutdown(); | 
|---|
|  |  |  | redisTemplate.delete(Constants.RedisKeys.IMPORTING_USERS); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | private Users getUserByUserID(String userId, List<Users> list) { | 
|---|
|  |  |  | if(list ==null || list.size() ==0){ | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | for(Users s :list){ | 
|---|
|  |  |  | if(StringUtils.equals(s.getIamId(),userId)){ | 
|---|
|  |  |  | return s; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private Users checkModelParam(UserImport model, List<Users> insertList, List<Users> updateList, int index, LoginUserInfo loginUserInfo, List<Users> list, Date date) { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if(StringUtils.isBlank(model.getUserId())){ | 
|---|
|  |  |  | throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,第"+(index+3)+"行【编码】信息不完整,请检查表格内容!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(StringUtils.isBlank(model.getName())){ | 
|---|
|  |  |  | throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,第"+(index+3)+"行【姓名】信息不完整,请检查表格内容!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(StringUtils.isBlank(model.getAccountNo())){ | 
|---|
|  |  |  | throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,第"+(index+3)+"行【登录账号】信息不完整,请检查表格内容!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if(StringUtils.isBlank(model.getPhone())){ | 
|---|
|  |  |  | throw  new BusinessException(ResponseStatus.BAD_REQUEST.getCode(),"对不起,第"+(index+3)+"行【手机号】信息不完整,请检查表格内容!"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | Users users = getUserByUserID(model.getUserId(),list); | 
|---|
|  |  |  | if(users == null){ | 
|---|
|  |  |  | users = new Users(); | 
|---|
|  |  |  | users.setCreator(loginUserInfo.getId()); | 
|---|
|  |  |  | users.setCreateDate(date); | 
|---|
|  |  |  | initUsersInfo(users,model,date,loginUserInfo); | 
|---|
|  |  |  | insertList.add(users); | 
|---|
|  |  |  | }else { | 
|---|
|  |  |  | initUsersInfo(users,model,date,loginUserInfo); | 
|---|
|  |  |  | updateList.add(users); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return  users; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private void initUsersInfo(Users users, UserImport model,Date date,LoginUserInfo loginUserInfo ){ | 
|---|
|  |  |  | users.setEditor(loginUserInfo.getId()); | 
|---|
|  |  |  | users.setEditDate(date); | 
|---|
|  |  |  | users.setName(model.getName()); | 
|---|
|  |  |  | users.setIamUsername(model.getAccountNo()); | 
|---|
|  |  |  | users.setPhone(model.getPhone()); | 
|---|
|  |  |  | users.setStatus(model.getStatus()); | 
|---|
|  |  |  | users.setEmail(model.getEmail()); | 
|---|
|  |  |  | users.setIamId(model.getUserId()); | 
|---|
|  |  |  | users.setCode(model.getCode()); | 
|---|
|  |  |  | users.setSex(model.getSex()); | 
|---|
|  |  |  | users.setStatus(model.getStatus()); | 
|---|
|  |  |  | users.setIsdeleted(Constants.ZERO); | 
|---|
|  |  |  | users.setRoleIds(""); | 
|---|
|  |  |  | users.setRoleNames(""); | 
|---|
|  |  |  | users.setRoleCodes(""); | 
|---|
|  |  |  | users.setUserTypes(""); | 
|---|
|  |  |  | users.setIamOrgId(""); | 
|---|
|  |  |  | getDepartidByParam(users,model.getOrgIds()); | 
|---|
|  |  |  | setRolesInfo(users,model); | 
|---|
|  |  |  | getUserTypesByParam(users,model.getTypeCodes()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private String getUserTypesByParam(Users users,String typeCodes) { | 
|---|
|  |  |  | if( typeCodes !=null){ | 
|---|
|  |  |  | String[] codes =typeCodes.split(","); | 
|---|
|  |  |  | for(String t : codes){ | 
|---|
|  |  |  | if(StringUtils.isBlank(users.getUserTypes())){ | 
|---|
|  |  |  | users.setUserTypes(""); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | users.setUserTypes(users.getUserTypes()+"["+t+"];"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return  users.getUserTypes(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private void setRolesInfo(Users users, UserImport model) { | 
|---|
|  |  |  | if( model.getRoleCodes() !=null){ | 
|---|
|  |  |  | String[] codes = model.getRoleCodes().split(","); | 
|---|
|  |  |  | for(String t : codes){ | 
|---|
|  |  |  | if(StringUtils.isBlank(users.getRoleCodes())){ | 
|---|
|  |  |  | users.setRoleCodes(""); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | users.setRoleCodes(users.getRoleCodes()+"["+t+"];"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if( model.getRoleIds() !=null){ | 
|---|
|  |  |  | String[] codes = model.getRoleIds().split(","); | 
|---|
|  |  |  | for(String t : codes){ | 
|---|
|  |  |  | if(StringUtils.isBlank(users.getRoleIds())){ | 
|---|
|  |  |  | users.setRoleIds(""); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | users.setRoleIds(users.getRoleIds()+"["+t+"];"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if( model.getRoleNames() !=null){ | 
|---|
|  |  |  | String[] codes = model.getRoleNames().split(","); | 
|---|
|  |  |  | for(String t : codes){ | 
|---|
|  |  |  | if(StringUtils.isBlank(users.getRoleNames())){ | 
|---|
|  |  |  | users.setRoleNames(""); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | users.setRoleNames(users.getRoleNames()+"["+t+"];"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | private Shop getDepartidByParam(Users users , String orgIds) { | 
|---|
|  |  |  | if( orgIds ==null){ | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | String[] orgArray = orgIds.split(","); | 
|---|
|  |  |  | if( orgArray !=null && orgArray.length>0){ | 
|---|
|  |  |  | for(String t : orgArray){ | 
|---|
|  |  |  | Shop shop = shopMapper.selectOne(new QueryWrapper<Shop>().lambda() | 
|---|
|  |  |  | .eq(Shop::getOrgId,t) | 
|---|
|  |  |  | .last("limit 1")); | 
|---|
|  |  |  | if(shop!=null) { | 
|---|
|  |  |  | users.setIamOrgId(t); | 
|---|
|  |  |  | users.setDepartmentId(shop.getId()); | 
|---|
|  |  |  | return  shop; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | users.setIamOrgId(orgIds+"--尚未同步到组织"); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|