添加库存更新记录导出功能

This commit is contained in:
葛林强 2025-03-11 16:07:09 +08:00
parent 4ab263f3d5
commit 0e8ad784d9
2 changed files with 124 additions and 0 deletions

View File

@ -67,6 +67,7 @@ public class ExcelController {
private final KanbanService kanbanService;// 看板服务
private final WorkFlowService workFlowService;// 工作流服务
private final WorkDateService workDateService;// 工作日历服务
private final IStockUpdateRecordService stockUpdateRecordService; // 库存更新记录服务
private final List<String> uploadFileHashStringList = new ArrayList<>();
@ -795,6 +796,43 @@ public class ExcelController {
.doWrite(goodsList.stream().map(WorkSummaryExcelVo::of).toList());
}
/**
* 导出库存更新记录
*
* @param response 请求
*/
@PostMapping("/downloadStockUpdateRecordExcel")
@ResponseBody
public void downloadStockUpdateRecordExcel(@RequestBody StockUpdateRecordQuery stockUpdateRecordQuery, HttpServletResponse response) throws IOException {
logger.info("导出库存更新记录,筛选参数:{}请求ip{}", convertJsonString(stockUpdateRecordQuery), getIpAddr(servletRequest));
//设置响应格式
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setCharacterEncoding("utf-8");
// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
String fileName = URLEncoder.encode("库存更新记录报表", StandardCharsets.UTF_8).replaceAll("\\+", "%20");
response.setHeader("Content-Disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
// 内容样式
HorizontalCellStyleStrategy horizontalCellStyleStrategy = ExcelContentStyle.getContentStyle();
// 查询参数
LambdaQueryWrapper<StockUpdateRecord> stockLambdaQueryWrapper = new LambdaQueryWrapper<StockUpdateRecord>()
.like(StringUtils.isNotEmpty(stockUpdateRecordQuery.getReason()), StockUpdateRecord::getReason, stockUpdateRecordQuery.getReason())
.like(StringUtils.isNotEmpty(stockUpdateRecordQuery.getVehicleId()), StockUpdateRecord::getVehicleId, stockUpdateRecordQuery.getVehicleId())
.like(StringUtils.isNotEmpty(stockUpdateRecordQuery.getGoodsId()), StockUpdateRecord::getGoodsId, stockUpdateRecordQuery.getGoodsId())
.orderByDesc(StockUpdateRecord::getUpdateTime);
if (stockUpdateRecordQuery.getUpdateTime() != null && stockUpdateRecordQuery.getUpdateEndTime() != null) {
stockLambdaQueryWrapper.between(StockUpdateRecord::getUpdateTime, stockUpdateRecordQuery.getUpdateTime().toLocalDate().atStartOfDay(), stockUpdateRecordQuery.getUpdateEndTime().toLocalDate().plusDays(1).atStartOfDay().minusSeconds(1));
}
if (stockUpdateRecordQuery.getUpdateTime() != null && stockUpdateRecordQuery.getUpdateEndTime() == null) {
stockLambdaQueryWrapper.between(StockUpdateRecord::getUpdateTime, stockUpdateRecordQuery.getUpdateTime().toLocalDate().atStartOfDay(), stockUpdateRecordQuery.getUpdateTime().toLocalDate().plusDays(1).atStartOfDay().minusSeconds(1));
}
List<StockUpdateRecord> stockUpdateRecordList = stockUpdateRecordService.list(stockLambdaQueryWrapper);
EasyExcel.write(response.getOutputStream(), StockUpdateRecordVo.class)
.excelType(ExcelTypeEnum.XLSX)
.registerWriteHandler(horizontalCellStyleStrategy)
.sheet("库存更新记录报表")
.doWrite(stockUpdateRecordList.stream().map(StockUpdateRecordVo::of).toList());
}
/**
* 导出库位详情
*

View File

@ -0,0 +1,86 @@
package com.wms.utils.excel.vo;
import cn.hutool.core.bean.BeanUtil;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat;
import com.wms.entity.table.StockUpdateRecord;
import lombok.Data;
import java.math.BigDecimal;
import java.time.LocalDateTime;
@Data
public class StockUpdateRecordVo {
/**
* 记录id
*/
@ExcelProperty("记录号")
private String recordId;
/**
* 库存id
*/
@ExcelProperty("库存id")
private String stockId;
/**
* 料箱号
*/
@ExcelProperty("料箱号")
private String vehicleId;
/**
* 料号
*/
@ExcelProperty("料号")
private String goodsId;
/**
* 物料名称
*/
@ExcelProperty("物料名称")
private String goodsName;
/**
* 更新前库位
*/
@ExcelProperty("更新前库位")
private String locationBefore;
/**
* 更新后库位
*/
@ExcelProperty("更新后库位")
private String locationAfter;
/**
* 更新前数量
*/
@ExcelProperty("更新前数量")
private BigDecimal quantityBefore;
/**
* 更新后数量
*/
@ExcelProperty("更新后数量")
private BigDecimal quantityAfter;
/**
* 更新原因
*/
@ExcelProperty("更新原因")
private String reason;
/**
* 更新时间
*/
@ExcelProperty("更新时间")
@DateTimeFormat("yyyy-MM-dd HH:mm:ss")
private LocalDateTime updateTime;
/**
* 更新用户
*/
@ExcelProperty("更新用户")
private String updateUser;
/**
* 将数据库Po转化为ExcelVo
* @param stockUpdateRecord 数据库Po
* @return ExcelVo
*/
public static StockUpdateRecordVo of(StockUpdateRecord stockUpdateRecord) {
return BeanUtil.copyProperties(stockUpdateRecord, StockUpdateRecordVo.class);
}
}