From e7484f262cfb05b0ed7260c468ce4c78998b05f2 Mon Sep 17 00:00:00 2001
From: 钟日健 <5689795+arsn@user.noreply.gitee.com>
Date: Mon, 21 Feb 2022 19:09:50 +0800
Subject: [PATCH] 新增保安员批量导入接口
---
src/main/java/org/springblade/modules/system/excel/UserExcels.java | 102 +++++++++++++++++++++++++
src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java | 44 +++++++++++
src/main/java/org/springblade/modules/system/excel/UserImporters.java | 41 ++++++++++
src/main/java/org/springblade/modules/system/controller/UserController.java | 13 +++
src/main/java/org/springblade/modules/system/service/IUserService.java | 9 ++
5 files changed, 209 insertions(+), 0 deletions(-)
diff --git a/src/main/java/org/springblade/modules/system/controller/UserController.java b/src/main/java/org/springblade/modules/system/controller/UserController.java
index e3f78b2..5f38506 100644
--- a/src/main/java/org/springblade/modules/system/controller/UserController.java
+++ b/src/main/java/org/springblade/modules/system/controller/UserController.java
@@ -48,7 +48,9 @@
import org.springblade.modules.system.entity.Role;
import org.springblade.modules.system.entity.User;
import org.springblade.modules.system.excel.UserExcel;
+import org.springblade.modules.system.excel.UserExcels;
import org.springblade.modules.system.excel.UserImporter;
+import org.springblade.modules.system.excel.UserImporters;
import org.springblade.modules.system.service.IRoleService;
import org.springblade.modules.system.service.IUserService;
import org.springblade.modules.system.vo.UserVO;
@@ -349,6 +351,17 @@
}
/**
+ * 导入用户(保安员)
+ */
+ @PostMapping("import-users")
+ @ApiOperation(value = "导入用户", notes = "传入excel")
+ public R importUsers(MultipartFile file, Integer isCovered) {
+ UserImporters userImporter = new UserImporters(userService, isCovered == 1);
+ ExcelUtil.save(file, userImporter, UserExcels.class);
+ return R.success("操作成功");
+ }
+
+ /**
* 导出用户
*/
@GetMapping("export-user")
diff --git a/src/main/java/org/springblade/modules/system/excel/UserExcels.java b/src/main/java/org/springblade/modules/system/excel/UserExcels.java
new file mode 100644
index 0000000..44f4221
--- /dev/null
+++ b/src/main/java/org/springblade/modules/system/excel/UserExcels.java
@@ -0,0 +1,102 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.system.excel;
+
+import com.alibaba.excel.annotation.ExcelIgnore;
+import com.alibaba.excel.annotation.ExcelProperty;
+import com.alibaba.excel.annotation.write.style.ColumnWidth;
+import com.alibaba.excel.annotation.write.style.ContentRowHeight;
+import com.alibaba.excel.annotation.write.style.HeadRowHeight;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * UserExcel
+ *
+ * @author Chill
+ */
+@Data
+@ColumnWidth(25)
+@HeadRowHeight(20)
+@ContentRowHeight(18)
+public class UserExcels implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ @ColumnWidth(15)
+ @ExcelProperty("账户")
+ private String account;
+
+ /**
+ * 密码
+ */
+ @ColumnWidth(20)
+ @ExcelProperty("密码")
+ private String password;
+
+ @ColumnWidth(10)
+ @ExcelProperty("姓名")
+ private String realName;
+
+ @ColumnWidth(20)
+ @ExcelProperty("头像")
+ private String avatar;
+
+ @ExcelProperty("邮箱")
+ private String email;
+
+ @ColumnWidth(15)
+ @ExcelProperty("手机")
+ private String phone;
+
+
+ @ColumnWidth(10)
+ @ExcelProperty("性别")
+ private Integer sex;
+
+ @ColumnWidth(20)
+ @ExcelProperty("角色ID")
+ private String roleId;
+
+
+ @ColumnWidth(10)
+ @ExcelProperty("是否在职")
+ private Integer status;
+
+ @ColumnWidth(10)
+ @ExcelProperty("是否删除")
+ private Integer isDeleted;
+
+ @ColumnWidth(10)
+ @ExcelProperty("审查状态")
+ private String examinationType;
+
+ @ColumnWidth(15)
+ @ExcelProperty("审查明细")
+ private String examinationMx;
+
+ @ColumnWidth(15)
+ @ExcelProperty("辖区ID")
+ private String jurisdiction;
+
+ @ColumnWidth(20)
+ @ExcelProperty("身份证号码")
+ private String cardid;
+
+
+}
diff --git a/src/main/java/org/springblade/modules/system/excel/UserImporters.java b/src/main/java/org/springblade/modules/system/excel/UserImporters.java
new file mode 100644
index 0000000..b770ad8
--- /dev/null
+++ b/src/main/java/org/springblade/modules/system/excel/UserImporters.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2018-2028, Chill Zhuang All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the dreamlu.net developer nor the names of its
+ * contributors may be used to endorse or promote products derived from
+ * this software without specific prior written permission.
+ * Author: Chill 庄骞 (smallchill@163.com)
+ */
+package org.springblade.modules.system.excel;
+
+import lombok.RequiredArgsConstructor;
+import org.springblade.core.excel.support.ExcelImporter;
+import org.springblade.modules.system.service.IUserService;
+
+import java.util.List;
+
+/**
+ * 用户数据导入类(保安员导入)
+ *
+ * @author zhongrj
+ * @since 2022-2-21
+ */
+@RequiredArgsConstructor
+public class UserImporters implements ExcelImporter<UserExcels> {
+
+ private final IUserService service;
+ private final Boolean isCovered;
+
+ @Override
+ public void save(List<UserExcels> data) {
+ service.importUsers(data, isCovered);
+ }
+}
diff --git a/src/main/java/org/springblade/modules/system/service/IUserService.java b/src/main/java/org/springblade/modules/system/service/IUserService.java
index 9a4b554..fdd224b 100644
--- a/src/main/java/org/springblade/modules/system/service/IUserService.java
+++ b/src/main/java/org/springblade/modules/system/service/IUserService.java
@@ -28,6 +28,7 @@
import org.springblade.modules.system.entity.UserInfo;
import org.springblade.modules.system.entity.UserOauth;
import org.springblade.modules.system.excel.UserExcel;
+import org.springblade.modules.system.excel.UserExcels;
import org.springblade.modules.system.vo.UserDistrictStatisVO;
import org.springblade.modules.system.vo.UserRegisterStatisVO;
import org.springblade.modules.system.vo.UserVO;
@@ -285,4 +286,12 @@
Integer selectCount(String account);
void updateAcc(String stype,String account);
void delete(String account);
+
+
+ /**
+ * 保安员导入
+ * @param data
+ * @param isCovered
+ */
+ void importUsers(List<UserExcels> data, Boolean isCovered);
}
diff --git a/src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java b/src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java
index 2ae3555..be87d52 100644
--- a/src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java
+++ b/src/main/java/org/springblade/modules/system/service/impl/UserServiceImpl.java
@@ -43,6 +43,7 @@
import org.springblade.modules.auth.enums.UserEnum;
import org.springblade.modules.system.entity.*;
import org.springblade.modules.system.excel.UserExcel;
+import org.springblade.modules.system.excel.UserExcels;
import org.springblade.modules.system.mapper.UserMapper;
import org.springblade.modules.system.service.IRoleService;
import org.springblade.modules.system.service.IUserDeptService;
@@ -537,4 +538,47 @@
baseMapper.delete(account);
}
+ /**
+ * 用户导入(保安员导入)
+ * @param data
+ * @param isCovered
+ */
+ @Override
+// @Transactional(rollbackFor = Exception.class)
+ public void importUsers(List<UserExcels> data, Boolean isCovered) {
+ data.forEach(userExcel -> {
+ User user = Objects.requireNonNull(BeanUtil.copy(userExcel, User.class));
+ // 设置租户ID
+ user.setTenantId("000000");
+ //查询身份证号是否有重复的,有的话只更新
+ User user1 = new User();
+ user1.setCardid(user.getCardid());
+ user1.setStatus(1);
+ user1.setIsDeleted(0);
+ List<User> list = this.list(Condition.getQueryWrapper(user1));
+ if (list.size()>0){
+ //更新
+ user.setId(list.get(0).getId());
+ this.updateById(user);
+ }else {
+ String tenantId = user.getTenantId();
+ Tenant tenant = SysCache.getTenant(tenantId);
+ if (Func.isNotEmpty(tenant)) {
+ Integer accountNumber = tenant.getAccountNumber();
+ if (tenantProperties.getLicense()) {
+ String licenseKey = tenant.getLicenseKey();
+ String decrypt = DesUtil.decryptFormHex(licenseKey, TenantConstant.DES_KEY);
+ accountNumber = JsonUtil.parse(decrypt, Tenant.class).getAccountNumber();
+ }
+ Integer tenantCount = baseMapper.selectCount(Wrappers.<User>query().lambda().eq(User::getTenantId, tenantId));
+ if (accountNumber != null && accountNumber > 0 && accountNumber <= tenantCount) {
+ throw new ServiceException("当前租户已到最大账号额度!");
+ }
+ }
+ //新增
+ this.save(user);
+ }
+ });
+ }
+
}
--
Gitblit v1.9.3