diff --git a/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/org/service/impl/SysOrgServiceImpl.java b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/org/service/impl/SysOrgServiceImpl.java index 95fdad86..96e9a974 100644 --- a/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/org/service/impl/SysOrgServiceImpl.java +++ b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/org/service/impl/SysOrgServiceImpl.java @@ -233,40 +233,48 @@ public class SysOrgServiceImpl extends ServiceImpl impleme } public String findOrgIdByOrgName(String parentId, Iterator iterator, List cachedAllOrgList, List> treeList) { - String next = iterator.next(); - // TODO - List> 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> 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 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(); + } /* ====组织部分所需要用到的选择器==== */ diff --git a/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/service/impl/SysUserServiceImpl.java b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/service/impl/SysUserServiceImpl.java index 0f7e0528..7ab9af9f 100644 --- a/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/service/impl/SysUserServiceImpl.java +++ b/snowy-plugin/snowy-plugin-sys/src/main/java/vip/xiaonuo/sys/modular/user/service/impl/SysUserServiceImpl.java @@ -986,8 +986,13 @@ public class SysUserServiceImpl extends ServiceImpl impl int successCount = 0; int errorCount = 0; JSONArray errorDetail = JSONUtil.createArray(); - List 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 sysUserImportParamList = EasyExcel.read(tempFile).head(SysUserImportParam.class).sheet() + .headRowNumber(2).doReadSync(); List 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 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); diff --git a/snowy-web-app/src/test/java/vip/xiaonuo/Test.java b/snowy-web-app/src/test/java/vip/xiaonuo/Test.java index d84ca2e6..706e519a 100644 --- a/snowy-web-app/src/test/java/vip/xiaonuo/Test.java +++ b/snowy-web-app/src/test/java/vip/xiaonuo/Test.java @@ -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(dataList -> { + for (SysUserImportParam sysUserImportParam : dataList) { + System.out.println(JSONUtil.toJsonStr(sysUserImportParam)); + } + })).sheet().headRowNumber(2).doRead(); + } catch (Exception e) { + e.printStackTrace(); + throw new CommonException("文件导入失败"); + } } } diff --git a/userImportTemplate.xlsx b/userImportTemplate.xlsx deleted file mode 100644 index 95420fe6..00000000 Binary files a/userImportTemplate.xlsx and /dev/null differ