From d5a2ec36fa56559a364e1a60c4b75c707cb7463a Mon Sep 17 00:00:00 2001
From: 龚焕茏 <2842157468@qq.com>
Date: 星期一, 22 七月 2024 18:25:01 +0800
Subject: [PATCH] feat:用户导入
---
src/main/java/com/ycl/jxkg/service/UserService.java | 9 +++
src/main/java/com/ycl/jxkg/service/impl/UserServiceImpl.java | 59 ++++++++++++++++---
src/main/java/com/ycl/jxkg/domain/vo/admin/user/UserExcelVo.java | 42 ++++++++++++++
src/main/java/com/ycl/jxkg/controller/admin/UserController.java | 34 ++++++++--
4 files changed, 125 insertions(+), 19 deletions(-)
diff --git a/src/main/java/com/ycl/jxkg/controller/admin/UserController.java b/src/main/java/com/ycl/jxkg/controller/admin/UserController.java
index 66a3447..29ae991 100644
--- a/src/main/java/com/ycl/jxkg/controller/admin/UserController.java
+++ b/src/main/java/com/ycl/jxkg/controller/admin/UserController.java
@@ -1,32 +1,36 @@
package com.ycl.jxkg.controller.admin;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.ExcelWriter;
+import com.alibaba.excel.write.metadata.WriteSheet;
import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper;
+import com.github.pagehelper.PageInfo;
import com.ycl.jxkg.base.BaseApiController;
import com.ycl.jxkg.base.Result;
import com.ycl.jxkg.base.SystemCode;
import com.ycl.jxkg.context.WebContext;
-import com.ycl.jxkg.domain.form.UpdatePwdForm;
-import com.ycl.jxkg.enums.RoleEnum;
-import com.ycl.jxkg.domain.other.KeyValue;
import com.ycl.jxkg.domain.entity.User;
import com.ycl.jxkg.domain.entity.UserEventLog;
-import com.ycl.jxkg.enums.UserStatusEnum;
+import com.ycl.jxkg.domain.other.KeyValue;
import com.ycl.jxkg.domain.vo.StudentVO;
+import com.ycl.jxkg.domain.vo.admin.user.*;
+import com.ycl.jxkg.enums.RoleEnum;
+import com.ycl.jxkg.enums.UserStatusEnum;
import com.ycl.jxkg.service.AuthenticationService;
import com.ycl.jxkg.service.UserEventLogService;
import com.ycl.jxkg.service.UserService;
import com.ycl.jxkg.utils.DateTimeUtil;
-import com.ycl.jxkg.domain.vo.admin.user.*;
import com.ycl.jxkg.utils.PageInfoHelper;
-import com.github.pagehelper.PageInfo;
-
import lombok.RequiredArgsConstructor;
+import lombok.SneakyThrows;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
-import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
+import javax.servlet.http.HttpServletResponse;
import javax.validation.Valid;
+import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.UUID;
@@ -176,7 +180,21 @@
return Result.ok(keyValues);
}
+ @GetMapping("importTemplate")
+ @SneakyThrows
+ public void importTemplate(HttpServletResponse response) {
+ List<UserExcelVo> list = new ArrayList<>();
+ list.add(new UserExcelVo().setUserName("zhangSan").setPassword("123456").setRealName("寮犱笁").setSex(1).setRole(1).setPhone("12345678901").setAge(24).setBirthDay("2000-01-01"));
+ ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream(), UserExcelVo.class).build();
+ WriteSheet writeSheet = EasyExcel.writerSheet(0, "鐢ㄦ埛淇℃伅").build();
+ excelWriter.write(list, writeSheet);
+ excelWriter.finish();
+ }
+ @PostMapping("import")
+ public Result<String> importExcel(MultipartFile file) {
+ return Result.ok(userService.importExcel(file));
+ }
}
diff --git a/src/main/java/com/ycl/jxkg/domain/vo/admin/user/UserExcelVo.java b/src/main/java/com/ycl/jxkg/domain/vo/admin/user/UserExcelVo.java
new file mode 100644
index 0000000..9c3d14a
--- /dev/null
+++ b/src/main/java/com/ycl/jxkg/domain/vo/admin/user/UserExcelVo.java
@@ -0,0 +1,42 @@
+package com.ycl.jxkg.domain.vo.admin.user;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+/**
+ * @author gonghl
+ */
+@Data
+@Accessors(chain = true)
+@ColumnWidth(20)
+public class UserExcelVo {
+
+ @ExcelProperty("鐢ㄦ埛鍚�")
+ private String userName;
+
+ @ExcelIgnore
+ private String password;
+
+ @ExcelProperty("鐪熷疄濮撳悕")
+ private String realName;
+
+ @ExcelProperty("骞撮緞")
+ private Integer age;
+
+ @ExcelProperty("1.鐢� 2濂�")
+ private Integer sex;
+
+ @ExcelProperty("鍑虹敓鏃ユ湡")
+ private String birthDay;
+
+ @ExcelProperty("鎵嬫満鍙�")
+ private String phone;
+
+ @ExcelProperty("1.瀛︾敓 2.鑰佸笀")
+ private Integer role;
+
+}
+
diff --git a/src/main/java/com/ycl/jxkg/service/UserService.java b/src/main/java/com/ycl/jxkg/service/UserService.java
index 93778ad..e0679ad 100644
--- a/src/main/java/com/ycl/jxkg/service/UserService.java
+++ b/src/main/java/com/ycl/jxkg/service/UserService.java
@@ -9,6 +9,7 @@
import com.ycl.jxkg.domain.vo.StudentVO;
import com.ycl.jxkg.domain.vo.admin.user.UserPageRequestVO;
import com.github.pagehelper.PageInfo;
+import org.springframework.web.multipart.MultipartFile;
import java.util.List;
@@ -165,4 +166,12 @@
*
*/
void updateStudentPassword(StudentUpdatePwdForm form);
+
+ /**
+ * 瀵煎叆excel
+ *
+ * @param file file
+ * @return 缁撴灉
+ */
+ String importExcel(MultipartFile file);
}
diff --git a/src/main/java/com/ycl/jxkg/service/impl/UserServiceImpl.java b/src/main/java/com/ycl/jxkg/service/impl/UserServiceImpl.java
index 31cb107..9b99327 100644
--- a/src/main/java/com/ycl/jxkg/service/impl/UserServiceImpl.java
+++ b/src/main/java/com/ycl/jxkg/service/impl/UserServiceImpl.java
@@ -1,34 +1,38 @@
package com.ycl.jxkg.service.impl;
+import com.alibaba.excel.EasyExcel;
+import com.alibaba.excel.read.listener.PageReadListener;
import com.baomidou.mybatisplus.extension.conditions.update.LambdaUpdateChainWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import com.qiniu.util.Md5;
+import com.github.pagehelper.PageHelper;
+import com.github.pagehelper.PageInfo;
+import com.ycl.jxkg.domain.entity.User;
import com.ycl.jxkg.domain.entity.UserEventLog;
+import com.ycl.jxkg.domain.form.RegisterForm;
import com.ycl.jxkg.domain.form.StudentUpdatePwdForm;
import com.ycl.jxkg.domain.form.UpdatePwdForm;
-import com.ycl.jxkg.enums.RoleEnum;
-import com.ycl.jxkg.enums.UserStatusEnum;
-import com.ycl.jxkg.domain.form.RegisterForm;
import com.ycl.jxkg.domain.other.KeyValue;
import com.ycl.jxkg.domain.vo.StudentVO;
-import com.ycl.jxkg.enums.general.YesOrNoEnum;
+import com.ycl.jxkg.domain.vo.admin.user.UserExcelVo;
+import com.ycl.jxkg.domain.vo.admin.user.UserPageRequestVO;
+import com.ycl.jxkg.enums.RoleEnum;
+import com.ycl.jxkg.enums.UserStatusEnum;
+import com.ycl.jxkg.event.OnRegistrationCompleteEvent;
import com.ycl.jxkg.event.UserEvent;
import com.ycl.jxkg.exception.BusinessException;
-import com.ycl.jxkg.domain.entity.User;
-import com.ycl.jxkg.event.OnRegistrationCompleteEvent;
import com.ycl.jxkg.mapper.UserMapper;
import com.ycl.jxkg.service.AuthenticationService;
import com.ycl.jxkg.service.UserService;
-import com.ycl.jxkg.domain.vo.admin.user.UserPageRequestVO;
-import com.github.pagehelper.PageHelper;
-import com.github.pagehelper.PageInfo;
import lombok.RequiredArgsConstructor;
+import lombok.SneakyThrows;
import org.springframework.beans.BeanUtils;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.multipart.MultipartFile;
-import java.nio.charset.StandardCharsets;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
import java.util.*;
@@ -216,4 +220,37 @@
throw new RuntimeException("鏃у瘑鐮侀敊璇紝璇风‘璁ゅ悗閲嶆柊杈撳叆");
}
}
+
+ @Override
+ @SneakyThrows
+ @Transactional
+ public String importExcel(MultipartFile file) {
+ List<User> userList = new ArrayList<>();
+ List<String> errorList = new ArrayList<>();
+ EasyExcel.read(file.getInputStream(), UserExcelVo.class, new PageReadListener<UserExcelVo>(dataList -> {
+ dataList.forEach(item -> {
+ User user = new User();
+ user.setUserName(item.getUserName());
+ user.setPassword(authenticationService.pwdEncode("!Password123456789"));
+ user.setRealName(item.getRealName());
+ user.setSex(item.getSex());
+ user.setPhone(item.getPhone());
+ try {
+ user.setBirthDay(new SimpleDateFormat("yyyy-MM-dd").parse(item.getBirthDay()));
+ } catch (ParseException e) {
+ errorList.add(item.getRealName());
+ }
+ user.setAge(item.getAge());
+ user.setRole(item.getRole());
+ user.setStatus(UserStatusEnum.Enable.getCode());
+ userList.add(user);
+ });
+ }));
+ if (!errorList.isEmpty()) {
+ return "浠ヤ笅鏁版嵁鏃ユ湡鏍煎紡閿欒锛歕\n" + String.join(",", errorList);
+ } else {
+ saveBatch(userList);
+ }
+ return "鎴愬姛瀵煎叆" + userList.size() + "鏉℃暟鎹�";
+ }
}
--
Gitblit v1.8.0