mirror of https://gitee.com/xiaonuobase/snowy
【更新】完成用户导出功能
parent
eb7b68e2e5
commit
2f566b2d1a
|
@ -0,0 +1,112 @@
|
|||
/*
|
||||
* Copyright [2022] [https://www.xiaonuo.vip]
|
||||
*
|
||||
* Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点:
|
||||
*
|
||||
* 1.请不要删除和修改根目录下的LICENSE文件。
|
||||
* 2.请不要删除和修改Snowy源码头部的版权声明。
|
||||
* 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。
|
||||
* 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip
|
||||
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
|
||||
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
||||
*/
|
||||
package vip.xiaonuo.common.excel;
|
||||
|
||||
import com.alibaba.excel.metadata.Head;
|
||||
import com.alibaba.excel.write.merge.AbstractMergeStrategy;
|
||||
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
||||
import org.apache.poi.ss.usermodel.Cell;
|
||||
import org.apache.poi.ss.usermodel.Sheet;
|
||||
import org.apache.poi.ss.util.CellRangeAddress;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* EasyExcel自定义合并策略 该类继承了AbstractMergeStrategy抽象合并策略,需要重写merge()方法
|
||||
*
|
||||
* @author xuyuxiang
|
||||
* @date 2023/3/6 13:21
|
||||
**/
|
||||
public class CommonExcelCustomMergeStrategy extends AbstractMergeStrategy {
|
||||
|
||||
/**
|
||||
* 分组,每几行合并一次
|
||||
*/
|
||||
private final List<Integer> exportFieldGroupCountList;
|
||||
|
||||
/**
|
||||
* 目标合并列index
|
||||
*/
|
||||
private final Integer targetColumnIndex;
|
||||
|
||||
/**
|
||||
* 需要开始合并单元格的首行index
|
||||
*/
|
||||
private Integer rowIndex;
|
||||
|
||||
/**
|
||||
* exportDataList为待合并目标列的值
|
||||
*
|
||||
* @author xuyuxiang
|
||||
* @date 2023/3/6 13:23
|
||||
**/
|
||||
public CommonExcelCustomMergeStrategy(List<String> exportDataList, Integer targetColumnIndex) {
|
||||
this.exportFieldGroupCountList = getGroupCountList(exportDataList);
|
||||
this.targetColumnIndex = targetColumnIndex;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void merge(Sheet sheet, Cell cell, Head head, Integer relativeRowIndex) {
|
||||
|
||||
if (null == rowIndex) {
|
||||
rowIndex = cell.getRowIndex();
|
||||
}
|
||||
// 仅从首行以及目标列的单元格开始合并,忽略其他
|
||||
if (cell.getRowIndex() == rowIndex && cell.getColumnIndex() == targetColumnIndex) {
|
||||
mergeGroupColumn(sheet);
|
||||
}
|
||||
}
|
||||
|
||||
private void mergeGroupColumn(Sheet sheet) {
|
||||
int rowCount = rowIndex;
|
||||
for (Integer count : exportFieldGroupCountList) {
|
||||
if(count == 1) {
|
||||
rowCount += count;
|
||||
continue ;
|
||||
}
|
||||
// 合并单元格
|
||||
CellRangeAddress cellRangeAddress = new CellRangeAddress(rowCount, rowCount + count - 1, targetColumnIndex, targetColumnIndex);
|
||||
sheet.addMergedRegionUnsafe(cellRangeAddress);
|
||||
rowCount += count;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* 该方法将目标列根据值是否相同连续可合并,存储可合并的行数
|
||||
*
|
||||
* @author xuyuxiang
|
||||
* @date 2023/3/6 13:23
|
||||
**/
|
||||
private List<Integer> getGroupCountList(List<String> exportDataList){
|
||||
if (CollectionUtils.isEmpty(exportDataList)) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
List<Integer> groupCountList = new ArrayList<>();
|
||||
int count = 1;
|
||||
|
||||
for (int i = 1; i < exportDataList.size(); i++) {
|
||||
if (exportDataList.get(i).equals(exportDataList.get(i - 1))) {
|
||||
count++;
|
||||
} else {
|
||||
groupCountList.add(count);
|
||||
count = 1;
|
||||
}
|
||||
}
|
||||
// 处理完最后一条后
|
||||
groupCountList.add(count);
|
||||
return groupCountList;
|
||||
}
|
||||
}
|
|
@ -14,6 +14,9 @@ package vip.xiaonuo.sys.modular.user.result;
|
|||
|
||||
import com.alibaba.excel.annotation.ExcelProperty;
|
||||
import com.alibaba.excel.annotation.format.DateTimeFormat;
|
||||
import com.alibaba.excel.annotation.write.style.ColumnWidth;
|
||||
import com.alibaba.excel.annotation.write.style.HeadStyle;
|
||||
import com.alibaba.excel.enums.poi.FillPatternTypeEnum;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
|
@ -29,169 +32,216 @@ import java.util.Date;
|
|||
@Setter
|
||||
public class SysUserExportResult {
|
||||
|
||||
/** 机构分组 */
|
||||
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 40)
|
||||
@ExcelProperty({"用户信息", "机构分组"})
|
||||
private String groupName;
|
||||
|
||||
/** 头像 */
|
||||
@ExcelProperty({"基本信息", "头像"})
|
||||
@ColumnWidth(8)
|
||||
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 29)
|
||||
@ExcelProperty({"用户信息", "基本信息", "头像"})
|
||||
private byte[] avatar;
|
||||
|
||||
/** 账号 */
|
||||
@ExcelProperty({"基本信息", "账号"})
|
||||
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 29)
|
||||
@ExcelProperty({"用户信息", "基本信息", "账号"})
|
||||
private String account;
|
||||
|
||||
/** 姓名 */
|
||||
@ExcelProperty({"基本信息", "姓名"})
|
||||
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 29)
|
||||
@ExcelProperty({"用户信息", "基本信息", "姓名"})
|
||||
private String name;
|
||||
|
||||
/** 昵称 */
|
||||
@ExcelProperty({"基本信息", "昵称"})
|
||||
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 29)
|
||||
@ExcelProperty({"用户信息", "基本信息", "昵称"})
|
||||
private String nickname;
|
||||
|
||||
/** 性别 */
|
||||
@ExcelProperty({"基本信息", "性别"})
|
||||
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 29)
|
||||
@ExcelProperty({"用户信息", "基本信息", "性别"})
|
||||
private String gender;
|
||||
|
||||
/** 年龄 */
|
||||
@ExcelProperty({"基本信息", "年龄"})
|
||||
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 29)
|
||||
@ExcelProperty({"用户信息", "基本信息", "年龄"})
|
||||
private String age;
|
||||
|
||||
/** 出生日期 */
|
||||
@ExcelProperty({"基本信息", "出生日期"})
|
||||
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 29)
|
||||
@ExcelProperty({"用户信息", "基本信息", "出生日期"})
|
||||
private String birthday;
|
||||
|
||||
/** 民族 */
|
||||
@ExcelProperty({"基本信息", "民族"})
|
||||
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 29)
|
||||
@ExcelProperty({"用户信息", "基本信息", "民族"})
|
||||
private String nation;
|
||||
|
||||
/** 籍贯 */
|
||||
@ExcelProperty({"基本信息", "籍贯"})
|
||||
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 29)
|
||||
@ExcelProperty({"用户信息", "基本信息", "籍贯"})
|
||||
private String nativePlace;
|
||||
|
||||
/** 家庭住址 */
|
||||
@ExcelProperty({"基本信息", "家庭住址"})
|
||||
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 29)
|
||||
@ExcelProperty({"用户信息", "基本信息", "家庭住址"})
|
||||
private String homeAddress;
|
||||
|
||||
/** 通信地址 */
|
||||
@ExcelProperty({"基本信息", "通信地址"})
|
||||
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 29)
|
||||
@ExcelProperty({"用户信息", "基本信息", "通信地址"})
|
||||
private String mailingAddress;
|
||||
|
||||
/** 证件类型 */
|
||||
@ExcelProperty({"基本信息", "证件类型"})
|
||||
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 29)
|
||||
@ExcelProperty({"用户信息", "基本信息", "证件类型"})
|
||||
private String idCardType;
|
||||
|
||||
/** 证件号码 */
|
||||
@ExcelProperty({"基本信息", "证件号码"})
|
||||
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 29)
|
||||
@ExcelProperty({"用户信息", "基本信息", "证件号码"})
|
||||
private String idCardNumber;
|
||||
|
||||
/** 文化程度 */
|
||||
@ExcelProperty({"基本信息", "文化程度"})
|
||||
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 29)
|
||||
@ExcelProperty({"用户信息", "基本信息", "文化程度"})
|
||||
private String cultureLevel;
|
||||
|
||||
/** 政治面貌 */
|
||||
@ExcelProperty({"基本信息", "政治面貌"})
|
||||
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 29)
|
||||
@ExcelProperty({"用户信息", "基本信息", "政治面貌"})
|
||||
private String politicalOutlook;
|
||||
|
||||
/** 毕业院校 */
|
||||
@ExcelProperty({"基本信息", "毕业院校"})
|
||||
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 29)
|
||||
@ExcelProperty({"用户信息", "基本信息", "毕业院校"})
|
||||
private String college;
|
||||
|
||||
/** 学历 */
|
||||
@ExcelProperty({"基本信息", "学历"})
|
||||
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 29)
|
||||
@ExcelProperty({"用户信息", "基本信息", "学历"})
|
||||
private String education;
|
||||
|
||||
/** 学制 */
|
||||
@ExcelProperty({"基本信息", "学制"})
|
||||
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 29)
|
||||
@ExcelProperty({"用户信息", "基本信息", "学制"})
|
||||
private String eduLength;
|
||||
|
||||
/** 学位 */
|
||||
@ExcelProperty({"基本信息", "学位"})
|
||||
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 29)
|
||||
@ExcelProperty({"用户信息", "基本信息", "学位"})
|
||||
private String degree;
|
||||
|
||||
/** 手机 */
|
||||
@ExcelProperty({"基本信息", "手机"})
|
||||
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 29)
|
||||
@ExcelProperty({"用户信息", "基本信息", "手机"})
|
||||
private String phone;
|
||||
|
||||
/** 邮箱 */
|
||||
@ExcelProperty({"基本信息", "邮箱"})
|
||||
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 29)
|
||||
@ExcelProperty({"用户信息", "基本信息", "邮箱"})
|
||||
private String email;
|
||||
|
||||
/** 家庭电话 */
|
||||
@ExcelProperty({"基本信息", "家庭电话"})
|
||||
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 29)
|
||||
@ExcelProperty({"用户信息", "基本信息", "家庭电话"})
|
||||
private String homeTel;
|
||||
|
||||
/** 办公电话 */
|
||||
@ExcelProperty({"基本信息", "办公电话"})
|
||||
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 29)
|
||||
@ExcelProperty({"用户信息", "基本信息", "办公电话"})
|
||||
private String officeTel;
|
||||
|
||||
/** 紧急联系人 */
|
||||
@ExcelProperty({"基本信息", "紧急联系人"})
|
||||
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 29)
|
||||
@ExcelProperty({"用户信息", "基本信息", "紧急联系人"})
|
||||
private String emergencyContact;
|
||||
|
||||
/** 紧急联系人电话 */
|
||||
@ExcelProperty({"基本信息", "紧急联系人电话"})
|
||||
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 29)
|
||||
@ExcelProperty({"用户信息", "基本信息", "紧急联系人电话"})
|
||||
private String emergencyPhone;
|
||||
|
||||
/** 紧急联系人地址 */
|
||||
@ExcelProperty({"基本信息", "紧急联系人地址"})
|
||||
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 29)
|
||||
@ExcelProperty({"用户信息", "基本信息", "紧急联系人地址"})
|
||||
private String emergencyAddress;
|
||||
|
||||
/** 员工编号 */
|
||||
@ExcelProperty({"员工信息", "员工编号"})
|
||||
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 34)
|
||||
@ExcelProperty({"用户信息", "员工信息", "员工编号"})
|
||||
private String empNo;
|
||||
|
||||
/** 入职日期 */
|
||||
@ExcelProperty({"员工信息", "入职日期"})
|
||||
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 34)
|
||||
@ExcelProperty({"用户信息", "员工信息", "入职日期"})
|
||||
private String entryDate;
|
||||
|
||||
/** 组织名称 */
|
||||
@ExcelProperty({"员工信息", "组织名称"})
|
||||
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 34)
|
||||
@ExcelProperty({"用户信息", "员工信息", "组织名称"})
|
||||
private String orgName;
|
||||
|
||||
/** 职位名称 */
|
||||
@ExcelProperty({"员工信息", "职位名称"})
|
||||
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 34)
|
||||
@ExcelProperty({"用户信息", "员工信息", "职位名称"})
|
||||
private String positionName;
|
||||
|
||||
/** 主管名称 */
|
||||
@ExcelProperty({"员工信息", "主管名称"})
|
||||
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 34)
|
||||
@ExcelProperty({"用户信息", "员工信息", "主管名称"})
|
||||
private String directorName;
|
||||
|
||||
/** 职级 */
|
||||
@ExcelProperty({"员工信息", "职级"})
|
||||
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 34)
|
||||
@ExcelProperty({"用户信息", "员工信息", "职级"})
|
||||
private String positionLevel;
|
||||
|
||||
/** 上次登录ip */
|
||||
@ExcelProperty({"系统信息", "上次登录ip"})
|
||||
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 42)
|
||||
@ExcelProperty({"用户信息", "系统信息", "上次登录ip"})
|
||||
private String lastLoginIp;
|
||||
|
||||
/** 上次登录地点 */
|
||||
@ExcelProperty({"系统信息", "上次登录地点"})
|
||||
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 42)
|
||||
@ExcelProperty({"用户信息", "系统信息", "上次登录地点"})
|
||||
private String lastLoginAddress;
|
||||
|
||||
/** 上次登录时间 */
|
||||
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 42)
|
||||
@DateTimeFormat("yyyy-MM-dd HH:mm:ss")
|
||||
@ExcelProperty({"系统信息", "上次登录时间"})
|
||||
@ExcelProperty({"用户信息", "系统信息", "上次登录时间"})
|
||||
private Date lastLoginTime;
|
||||
|
||||
/** 上次登录设备 */
|
||||
@ExcelProperty({"系统信息", "上次登录设备"})
|
||||
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 42)
|
||||
@ExcelProperty({"用户信息", "系统信息", "上次登录设备"})
|
||||
private String lastLoginDevice;
|
||||
|
||||
/** 最新登录ip */
|
||||
@ExcelProperty({"系统信息", "最新登录ip"})
|
||||
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 42)
|
||||
@ExcelProperty({"用户信息", "系统信息", "最新登录ip"})
|
||||
private String latestLoginIp;
|
||||
|
||||
/** 最新登录地点 */
|
||||
@ExcelProperty({"系统信息", "最新登录地点"})
|
||||
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 42)
|
||||
@ExcelProperty({"用户信息", "系统信息", "最新登录地点"})
|
||||
private String latestLoginAddress;
|
||||
|
||||
/** 最新登录时间 */
|
||||
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 42)
|
||||
@DateTimeFormat("yyyy-MM-dd HH:mm:ss")
|
||||
@ExcelProperty({"系统信息", "最新登录时间"})
|
||||
@ExcelProperty({"用户信息", "系统信息", "最新登录时间"})
|
||||
private Date latestLoginTime;
|
||||
|
||||
/** 最新登录设备 */
|
||||
@ExcelProperty({"系统信息", "最新登录设备"})
|
||||
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 42)
|
||||
@ExcelProperty({"用户信息", "系统信息", "最新登录设备"})
|
||||
private String latestLoginDevice;
|
||||
|
||||
/** 用户状态 */
|
||||
@ExcelProperty(value = {"系统信息", "用户状态"})
|
||||
@HeadStyle(fillPatternType = FillPatternTypeEnum.SOLID_FOREGROUND, fillForegroundColor = 42)
|
||||
@ExcelProperty({"用户信息", "系统信息", "用户状态"})
|
||||
private String userStatus;
|
||||
}
|
||||
|
|
|
@ -35,9 +35,14 @@ import cn.hutool.json.JSONArray;
|
|||
import cn.hutool.json.JSONObject;
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.alibaba.excel.EasyExcel;
|
||||
import com.alibaba.excel.context.AnalysisContext;
|
||||
import com.alibaba.excel.read.listener.ReadListener;
|
||||
import com.alibaba.excel.metadata.data.WriteCellData;
|
||||
import com.alibaba.excel.write.handler.CellWriteHandler;
|
||||
import com.alibaba.excel.write.handler.context.CellWriteHandlerContext;
|
||||
import com.alibaba.excel.write.metadata.style.WriteCellStyle;
|
||||
import com.alibaba.excel.write.metadata.style.WriteFont;
|
||||
import com.alibaba.excel.write.style.HorizontalCellStyleStrategy;
|
||||
import com.alibaba.excel.write.style.column.LongestMatchColumnWidthStyleStrategy;
|
||||
import com.alibaba.excel.write.style.row.AbstractRowHeightStyleStrategy;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
|
@ -45,11 +50,13 @@ import com.baomidou.mybatisplus.core.toolkit.IdWorker;
|
|||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.fhs.trans.service.impl.TransService;
|
||||
import org.apache.poi.ss.usermodel.*;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
import org.springframework.web.multipart.MultipartFile;
|
||||
import vip.xiaonuo.common.cache.CommonCacheOperator;
|
||||
import vip.xiaonuo.common.enums.CommonSortOrderEnum;
|
||||
import vip.xiaonuo.common.excel.CommonExcelCustomMergeStrategy;
|
||||
import vip.xiaonuo.common.exception.CommonException;
|
||||
import vip.xiaonuo.common.listener.CommonDataChangeEventCenter;
|
||||
import vip.xiaonuo.common.page.CommonPageRequest;
|
||||
|
@ -89,10 +96,7 @@ import javax.annotation.Resource;
|
|||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
|
@ -979,10 +983,12 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|||
String fileName = "SNOWY2.0系统B端用户信息清单.xlsx";
|
||||
List<SysUser> sysUserList = this.list(queryWrapper);
|
||||
transService.transBatch(sysUserList);
|
||||
sysUserList = CollectionUtil.sort(sysUserList, Comparator.comparing(SysUser::getOrgId));
|
||||
List<SysUserExportResult> sysUserExportResultList = sysUserList.stream()
|
||||
.map(sysUser -> {
|
||||
SysUserExportResult sysUserExportResult = new SysUserExportResult();
|
||||
BeanUtil.copyProperties(sysUser, sysUserExportResult);
|
||||
sysUserExportResult.setGroupName(sysUserExportResult.getOrgName());
|
||||
// 状态枚举转为文字
|
||||
sysUserExportResult.setUserStatus(sysUserExportResult.getUserStatus()
|
||||
.equalsIgnoreCase(SysUserStatusEnum.ENABLE.getValue())?"正常":"停用");
|
||||
|
@ -993,11 +999,87 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|||
}).collect(Collectors.toList());
|
||||
// 创建临时文件
|
||||
tempFile = FileUtil.file(FileUtil.getTmpDir() + FileUtil.FILE_SEPARATOR + fileName);
|
||||
|
||||
// 头的策略
|
||||
WriteCellStyle headWriteCellStyle = new WriteCellStyle();
|
||||
WriteFont headWriteFont = new WriteFont();
|
||||
headWriteFont.setFontHeightInPoints((short) 14);
|
||||
headWriteCellStyle.setWriteFont(headWriteFont);
|
||||
// 水平垂直居中
|
||||
headWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
|
||||
headWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
|
||||
|
||||
// 内容的策略
|
||||
WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
|
||||
// 这里需要指定 FillPatternType 为FillPatternType.SOLID_FOREGROUND 不然无法显示背景颜色.头默认了 FillPatternType所以可以不指定
|
||||
contentWriteCellStyle.setFillPatternType(FillPatternType.SOLID_FOREGROUND);
|
||||
// 内容背景白色
|
||||
contentWriteCellStyle.setFillForegroundColor(IndexedColors.WHITE.getIndex());
|
||||
WriteFont contentWriteFont = new WriteFont();
|
||||
|
||||
// 内容字体大小
|
||||
contentWriteFont.setFontHeightInPoints((short) 12);
|
||||
contentWriteCellStyle.setWriteFont(contentWriteFont);
|
||||
|
||||
//设置边框样式,细实线
|
||||
contentWriteCellStyle.setBorderLeft(BorderStyle.THIN);
|
||||
contentWriteCellStyle.setBorderTop(BorderStyle.THIN);
|
||||
contentWriteCellStyle.setBorderRight(BorderStyle.THIN);
|
||||
contentWriteCellStyle.setBorderBottom(BorderStyle.THIN);
|
||||
|
||||
// 水平垂直居中
|
||||
contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.LEFT);
|
||||
contentWriteCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);
|
||||
|
||||
// 这个策略是 头是头的样式 内容是内容的样式 其他的策略可以自己实现
|
||||
HorizontalCellStyleStrategy horizontalCellStyleStrategy = new HorizontalCellStyleStrategy(headWriteCellStyle,
|
||||
contentWriteCellStyle);
|
||||
|
||||
// 写excel
|
||||
EasyExcel.write(tempFile.getPath(), SysUserExportResult.class)
|
||||
// 自定义样式
|
||||
.registerWriteHandler(horizontalCellStyleStrategy)
|
||||
// 自动列宽
|
||||
.registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())
|
||||
.sheet("用户信息").doWrite(sysUserExportResultList);
|
||||
// 机构分组合并单元格
|
||||
.registerWriteHandler(new CommonExcelCustomMergeStrategy(sysUserExportResultList.stream().map(SysUserExportResult::getGroupName)
|
||||
.collect(Collectors.toList()), 0))
|
||||
// 设置第一行字体
|
||||
.registerWriteHandler(new CellWriteHandler() {
|
||||
@Override
|
||||
public void afterCellDispose(CellWriteHandlerContext context) {
|
||||
WriteCellData<?> cellData = context.getFirstCellData();
|
||||
WriteCellStyle writeCellStyle = cellData.getOrCreateStyle();
|
||||
Integer rowIndex = context.getRowIndex();
|
||||
if(rowIndex == 0) {
|
||||
WriteFont headWriteFont = new WriteFont();
|
||||
headWriteFont.setFontName("宋体");
|
||||
headWriteFont.setBold(true);
|
||||
headWriteFont.setFontHeightInPoints((short) 16);
|
||||
writeCellStyle.setWriteFont(headWriteFont);
|
||||
}
|
||||
}
|
||||
})
|
||||
// 设置表头行高
|
||||
.registerWriteHandler(new AbstractRowHeightStyleStrategy() {
|
||||
@Override
|
||||
protected void setHeadColumnHeight(Row row, int relativeRowIndex) {
|
||||
if(relativeRowIndex == 0) {
|
||||
// 表头第一行
|
||||
row.setHeightInPoints(34);
|
||||
} else {
|
||||
// 表头其他行
|
||||
row.setHeightInPoints(30);
|
||||
}
|
||||
}
|
||||
@Override
|
||||
protected void setContentColumnHeight(Row row, int relativeRowIndex) {
|
||||
// 内容行
|
||||
row.setHeightInPoints(20);
|
||||
}
|
||||
})
|
||||
.sheet("用户信息")
|
||||
.doWrite(sysUserExportResultList);
|
||||
CommonDownloadUtil.download(tempFile, response);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
|
|
Loading…
Reference in New Issue