fix(WmsMealReport): 修复用餐日期查询范围问题

- 为reportDate字段添加@JsonFormat和@DateTimeFormat注解以统一日期格式
- 修改查询逻辑将精确日期匹配改为当天时间范围查询
- 实现从当天0:00:00到23:59:59的时间范围过滤
- 引入LocalDateTime和ZoneId进行准确的时间转换处理
This commit is contained in:
2026-01-17 14:40:51 +08:00
parent 2449915c6d
commit 12b321b0f9
2 changed files with 20 additions and 1 deletions

View File

@@ -7,6 +7,7 @@ import javax.validation.constraints.*;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
/**
* 部门报餐主业务对象 wms_meal_report
@@ -27,6 +28,8 @@ public class WmsMealReportBo extends BaseEntity {
/**
* 用餐日期
*/
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date reportDate;
/**

View File

@@ -15,6 +15,9 @@ import com.klp.domain.WmsMealReport;
import com.klp.mapper.WmsMealReportMapper;
import com.klp.service.IWmsMealReportService;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.ZoneId;
import java.util.List;
import java.util.Map;
import java.util.Collection;
@@ -63,7 +66,20 @@ public class WmsMealReportServiceImpl implements IWmsMealReportService {
private LambdaQueryWrapper<WmsMealReport> buildQueryWrapper(WmsMealReportBo bo) {
Map<String, Object> params = bo.getParams();
LambdaQueryWrapper<WmsMealReport> lqw = Wrappers.lambdaQuery();
lqw.eq(bo.getReportDate() != null, WmsMealReport::getReportDate, bo.getReportDate());
// 修改日期查询逻辑查询当天的所有记录从当天00:00:00到23:59:59
if (bo.getReportDate() != null) {
LocalDateTime startDate = bo.getReportDate().toInstant()
.atZone(ZoneId.systemDefault())
.toLocalDateTime()
.with(LocalTime.MIN); // 当天的开始时间 00:00:00
LocalDateTime endDate = bo.getReportDate().toInstant()
.atZone(ZoneId.systemDefault())
.toLocalDateTime()
.with(LocalTime.MAX); // 当天的结束时间 23:59:59
lqw.between(WmsMealReport::getReportDate, Date.from(startDate.atZone(ZoneId.systemDefault()).toInstant()),
Date.from(endDate.atZone(ZoneId.systemDefault()).toInstant()));
}
lqw.eq(bo.getMealType() != null, WmsMealReport::getMealType, bo.getMealType());
lqw.like(StringUtils.isNotBlank(bo.getDeptName()), WmsMealReport::getDeptName, bo.getDeptName());
lqw.eq(bo.getTotalPeople() != null, WmsMealReport::getTotalPeople, bo.getTotalPeople());