Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
T
travel-cloud
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
cloud
travel-cloud
Commits
6144810e
提交
6144810e
authored
6月 05, 2025
作者:
hzh
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
导入修改
上级
0562fbe6
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
64 行增加
和
60 行删除
+64
-60
DropDownOptions.java
...n/java/org/dromara/common/excel/core/DropDownOptions.java
+1
-1
SysUserController.java
...g/dromara/system/controller/system/SysUserController.java
+4
-25
SysUserImportListener.java
...va/org/dromara/system/listener/SysUserImportListener.java
+6
-2
ISysDeptService.java
...main/java/org/dromara/system/service/ISysDeptService.java
+8
-0
SysDeptServiceImpl.java
...a/org/dromara/system/service/impl/SysDeptServiceImpl.java
+39
-4
SysUserServiceImpl.java
...a/org/dromara/system/service/impl/SysUserServiceImpl.java
+6
-28
没有找到文件。
ruoyi-common/ruoyi-common-excel/src/main/java/org/dromara/common/excel/core/DropDownOptions.java
浏览文件 @
6144810e
...
...
@@ -44,7 +44,7 @@ public class DropDownOptions {
/**
* 分隔符
*/
p
rivate
static
final
String
DELIMITER
=
"_"
;
p
ublic
static
final
String
DELIMITER
=
"_"
;
/**
* 创建只有一级的下拉选
...
...
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/system/SysUserController.java
浏览文件 @
6144810e
...
...
@@ -93,7 +93,7 @@ public class SysUserController extends BaseController {
@SaCheckPermission
(
"system:user:import"
)
@PostMapping
(
value
=
"/importData"
,
consumes
=
MediaType
.
MULTIPART_FORM_DATA_VALUE
)
public
R
<
Void
>
importData
(
@RequestPart
(
"file"
)
MultipartFile
file
,
boolean
updateSupport
)
throws
Exception
{
ExcelResult
<
SysUserImportVo
>
result
=
ExcelUtil
.
importExcel
(
file
.
getInputStream
(),
SysUserImportVo
.
class
,
new
SysUserImportListener
(
false
));
ExcelResult
<
SysUserImportVo
>
result
=
ExcelUtil
.
importExcel
(
file
.
getInputStream
(),
SysUserImportVo
.
class
,
new
SysUserImportListener
(
false
,
deptService
.
selectDeptList
(
"/"
)
));
return
R
.
ok
(
result
.
getAnalysis
());
}
...
...
@@ -108,30 +108,9 @@ public class SysUserController extends BaseController {
// @org.jetbrains.annotations.NotNull
// private List<DropDownOptions> getDropDownOptions() {
// SysDeptBo sysDeptBo = new SysDeptBo();
// sysDeptBo.setStatus(UserConstants.DEPT_NORMAL);
// //获取部门列表
// List<SysDeptVo> deptList = deptService.selectDeptList(sysDeptBo);
// deptList.forEach(d -> {
// //设置名称
// Long parentId = d.getParentId();
// List<String> nameList = new ArrayList<>();
// nameList.add(d.getDeptName());
// while (parentId != 0L) {
// Long finalParentId = parentId;
// SysDeptVo sdv = StreamUtils.findFirst(deptList, dept -> Objects.equals(dept.getDeptId(), finalParentId));
// if (sdv != null) {
// nameList.add(sdv.getDeptName());
// parentId = sdv.getParentId();
// } else {
// parentId = 0L;
// }
// }
// Collections.reverse(nameList);
// String name = StrUtil.join("-", nameList);
// d.setDeptName(name);
// });
// List<DemoDept> deptDataList = StreamUtils.toList(deptList, dept -> new DemoDept().setId(dept.getDeptId()).setName(dept.getDeptName()).setDeptId(dept.getDeptId()));
// // 获取部门列表
// List<SysDeptVo> deptList = deptService.selectDeptList(DropDownOptions.DELIMITER);
// List<DemoDept> deptDataList = StreamUtils.toList(deptList, p -> new DemoDept().setId(p.getDeptId()).setName(p.getDeptName()).setDeptId(p.getDeptId()));
// //获取角色列表
// List<SysRoleVo> roleList = getInfo(null).getData().getRoles();
// //获取职位列表
...
...
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/listener/SysUserImportListener.java
浏览文件 @
6144810e
...
...
@@ -20,12 +20,14 @@ import org.dromara.common.excel.core.ExcelResult;
import
org.dromara.common.satoken.utils.LoginHelper
;
import
org.dromara.system.controller.system.SysUserController
;
import
org.dromara.system.domain.bo.SysUserBo
;
import
org.dromara.system.domain.vo.SysDeptVo
;
import
org.dromara.system.domain.vo.SysUserImportVo
;
import
org.dromara.system.domain.vo.SysUserVo
;
import
org.dromara.system.service.*
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.Optional
;
/**
* 系统用户自定义导入
...
...
@@ -46,13 +48,14 @@ public class SysUserImportListener extends AnalysisEventListener<SysUserImportVo
private
final
Boolean
isUpdateSupport
;
private
final
Long
operUserId
;
private
final
List
<
SysDeptVo
>
deptList
;
private
int
successNum
=
0
;
private
int
failureNum
=
0
;
private
final
StringBuilder
successMsg
=
new
StringBuilder
();
private
final
StringBuilder
failureMsg
=
new
StringBuilder
();
public
SysUserImportListener
(
Boolean
isUpdateSupport
)
{
public
SysUserImportListener
(
Boolean
isUpdateSupport
,
List
<
SysDeptVo
>
deptList
)
{
String
initPassword
=
SpringUtils
.
getBean
(
ISysConfigService
.
class
).
selectConfigByKey
(
"sys.user.initPassword"
);
this
.
userService
=
SpringUtils
.
getBean
(
ISysUserService
.
class
);
this
.
sysUserController
=
SpringUtils
.
getBean
(
SysUserController
.
class
);
...
...
@@ -62,6 +65,7 @@ public class SysUserImportListener extends AnalysisEventListener<SysUserImportVo
this
.
password
=
BCrypt
.
hashpw
(
initPassword
);
this
.
isUpdateSupport
=
isUpdateSupport
;
this
.
operUserId
=
LoginHelper
.
getUserId
();
this
.
deptList
=
deptList
;
}
@Override
...
...
@@ -76,7 +80,7 @@ public class SysUserImportListener extends AnalysisEventListener<SysUserImportVo
user
.
setCreateBy
(
operUserId
);
//设置部门
if
(
StringUtils
.
isNotEmpty
(
userVo
.
getDeptName
()))
{
Long
deptId
=
sysDeptService
.
selectDeptIdByName
(
StrUtil
.
split
(
userVo
.
getDeptName
(),
"/"
)
);
Long
deptId
=
Optional
.
ofNullable
(
StreamUtils
.
findFirst
(
deptList
,
d
->
Objects
.
equals
(
d
.
getDeptName
(),
userVo
.
getDeptName
()))).
map
(
SysDeptVo:
:
getDeptId
).
orElse
(
null
);
user
.
setDeptId
(
deptId
);
}
//设置岗位
...
...
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java
浏览文件 @
6144810e
...
...
@@ -22,6 +22,14 @@ public interface ISysDeptService {
*/
List
<
SysDeptVo
>
selectDeptList
(
SysDeptBo
dept
);
/**
* 获取数据
*
* @param split 分割符
* @return 部门信息集合
*/
List
<
SysDeptVo
>
selectDeptList
(
String
split
);
/**
* 查询部门树结构信息
*
...
...
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java
浏览文件 @
6144810e
...
...
@@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollUtil;
import
cn.hutool.core.convert.Convert
;
import
cn.hutool.core.lang.tree.Tree
;
import
cn.hutool.core.util.ObjectUtil
;
import
cn.hutool.core.util.StrUtil
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
...
...
@@ -15,6 +16,7 @@ import org.dromara.common.core.constant.CacheNames;
import
org.dromara.common.core.constant.UserConstants
;
import
org.dromara.common.core.exception.ServiceException
;
import
org.dromara.common.core.utils.*
;
import
org.dromara.common.excel.core.DropDownOptions
;
import
org.dromara.common.mybatis.helper.DataBaseHelper
;
import
org.dromara.common.redis.utils.CacheUtils
;
import
org.dromara.common.satoken.utils.LoginHelper
;
...
...
@@ -29,10 +31,7 @@ import org.springframework.cache.annotation.CacheEvict;
import
org.springframework.cache.annotation.Cacheable
;
import
org.springframework.stereotype.Service
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.Objects
;
import
java.util.*
;
import
java.util.stream.Collectors
;
/**
...
...
@@ -63,6 +62,42 @@ public class SysDeptServiceImpl implements ISysDeptService {
return
baseMapper
.
selectDeptList
(
lqw
);
}
@Override
public
List
<
SysDeptVo
>
selectDeptList
(
String
split
)
{
SysDeptBo
dept
=
new
SysDeptBo
();
dept
.
setStatus
(
UserConstants
.
DEPT_NORMAL
);
LambdaQueryWrapper
<
SysDept
>
lqw
=
buildQueryWrapper
(
dept
);
List
<
SysDeptVo
>
deptList
=
baseMapper
.
selectDeptList
(
lqw
);
// 构建部门ID到部门对象的映射,提高查找效率
Map
<
Long
,
SysDeptVo
>
deptMap
=
deptList
.
stream
()
.
collect
(
Collectors
.
toMap
(
SysDeptVo:
:
getDeptId
,
d
->
d
));
return
StreamUtils
.
toList
(
deptList
,
d
->
{
List
<
String
>
nameList
=
new
ArrayList
<>();
Long
currentId
=
d
.
getDeptId
();
// 自底向上收集部门名称
while
(
currentId
!=
null
&&
currentId
!=
0L
)
{
SysDeptVo
currentDept
=
deptMap
.
get
(
currentId
);
if
(
currentDept
==
null
)
{
break
;
}
nameList
.
add
(
currentDept
.
getDeptName
());
currentId
=
currentDept
.
getParentId
();
}
// 如果没有找到任何部门,使用原始名称
if
(
nameList
.
isEmpty
())
{
nameList
.
add
(
dept
.
getDeptName
());
}
else
{
// 反转列表以获得正确的层级顺序
Collections
.
reverse
(
nameList
);
}
// 拼接层级名称
String
fullName
=
StrUtil
.
join
(
DropDownOptions
.
DELIMITER
,
nameList
);
SysDeptVo
sd
=
BeanUtil
.
copyProperties
(
d
,
SysDeptVo
.
class
);
sd
.
setDeptName
(
fullName
);
return
sd
;
});
}
/**
* 查询部门树结构信息
*
...
...
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysUserServiceImpl.java
浏览文件 @
6144810e
...
...
@@ -4,7 +4,6 @@ import cn.hutool.core.collection.CollUtil;
import
cn.hutool.core.convert.Convert
;
import
cn.hutool.core.util.ArrayUtil
;
import
cn.hutool.core.util.ObjectUtil
;
import
cn.hutool.core.util.StrUtil
;
import
com.baomidou.mybatisplus.core.conditions.Wrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.conditions.query.QueryWrapper
;
...
...
@@ -32,11 +31,9 @@ import org.dromara.server.api.RemoteServerService;
import
org.dromara.server.api.domain.RemoteUser
;
import
org.dromara.system.domain.*
;
import
org.dromara.system.domain.bo.SysUserBo
;
import
org.dromara.system.domain.vo.SysPostVo
;
import
org.dromara.system.domain.vo.SysRoleVo
;
import
org.dromara.system.domain.vo.SysUserExportVo
;
import
org.dromara.system.domain.vo.SysUserVo
;
import
org.dromara.system.domain.vo.*
;
import
org.dromara.system.mapper.*
;
import
org.dromara.system.service.ISysDeptService
;
import
org.dromara.system.service.ISysUserService
;
import
org.springframework.cache.annotation.CacheEvict
;
import
org.springframework.cache.annotation.Cacheable
;
...
...
@@ -63,6 +60,7 @@ public class SysUserServiceImpl implements ISysUserService {
private
final
SysUserRoleMapper
userRoleMapper
;
private
final
SysUserPostMapper
userPostMapper
;
private
final
SysTenantMapper
sysTenantMapper
;
private
final
ISysDeptService
sysDeptService
;
@DubboReference
private
RemoteServerService
remoteServerService
;
...
...
@@ -90,17 +88,7 @@ public class SysUserServiceImpl implements ISysUserService {
if
(
CollectionUtils
.
isNotEmpty
(
list
))
{
List
<
Long
>
userIds
=
StreamUtils
.
toList
(
list
,
SysUserExportVo:
:
getUserId
);
//获取部门信息
List
<
Long
>
deptIdList
=
list
.
stream
().
map
(
SysUserExportVo:
:
getDeptId
).
filter
(
Objects:
:
nonNull
).
distinct
().
collect
(
Collectors
.
toList
());
List
<
SysDept
>
deptList
=
new
ArrayList
<>();
if
(
CollectionUtils
.
isNotEmpty
(
deptIdList
))
{
List
<
SysDept
>
sysDeptList
=
deptMapper
.
selectByIds
(
deptIdList
);
deptIdList
=
sysDeptList
.
stream
().
flatMap
(
s
->
{
List
<
Long
>
deptIds
=
StrUtil
.
split
(
s
.
getAncestors
(),
','
,
-
1
,
true
,
Convert:
:
toLong
);
deptIds
.
add
(
s
.
getDeptId
());
return
deptIds
.
stream
();
}).
distinct
().
collect
(
Collectors
.
toList
());
deptList
=
deptMapper
.
selectByIds
(
deptIdList
);
}
List
<
SysDeptVo
>
deptList
=
sysDeptService
.
selectDeptList
(
"/"
);
//获取岗位信息
List
<
SysUserPost
>
supList
=
userPostMapper
.
selectList
(
new
LambdaQueryWrapper
<
SysUserPost
>().
in
(
SysUserPost:
:
getUserId
,
userIds
));
List
<
SysPost
>
postList
=
new
ArrayList
<>();
...
...
@@ -115,23 +103,13 @@ public class SysUserServiceImpl implements ISysUserService {
List
<
Long
>
roleIds
=
StreamUtils
.
toList
(
surList
,
SysUserRole:
:
getRoleId
);
roleList
=
roleMapper
.
selectByIds
(
roleIds
);
}
List
<
SysDept
>
finalDeptList
=
deptList
;
List
<
SysPost
>
finalPostList
=
postList
;
List
<
SysRole
>
finalRoleList
=
roleList
;
for
(
SysUserExportVo
export
:
list
)
{
//设置部门信息
if
(
ObjectUtil
.
isNotNull
(
export
.
getDeptId
()))
{
SysDept
sd
=
StreamUtils
.
findFirst
(
deptList
,
d
->
Objects
.
equals
(
d
.
getDeptId
(),
export
.
getDeptId
()));
if
(
ObjectUtil
.
isNotNull
(
sd
))
{
List
<
Long
>
deptIds
=
StrUtil
.
split
(
sd
.
getAncestors
(),
','
,
-
1
,
true
,
Convert:
:
toLong
);
deptIds
.
add
(
sd
.
getDeptId
());
export
.
setDeptName
(
deptIds
.
stream
().
map
(
deptId
->
{
if
(
Objects
.
equals
(
deptId
,
0L
))
{
return
null
;
}
return
Optional
.
ofNullable
(
StreamUtils
.
findFirst
(
finalDeptList
,
d
->
Objects
.
equals
(
d
.
getDeptId
(),
deptId
))).
map
(
SysDept:
:
getDeptName
).
orElse
(
null
);
}).
filter
(
Objects:
:
nonNull
).
collect
(
Collectors
.
joining
(
"/"
)));
}
export
.
setDeptName
(
Optional
.
ofNullable
(
StreamUtils
.
findFirst
(
deptList
,
d
->
Objects
.
equals
(
d
.
getDeptId
(),
export
.
getDeptId
()))).
map
(
SysDeptVo:
:
getDeptName
).
orElse
(
null
));
}
//设置岗位信息
List
<
SysUserPost
>
posts
=
StreamUtils
.
filter
(
supList
,
sup
->
Objects
.
equals
(
sup
.
getUserId
(),
export
.
getUserId
()));
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论