From ec76c5defdd8018ce4efcc8795508498a84de4b7 Mon Sep 17 00:00:00 2001 From: mitao <2763622819@qq.com> Date: 星期二, 09 四月 2024 19:09:33 +0800 Subject: [PATCH] 平台历史数据 导入导出接口 --- ruoyi-admin/src/main/java/com/ruoyi/web/controller/lisenter/DeptImportListener.java | 45 ++++++++++++++++++++++++++++++--------------- 1 files changed, 30 insertions(+), 15 deletions(-) diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/lisenter/DeptImportListener.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/lisenter/DeptImportListener.java index 61e7071..4e40fb3 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/lisenter/DeptImportListener.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/lisenter/DeptImportListener.java @@ -13,9 +13,8 @@ import com.ruoyi.common.utils.StringUtils; import com.ruoyi.system.service.ISysUserService; import com.ruoyi.web.controller.excel.DeptExcel; -import lombok.extern.slf4j.Slf4j; - import java.util.List; +import lombok.extern.slf4j.Slf4j; /** * @author mitao @@ -23,6 +22,7 @@ */ @Slf4j public class DeptImportListener implements ReadListener<DeptExcel> { + /** * 每隔5条存储数据库,实际使用中可以100条,然后清理list ,方便内存回收 */ @@ -46,22 +46,35 @@ public void invoke(DeptExcel data, AnalysisContext context) { log.info("解析到一条数据:{}", JSON.toJSONString(data)); if (StringUtils.isEmpty(data.getAreaName()) || StringUtils.isEmpty(data.getAreaCode()) || - StringUtils.isEmpty(data.getAreaLevel()) || StringUtils.isNull(data.getCountyFlag()) || - StringUtils.isEmpty(data.getPersonInCharge()) || StringUtils.isEmpty(data.getUserName()) || - StringUtils.isEmpty(data.getPhoneNumber()) || StringUtils.isEmpty(data.getPassword())) { - throw new ServiceException(String.format("数据校验失败,请检查第%d行内容填写是否完整", cachedDataList.size()+1)); + StringUtils.isEmpty(data.getAreaLevel()) || StringUtils.isNull(data.getCountyFlag()) + || + StringUtils.isEmpty(data.getPersonInCharge()) || StringUtils.isEmpty( + data.getUserName()) || + StringUtils.isEmpty(data.getPhoneNumber()) || StringUtils.isEmpty( + data.getPassword())) { + throw new ServiceException(String.format("数据校验失败,请检查第%d行内容填写是否完整", + cachedDataList.size() + 1)); } - boolean flag = sysUserService.lambdaQuery().eq(SysUser::getUserType,UserTypeEnum.PLATFORM.getCode()).eq(SysUser::getUserName, data.getUserName()).oneOpt().isPresent(); + boolean flag = sysUserService.lambdaQuery() + .eq(SysUser::getUserType, UserTypeEnum.PLATFORM.getCode()) + .eq(SysUser::getUserName, data.getUserName()).oneOpt().isPresent(); if (flag) { - throw new ServiceException(String.format("数据校验失败,第%d行的登录账号:%s已存在", cachedDataList.size()+1,data.getUserName())); + throw new ServiceException(String.format("数据校验失败,第%d行的登录账号:%s已存在", + cachedDataList.size() + 1, data.getUserName())); } - flag = cachedDataList.stream().anyMatch(item -> item.getAreaCode().equals(data.getAreaCode())); + flag = cachedDataList.stream() + .anyMatch(item -> item.getAreaCode().equals(data.getAreaCode())); if (flag) { - throw new ServiceException(String.format("数据校验失败,第%d行区划代码%s重复", cachedDataList.size()+1,data.getAreaCode())); + throw new ServiceException( + String.format("数据校验失败,第%d行区划代码%s重复", cachedDataList.size() + 1, + data.getAreaCode())); } - flag = cachedDataList.stream().anyMatch(item -> item.getUserName().equals(data.getUserName())); + flag = cachedDataList.stream() + .anyMatch(item -> item.getUserName().equals(data.getUserName())); if (flag) { - throw new ServiceException(String.format("数据校验失败,第%d行登录账号%s重复", cachedDataList.size()+1,data.getAreaCode())); + throw new ServiceException( + String.format("数据校验失败,第%d行登录账号%s重复", cachedDataList.size() + 1, + data.getAreaCode())); } cachedDataList.add(data); // 达到BATCH_COUNT了,需要去存储一次数据库,防止数据几万条数据在内存,容易OOM @@ -78,15 +91,17 @@ log.info("所有数据解析完成!"); saveData(); } + private void saveData() { log.info("{}条数据,开始存储数据库!", cachedDataList.size()); List<SysUser> sysUsers = BeanUtils.copyList(cachedDataList, SysUser.class); - sysUsers.forEach(item->{ + sysUsers.forEach(item -> { item.setPassword(SecurityUtils.encryptPassword(item.getPassword())); item.setNickName(item.getAreaName()); - item.setUserType("2"); + item.setUserType(UserTypeEnum.DEPARTMENT); }); - sysUserService.remove(Wrappers.<SysUser>lambdaQuery().eq(SysUser::getUserType, UserTypeEnum.DEPARTMENT.getCode())); + sysUserService.remove(Wrappers.<SysUser>lambdaQuery() + .eq(SysUser::getUserType, UserTypeEnum.DEPARTMENT.getCode())); sysUserService.saveBatch(sysUsers); log.info("{}条数据,导入成功!", cachedDataList.size()); } -- Gitblit v1.7.1