提交 2a6387da authored 作者: hzh's avatar hzh

用户导出修改

上级 94bce27b
......@@ -109,6 +109,12 @@
<artifactId>ruoyi-api-server</artifactId>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.35</version>
</dependency>
</dependencies>
<build>
......
......@@ -8,7 +8,6 @@ import org.dromara.common.excel.convert.ExcelDictConvert;
import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
/**
* 用户对象导出VO
......@@ -42,10 +41,15 @@ public class SysUserExportVo implements Serializable {
private String nickName;
/**
* 用户邮箱
* 部门id
*/
@ExcelProperty(value = "用户邮箱")
private String email;
private Long deptId;
/**
* 归属部门
*/
@ExcelProperty(value = "归属部门")
private String deptName;
/**
* 手机号码
......@@ -53,6 +57,18 @@ public class SysUserExportVo implements Serializable {
@ExcelProperty(value = "手机号码")
private String phonenumber;
/**
* 用户邮箱
*/
@ExcelProperty(value = "用户邮箱")
private String email;
/**
* 身份证号码
*/
@ExcelProperty(value = "身份证")
private String idCard;
/**
* 用户性别
*/
......@@ -67,28 +83,27 @@ public class SysUserExportVo implements Serializable {
@ExcelDictFormat(dictType = "sys_normal_disable")
private String status;
/**
* 最后登录IP
*/
@ExcelProperty(value = "最后登录IP")
private String loginIp;
@ExcelProperty("岗位")
private String postName;
@ExcelProperty("角色")
private String roleName;
/**
* 最后登录时间
* 微信号
*/
@ExcelProperty(value = "最后登录时间")
private Date loginDate;
@ExcelProperty("微信号")
private String wechatId;
/**
* 部门名称
* 微信二维码
*/
@ExcelProperty(value = "部门名称")
private String deptName;
@ExcelProperty("微信二维码")
private Long wechatQrCode;
/**
* 负责人
* 备注
*/
@ExcelProperty(value = "部门负责人")
private String leaderName;
@ExcelProperty("备注")
private String remark;
}
......@@ -4,6 +4,7 @@ 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;
......@@ -42,9 +43,8 @@ import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.*;
import java.util.stream.Collectors;
/**
* 用户 业务层处理
......@@ -86,7 +86,72 @@ public class SysUserServiceImpl implements ISysUserService {
*/
@Override
public List<SysUserExportVo> selectUserExportList(SysUserBo user) {
return baseMapper.selectUserExportList(this.buildQueryWrapper(user));
List<SysUserExportVo> list = baseMapper.selectUserExportList(this.buildQueryWrapper(user));
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<SysUserPost> supList = userPostMapper.selectList(new LambdaQueryWrapper<SysUserPost>().in(SysUserPost::getUserId, userIds));
List<SysPost> postList = new ArrayList<>();
if (CollectionUtils.isNotEmpty(supList)) {
List<Long> postIds = StreamUtils.toList(supList, SysUserPost::getPostId);
postList = postMapper.selectByIds(postIds);
}
//获取角色信息
List<SysUserRole> surList = userRoleMapper.selectList(new LambdaQueryWrapper<SysUserRole>().in(SysUserRole::getUserId, userIds));
List<SysRole> roleList = new ArrayList<>();
if (CollectionUtils.isNotEmpty(supList)) {
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("/")));
}
}
//设置岗位信息
List<SysUserPost> posts = StreamUtils.filter(supList, sup -> Objects.equals(sup.getUserId(), export.getUserId()));
if (CollectionUtils.isNotEmpty(posts)) {
List<Long> pIds = StreamUtils.toList(posts, SysUserPost::getPostId);
export.setPostName(pIds.stream().map(pid -> {
return Optional.ofNullable(StreamUtils.findFirst(finalPostList, p -> Objects.equals(p.getPostId(), pid))).map(SysPost::getPostName).orElse(null);
}).filter(Objects::nonNull).collect(Collectors.joining("/")));
}
//设置角色信息
List<SysUserRole> roles = StreamUtils.filter(surList, sur -> Objects.equals(sur.getUserId(), export.getUserId()));
if (CollectionUtils.isNotEmpty(roles)) {
List<Long> rIds = StreamUtils.toList(roles, SysUserRole::getRoleId);
export.setRoleName(rIds.stream().map(rid -> {
return Optional.ofNullable(StreamUtils.findFirst(finalRoleList, p -> Objects.equals(p.getRoleId(), rid))).map(SysRole::getRoleName).orElse(null);
}).filter(Objects::nonNull).collect(Collectors.joining("/")));
}
}
}
return list;
}
private Wrapper<SysUser> buildQueryWrapper(SysUserBo user) {
......
......@@ -52,8 +52,8 @@
<select id="selectUserExportList" resultMap="SysUserExportResult">
select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.id_card, u.phonenumber, u.sex,
u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,
d.dept_name, d.leader, u1.user_name as leaderName
u.wechat_id, u.wechat_qr_code, u.dept_id,
u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark
from sys_user u
left join sys_dept d on u.dept_id = d.dept_id
left join sys_user u1 on u1.user_id = d.leader
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论