Compare commits

..

5 Commits

7 changed files with 187 additions and 14 deletions

View File

@ -67,6 +67,7 @@ public class ExcelController {
private final KanbanService kanbanService;// 看板服务 private final KanbanService kanbanService;// 看板服务
private final WorkFlowService workFlowService;// 工作流服务 private final WorkFlowService workFlowService;// 工作流服务
private final WorkDateService workDateService;// 工作日历服务 private final WorkDateService workDateService;// 工作日历服务
private final IStockUpdateRecordService stockUpdateRecordService; // 库存更新记录服务
private final List<String> uploadFileHashStringList = new ArrayList<>(); private final List<String> uploadFileHashStringList = new ArrayList<>();
@ -764,7 +765,7 @@ public class ExcelController {
@PostMapping("/downloadWorkSummaryExcel") @PostMapping("/downloadWorkSummaryExcel")
@ResponseBody @ResponseBody
public void downloadWorkSummaryExcel(@RequestBody WorkSummaryQuery workSummaryQuery, HttpServletResponse response) throws IOException { public void downloadWorkSummaryExcel(@RequestBody WorkSummaryQuery workSummaryQuery, HttpServletResponse response) throws IOException {
logger.info("导出物料报表,筛选参数:{}请求ip{}", convertJsonString(workSummaryQuery), getIpAddr(servletRequest)); logger.info("导出工作总结,筛选参数:{}请求ip{}", convertJsonString(workSummaryQuery), getIpAddr(servletRequest));
//设置响应格式 //设置响应格式
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8");
@ -774,13 +775,20 @@ public class ExcelController {
// 内容样式 // 内容样式
HorizontalCellStyleStrategy horizontalCellStyleStrategy = ExcelContentStyle.getContentStyle(); HorizontalCellStyleStrategy horizontalCellStyleStrategy = ExcelContentStyle.getContentStyle();
// 查询参数 // 查询参数
List<WorkSummary> goodsList = workSummaryService.list(new LambdaQueryWrapper<WorkSummary>() var workSummaryQueryWrapper = new LambdaQueryWrapper<WorkSummary>()
.eq(workSummaryQuery.getLackStatus() != null, WorkSummary::getLackStatus, workSummaryQuery.getLackStatus()) .eq(workSummaryQuery.getLackStatus() != null, WorkSummary::getLackStatus, workSummaryQuery.getLackStatus())
.eq(workSummaryQuery.getWorkDate() != null, WorkSummary::getWorkDate, workSummaryQuery.getWorkDate())
.like(StringUtils.isNotEmpty(workSummaryQuery.getWorkStation()), WorkSummary::getWorkStation, workSummaryQuery.getWorkStation()) .like(StringUtils.isNotEmpty(workSummaryQuery.getWorkStation()), WorkSummary::getWorkStation, workSummaryQuery.getWorkStation())
.like(StringUtils.isNotEmpty(workSummaryQuery.getWorkOrder()), WorkSummary::getWorkOrder, workSummaryQuery.getWorkOrder()) .like(StringUtils.isNotEmpty(workSummaryQuery.getWorkOrder()), WorkSummary::getWorkOrder, workSummaryQuery.getWorkOrder())
.like(StringUtils.isNotEmpty(workSummaryQuery.getWorkCenter()), WorkSummary::getWorkCenter, workSummaryQuery.getWorkCenter()) .like(StringUtils.isNotEmpty(workSummaryQuery.getWorkCenter()), WorkSummary::getWorkCenter, workSummaryQuery.getWorkCenter())
.like(StringUtils.isNotEmpty(workSummaryQuery.getGoodsId()), WorkSummary::getGoodsId, workSummaryQuery.getGoodsId())); .like(StringUtils.isNotEmpty(workSummaryQuery.getGoodsId()), WorkSummary::getGoodsId, workSummaryQuery.getGoodsId());
if(workSummaryQuery.getWorkDate() != null && workSummaryQuery.getWorkEndDate() != null) {
workSummaryQueryWrapper.between(WorkSummary::getWorkDate, workSummaryQuery.getWorkDate(), workSummaryQuery.getWorkEndDate());
}
if(workSummaryQuery.getWorkDate() != null && workSummaryQuery.getWorkEndDate() == null) {
workSummaryQueryWrapper.eq(WorkSummary::getWorkDate, workSummaryQuery.getWorkDate());
}
List<WorkSummary> goodsList = workSummaryService.list(workSummaryQueryWrapper);
EasyExcel.write(response.getOutputStream(), WorkSummaryExcelVo.class) EasyExcel.write(response.getOutputStream(), WorkSummaryExcelVo.class)
.excelType(ExcelTypeEnum.XLSX) .excelType(ExcelTypeEnum.XLSX)
.registerWriteHandler(horizontalCellStyleStrategy) .registerWriteHandler(horizontalCellStyleStrategy)
@ -788,6 +796,43 @@ public class ExcelController {
.doWrite(goodsList.stream().map(WorkSummaryExcelVo::of).toList()); .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());
}
/** /**
* 导出库位详情 * 导出库位详情
* *
@ -817,4 +862,4 @@ public class ExcelController {
.sheet("库位报表") .sheet("库位报表")
.doWrite(locations.stream().map(LocationExcelVo::of).toList()); .doWrite(locations.stream().map(LocationExcelVo::of).toList());
} }
} }

View File

@ -773,14 +773,25 @@ public class KateWorkQueryController {
logger.info("接收到查询工作总结请求:{}请求ip{}", convertJsonString(workSummaryQuery), HttpUtils.getIpAddr(servletRequest)); logger.info("接收到查询工作总结请求:{}请求ip{}", convertJsonString(workSummaryQuery), HttpUtils.getIpAddr(servletRequest));
ResponseEntity response = new ResponseEntity(); ResponseEntity response = new ResponseEntity();
try { try {
Page<WorkSummary> page = workSummaryQuery.toMpPage(); var workSummaryQueryWrapper = new LambdaQueryWrapper<WorkSummary>()
Page<WorkSummary> workSummaryPage = workSummaryService.page(page, new LambdaQueryWrapper<WorkSummary>()
.eq(workSummaryQuery.getLackStatus() != null, WorkSummary::getLackStatus, workSummaryQuery.getLackStatus()) .eq(workSummaryQuery.getLackStatus() != null, WorkSummary::getLackStatus, workSummaryQuery.getLackStatus())
.eq(workSummaryQuery.getWorkDate() != null, WorkSummary::getWorkDate, workSummaryQuery.getWorkDate())
.like(StringUtils.isNotEmpty(workSummaryQuery.getWorkStation()), WorkSummary::getWorkStation, workSummaryQuery.getWorkStation()) .like(StringUtils.isNotEmpty(workSummaryQuery.getWorkStation()), WorkSummary::getWorkStation, workSummaryQuery.getWorkStation())
.like(StringUtils.isNotEmpty(workSummaryQuery.getWorkOrder()), WorkSummary::getWorkOrder, workSummaryQuery.getWorkOrder()) .like(StringUtils.isNotEmpty(workSummaryQuery.getWorkOrder()), WorkSummary::getWorkOrder, workSummaryQuery.getWorkOrder())
.like(StringUtils.isNotEmpty(workSummaryQuery.getWorkCenter()), WorkSummary::getWorkCenter, workSummaryQuery.getWorkCenter()) .like(StringUtils.isNotEmpty(workSummaryQuery.getWorkCenter()), WorkSummary::getWorkCenter, workSummaryQuery.getWorkCenter())
.like(StringUtils.isNotEmpty(workSummaryQuery.getGoodsId()), WorkSummary::getGoodsId, workSummaryQuery.getGoodsId())); .like(StringUtils.isNotEmpty(workSummaryQuery.getGoodsId()), WorkSummary::getGoodsId, workSummaryQuery.getGoodsId());
if(workSummaryQuery.getWorkDate() != null && workSummaryQuery.getWorkEndDate() != null) {
if(workSummaryQuery.getWorkDate().isBefore(workSummaryQuery.getWorkEndDate())) {
response.setCode(ResponseCode.ERROR.getCode());
response.setMessage("结束日期不能早于起始日期");
return convertJsonString(response);
}
workSummaryQueryWrapper.between(WorkSummary::getWorkDate, workSummaryQuery.getWorkDate(), workSummaryQuery.getWorkEndDate());
}
if(workSummaryQuery.getWorkDate() != null && workSummaryQuery.getWorkEndDate() == null) {
workSummaryQueryWrapper.eq(WorkSummary::getWorkDate, workSummaryQuery.getWorkDate());
}
Page<WorkSummary> page = workSummaryQuery.toMpPage();
Page<WorkSummary> workSummaryPage = workSummaryService.page(page, workSummaryQueryWrapper);
PageDto<WorkSummaryVo> pageDto = PageDto.of(workSummaryPage, workSummary -> BeanUtil.copyProperties(workSummary, WorkSummaryVo.class)); PageDto<WorkSummaryVo> pageDto = PageDto.of(workSummaryPage, workSummary -> BeanUtil.copyProperties(workSummary, WorkSummaryVo.class));
logger.info("查询工作总结成功。"); logger.info("查询工作总结成功。");
response.setCode(ResponseCode.OK.getCode()); response.setCode(ResponseCode.OK.getCode());
@ -883,4 +894,4 @@ public class KateWorkQueryController {
return convertJsonString(response); return convertJsonString(response);
} }
} }
} }

View File

@ -353,7 +353,15 @@ public class StockController {
.like(StringUtils.isNotEmpty(stockUpdateRecordQuery.getVehicleId()), StockUpdateRecord::getVehicleId, stockUpdateRecordQuery.getVehicleId()) .like(StringUtils.isNotEmpty(stockUpdateRecordQuery.getVehicleId()), StockUpdateRecord::getVehicleId, stockUpdateRecordQuery.getVehicleId())
.like(StringUtils.isNotEmpty(stockUpdateRecordQuery.getGoodsId()), StockUpdateRecord::getGoodsId, stockUpdateRecordQuery.getGoodsId()) .like(StringUtils.isNotEmpty(stockUpdateRecordQuery.getGoodsId()), StockUpdateRecord::getGoodsId, stockUpdateRecordQuery.getGoodsId())
.orderByDesc(StockUpdateRecord::getUpdateTime); .orderByDesc(StockUpdateRecord::getUpdateTime);
if (stockUpdateRecordQuery.getUpdateTime() != null) { if (stockUpdateRecordQuery.getUpdateTime() != null && stockUpdateRecordQuery.getUpdateEndTime() != null) {
if(stockUpdateRecordQuery.getUpdateEndTime().isBefore(stockUpdateRecordQuery.getUpdateTime())) {
response.setCode(ResponseCode.ERROR.getCode());
response.setMessage("结束日期不能小于开始日期");
return convertJsonString(response);
}
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)); stockLambdaQueryWrapper.between(StockUpdateRecord::getUpdateTime, stockUpdateRecordQuery.getUpdateTime().toLocalDate().atStartOfDay(), stockUpdateRecordQuery.getUpdateTime().toLocalDate().plusDays(1).atStartOfDay().minusSeconds(1));
} }
Page<StockUpdateRecord> recordsPage = stockUpdateRecordService.page(page, stockLambdaQueryWrapper); Page<StockUpdateRecord> recordsPage = stockUpdateRecordService.page(page, stockLambdaQueryWrapper);
@ -562,4 +570,4 @@ public class StockController {
return convertJsonString(rsp); return convertJsonString(rsp);
} }
} }
} }

View File

@ -63,12 +63,21 @@ public class StockUpdateRecordQuery extends PageQuery {
@JsonProperty("reason") @JsonProperty("reason")
private String reason; private String reason;
/** /**
* 更新时间 * 更新时间 -- 开始时间
*/ */
@JsonProperty("updateTime") @JsonProperty("updateTime")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updateTime; private LocalDateTime updateTime;
/**
* 更新时间 -- 结束时间
*/
@JsonProperty("updateEndTime")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime updateEndTime;
/** /**
* 更新用户 * 更新用户
*/ */

View File

@ -56,12 +56,20 @@ public class WorkSummaryQuery extends PageQuery {
@JsonProperty("lackNum") @JsonProperty("lackNum")
private BigDecimal lackNum; private BigDecimal lackNum;
/** /**
* 工作日期 * 工作日期 - 起始日期
*/ */
@JsonProperty("workDate") @JsonProperty("workDate")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime workDate; private LocalDateTime workDate;
/**
* 工作日期 - 结束日期
*/
@JsonProperty("workEndDate")
@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private LocalDateTime workEndDate;
/** /**
* 工作状态 * 工作状态
* 0未开始 * 0未开始

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);
}
}

View File

@ -12,6 +12,12 @@ spring:
username: developer username: developer
password: developer password: developer
driver-class-name: com.mysql.cj.jdbc.Driver driver-class-name: com.mysql.cj.jdbc.Driver
#
# url: jdbc:mysql://127.0.0.1:3306/wms_szkt?characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&rewriteBatchedStatements=true
# username: root
# password: Root123456
# driver-class-name: com.mysql.cj.jdbc.Driver
# 宝开服务器--内网 # 宝开服务器--内网
# url: jdbc:mysql://192.168.3.254:3306/wms_kate_suzhou?characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&rewriteBatchedStatements=true # url: jdbc:mysql://192.168.3.254:3306/wms_kate_suzhou?characterEncoding=utf8&serverTimezone=Asia/Shanghai&allowMultiQueries=true&rewriteBatchedStatements=true
# username: coder # username: coder