mirror of https://gitee.com/xiaonuobase/snowy
【更新】用户导入,待完善
parent
2056089ed9
commit
55a02c6053
|
@ -234,6 +234,7 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
|
||||||
|
|
||||||
public String findOrgIdByOrgName(String parentId, Iterator<String> iterator, List<SysOrg> cachedAllOrgList, List<Tree<String>> treeList) {
|
public String findOrgIdByOrgName(String parentId, Iterator<String> iterator, List<SysOrg> cachedAllOrgList, List<Tree<String>> treeList) {
|
||||||
String next = iterator.next();
|
String next = iterator.next();
|
||||||
|
// TODO
|
||||||
List<Tree<String>> findList = treeList.stream().filter(tree -> tree.getName().equals(next)).collect(Collectors.toList());
|
List<Tree<String>> findList = treeList.stream().filter(tree -> tree.getName().equals(next)).collect(Collectors.toList());
|
||||||
if(ObjectUtil.isNotEmpty(findList)) {
|
if(ObjectUtil.isNotEmpty(findList)) {
|
||||||
if(iterator.hasNext()) {
|
if(iterator.hasNext()) {
|
||||||
|
@ -250,7 +251,7 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
|
||||||
sysOrg.setCategory(parentId.equals("0")?SysOrgCategoryEnum.COMPANY.getValue():SysOrgCategoryEnum.DEPT.getValue());
|
sysOrg.setCategory(parentId.equals("0")?SysOrgCategoryEnum.COMPANY.getValue():SysOrgCategoryEnum.DEPT.getValue());
|
||||||
sysOrg.setSortCode(99);
|
sysOrg.setSortCode(99);
|
||||||
this.save(sysOrg);
|
this.save(sysOrg);
|
||||||
// 发布增加事件
|
// TODO 发布增加事件
|
||||||
CommonDataChangeEventCenter.doAddWithData(SysDataTypeEnum.ORG.getValue(), JSONUtil.createArray().put(sysOrg));
|
CommonDataChangeEventCenter.doAddWithData(SysDataTypeEnum.ORG.getValue(), JSONUtil.createArray().put(sysOrg));
|
||||||
// 将该机构加入缓存
|
// 将该机构加入缓存
|
||||||
cachedAllOrgList.add(sysOrg);
|
cachedAllOrgList.add(sysOrg);
|
||||||
|
@ -301,7 +302,7 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
|
||||||
lambdaQueryWrapper.select(SysUser::getId, SysUser::getOrgId, SysUser::getAccount, SysUser::getName, SysUser::getSortCode);
|
lambdaQueryWrapper.select(SysUser::getId, SysUser::getOrgId, SysUser::getAccount, SysUser::getName, SysUser::getSortCode);
|
||||||
// 如果查询条件为空,则从缓存中查询
|
// 如果查询条件为空,则从缓存中查询
|
||||||
if(ObjectUtil.isAllEmpty(sysOrgSelectorUserParam.getOrgId(), sysOrgSelectorUserParam.getSearchKey())) {
|
if(ObjectUtil.isAllEmpty(sysOrgSelectorUserParam.getOrgId(), sysOrgSelectorUserParam.getSearchKey())) {
|
||||||
return sysUserService.getCachedAllUserList();
|
return sysUserService.getCachedAllUserSelectorList();
|
||||||
} else {
|
} else {
|
||||||
if(ObjectUtil.isNotEmpty(sysOrgSelectorUserParam.getOrgId())) {
|
if(ObjectUtil.isNotEmpty(sysOrgSelectorUserParam.getOrgId())) {
|
||||||
// 如果机构id不为空,则查询该机构所在顶级机构下的所有人
|
// 如果机构id不为空,则查询该机构所在顶级机构下的所有人
|
||||||
|
|
|
@ -436,7 +436,7 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
|
||||||
lambdaQueryWrapper.select(SysUser::getId, SysUser::getOrgId, SysUser::getAccount, SysUser::getName, SysUser::getSortCode);
|
lambdaQueryWrapper.select(SysUser::getId, SysUser::getOrgId, SysUser::getAccount, SysUser::getName, SysUser::getSortCode);
|
||||||
// 如果查询条件为空,则从缓存中查询
|
// 如果查询条件为空,则从缓存中查询
|
||||||
if(ObjectUtil.isAllEmpty(sysRoleSelectorUserParam.getOrgId(), sysRoleSelectorUserParam.getSearchKey())) {
|
if(ObjectUtil.isAllEmpty(sysRoleSelectorUserParam.getOrgId(), sysRoleSelectorUserParam.getSearchKey())) {
|
||||||
return sysUserService.getCachedAllUserList();
|
return sysUserService.getCachedAllUserSelectorList();
|
||||||
} else {
|
} else {
|
||||||
if (ObjectUtil.isNotEmpty(sysRoleSelectorUserParam.getOrgId())) {
|
if (ObjectUtil.isNotEmpty(sysRoleSelectorUserParam.getOrgId())) {
|
||||||
// 如果机构id不为空,则查询该机构所在顶级机构下的所有人
|
// 如果机构id不为空,则查询该机构所在顶级机构下的所有人
|
||||||
|
|
|
@ -381,12 +381,12 @@ public interface SysUserService extends IService<SysUser> {
|
||||||
List<SysUserPositionResult> loginPositionInfo(SysUserIdParam sysUserIdParam);
|
List<SysUserPositionResult> loginPositionInfo(SysUserIdParam sysUserIdParam);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取缓存的所有用户
|
* 获取缓存的所有用户选择器
|
||||||
*
|
*
|
||||||
* @author xuyuxiang
|
* @author xuyuxiang
|
||||||
* @date 2022/7/25 19:42
|
* @date 2022/7/25 19:42
|
||||||
**/
|
**/
|
||||||
List<SysUser> getCachedAllUserList();
|
List<SysUser> getCachedAllUserSelectorList();
|
||||||
|
|
||||||
/* ====用户部分所需要用到的选择器==== */
|
/* ====用户部分所需要用到的选择器==== */
|
||||||
|
|
||||||
|
|
|
@ -986,10 +986,11 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
||||||
int successCount = 0;
|
int successCount = 0;
|
||||||
int errorCount = 0;
|
int errorCount = 0;
|
||||||
JSONArray errorDetail = JSONUtil.createArray();
|
JSONArray errorDetail = JSONUtil.createArray();
|
||||||
List<SysUserImportParam> sysUserImportParamList = EasyExcel.read("D://import.xlsx")
|
List<SysUserImportParam> sysUserImportParamList = EasyExcel.read("D://userImportTemplate.xlsx")
|
||||||
.head(SysUserImportParam.class).sheet().headRowNumber(2).doReadSync();
|
.head(SysUserImportParam.class).sheet().headRowNumber(2).doReadSync();
|
||||||
|
List<SysUser> allUserList = this.list();
|
||||||
for (int i = 0; i < sysUserImportParamList.size(); i++) {
|
for (int i = 0; i < sysUserImportParamList.size(); i++) {
|
||||||
JSONObject jsonObject = this.doImport(sysUserImportParamList.get(i), i);
|
JSONObject jsonObject = this.doImport(allUserList, sysUserImportParamList.get(i), i);
|
||||||
if(jsonObject.getBool("success")) {
|
if(jsonObject.getBool("success")) {
|
||||||
successCount += 1;
|
successCount += 1;
|
||||||
} else{
|
} else{
|
||||||
|
@ -1014,81 +1015,121 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
||||||
* @author xuyuxiang
|
* @author xuyuxiang
|
||||||
* @date 2023/3/7 13:22
|
* @date 2023/3/7 13:22
|
||||||
**/
|
**/
|
||||||
public JSONObject doImport(SysUserImportParam sysUserImportParam, int i) {
|
public JSONObject doImport(List<SysUser> allUserList, SysUserImportParam sysUserImportParam, int i) {
|
||||||
String account = sysUserImportParam.getAccount();
|
String account = sysUserImportParam.getAccount();
|
||||||
String name = sysUserImportParam.getName();
|
String name = sysUserImportParam.getName();
|
||||||
String orgName = sysUserImportParam.getOrgName();
|
String orgFullName = sysUserImportParam.getOrgName();
|
||||||
String positionName = sysUserImportParam.getPositionName();
|
String positionFullName = sysUserImportParam.getPositionName();
|
||||||
if(ObjectUtil.hasEmpty(account, name, orgName, positionName)) {
|
// 校验必填参数
|
||||||
|
if(ObjectUtil.hasEmpty(account, name, orgFullName, positionFullName)) {
|
||||||
return JSONUtil.createObj().set("index", i + 1).set("success", false).set("msg", "必填字段存在空值");
|
return JSONUtil.createObj().set("index", i + 1).set("success", false).set("msg", "必填字段存在空值");
|
||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
List<SysUser> cachedAllUserList = this.getCachedAllUserList();
|
// 机构名称
|
||||||
String orgId = sysOrgService.getOrgIdByOrgFullNameWithCreate(sysUserImportParam.getOrgName());
|
String orgName = CollectionUtil.getLast(StrUtil.split(orgFullName, StrUtil.DASHED));
|
||||||
String positionId = sysPositionService.getPositionIdByPositionNameWithCreate(orgId, sysUserImportParam.getPositionName());
|
// 职位名称
|
||||||
SysUser sysUser = this.getOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getAccount, account));
|
String positionName = CollectionUtil.getLast(StrUtil.split(positionFullName, StrUtil.DASHED));
|
||||||
|
// 机构id
|
||||||
|
String orgId = sysOrgService.getOrgIdByOrgFullNameWithCreate(orgFullName);
|
||||||
|
// 职位id
|
||||||
|
String positionId = sysPositionService.getPositionIdByPositionNameWithCreate(orgId, positionFullName);
|
||||||
|
|
||||||
|
// 查找账号对应索引
|
||||||
|
int index = CollStreamUtil.toList(allUserList, SysUser::getAccount).indexOf(account);
|
||||||
|
SysUser sysUser = new SysUser();
|
||||||
boolean isAdd = false;
|
boolean isAdd = false;
|
||||||
String existUserId = null;
|
if(index == -1) {
|
||||||
if(ObjectUtil.isEmpty(sysUser)) {
|
|
||||||
sysUser = new SysUser();
|
|
||||||
isAdd = true;
|
isAdd = true;
|
||||||
} else {
|
} else {
|
||||||
existUserId = sysUser.getId();
|
sysUser = allUserList.get(index);
|
||||||
}
|
}
|
||||||
String phone = sysUser.getPhone();
|
|
||||||
String email = sysUser.getEmail();
|
// 获取手机号和邮箱
|
||||||
// 拷贝属性
|
String phone = sysUserImportParam.getPhone();
|
||||||
BeanUtil.copyProperties(sysUserImportParam, sysUser);
|
String email = sysUserImportParam.getEmail();
|
||||||
sysUser.setOrgId(orgId);
|
|
||||||
sysUser.setPositionId(positionId);
|
|
||||||
// 判断手机号是否跟系统现有的重复
|
// 判断手机号是否跟系统现有的重复
|
||||||
if(ObjectUtil.isNotEmpty(phone)) {
|
if(ObjectUtil.isNotEmpty(phone)) {
|
||||||
if(isAdd) {
|
if(isAdd) {
|
||||||
boolean repeatPhone = cachedAllUserList.stream().anyMatch(tempSysUser -> ObjectUtil
|
boolean repeatPhone = allUserList.stream().anyMatch(tempSysUser -> ObjectUtil
|
||||||
.isNotEmpty(tempSysUser.getPhone()) && tempSysUser.getPhone().equals(phone));
|
.isNotEmpty(tempSysUser.getPhone()) && tempSysUser.getPhone().equals(phone));
|
||||||
if(repeatPhone) {
|
if(repeatPhone) {
|
||||||
sysUser.setPhone(null);
|
// 新增用户手机号重复则不导入该手机号
|
||||||
|
sysUserImportParam.setPhone(null);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
String finalExistUserId = existUserId;
|
String finalExistUserId = sysUser.getId();
|
||||||
boolean repeatPhone = cachedAllUserList.stream().anyMatch(tempSysUser -> ObjectUtil
|
boolean repeatPhone = allUserList.stream().anyMatch(tempSysUser -> ObjectUtil
|
||||||
.isNotEmpty(tempSysUser.getPhone()) && tempSysUser.getPhone()
|
.isNotEmpty(tempSysUser.getPhone()) && tempSysUser.getPhone()
|
||||||
.equals(phone) && !tempSysUser.getId().equals(finalExistUserId));
|
.equals(phone) && !tempSysUser.getId().equals(finalExistUserId));
|
||||||
if(repeatPhone) {
|
if(repeatPhone) {
|
||||||
sysUser.setPhone(phone);
|
// 更新用户手机号重复则使用原手机号
|
||||||
|
sysUser.setPhone(sysUser.getPhone());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// 判断邮箱是否跟系统现有的重复
|
// 判断邮箱是否跟系统现有的重复
|
||||||
if(ObjectUtil.isNotEmpty(email)) {
|
if(ObjectUtil.isNotEmpty(email)) {
|
||||||
if(isAdd) {
|
if(isAdd) {
|
||||||
boolean repeatPhone = cachedAllUserList.stream().anyMatch(tempSysUser -> ObjectUtil
|
boolean repeatEmail = allUserList.stream().anyMatch(tempSysUser -> ObjectUtil
|
||||||
.isNotEmpty(tempSysUser.getEmail()) && tempSysUser.getEmail().equals(email));
|
.isNotEmpty(tempSysUser.getEmail()) && tempSysUser.getEmail().equals(email));
|
||||||
if(repeatPhone) {
|
if(repeatEmail) {
|
||||||
sysUser.setPhone(null);
|
// 新增邮箱重复则不导入该邮箱
|
||||||
|
sysUserImportParam.setEmail(null);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
String finalExistUserId = existUserId;
|
String finalExistUserId = sysUser.getId();
|
||||||
boolean repeatPhone = cachedAllUserList.stream().anyMatch(tempSysUser -> ObjectUtil
|
boolean repeatEmail = allUserList.stream().anyMatch(tempSysUser -> ObjectUtil
|
||||||
.isNotEmpty(tempSysUser.getEmail()) && tempSysUser.getEmail()
|
.isNotEmpty(tempSysUser.getEmail()) && tempSysUser.getEmail()
|
||||||
.equals(email) && !tempSysUser.getId().equals(finalExistUserId));
|
.equals(email) && !tempSysUser.getId().equals(finalExistUserId));
|
||||||
if(repeatPhone) {
|
if(repeatEmail) {
|
||||||
sysUser.setPhone(email);
|
// 更新用户手机号重复则使用原邮箱
|
||||||
|
sysUser.setEmail(sysUser.getEmail());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.saveOrUpdate(sysUser);
|
// 拷贝属性
|
||||||
|
BeanUtil.copyProperties(sysUserImportParam, sysUser);
|
||||||
|
|
||||||
|
// 设置机构id和职位id
|
||||||
|
sysUser.setOrgId(orgId);
|
||||||
|
sysUser.setPositionId(positionId);
|
||||||
|
|
||||||
|
// 设置机构名称和职位名称(暂时无作用)
|
||||||
|
sysUser.setOrgName(orgName);
|
||||||
|
sysUser.setPositionName(positionName);
|
||||||
|
|
||||||
|
// 发布事件
|
||||||
|
if(isAdd) {
|
||||||
|
// 设置id
|
||||||
|
sysUser.setId(IdWorker.getIdStr());
|
||||||
|
// 设置默认头像
|
||||||
|
sysUser.setAvatar(CommonAvatarUtil.generateImg(sysUser.getName()));
|
||||||
|
// 设置默认密码
|
||||||
|
sysUser.setPassword(CommonCryptogramUtil.doHashValue(devConfigApi.getValueByKey(SNOWY_SYS_DEFAULT_PASSWORD_KEY)));
|
||||||
|
// 设置状态
|
||||||
|
sysUser.setUserStatus(SysUserStatusEnum.ENABLE.getValue());
|
||||||
// 发布增加事件
|
// 发布增加事件
|
||||||
CommonDataChangeEventCenter.doAddWithData(SysDataTypeEnum.ORG.getValue(), JSONUtil.createArray().put(sysUser));
|
CommonDataChangeEventCenter.doAddWithData(SysDataTypeEnum.USER.getValue(), JSONUtil.createArray().put(sysUser));
|
||||||
// 将该用户加入缓存
|
// 更新全部用户
|
||||||
cachedAllUserList.add(sysUser);
|
allUserList.add(sysUser);
|
||||||
// 更新缓存
|
} else {
|
||||||
commonCacheOperator.put(USER_CACHE_ALL_KEY, cachedAllUserList);
|
// 发布更新事件
|
||||||
|
CommonDataChangeEventCenter.doUpdateWithData(SysDataTypeEnum.USER.getValue(), JSONUtil.createArray().put(sysUser));
|
||||||
|
// 删除指定索引元素
|
||||||
|
allUserList.remove(index);
|
||||||
|
// 插入指定索引元素
|
||||||
|
allUserList.add(index, sysUser);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 保存或更新
|
||||||
|
this.saveOrUpdate(sysUser);
|
||||||
|
|
||||||
// 返回成功
|
// 返回成功
|
||||||
return JSONUtil.createObj().set("success", true);
|
return JSONUtil.createObj().set("success", true);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
return JSONUtil.createObj().set("index", i + 1).set("success", false).set("msg", "数据导入异常");
|
return JSONUtil.createObj().set("success", false).set("index", i + 1).set("msg", "数据导入异常");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1346,7 +1387,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<SysUser> getCachedAllUserList() {
|
public List<SysUser> getCachedAllUserSelectorList() {
|
||||||
// 从缓存中取
|
// 从缓存中取
|
||||||
Object cacheValue = commonCacheOperator.get(USER_CACHE_ALL_KEY);
|
Object cacheValue = commonCacheOperator.get(USER_CACHE_ALL_KEY);
|
||||||
if(ObjectUtil.isNotEmpty(cacheValue)) {
|
if(ObjectUtil.isNotEmpty(cacheValue)) {
|
||||||
|
@ -1430,7 +1471,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
||||||
lambdaQueryWrapper.select(SysUser::getId, SysUser::getOrgId, SysUser::getAccount, SysUser::getName, SysUser::getSortCode);
|
lambdaQueryWrapper.select(SysUser::getId, SysUser::getOrgId, SysUser::getAccount, SysUser::getName, SysUser::getSortCode);
|
||||||
// 如果查询条件为空,则从缓存中查询
|
// 如果查询条件为空,则从缓存中查询
|
||||||
if(ObjectUtil.isAllEmpty(sysUserSelectorUserParam.getOrgId(), sysUserSelectorUserParam.getSearchKey())) {
|
if(ObjectUtil.isAllEmpty(sysUserSelectorUserParam.getOrgId(), sysUserSelectorUserParam.getSearchKey())) {
|
||||||
return this.getCachedAllUserList();
|
return this.getCachedAllUserSelectorList();
|
||||||
} else {
|
} else {
|
||||||
if (ObjectUtil.isNotEmpty(sysUserSelectorUserParam.getOrgId())) {
|
if (ObjectUtil.isNotEmpty(sysUserSelectorUserParam.getOrgId())) {
|
||||||
// 如果机构id不为空,则查询该机构所在顶级机构下的所有人
|
// 如果机构id不为空,则查询该机构所在顶级机构下的所有人
|
||||||
|
|
Loading…
Reference in New Issue