1. 完成用户导出的功能

2. 完成前后端的导出的封装
This commit is contained in:
YunaiV
2021-01-14 01:18:56 +08:00
parent 02ff516f0f
commit f942b34d02
16 changed files with 246 additions and 131 deletions

View File

@@ -3,6 +3,7 @@ package cn.iocoder.dashboard.modules.system.controller.user;
import cn.hutool.core.collection.CollUtil;
import cn.iocoder.dashboard.common.pojo.CommonResult;
import cn.iocoder.dashboard.common.pojo.PageResult;
import cn.iocoder.dashboard.framework.excel.core.util.ExcelUtils;
import cn.iocoder.dashboard.modules.system.controller.user.vo.user.*;
import cn.iocoder.dashboard.modules.system.convert.user.SysUserConvert;
import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.dept.SysDeptDO;
@@ -10,7 +11,7 @@ import cn.iocoder.dashboard.modules.system.dal.mysql.dataobject.user.SysUserDO;
import cn.iocoder.dashboard.modules.system.service.dept.SysDeptService;
import cn.iocoder.dashboard.modules.system.service.user.SysUserService;
import cn.iocoder.dashboard.util.collection.CollectionUtils;
import com.alibaba.excel.EasyExcel;
import cn.iocoder.dashboard.util.collection.MapUtils;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiOperation;
@@ -20,7 +21,10 @@ import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;
import static cn.iocoder.dashboard.common.pojo.CommonResult.success;
@@ -37,7 +41,7 @@ public class SysUserController {
@ApiOperation("获得用户分页列表")
@GetMapping("/page")
// @PreAuthorize("@ss.hasPermi('system:user:list')")
public CommonResult<PageResult<SysUserPageItemRespVO>> pageUsers(SysUserPageReqVO reqVO) {
public CommonResult<PageResult<SysUserPageItemRespVO>> pageUsers(@Validated SysUserPageReqVO reqVO) {
// 获得用户分页列表
PageResult<SysUserDO> pageResult = userService.pageUsers(reqVO);
if (CollUtil.isEmpty(pageResult.getList())) {
@@ -45,13 +49,8 @@ public class SysUserController {
}
// 获得拼接需要的数据
Map<Long, SysDeptDO> deptMap;
Collection<Long> deptIds = CollectionUtils.convertList(pageResult.getList(), SysUserDO::getDeptId);
if (CollUtil.isNotEmpty(deptIds)) {
deptMap = CollectionUtils.convertMap(deptService.listDepts(deptIds), SysDeptDO::getId);
} else {
deptMap = Collections.emptyMap();
}
Map<Long, SysDeptDO> deptMap = deptService.getDeptMap(deptIds);
// 拼接结果返回
List<SysUserPageItemRespVO> userList = new ArrayList<>(pageResult.getList().size());
pageResult.getList().forEach(user -> {
@@ -121,11 +120,29 @@ public class SysUserController {
@ApiOperation("导出用户")
@GetMapping("/export")
public void exportUsers(HttpServletResponse response) throws IOException {
String fileName = "测试文件.xls";
response.addHeader("Content-Disposition", "attachment;filename=" + fileName);
response.setContentType("application/vnd.ms-excel;charset=UTF-8");
EasyExcel.write(response.getOutputStream(), SysUserExcelVO.class).sheet().doWrite(new ArrayList<>());
// @PreAuthorize("@ss.hasPermi('system:user:export')") , @Validated SysUserExportReqVO reqVO
// @Log(title = "用户管理", businessType = BusinessType.EXPORT)
public void exportUsers(HttpServletResponse response, @Validated SysUserExportReqVO reqVO) throws IOException {
// 获得用户列表
List<SysUserDO> users = userService.listUsers(reqVO);
// 获得拼接需要的数据
Collection<Long> deptIds = CollectionUtils.convertList(users, SysUserDO::getDeptId);
Map<Long, SysDeptDO> deptMap = deptService.getDeptMap(deptIds);
// 拼接数据
List<SysUserExcelVO> excelUsers = new ArrayList<>(users.size());
users.forEach(user -> {
SysUserExcelVO excelVO = SysUserConvert.INSTANCE.convert02(user);
MapUtils.findAndThen(deptMap, user.getDeptId(), dept -> {
excelVO.setDeptName(dept.getName());
excelVO.setDeptLeader(dept.getLeader());
});
excelUsers.add(excelVO);
});
// 输出
ExcelUtils.write(response, "用户数据.xls", "用户列表",
SysUserExcelVO.class, excelUsers);
}
// @Log(title = "用户管理", businessType = BusinessType.EXPORT)

View File

@@ -22,7 +22,7 @@ public class SysUserExcelVO {
@ExcelProperty("用户名称")
private String username;
@ExcelProperty("用户")
@ExcelProperty("用户")
private String nickname;
@ExcelProperty("用户邮箱")

View File

@@ -0,0 +1,40 @@
package cn.iocoder.dashboard.modules.system.controller.user.vo.user;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;
import java.util.Date;
import static cn.iocoder.dashboard.util.date.DateUtils.FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND;
@ApiModel(value = "用户导出 Request VO", description = "参数和 SysUserPageReqVO 是一致的")
@Data
@NoArgsConstructor
@AllArgsConstructor
public class SysUserExportReqVO {
@ApiModelProperty(value = "用户账号", example = "yudao", notes = "模糊匹配")
private String username;
@ApiModelProperty(value = "手机号码", example = "yudao", notes = "模糊匹配")
private String mobile;
@ApiModelProperty(value = "展示状态", example = "1", notes = "参见 SysCommonStatusEnum 枚举类")
private Integer status;
@ApiModelProperty(value = "开始时间", example = "2020-10-24")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private Date beginTime;
@ApiModelProperty(value = "结束时间", example = "2020-10-24")
@DateTimeFormat(pattern = FORMAT_YEAR_MONTH_DAY_HOUR_MINUTE_SECOND)
private Date endTime;
@ApiModelProperty(value = "部门编号", example = "1024", notes = "同时筛选子部门")
private Long deptId;
}