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

用户导出修改

上级 94bce27b
...@@ -109,6 +109,12 @@ ...@@ -109,6 +109,12 @@
<artifactId>ruoyi-api-server</artifactId> <artifactId>ruoyi-api-server</artifactId>
</dependency> </dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.35</version>
</dependency>
</dependencies> </dependencies>
<build> <build>
......
...@@ -8,7 +8,6 @@ import org.dromara.common.excel.convert.ExcelDictConvert; ...@@ -8,7 +8,6 @@ import org.dromara.common.excel.convert.ExcelDictConvert;
import java.io.Serial; import java.io.Serial;
import java.io.Serializable; import java.io.Serializable;
import java.util.Date;
/** /**
* 用户对象导出VO * 用户对象导出VO
...@@ -42,10 +41,15 @@ public class SysUserExportVo implements Serializable { ...@@ -42,10 +41,15 @@ public class SysUserExportVo implements Serializable {
private String nickName; private String nickName;
/** /**
* 用户邮箱 * 部门id
*/ */
@ExcelProperty(value = "用户邮箱") private Long deptId;
private String email;
/**
* 归属部门
*/
@ExcelProperty(value = "归属部门")
private String deptName;
/** /**
* 手机号码 * 手机号码
...@@ -53,6 +57,18 @@ public class SysUserExportVo implements Serializable { ...@@ -53,6 +57,18 @@ public class SysUserExportVo implements Serializable {
@ExcelProperty(value = "手机号码") @ExcelProperty(value = "手机号码")
private String phonenumber; private String phonenumber;
/**
* 用户邮箱
*/
@ExcelProperty(value = "用户邮箱")
private String email;
/**
* 身份证号码
*/
@ExcelProperty(value = "身份证")
private String idCard;
/** /**
* 用户性别 * 用户性别
*/ */
...@@ -67,28 +83,27 @@ public class SysUserExportVo implements Serializable { ...@@ -67,28 +83,27 @@ public class SysUserExportVo implements Serializable {
@ExcelDictFormat(dictType = "sys_normal_disable") @ExcelDictFormat(dictType = "sys_normal_disable")
private String status; private String status;
/** @ExcelProperty("岗位")
* 最后登录IP private String postName;
*/
@ExcelProperty(value = "最后登录IP") @ExcelProperty("角色")
private String loginIp; private String roleName;
/** /**
* 最后登录时间 * 微信号
*/ */
@ExcelProperty(value = "最后登录时间") @ExcelProperty("微信号")
private Date loginDate; private String wechatId;
/** /**
* 部门名称 * 微信二维码
*/ */
@ExcelProperty(value = "部门名称") @ExcelProperty("微信二维码")
private String deptName; private Long wechatQrCode;
/** /**
* 负责人 * 备注
*/ */
@ExcelProperty(value = "部门负责人") @ExcelProperty("备注")
private String leaderName; private String remark;
} }
...@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil; ...@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.ObjectUtil; 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.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
...@@ -42,9 +43,8 @@ import org.springframework.cache.annotation.Cacheable; ...@@ -42,9 +43,8 @@ import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import java.util.ArrayList; import java.util.*;
import java.util.List; import java.util.stream.Collectors;
import java.util.Map;
/** /**
* 用户 业务层处理 * 用户 业务层处理
...@@ -86,7 +86,72 @@ public class SysUserServiceImpl implements ISysUserService { ...@@ -86,7 +86,72 @@ public class SysUserServiceImpl implements ISysUserService {
*/ */
@Override @Override
public List<SysUserExportVo> selectUserExportList(SysUserBo user) { 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) { private Wrapper<SysUser> buildQueryWrapper(SysUserBo user) {
......
...@@ -52,8 +52,8 @@ ...@@ -52,8 +52,8 @@
<select id="selectUserExportList" resultMap="SysUserExportResult"> <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, 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, u.wechat_id, u.wechat_qr_code, u.dept_id,
d.dept_name, d.leader, u1.user_name as leaderName u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark
from sys_user u from sys_user u
left join sys_dept d on u.dept_id = d.dept_id left join sys_dept d on u.dept_id = d.dept_id
left join sys_user u1 on u1.user_id = d.leader left join sys_user u1 on u1.user_id = d.leader
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论