【更新】完善导入功能

pull/87/head
xuyuxiang 2023-03-08 10:17:07 +08:00
parent 41f9e174c7
commit c71badd0d5
4 changed files with 62 additions and 33 deletions

View File

@ -233,40 +233,48 @@ public class SysOrgServiceImpl extends ServiceImpl<SysOrgMapper, SysOrg> impleme
}
public String findOrgIdByOrgName(String parentId, Iterator<String> iterator, List<SysOrg> cachedAllOrgList, List<Tree<String>> treeList) {
String next = iterator.next();
// TODO
List<Tree<String>> findList = treeList.stream().filter(tree -> tree.getName().equals(next)).collect(Collectors.toList());
if(ObjectUtil.isNotEmpty(findList)) {
if(iterator.hasNext()) {
return findOrgIdByOrgName(findList.get(0).getId(), iterator, cachedAllOrgList, findList.get(0).getChildren());
} else {
return findList.get(0).getId();
String orgName = iterator.next();
if(ObjectUtil.isNotEmpty(treeList)) {
List<Tree<String>> findList = treeList.stream().filter(tree -> tree.getName().equals(orgName)).collect(Collectors.toList());
if(ObjectUtil.isNotEmpty(findList)) {
if(iterator.hasNext()) {
return findOrgIdByOrgName(findList.get(0).getId(), iterator, cachedAllOrgList, findList.get(0).getChildren());
} else {
return findList.get(0).getId();
}
}
}
String orgId = this.doCreateOrg(parentId, orgName, cachedAllOrgList);
if(iterator.hasNext()) {
return findOrgIdByOrgName(orgId, iterator, cachedAllOrgList, CollectionUtil.newArrayList());
} else {
//创建该机构
SysOrg sysOrg = new SysOrg();
sysOrg.setName(next);
sysOrg.setCode(RandomUtil.randomString(10));
sysOrg.setParentId(parentId);
sysOrg.setCategory(parentId.equals("0")?SysOrgCategoryEnum.COMPANY.getValue():SysOrgCategoryEnum.DEPT.getValue());
sysOrg.setSortCode(99);
this.save(sysOrg);
// TODO 发布增加事件
CommonDataChangeEventCenter.doAddWithData(SysDataTypeEnum.ORG.getValue(), JSONUtil.createArray().put(sysOrg));
// 将该机构加入缓存
cachedAllOrgList.add(sysOrg);
// 更新缓存
commonCacheOperator.put(ORG_CACHE_ALL_KEY, cachedAllOrgList);
// 继续查找
if(iterator.hasNext()) {
return findOrgIdByOrgName(sysOrg.getId(), iterator, cachedAllOrgList, CollectionUtil.newArrayList());
} else {
return sysOrg.getId();
}
return orgId;
}
}
/**
*
*
* @author xuyuxiang
* @date 2023/3/8 9:38
**/
public String doCreateOrg(String parentId, String orgName, List<SysOrg> cachedAllOrgList) {
//创建该机构
SysOrg sysOrg = new SysOrg();
sysOrg.setName(orgName);
sysOrg.setCode(RandomUtil.randomString(10));
sysOrg.setParentId(parentId);
sysOrg.setCategory(parentId.equals("0")?SysOrgCategoryEnum.COMPANY.getValue():SysOrgCategoryEnum.DEPT.getValue());
sysOrg.setSortCode(99);
this.save(sysOrg);
// 发布增加事件
CommonDataChangeEventCenter.doAddWithData(SysDataTypeEnum.ORG.getValue(), JSONUtil.createArray().put(sysOrg));
// 将该机构加入缓存
cachedAllOrgList.add(sysOrg);
// 更新缓存
commonCacheOperator.put(ORG_CACHE_ALL_KEY, cachedAllOrgList);
return sysOrg.getId();
}
/* ====组织部分所需要用到的选择器==== */

View File

@ -986,8 +986,13 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
int successCount = 0;
int errorCount = 0;
JSONArray errorDetail = JSONUtil.createArray();
List<SysUserImportParam> sysUserImportParamList = EasyExcel.read("D://userImportTemplate.xlsx")
.head(SysUserImportParam.class).sheet().headRowNumber(2).doReadSync();
byte[] bytes = file.getBytes();
// 创建临时文件
File tempFile = FileUtil.writeBytes(file.getBytes(), FileUtil.file(FileUtil.getTmpDir() +
FileUtil.FILE_SEPARATOR + "userImportTemplate.xlsx"));
// 读取excel
List<SysUserImportParam> sysUserImportParamList = EasyExcel.read(tempFile).head(SysUserImportParam.class).sheet()
.headRowNumber(2).doReadSync();
List<SysUser> allUserList = this.list();
for (int i = 0; i < sysUserImportParamList.size(); i++) {
JSONObject jsonObject = this.doImport(allUserList, sysUserImportParamList.get(i), i);
@ -1032,7 +1037,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
// 机构id
String orgId = sysOrgService.getOrgIdByOrgFullNameWithCreate(orgFullName);
// 职位id
String positionId = sysPositionService.getPositionIdByPositionNameWithCreate(orgId, positionFullName);
String positionId = sysPositionService.getPositionIdByPositionNameWithCreate(orgId, positionName);
// 查找账号对应索引
int index = CollStreamUtil.toList(allUserList, SysUser::getAccount).indexOf(account);

View File

@ -12,6 +12,12 @@
*/
package vip.xiaonuo;
import cn.hutool.json.JSONUtil;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.read.listener.PageReadListener;
import vip.xiaonuo.common.exception.CommonException;
import vip.xiaonuo.sys.modular.user.param.SysUserImportParam;
/**
* TestMain
*
@ -20,6 +26,16 @@ package vip.xiaonuo;
*/
public class Test {
public static void main(String[] args) throws Exception {
try {
// TODO 导入
EasyExcel.read("D://import.xlsx", SysUserImportParam.class, new PageReadListener<SysUserImportParam>(dataList -> {
for (SysUserImportParam sysUserImportParam : dataList) {
System.out.println(JSONUtil.toJsonStr(sysUserImportParam));
}
})).sheet().headRowNumber(2).doRead();
} catch (Exception e) {
e.printStackTrace();
throw new CommonException("文件导入失败");
}
}
}

Binary file not shown.