From 0ae49f37de67633d3724193b083b3ed645580916 Mon Sep 17 00:00:00 2001
From: 孔祥富 <kongxf@daryun.com>
Date: 星期六, 27 二月 2021 18:05:28 +0800
Subject: [PATCH] 用户管理导入
---
febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/entity/system/SystemUser.java | 34 ++++++++---------
febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/service/impl/UserServiceImpl.java | 10 +++-
febs-server/febs-server-job/src/main/resources/bootstrap.yml | 4 +-
febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/controller/UserController.java | 68 ++++++++++++++++++++++++++++++++--
4 files changed, 89 insertions(+), 27 deletions(-)
diff --git a/febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/entity/system/SystemUser.java b/febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/entity/system/SystemUser.java
index 88fde0a..2b5d425 100644
--- a/febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/entity/system/SystemUser.java
+++ b/febs-common/febs-common-core/src/main/java/cc/mrbird/febs/common/core/entity/system/SystemUser.java
@@ -58,15 +58,25 @@
*/
@TableId(value = "USER_ID", type = IdType.AUTO)
private Long userId;
-
+ /**
+ * 部门名称
+ */
+ @TableField(exist = false)
+ @ExcelField(value = "部门(护卫点)")
+ private String deptName;
/**
* 用户名
*/
@TableField("USERNAME")
@Size(min = 4, max = 10, message = "{range}")
- @ExcelField(value = "用户名")
+ @ExcelField(value = "用户名",comment = "提示:必填,只能填写用户名")
private String username;
-
+ /**
+ * 头像
+ */
+ @TableField("nickName")
+ @ExcelField(value = "员工姓名",comment = "提示:必填,只能填写员工姓名")
+ private String nickName;
/**
* 密码
*/
@@ -100,6 +110,7 @@
* 身份證號
*/
@TableField("certificateNumb")
+ @ExcelField(value = "身份证号",comment = "提示:必填,只能填写身份证")
private String certificateNumb;
/**
@@ -114,28 +125,24 @@
* 创建时间
*/
@TableField("CREATE_TIME")
- @ExcelField(value = "创建时间", writeConverter = TimeConverter.class)
private Date createTime;
/**
* 修改时间
*/
@TableField("MODIFY_TIME")
- @ExcelField(value = "修改时间", writeConverter = TimeConverter.class)
private Date modifyTime;
/**
* 最近访问时间
*/
@TableField("LAST_LOGIN_TIME")
- @ExcelField(value = "最近访问时间", writeConverter = TimeConverter.class)
private Date lastLoginTime;
/**
* 性别 0男 1女 2 保密
*/
@TableField("SSEX")
- @ExcelField(value = "性别", writeConverterExp = "0=男,1=女,2=保密")
private String sex;
/**
@@ -144,25 +151,16 @@
@TableField("AVATAR")
private String avatar;
- /**
- * 头像
- */
- @TableField("nickName")
- private String nickName;
+
/**
* 描述
*/
@TableField("DESCRIPTION")
@Size(max = 100, message = "{noMoreThan}")
- @ExcelField(value = "个人描述")
private String description;
- /**
- * 部门名称
- */
- @TableField(exist = false)
- private String deptName;
+
@TableField(exist = false)
private String createTimeFrom;
diff --git a/febs-server/febs-server-job/src/main/resources/bootstrap.yml b/febs-server/febs-server-job/src/main/resources/bootstrap.yml
index 18ec524..d9e8aef 100644
--- a/febs-server/febs-server-job/src/main/resources/bootstrap.yml
+++ b/febs-server/febs-server-job/src/main/resources/bootstrap.yml
@@ -4,12 +4,12 @@
cloud:
nacos:
config:
- server-addr: ${nacos.url}:8848
+ server-addr: localhost:8001
group: DEFAULT_GROUP
prefix: febs-server-job
file-extension: yaml
discovery:
- server-addr: ${nacos.url}:8848
+ server-addr: localhost:8001
logging:
level:
diff --git a/febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/controller/UserController.java b/febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/controller/UserController.java
index e309c09..6661fa2 100644
--- a/febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/controller/UserController.java
+++ b/febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/controller/UserController.java
@@ -3,29 +3,43 @@
import cc.mrbird.febs.common.core.entity.FebsResponse;
import cc.mrbird.febs.common.core.entity.QueryRequest;
import cc.mrbird.febs.common.core.entity.constant.StringConstant;
+import cc.mrbird.febs.common.core.entity.system.Dept;
+import cc.mrbird.febs.common.core.entity.system.Eximport;
import cc.mrbird.febs.common.core.entity.system.LoginLog;
import cc.mrbird.febs.common.core.entity.system.SystemUser;
import cc.mrbird.febs.common.core.exception.FebsException;
import cc.mrbird.febs.common.core.utils.FebsUtil;
import cc.mrbird.febs.server.system.annotation.ControllerEndpoint;
+import cc.mrbird.febs.server.system.service.IDeptService;
import cc.mrbird.febs.server.system.service.ILoginLogService;
import cc.mrbird.febs.server.system.service.IUserDataPermissionService;
import cc.mrbird.febs.server.system.service.IUserService;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.google.common.base.Stopwatch;
+import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Lists;
import com.wuwenze.poi.ExcelKit;
+import com.wuwenze.poi.handler.ExcelReadHandler;
+import com.wuwenze.poi.pojo.ExcelErrorField;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.beanutils.ConvertUtils;
+import org.apache.commons.beanutils.converters.DateConverter;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.crypto.password.PasswordEncoder;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.io.IOException;
+import java.util.*;
+import java.util.stream.IntStream;
/**
* @author MrBird
@@ -36,7 +50,7 @@
@RequiredArgsConstructor
@RequestMapping("user")
public class UserController {
-
+ private final IDeptService deptService;
private final IUserService userService;
private final IUserDataPermissionService userDataPermissionService;
private final ILoginLogService loginLogService;
@@ -153,7 +167,53 @@
@PreAuthorize("hasAuthority('user:export')")
@ControllerEndpoint(operation = "导出用户数据", exceptionMessage = "导出Excel失败")
public void export(QueryRequest queryRequest, SystemUser user, HttpServletResponse response) {
+ int count = this.userService.count();
+ queryRequest.setPageSize(count);
List<SystemUser> users = this.userService.findUserDetailList(user, queryRequest).getRecords();
ExcelKit.$Export(SystemUser.class, response).downXlsx(users, false);
}
+ private static final String XLSX = ".xlsx";
+ @PostMapping("import")
+ public FebsResponse importExcels(MultipartFile file) throws IOException, FebsException {
+ if (file.isEmpty()) {
+ throw new FebsException("导入数据为空");
+ }
+ String filename = file.getOriginalFilename();
+ if (!StringUtils.endsWith(filename, XLSX)) {
+ throw new FebsException("只支持.xlsx类型文件导入");
+ }
+ Stopwatch stopwatch = Stopwatch.createStarted();
+ final List<SystemUser> data = Lists.newArrayList();
+ final List<Map<String, Object>> error = Lists.newArrayList();
+ ExcelKit.$Import(SystemUser.class).readXlsx(file.getInputStream(), new ExcelReadHandler<SystemUser>() {
+ @Override
+ public void onSuccess(int sheet, int row, SystemUser eximport) {
+ data.add(eximport);
+ }
+ @Override
+ public void onError(int sheet, int row, List<ExcelErrorField> errorFields) {
+ error.add(ImmutableMap.of("row", row, "errorFields", errorFields));
+ }
+ });
+ if (CollectionUtils.isNotEmpty(data)) {
+ for (SystemUser systemUser:data){
+ Dept one = deptService.getOne(new QueryWrapper<Dept>().eq("DEPT_NAME", systemUser.getDeptName()));
+ if(one!=null){
+ systemUser.setDeptId(one.getDeptId());
+ }
+ this.userService.createUser(systemUser);
+ }
+ }
+ ImmutableMap<String, Object> result = ImmutableMap.of(
+ "time", stopwatch.stop().toString(),
+ "data", data,
+ "error", error
+ );
+ return new FebsResponse().data(result);
+ }
+ @PostMapping("template")
+ public void generateImportTemplate(HttpServletResponse response) {
+ List<SystemUser> list = new ArrayList<>();
+ ExcelKit.$Export(SystemUser.class, response).downXlsx(list, true);
+ }
}
diff --git a/febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/service/impl/UserServiceImpl.java b/febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/service/impl/UserServiceImpl.java
index f3d9f42..83024dd 100644
--- a/febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/service/impl/UserServiceImpl.java
+++ b/febs-server/febs-server-system/src/main/java/cc/mrbird/febs/server/system/service/impl/UserServiceImpl.java
@@ -84,10 +84,14 @@
save(user);
// 保存用户角色
String[] roles = StringUtils.splitByWholeSeparatorPreserveAllTokens(user.getRoleId(), StringConstant.COMMA);
- setUserRoles(user, roles);
- // 保存用户数据权限关联关系
+ if(roles!=null){
+ setUserRoles(user, roles);
+ }
String[] deptIds = StringUtils.splitByWholeSeparatorPreserveAllTokens(user.getDeptIds(), StringConstant.COMMA);
- setUserDataPermissions(user, deptIds);
+ if(deptIds!=null){
+ // 保存用户数据权限关联关系
+ setUserDataPermissions(user, deptIds);
+ }
}
@Override
--
Gitblit v1.8.0