fix(WmsMealReport): 修复用餐日期查询范围问题
- 为reportDate字段添加@JsonFormat和@DateTimeFormat注解以统一日期格式 - 修改查询逻辑将精确日期匹配改为当天时间范围查询 - 实现从当天0:00:00到23:59:59的时间范围过滤 - 引入LocalDateTime和ZoneId进行准确的时间转换处理
This commit is contained in:
@@ -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());
|
||||
|
||||
Reference in New Issue
Block a user