fix(WmsMealReport): 修复用餐日期查询范围问题
- 为reportDate字段添加@JsonFormat和@DateTimeFormat注解以统一日期格式 - 修改查询逻辑将精确日期匹配改为当天时间范围查询 - 实现从当天0:00:00到23:59:59的时间范围过滤 - 引入LocalDateTime和ZoneId进行准确的时间转换处理
This commit is contained in:
@@ -7,6 +7,7 @@ import javax.validation.constraints.*;
|
|||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||||
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 部门报餐主业务对象 wms_meal_report
|
* 部门报餐主业务对象 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;
|
private Date reportDate;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -15,6 +15,9 @@ import com.klp.domain.WmsMealReport;
|
|||||||
import com.klp.mapper.WmsMealReportMapper;
|
import com.klp.mapper.WmsMealReportMapper;
|
||||||
import com.klp.service.IWmsMealReportService;
|
import com.klp.service.IWmsMealReportService;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
import java.time.LocalTime;
|
||||||
|
import java.time.ZoneId;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
@@ -63,7 +66,20 @@ public class WmsMealReportServiceImpl implements IWmsMealReportService {
|
|||||||
private LambdaQueryWrapper<WmsMealReport> buildQueryWrapper(WmsMealReportBo bo) {
|
private LambdaQueryWrapper<WmsMealReport> buildQueryWrapper(WmsMealReportBo bo) {
|
||||||
Map<String, Object> params = bo.getParams();
|
Map<String, Object> params = bo.getParams();
|
||||||
LambdaQueryWrapper<WmsMealReport> lqw = Wrappers.lambdaQuery();
|
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.eq(bo.getMealType() != null, WmsMealReport::getMealType, bo.getMealType());
|
||||||
lqw.like(StringUtils.isNotBlank(bo.getDeptName()), WmsMealReport::getDeptName, bo.getDeptName());
|
lqw.like(StringUtils.isNotBlank(bo.getDeptName()), WmsMealReport::getDeptName, bo.getDeptName());
|
||||||
lqw.eq(bo.getTotalPeople() != null, WmsMealReport::getTotalPeople, bo.getTotalPeople());
|
lqw.eq(bo.getTotalPeople() != null, WmsMealReport::getTotalPeople, bo.getTotalPeople());
|
||||||
|
|||||||
Reference in New Issue
Block a user