提交 f97a2d75 authored 作者: 吕本才's avatar 吕本才

1、成本分析页面增加页面列表导出和订单明细导出

2、财务分析基础数据-直播间分类列表查询接口
上级 bef7e2f4
package com.link.bi.config.listener;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.link.bi.domain.entity.FinanceBaseZbjType;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import java.util.ArrayList;
import java.util.List;
/**
* 直播间分类导入监听
* @author lvbcai
* @date 2025年01月07日10:04:25
*/
@Data
@Slf4j
public class FinanceBaseZbjTypeListener extends AnalysisEventListener<FinanceBaseZbjType> {
// 存储解析后的数据
private List<FinanceBaseZbjType> dataList = new ArrayList<>();
@Override
public void invoke(FinanceBaseZbjType data, AnalysisContext context) {
// 每解析一行数据就会调用该方法
dataList.add(data);
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
// 解析完所有数据后调用该方法
}
public List<FinanceBaseZbjType> getDataList() {
return dataList;
}
}
package com.link.bi.controller.query;
import com.link.bi.pojo.request.FinanceSelectCommonVo;
import com.link.bi.pojo.response.FinanceZbjTypeListDto;
import com.link.bi.service.FinanceBaseZbjTypeService;
import com.sfa.common.core.web.controller.BaseController;
import com.sfa.common.security.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
/**
* 财务分析-直播间分类基础数据
*
* @author admin
* @date 2024-12-19
*/
@RestController
@RequestMapping("/finance/baseZbjType")
public class FinanceBaseZbjTypeController extends BaseController {
@Autowired
private FinanceBaseZbjTypeService baseZbjTypeService;
/**
* 直播间分类的页面查询
* @param commonVo
* @return
*/
@RequiresPermissions("bi:livecate:list")
@GetMapping("/list")
public List<FinanceZbjTypeListDto> baseZbjTypeAllList(FinanceSelectCommonVo commonVo) {
return baseZbjTypeService.baseZbjTypeAllList(commonVo);
}
@RequiresPermissions("bi:livecate:list")
@PostMapping("/import")
public void importData(@RequestParam("file") MultipartFile file) {
baseZbjTypeService.importData(file);
}
}
......@@ -83,16 +83,7 @@ public class FinanceOrderQueryController extends BaseController {
}
/**
* 直播间分类的页面查询
* @param commonVo
* @return
*/
@RequiresPermissions("bi:finance:list")
@GetMapping("/baseZbjType/list")
public List<FinanceZbjTypeListDto> baseZbjTypeAllList(FinanceSelectCommonVo commonVo) {
return baseZbjTypeService.baseZbjTypeAllList(commonVo);
}
@RequiresPermissions("bi:finance:list")
......
package com.link.bi.pojo.request;
import lombok.Data;
import java.util.Date;
import java.util.List;
@Data
public class FinanceBaseZbjTypeVo {
// 入参 分页当前页
private Integer pageNum = 1;
// 入参 分页大小
private Integer pageSize =10;
// 入参 时间开始时间
private Date startDate;
// 入参 时间结束时间
private Date endDate;
// 直播间类型
private List<String> zbjQdType;
// 入参 口味
private List<String> flavor;
// 入参 规格
private List<String> specName;
// 入参 系列
private List<String> series;
// 入参 商品名称
private List<String> goodsName;
// 聚合的维度
// 直播间类型
private Boolean zbjQdTypeAll;
// 入参 口味
private Boolean flavorAll;
// 入参 规格
private Boolean specNameAll;
// 入参 系列
private Boolean seriesAll;
// 入参 商品名称
private Boolean goodsNameAll;
// 可以按照直播间类型和系列展开 null 不是展开查询 0 直播间类 1 系列
private Integer subType;
// 查询详情时 过滤数据
private String fenxiaoId;
// 下载类型 1 达人子分类 2、分销商分类 3、订单详情
private String type;
private String typeName;
}
......@@ -18,8 +18,6 @@ public class FinanceCostVo {
private Date endDate;
// 直播间类型
private List<String> zbjQdType;
// 入参 口味
private List<String> flavor;
// 入参 规格
......@@ -44,5 +42,8 @@ public class FinanceCostVo {
private Integer subType;
// 查询详情时 过滤数据
private String fenxiaoId;
// 下载类型 1 达人子分类 2、分销商分类 3、订单详情
private String type;
private String typeName;
}
package com.link.bi.pojo.response;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* 财务聚合后查看的详情信息,来自订单明细DTO
* @author : lvbencai
* @date : 2025-01-15 17:01:00
*/
@Data
public class FinanceExportOrderDetailListDto {
/**
* 订单编号
*/
@ExcelProperty("订单编号")
private String tradeNo;
/**
* 店铺名称
*/
@ExcelProperty("店铺名称")
private String shopName;
/**
* 原始单号
*/
@ExcelProperty("原始单号")
private String srcTid;
/**
* 原始子单号
*/
@ExcelProperty("原始子单号")
private String srcOid;
/**
* 订单状态
*/
@ExcelProperty("订单状态")
private String tradeStatus;
/**
* 交易时间
*/
@ExcelProperty("交易时间")
private String tradeTime;
/**
* 付款时间
*/
@ExcelProperty("付款时间")
private Date payTime;
/**
* 发货时间
*/
@ExcelProperty("发货时间")
private Date consignTime;
/**
* 省市县(收货地区)
*/
@ExcelProperty("收货地区(省市县)")
private String receiverArea;
/**
* 备注
*/
@ExcelProperty("备注")
private String remark;
/**
* 应收金额
*/
@ExcelProperty("应收金额")
private BigDecimal receivable;
/**
* 货品编号
*/
@ExcelProperty("货品编号")
private String goodsNo;
/**
* 货品名称
*/
@ExcelProperty("货品名称")
private String goodsName;
/**
* 规格名称
*/
@ExcelProperty("规格名称")
private String specName;
/**
* 分类(货品类型)
*/
@ExcelProperty("货品类型")
private Integer goodsType;
/**
* 数量
*/
@ExcelProperty("数量")
private BigDecimal num;
/**
* 优惠
*/
@ExcelProperty("优惠金额")
private BigDecimal discount;
/**
* 分摊后总价
*/
@ExcelProperty("分摊后总价")
private BigDecimal shareAmount;
/**
* 组合装编码
*/
@ExcelProperty("组合装编码")
private String suiteNo;
/**
* 组合装名称
*/
@ExcelProperty("组合装名称")
private String suiteName;
/**
* 组合装数量
*/
@ExcelProperty("组合装数量")
private BigDecimal suiteNum;
/**
* 赠品方式
*/
@ExcelProperty("赠品方式")
private Integer giftType;
/**
* 分销商名称
*/
@ExcelProperty("分销商名称")
private String fenxiaoName;
/**
* 分销商编号
*/
@ExcelProperty("分销商编号")
private String fenxiaoId;
/**
* 平台货品名称
*/
@ExcelProperty("平台货品名称")
private String apiGoodsName;
}
......@@ -21,7 +21,7 @@ public class FinanceOrderDetailListDto {
// 原始子单号
private String srcOid;
// 订单状态
private Integer tradeStatus;
private String tradeStatus;
// 交易时间
private String tradeTime;
// 付款时间
......
......@@ -10,6 +10,9 @@ import lombok.Data;
*/
@Data
public class FinanceZbjTypeListDto {
// 分销商名称
@JsonInclude(JsonInclude.Include.NON_NULL)
private Long fbztId;
// 分销商名称
@JsonInclude(JsonInclude.Include.NON_NULL)
......
......@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
import com.link.bi.domain.entity.FinanceBaseZbjType;
import com.link.bi.pojo.request.FinanceSelectCommonVo;
import com.link.bi.pojo.response.FinanceZbjTypeListDto;
import org.springframework.web.multipart.MultipartFile;
import java.util.List;
import java.util.Map;
......@@ -19,4 +20,6 @@ public interface FinanceBaseZbjTypeService extends IService<FinanceBaseZbjType>
List<FinanceZbjTypeListDto> baseZbjTypeList(FinanceSelectCommonVo commonVo);
List<FinanceZbjTypeListDto> baseZbjTypeAllList(FinanceSelectCommonVo commonVo);
String importData(MultipartFile file);
}
package com.link.bi.service.impl;
import cn.hutool.core.util.ObjectUtil;
import com.alibaba.excel.EasyExcel;
import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.link.bi.config.listener.FinanceBaseZbjTypeListener;
import com.link.bi.domain.entity.FinanceBaseZbjType;
import com.link.bi.domain.mapper.FinanceBaseZbjTypeMapper;
import com.link.bi.pojo.request.FinanceSelectCommonVo;
......@@ -15,7 +19,11 @@ import com.link.bi.service.FinanceBaseZbjTypeService;
import com.sfa.common.core.utils.bean.BeanUtils;
import com.sfa.common.core.web.page.TableSupport;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
......@@ -41,8 +49,6 @@ public class FinanceBaseZbjTypeServiceImpl extends ServiceImpl<FinanceBaseZbjTyp
return map;
}
/**
* 分页查询
*
......@@ -98,8 +104,75 @@ public class FinanceBaseZbjTypeServiceImpl extends ServiceImpl<FinanceBaseZbjTyp
list.forEach(item -> {
FinanceZbjTypeListDto dto = new FinanceZbjTypeListDto();
BeanUtils.copyProperties(item, dto);
// 如果fenxiaoName为空,设置为- 2025年02月07日10:35:25
if(ObjectUtil.isEmpty(dto.getFenxiaoName())){
dto.setFenxiaoName("-");
}
result.add(dto);
});
return result;
}
/**
* 执行Excel数据全量同步
* @param file 上传的Excel文件
*/
@Transactional(rollbackFor = Exception.class)
@Override
public String importData(MultipartFile file) {
if (file.isEmpty()) {
return "文件为空,请选择有效的 Excel 文件上传。";
}
try (InputStream inputStream = file.getInputStream()) {
FinanceBaseZbjTypeListener listener = new FinanceBaseZbjTypeListener();
EasyExcel.read(inputStream, FinanceBaseZbjType.class, listener).sheet().doRead();
List<FinanceBaseZbjType> dataList = listener.getDataList();
// 3. 删除数据库中不存在于Excel的数据
deleteAbsentProducts(dataList);
// 4. 批量保存或更新数据
batchUpsertProducts(dataList);
return "文件解析并更新数据成功。";
} catch (IOException e) {
e.printStackTrace();
return "文件解析失败,请检查文件格式或内容。";
}
}
public void deleteAbsentProducts(List<FinanceBaseZbjType> dataList) {
// 获取 Excel 中所有数据的 fbztId
List<Long> excelIds = dataList.stream().map(FinanceBaseZbjType::getFbztId).collect(Collectors.toList());
// 查询数据库中所有数据
List<FinanceBaseZbjType> allDbRecords = this.list();
// 找出数据库中存在但 Excel 中不存在的记录的 fbztId
List<Long> idsToDelete = new ArrayList<>();
for (FinanceBaseZbjType dbRecord : allDbRecords) {
if (!excelIds.contains(dbRecord.getFbztId())) {
idsToDelete.add(dbRecord.getFbztId());
}
}
// 删除这些记录
if (!idsToDelete.isEmpty()) {
this.removeByIds(idsToDelete);
}
}
public void batchUpsertProducts(List<FinanceBaseZbjType> dataList) {
for (FinanceBaseZbjType data : dataList) {
if (data.getFbztId() != null) {
// 如果 fbztId 不为空,尝试更新
UpdateWrapper<FinanceBaseZbjType> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("fbzt_id", data.getFbztId());
this.update(data, updateWrapper);
} else {
// 如果 fbztId 为空,进行保存
this.save(data);
}
}
}
}
......@@ -18,10 +18,12 @@ import com.link.bi.domain.wq.FinanceCostWq;
import com.link.bi.pojo.request.FinanceCostVo;
import com.link.bi.pojo.response.FinanceBiListDto;
import com.link.bi.pojo.response.FinanceExportBiListDto;
import com.link.bi.pojo.response.FinanceExportOrderDetailListDto;
import com.link.bi.pojo.response.FinanceOrderDetailListDto;
import com.link.bi.service.FinanceOrderDetailService;
import com.sfa.common.core.utils.DateUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.ss.usermodel.BorderStyle;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.springframework.beans.BeanUtils;
......@@ -46,7 +48,6 @@ import java.util.stream.Collectors;
* @date 2025年01月07日17:00:16
*/
// 指定不同的数据源
//@DS("bi")
@Slf4j
@Service
public class FinanceOrderDetailServiceImpl extends ServiceImpl<FinanceOrderDetailMapper, FinanceOrderDetail> implements FinanceOrderDetailService {
......@@ -93,7 +94,7 @@ public class FinanceOrderDetailServiceImpl extends ServiceImpl<FinanceOrderDetai
@Override
public PageInfo<FinanceOrderDetailListDto> selectBiFinanceCostDetailPage(FinanceCostVo financeCostVo) {
FinanceCostWq qw = covertFinanceCostWq(financeCostVo);
FinanceCostWq qw = covertFinanceCostWq(financeCostVo);
PageInfo<FinanceOrderDetail> financeOrderDetailPageInfo = detailDao.selectBiFinanceCostDetailList(qw);
PageInfo<FinanceOrderDetailListDto> pageInfo = new PageInfo<>();
......@@ -101,8 +102,19 @@ public class FinanceOrderDetailServiceImpl extends ServiceImpl<FinanceOrderDetai
pageInfo.setList(financeOrderDetailPageInfo.getList().stream().map(item -> {
FinanceOrderDetailListDto dto = new FinanceOrderDetailListDto();
BeanUtils.copyProperties(item, dto);
// 转换数据
// 交易时间 毫秒转时间
dto.setTradeTime(DateUtil.format(new Date(Long.parseLong(dto.getTradeTime())),"yyyy-MM-dd HH:mm:ss"));
// 订单状态 转换 96 成本确认 110 已完成
if (dto.getTradeStatus().equals("96")) {
dto.setTradeStatus("成本确认");
} else if (dto.getTradeStatus().equals("110")) {
dto.setTradeStatus("已完成");
}
// 货品类型 确认是否是从产品基础信息表中获取 包材-泡沫箱 包材-气泡袋 包材-纸箱 产品 成品-主营 成品-组合包 物料-常规 物料-联名等
return dto;
}).collect(Collectors.toList()));
return pageInfo;
}
......@@ -111,12 +123,29 @@ public class FinanceOrderDetailServiceImpl extends ServiceImpl<FinanceOrderDetai
*/
@Override
public void exportBiFinanceCostList(FinanceCostVo financeCostVo, HttpServletResponse response) {
// 区分类型,不同的数据导出 策略模式
if (financeCostVo.getType().equals("1")) {
financeCostVo.setTypeName("达人分类");
this.exportBiFinanceCostData(financeCostVo, response);
} else if (financeCostVo.getType().equals("2")) {
financeCostVo.setTypeName("分类");
this.exportBiFinanceCostData(financeCostVo, response);
} else if (financeCostVo.getType().equals("3")) {
financeCostVo.setTypeName("订单明细");
this.exportBiFinanceCostOrderDetailData(financeCostVo, response);
}
}
private void exportBiFinanceCostOrderDetailData(FinanceCostVo financeCostVo, HttpServletResponse response) {
// 导出查询的数据
financeCostVo.setPageNum(1);
financeCostVo.setPageSize(1000000);
PageInfo<FinanceBiListDto> financeBiListDtoPageInfo = this.selectBiFinanceCostList(financeCostVo);
PageInfo<FinanceOrderDetailListDto> financeBiListDtoPageInfo = this.selectBiFinanceCostDetailPage(financeCostVo);
// easyExcel导出数据
String fileNameOri = String.format("王小卤成本核算%s-%s订单明细信息-%s.xlsx", DateUtil.formatDate(financeCostVo.getStartDate()), DateUtil.formatDate(financeCostVo.getEndDate()), DateUtil.formatDate(new Date()));
String fileNameOri = String.format("王小卤成本核算%s-%s%s信息-%s.xlsx", DateUtil.format(financeCostVo.getStartDate(),"yyyyMMdd"),
DateUtil.format(financeCostVo.getEndDate(),"yyyyMMdd"),
financeCostVo.getTypeName(),
DateUtil.format(new Date(),"MMdd"));
// 文件名中文名需要转义
String fileName = null;
try {
......@@ -127,6 +156,8 @@ public class FinanceOrderDetailServiceImpl extends ServiceImpl<FinanceOrderDetai
response.setCharacterEncoding("utf-8");
response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
// 这里需要设置不关闭流
response.setHeader("Connection", "close");
// 表头策略
WriteCellStyle headWriteCellStyle = new WriteCellStyle();
//设置背景颜色
headWriteCellStyle.setFillForegroundColor(IndexedColors.WHITE.getIndex());
......@@ -134,25 +165,47 @@ public class FinanceOrderDetailServiceImpl extends ServiceImpl<FinanceOrderDetai
WriteFont headWriteFont = new WriteFont();
headWriteFont.setFontHeightInPoints((short) 11);
headWriteCellStyle.setWriteFont(headWriteFont);
// 设置表头边框样式
headWriteCellStyle.setBorderLeft(BorderStyle.THIN);
headWriteCellStyle.setBorderTop(BorderStyle.THIN);
headWriteCellStyle.setBorderRight(BorderStyle.THIN);
headWriteCellStyle.setBorderBottom(BorderStyle.THIN);
// 设置表头边框颜色
headWriteCellStyle.setLeftBorderColor(IndexedColors.BLACK.getIndex());
headWriteCellStyle.setTopBorderColor(IndexedColors.BLACK.getIndex());
headWriteCellStyle.setRightBorderColor(IndexedColors.BLACK.getIndex());
headWriteCellStyle.setBottomBorderColor(IndexedColors.BLACK.getIndex());
//内容策略
WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
WriteFont contentWriteFont = new WriteFont();
// 设置内容边框样式
contentWriteCellStyle.setBorderLeft(BorderStyle.THIN);
contentWriteCellStyle.setBorderTop(BorderStyle.THIN);
contentWriteCellStyle.setBorderRight(BorderStyle.THIN);
contentWriteCellStyle.setBorderBottom(BorderStyle.THIN);
// 设置内容边框颜色
contentWriteCellStyle.setLeftBorderColor(IndexedColors.BLACK.getIndex());
contentWriteCellStyle.setTopBorderColor(IndexedColors.BLACK.getIndex());
contentWriteCellStyle.setRightBorderColor(IndexedColors.BLACK.getIndex());
contentWriteCellStyle.setBottomBorderColor(IndexedColors.BLACK.getIndex());
// 字体大小
contentWriteFont.setFontHeightInPoints((short) 10);
contentWriteCellStyle.setWriteFont(contentWriteFont);
//设置 水平居中
contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
HorizontalCellStyleStrategy horizontalCellStyleStrategy =
new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);
Collection<?> dataList = financeBiListDtoPageInfo.getList();
EasyExcel.write(response.getOutputStream(), FinanceExportBiListDto.class)
.autoCloseStream(Boolean.FALSE)
EasyExcel.write(response.getOutputStream(), FinanceExportOrderDetailListDto.class)
.autoCloseStream(Boolean.TRUE)
.excelType(ExcelTypeEnum.XLSX)
.registerWriteHandler(horizontalCellStyleStrategy)
.registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())//自动列宽策略
// .registerWriteHandler(new SalesOrderExcelWriteHandler())
.sheet("成本信息")
.sheet(financeCostVo.getTypeName())
//获取数据填充
.doWrite(dataList);
} catch (UnsupportedEncodingException e) {
......@@ -162,43 +215,90 @@ public class FinanceOrderDetailServiceImpl extends ServiceImpl<FinanceOrderDetai
}
}
/**
* 采集旺店通接口订单明细数据
* 下载达人分类下的数据
*
* @param startTime
* @param endTime
* @param financeCostVo
* @param response
*/
// @Override
// public void syncWandiantongOrderDetail(Date startTime, Date endTime) {
// try {
// wangdiantongOrderService.dealOrders(startTime,endTime);
// 计算时间间隔
// long intervalMillis = endTime.getTime() - startTime.getTime();
// 计算每个线程处理的时、间间隔
// long threadIntervalMillis = intervalMillis / threadPoolConfig.getMaxPoolSize();
// List<Future<List<WangdiantongOrder>>> futures = new ArrayList<>();
// ThreadPoolTaskExecutor executor = (ThreadPoolTaskExecutor) customThreadPool;
// 创建并提交线程任务
// List<Callable<List<WangdiantongOrder>>> tasks = new ArrayList<>();
// for (int i = 0; i < threadPoolConfig.getCorePoolSize(); i++) {
// Date threadStartTime = new Date(startTime.getTime() + i * threadIntervalMillis);
// Date threadEndTime = new Date(threadStartTime.getTime() + threadIntervalMillis);
// Callable<List<WangdiantongOrder>> task = () -> dealOrders(threadStartTime, threadEndTime);
// tasks.add(task);
// }
// List<List<WangdiantongOrder>> results = new ArrayList<>();
// List<Future<List<WangdiantongOrder>>> futures = ((ThreadPoolTaskExecutor) customThreadPool).getThreadPoolExecutor().invokeAll(tasks);
// for (Future<List<WangdiantongOrder>> future : futures) {
// results.add(future.get());
// }
// log.info("多线程共处理了{}条数据", results.size());
// } catch (Exception e) {
// log.error(e.getMessage(), e);
// }
// }
private void exportBiFinanceCostData(FinanceCostVo financeCostVo, HttpServletResponse response) {
// 导出查询的数据
financeCostVo.setPageNum(1);
financeCostVo.setPageSize(1000000);
PageInfo<FinanceBiListDto> financeBiListDtoPageInfo = this.selectBiFinanceCostList(financeCostVo);
// easyExcel导出数据
String fileNameOri = String.format("王小卤成本核算%s-%s%s-%s.xlsx",DateUtil.format(financeCostVo.getStartDate(),"yyyyMMdd"),
DateUtil.format(financeCostVo.getEndDate(),"yyyyMMdd"),
financeCostVo.getTypeName(),
DateUtil.format(new Date(),"MMdd"));
// 文件名中文名需要转义
String fileName = null;
try {
fileName = URLEncoder.encode(fileNameOri, "UTF-8");
String contentType = MediaTypeFactory.getMediaType(fileName).map(MimeType::toString).orElse("application/vnd.ms-excel");
response.setContentType(contentType);
response.setCharacterEncoding("utf-8");
response.setHeader("Content-Disposition", "attachment;filename=" + fileName);
// 这里需要设置不关闭流
response.setHeader("Connection", "close");
// 表头策略
WriteCellStyle headWriteCellStyle = new WriteCellStyle();
//设置背景颜色
headWriteCellStyle.setFillForegroundColor(IndexedColors.WHITE.getIndex());
headWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
WriteFont headWriteFont = new WriteFont();
headWriteFont.setFontHeightInPoints((short) 11);
headWriteCellStyle.setWriteFont(headWriteFont);
// 设置表头边框样式
headWriteCellStyle.setBorderLeft(BorderStyle.THIN);
headWriteCellStyle.setBorderTop(BorderStyle.THIN);
headWriteCellStyle.setBorderRight(BorderStyle.THIN);
headWriteCellStyle.setBorderBottom(BorderStyle.THIN);
// 设置表头边框颜色
headWriteCellStyle.setLeftBorderColor(IndexedColors.BLACK.getIndex());
headWriteCellStyle.setTopBorderColor(IndexedColors.BLACK.getIndex());
headWriteCellStyle.setRightBorderColor(IndexedColors.BLACK.getIndex());
headWriteCellStyle.setBottomBorderColor(IndexedColors.BLACK.getIndex());
//内容策略
WriteCellStyle contentWriteCellStyle = new WriteCellStyle();
WriteFont contentWriteFont = new WriteFont();
// 设置内容边框样式
contentWriteCellStyle.setBorderLeft(BorderStyle.THIN);
contentWriteCellStyle.setBorderTop(BorderStyle.THIN);
contentWriteCellStyle.setBorderRight(BorderStyle.THIN);
contentWriteCellStyle.setBorderBottom(BorderStyle.THIN);
// 设置内容边框颜色
contentWriteCellStyle.setLeftBorderColor(IndexedColors.BLACK.getIndex());
contentWriteCellStyle.setTopBorderColor(IndexedColors.BLACK.getIndex());
contentWriteCellStyle.setRightBorderColor(IndexedColors.BLACK.getIndex());
contentWriteCellStyle.setBottomBorderColor(IndexedColors.BLACK.getIndex());
// 字体大小
contentWriteFont.setFontHeightInPoints((short) 10);
contentWriteCellStyle.setWriteFont(contentWriteFont);
//设置 水平居中
contentWriteCellStyle.setHorizontalAlignment(HorizontalAlignment.CENTER);
HorizontalCellStyleStrategy horizontalCellStyleStrategy =
new HorizontalCellStyleStrategy(headWriteCellStyle, contentWriteCellStyle);
Collection<?> dataList = financeBiListDtoPageInfo.getList();
EasyExcel.write(response.getOutputStream(), FinanceExportBiListDto.class)
.autoCloseStream(Boolean.TRUE)
.excelType(ExcelTypeEnum.XLSX)
.registerWriteHandler(horizontalCellStyleStrategy)
.registerWriteHandler(new LongestMatchColumnWidthStyleStrategy())//自动列宽策略
.sheet(financeCostVo.getTypeName())
//获取数据填充
.doWrite(dataList);
} catch (UnsupportedEncodingException e) {
log.error("编码异常"+e.getMessage(),e);
throw new RuntimeException(e);
} catch (IOException e) {
log.error("IO异常"+e.getMessage(),e);
throw new RuntimeException(e);
}
}
}
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论