Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
F
fgqyxxlr
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
yaru
fgqyxxlr
Commits
36dfecdc
Commit
36dfecdc
authored
Jun 06, 2018
by
yangzhengze
Committed by
若依
Jun 06, 2018
Browse files
Options
Browse Files
Download
Plain Diff
!12 优化用户批量导入流程和提示信息
Merge pull request !12 from yangzhengze/master
parents
33db69e4
859d0fe5
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
83 additions
and
67 deletions
+83
-67
src/main/java/com/ruoyi/project/system/user/controller/UserController.java
+3
-2
src/main/java/com/ruoyi/project/system/user/service/UserServiceImpl.java
+46
-38
src/main/resources/i18n/messages.properties
+34
-27
src/main/resources/static/template/用户导入模板.xlsx
+0
-0
No files found.
src/main/java/com/ruoyi/project/system/user/controller/UserController.java
View file @
36dfecdc
package
com
.
ruoyi
.
project
.
system
.
user
.
controller
;
import
com.ruoyi.common.exception.user.UserException
;
import
com.ruoyi.common.utils.StringUtils
;
import
com.ruoyi.framework.aspectj.lang.annotation.Log
;
import
com.ruoyi.framework.web.controller.BaseController
;
...
...
@@ -186,8 +187,8 @@ public class UserController extends BaseController
return
Message
.
success
(
String
.
valueOf
(
rows
));
}
return
Message
.
error
();
}
catch
(
Exception
e
){
log
.
error
(
"批量添加用户失败 !
"
,
e
);
}
catch
(
User
Exception
e
){
log
.
error
(
"批量添加用户失败 !
---{}"
,
e
.
getMessage
()
);
return
Message
.
error
(
e
.
getMessage
());
}
}
...
...
src/main/java/com/ruoyi/project/system/user/service/UserServiceImpl.java
View file @
36dfecdc
...
...
@@ -210,23 +210,26 @@ public class UserServiceImpl implements IUserService
Workbook
workbook
=
null
;
//获取文件名
String
filename
=
myFile
.
getOriginalFilename
();
log
.
info
(
"【ExeclfileName】{}"
,
filename
);
//根据文件名判断文件是2003版本还是2007版本
if
(
ExcelImportUtils
.
isExcel2003
(
filename
)){
try
{
workbook
=
new
HSSFWorkbook
(
myFile
.
getInputStream
());
//2003版本
}
catch
(
IOException
e
){
log
.
error
(
"获取Excel2003流错误"
+
e
.
getMessage
());
log
.
info
(
"【ExeclfileName】={}"
,
filename
);
if
(
StringUtils
.
isNotEmpty
(
filename
)){
//根据文件名判断文件是2003版本还是2007版本
if
(
ExcelImportUtils
.
isExcel2003
(
filename
)){
try
{
workbook
=
new
HSSFWorkbook
(
myFile
.
getInputStream
());
//2003版本
}
catch
(
IOException
e
){
throw
new
UserException
(
"user.import.excel.fileinput.error"
,
null
);
}
}
else
if
(
ExcelImportUtils
.
isExcel2007
(
filename
)){
try
{
workbook
=
new
XSSFWorkbook
(
myFile
.
getInputStream
());
//2007以上版本
}
catch
(
IOException
e
){
throw
new
UserException
(
"user.import.excel.fileinputx.error"
,
null
);
}
}
else
{
throw
new
UserException
(
"user.import.excel.filetype.error"
,
null
);
}
}
else
if
(
ExcelImportUtils
.
isExcel2007
(
filename
)){
try
{
workbook
=
new
XSSFWorkbook
(
myFile
.
getInputStream
());
//2007以上版本
}
catch
(
IOException
e
){
log
.
error
(
"获取Excel2007以上版本流错误"
+
e
.
getMessage
());
}
}
else
{
throw
new
UserException
(
"1000"
,
new
Object
[]{
"文件不是Excel格式"
});
}
else
{
throw
new
UserException
(
"user.import.excel.file.error"
,
null
);
}
//得到第一个sheet
Sheet
sheet
=
workbook
.
getSheetAt
(
0
);
...
...
@@ -236,9 +239,9 @@ public class UserServiceImpl implements IUserService
//新建用户list
List
<
User
>
users
=
new
ArrayList
<
User
>();
List
<
Dept
>
depts
;
List
<
Role
>
roles
;
List
<
Post
>
posts
;
List
<
Dept
>
depts
=
new
ArrayList
<
Dept
>()
;
List
<
Role
>
roles
=
new
ArrayList
<
Role
>()
;
List
<
Post
>
posts
=
new
ArrayList
<
Post
>()
;
//如果行数为空
/**
...
...
@@ -247,14 +250,16 @@ public class UserServiceImpl implements IUserService
* 获取有记录的行数,即:最后有数据的行是第n行,前面有m行是空行没数据,则返回n-m;
*/
if
((
totalRows
==
0
)&&(
sheet
.
getPhysicalNumberOfRows
()==
0
)){
throw
new
UserException
(
"1001"
,
new
Object
[]{
"数据为空 请填写数据"
});
}
else
{
throw
new
UserException
(
"user.import.excel.null"
,
null
);
}
else
if
((
totalRows
==
0
)&&(
sheet
.
getPhysicalNumberOfRows
()==
1
)){
throw
new
UserException
(
"user.import.excel.data.null"
,
null
);
}
else
{
//获取全部部门信息
depts
=
deptService
.
selectDeptAll
();
depts
=
deptService
.
selectDeptAll
();
//获取全部角色信息
roles
=
roleMapper
.
selectRolesAll
();
roles
=
roleMapper
.
selectRolesAll
();
//获取全部岗位信息
posts
=
postMapper
.
selectPostAll
();
posts
=
postMapper
.
selectPostAll
();
}
for
(
int
i
=
1
;
i
<=
totalRows
;
i
++){
...
...
@@ -270,7 +275,7 @@ public class UserServiceImpl implements IUserService
if
(
checkLoginNameUnique
(
userName
).
equals
(
UserConstants
.
USER_NAME_UNIQUE
)){
user
.
setLoginName
(
userName
);
}
else
{
log
.
error
(
"【rows】{}行用户名
已经存在"
,
i
+
1
);
log
.
error
(
"【rows】{}行用户名
{}已经存在"
,
i
+
1
,
userName
);
continue
;
}
}
...
...
@@ -290,8 +295,13 @@ public class UserServiceImpl implements IUserService
}
//密码
String
passWord
=
ExcelImportUtils
.
getCellValue
(
row
.
getCell
(
3
));
user
.
randomSalt
();
user
.
setPassword
(
passwordService
.
encryptPassword
(
userName
,
passWord
,
user
.
getSalt
()));
if
(
passWord
.
isEmpty
()){
continue
;
}
else
{
user
.
randomSalt
();
user
.
setPassword
(
passwordService
.
encryptPassword
(
userName
,
passWord
,
user
.
getSalt
()));
}
//部门
String
dept
=
ExcelImportUtils
.
getCellValue
(
row
.
getCell
(
4
));
if
(
StringUtils
.
isNotEmpty
(
dept
)){
...
...
@@ -308,7 +318,7 @@ public class UserServiceImpl implements IUserService
if
(
StringUtils
.
isNotEmpty
(
userRolesExcel
)){
//Set可以去掉重复的值,
Set
<
Long
>
sets
=
new
HashSet
<
Long
>();
//判断是否有"," 号
//判断是否有
英文的
"," 号
if
(
userRolesExcel
.
contains
(
","
)){
List
<
String
>
results
=
Arrays
.
asList
(
userRolesExcel
.
split
(
","
));
for
(
String
s:
results
){
...
...
@@ -330,9 +340,9 @@ public class UserServiceImpl implements IUserService
}
for
(
Long
longTes:
sets
){
log
.
info
(
"
username={},longTes
={}"
,
userName
,
longTes
);
log
.
info
(
"
用户名={},角色ID
={}"
,
userName
,
longTes
);
}
user
.
setRoleIds
(
(
Long
[])
sets
.
toArray
(
new
Long
[
sets
.
size
()]));
user
.
setRoleIds
(
sets
.
toArray
(
new
Long
[
sets
.
size
()]));
}
//岗位--多个岗位以","分割
...
...
@@ -340,7 +350,7 @@ public class UserServiceImpl implements IUserService
if
(
StringUtils
.
isNotEmpty
(
userPostExcel
)){
//去掉重复的值,
Set
<
Long
>
setPosts
=
new
HashSet
<
Long
>();
//判断是否有"," 号
//判断是否有
英文的
"," 号
if
(
userPostExcel
.
contains
(
","
)){
List
<
String
>
resultsp
=
Arrays
.
asList
(
userPostExcel
.
split
(
","
));
for
(
String
p:
resultsp
){
...
...
@@ -363,9 +373,9 @@ public class UserServiceImpl implements IUserService
}
for
(
Long
longTest:
setPosts
){
log
.
info
(
"
username={},longTest
={}"
,
userName
,
longTest
);
log
.
info
(
"
用户名={},岗位ID
={}"
,
userName
,
longTest
);
}
user
.
setPostIds
(
(
Long
[])
setPosts
.
toArray
(
new
Long
[
setPosts
.
size
()]));
user
.
setPostIds
(
setPosts
.
toArray
(
new
Long
[
setPosts
.
size
()]));
}
//手机号
...
...
@@ -394,7 +404,7 @@ public class UserServiceImpl implements IUserService
//批量插入用户
realRow
=
userMapper
.
batchAddUser
(
users
);
}
System
.
out
.
println
(
realRow
);
log
.
info
(
"成功导入用户共{}个"
,
realRow
);
if
(
realRow
>
0
){
//用户和角色关联
List
<
UserRole
>
userRoles
=
new
ArrayList
<
UserRole
>();
...
...
@@ -407,7 +417,6 @@ public class UserServiceImpl implements IUserService
userRole
.
setUserId
(
test
.
getUserId
());
userRole
.
setRoleId
(
test
.
getRoleIds
()[
q
]);
userRoles
.
add
(
userRole
);
}
for
(
int
r
=
0
;
r
<
test
.
getPostIds
().
length
;
r
++){
...
...
@@ -420,12 +429,11 @@ public class UserServiceImpl implements IUserService
}
//批量添加用户-角色关联数据
userRoleMapper
.
batchUserRole
(
userRoles
);
log
.
info
(
"成功导入用户-角色关联数据"
);
//批量添加用户-岗位关联数据
userPostMapper
.
batchUserPost
(
userPosts
);
;
log
.
info
(
"成功导入用户-岗位关联数据"
)
;
}
return
realRow
;
}
...
...
src/main/resources/i18n/messages.properties
View file @
36dfecdc
#
错误消息
not.null
=
*
必须填写
user.jcaptcha.error
=
验证码错误
user.not.exists
=
用户不存在/密码错误
user.password.not.match
=
用户不存在/密码错误
user.password.retry.limit.count
=
密码输入错误{0}次,
{1}
user.password.retry.limit.exceed
=
密码输入错误{0}次,帐户锁定10分钟
user.blocked
=
用户已封禁,原因:
{0}
role.blocked
=
角色已封禁,原因:
{0}
user.logout.success
=
退出成功
#
\u9519\u8BEF\u6D88\u606F
not.null
=
*
\u
5FC5
\u
987B
\u
586B
\u5199
user.jcaptcha.error=
\u
9A8C
\u
8BC1
\u7801\u9519\u
8BEF
user.not.exists
=
\u7528\u6237\u
4E0D
\u
5B58
\u5728
/
\u
5BC6
\u7801\u9519\u
8BEF
user.password.not.match
=
\u7528\u6237\u
4E0D
\u
5B58
\u5728
/
\u
5BC6
\u7801\u9519\u
8BEF
user.password.retry.limit.count
=
\u
5BC6
\u7801\u
8F93
\u5165\u9519\u
8BEF{0}
\u
6B21
\u
FF0C
{1}
user.password.retry.limit.exceed
=
\u
5BC6
\u7801\u
8F93
\u5165\u9519\u
8BEF{0}
\u
6B21
\u
FF0C
\u
5E10
\u6237\u9501\u
5B9A10
\u5206\u
949F
user.blocked
=
\u7528\u6237\u
5DF2
\u
5C01
\u7981\u
FF0C
\u
539F
\u
56E0
\u
FF1A
{0}
role.blocked
=
\u
89D2
\u8272\u
5DF2
\u
5C01
\u7981\u
FF0C
\u
539F
\u
56E0
\u
FF1A
{0}
user.logout.success
=
\u9000\u
51FA
\u6210\u
529F
length.not.valid
=
长度必须在{min}到{max}个字符之间
length.not.valid
=
\u
957F
\u
5EA6
\u
5FC5
\u
987B
\u5728
{min}
\u5230
{max}
\u
4E2A
\u
5B57
\u
7B26
\u
4E4B
\u
95F4
user.username.not.valid
=
* 2
到20个汉字、字母、数字或下划线组成,且必须以非数字开头
user.password.not.valid
=
* 5-50
个字符
user.username.not.valid
=
* 2
\u5230
20
\u
4E2A
\u
6C49
\u
5B57
\u3001\u
5B57
\u
6BCD
\u3001\u6570\u
5B57
\u6216\u
4E0B
\u5212\u
7EBF
\u
7EC4
\u6210\u
FF0C
\u
4E14
\u
5FC5
\u
987B
\u
4EE5
\u
975E
\u6570\u
5B57
\u
5F00
\u5934
user.password.not.valid=* 5-50
\u
4E2A
\u
5B57
\u
7B26
user.email.not.valid
=
邮箱格式错误
user.mobile.phone.number.not.valid
=
手机号格式错误
user.login.success
=
登录成功
user.notfound
=
请重新登录
user.forcelogout
=
管理员强制退出,请重新登录
user.unknown.error
=
未知错误,请重新登录
jcaptcha.validate.error
=
验证码错误,请重新输入
jcaptcha.validate.success
=
验证码输入正确
user.email.not.valid
=
\u
90AE
\u
7BB1
\u
683C
\u
5F0F
\u9519\u
8BEF
user.mobile.phone.number.not.valid
=
\u
624B
\u
673A
\u
53F7
\u
683C
\u
5F0F
\u9519\u
8BEF
user.login.success
=
\u
767B
\u
5F55
\u6210\u
529F
user.notfound
=
\u
8BF7
\u
91CD
\u
65B0
\u
767B
\u
5F55
user.forcelogout
=
\u
7BA1
\u7406\u5458\u
5F3A
\u5236\u9000\u
51FA
\u
FF0C
\u
8BF7
\u
91CD
\u
65B0
\u
767B
\u
5F55
user.unknown.error
=
\u
672A
\u
77E5
\u9519\u
8BEF
\u
FF0C
\u
8BF7
\u
91CD
\u
65B0
\u
767B
\u
5F55
jcaptcha.validate.error
=
\u
9A8C
\u
8BC1
\u7801\u9519\u
8BEF
\u
FF0C
\u
8BF7
\u
91CD
\u
65B0
\u
8F93
\u5165
jcaptcha.validate.success=
\u
9A8C
\u
8BC1
\u7801\u
8F93
\u5165\u
6B63
\u
786E
##权限
no.permission
=
您没有数据的权限,请联系管理员添加权限 [{0}]
no.create.permission
=
您没有创建数据的权限,请联系管理员添加权限 [{0}]
no.update.permission
=
您没有修改数据的权限,请联系管理员添加权限 [{0}]
no.delete.permission
=
您没有删除数据的权限,请联系管理员添加权限 [{0}]
no.view.permission
=
您没有查看数据的权限,请联系管理员添加权限 [{0}]
#\u6279\u91CF\u63D2\u5165\u7528\u6237\u9519\u8BEF\u4FE1\u606F
user.import.excel.null
=
Excel
\u6570\u
636E
\u
4E3A
\u
7A7A
\u
FF0C
\u
8BF7
\u6309\u7167\u
5BFC
\u5165\u
6A21
\u
677F
\u
586B
\u5199\u6570\u
636E
user.import.excel.data.null
=
Excel
\u6570\u
636E
\u
4E3A
\u
7A7A
\u
FF0C
\u
53EA
\u6709\u6807\u9898\u
884C
\u
FF0C
\u
8BF7
\u6309\u7167\u
5BFC
\u5165\u
6A21
\u
677F
\u
586B
\u5199\u6570\u
636E
user.import.excel.filetype.error
=
\u6587\u
4EF6
\u
4E0D
\u
662FExcel
\u6587\u
4EF6
user.import.excel.file.error
=
\u6587\u
4EF6
\u
540D
\u
4E3A
\u
7A7A
\u
FF0C
\u6587\u
4EF6
\u
4E3A
\u
7A7A
user.import.excel.fileinput.error
=
\u
83B7
\u
53D6Excel2003
\u
6D41
\u9519\u
8BEF
user.import.excel.fileinputx.error
=
\u
83B7
\u
53D6Excel2007
\u
6D41
\u9519\u
8BEF
##\u6743\u9650
no.permission
=
\u
60A8
\u
6CA1
\u6709\u6570\u
636E
\u7684\u6743\u9650\u
FF0C
\u
8BF7
\u8054\u
7CFB
\u
7BA1
\u7406\u5458\u
6DFB
\u
52A0
\u6743\u9650
[{0}]
no.create.permission
=
\u
60A8
\u
6CA1
\u6709\u
521B
\u
5EFA
\u6570\u
636E
\u7684\u6743\u9650\u
FF0C
\u
8BF7
\u8054\u
7CFB
\u
7BA1
\u7406\u5458\u
6DFB
\u
52A0
\u6743\u9650
[{0}]
no.update.permission
=
\u
60A8
\u
6CA1
\u6709\u
4FEE
\u6539\u6570\u
636E
\u7684\u6743\u9650\u
FF0C
\u
8BF7
\u8054\u
7CFB
\u
7BA1
\u7406\u5458\u
6DFB
\u
52A0
\u6743\u9650
[{0}]
no.delete.permission
=
\u
60A8
\u
6CA1
\u6709\u5220\u9664\u6570\u
636E
\u7684\u6743\u9650\u
FF0C
\u
8BF7
\u8054\u
7CFB
\u
7BA1
\u7406\u5458\u
6DFB
\u
52A0
\u6743\u9650
[{0}]
no.view.permission
=
\u
60A8
\u
6CA1
\u6709\u
67E5
\u
770B
\u6570\u
636E
\u7684\u6743\u9650\u
FF0C
\u
8BF7
\u8054\u
7CFB
\u
7BA1
\u7406\u5458\u
6DFB
\u
52A0
\u6743\u9650
[{0}]
src/main/resources/static/template/用户导入模板.xlsx
View file @
36dfecdc
No preview for this file type
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment