fix(wms): 修复请假和用餐报表查询的时间范围筛选逻辑

- 修正了请假申请查询中的时间范围条件,确保正确筛选时间段重叠的记录
- 更新了请假类型统计报表的时间筛选逻辑,修复开始时间和结束时间的比较条件
- 修复了请假部门统计报表的时间范围查询条件
- 修正了请假月度统计报表的时间筛选逻辑
- 修复了按申请人分组的请假统计报表时间范围筛选功能
- 在用餐报表查询中添加了开始时间和结束时间字段用于时间范围筛选
- 更新了用餐报表服务实现类中的时间范围查询逻辑,替换原有的单日期查询条件
This commit is contained in:
2026-01-21 15:11:21 +08:00
parent 7a4846e23a
commit 2105af31d8
3 changed files with 54 additions and 46 deletions

View File

@@ -77,4 +77,12 @@ public class WmsMealReportBo extends BaseEntity {
private String dineInPeopleList;
// 打包人名单
private String takeoutPeopleList;
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date startTime;
@JsonFormat(pattern = "yyyy-MM-dd")
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date endTime;
}

View File

@@ -38,7 +38,7 @@ public class WmsLeaveRequestServiceImpl implements IWmsLeaveRequestService {
* 查询员工请假申请
*/
@Override
public WmsLeaveRequestVo queryById(Long leaveId){
public WmsLeaveRequestVo queryById(Long leaveId) {
return baseMapper.selectVoById(leaveId);
}
@@ -92,7 +92,7 @@ public class WmsLeaveRequestServiceImpl implements IWmsLeaveRequestService {
// 条件:(start_time <= endTime AND end_time >= startTime)
if (bo.getStartTime() != null && bo.getEndTime() != null) {
lqw.le(WmsLeaveRequest::getStartTime, bo.getEndTime())
.ge(WmsLeaveRequest::getEndTime, bo.getStartTime());
.ge(WmsLeaveRequest::getEndTime, bo.getStartTime());
} else if (bo.getStartTime() != null) {
lqw.ge(WmsLeaveRequest::getEndTime, bo.getStartTime());
} else if (bo.getEndTime() != null) {
@@ -147,7 +147,7 @@ public class WmsLeaveRequestServiceImpl implements IWmsLeaveRequestService {
/**
* 保存前的数据校验
*/
private void validEntityBeforeSave(WmsLeaveRequest entity){
private void validEntityBeforeSave(WmsLeaveRequest entity) {
//TODO 做一些数据校验,如唯一约束
}
@@ -156,7 +156,7 @@ public class WmsLeaveRequestServiceImpl implements IWmsLeaveRequestService {
*/
@Override
public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
if(isValid){
if (isValid) {
//TODO 做一些业务上的校验,判断是否需要校验
}
return baseMapper.deleteBatchIds(ids) > 0;
@@ -169,14 +169,14 @@ public class WmsLeaveRequestServiceImpl implements IWmsLeaveRequestService {
public List<Map<String, Object>> getLeaveTypeReport(WmsLeaveRequestBo bo) {
QueryWrapper<WmsLeaveRequest> qw = new QueryWrapper<>();
qw.select("leave_type as type",
"COUNT(*) as count",
"SUM(leave_days) as total_days")
.eq(bo.getApplicantDeptName() != null, "applicant_dept_name", bo.getApplicantDeptName())
.ge(bo.getStartTime() != null, "start_time", bo.getStartTime())
.le(bo.getEndTime() != null, "end_time", bo.getEndTime())
.eq("del_flag", 0)
.groupBy("leave_type")
.orderByDesc("total_days");
"COUNT(*) as count",
"SUM(leave_days) as total_days")
.eq(bo.getApplicantDeptName() != null, "applicant_dept_name", bo.getApplicantDeptName())
.le(bo.getStartTime() != null, "start_time", bo.getEndTime()) // 开始时间 <= 查询结束时间
.ge(bo.getEndTime() != null, "end_time", bo.getStartTime()) // 结束时间 >= 查询开始时间
.eq("del_flag", 0)
.groupBy("leave_type")
.orderByDesc("total_days");
return baseMapper.selectMaps(qw);
}
@@ -187,15 +187,15 @@ public class WmsLeaveRequestServiceImpl implements IWmsLeaveRequestService {
public List<Map<String, Object>> getLeaveDeptReport(WmsLeaveRequestBo bo) {
QueryWrapper<WmsLeaveRequest> qw = new QueryWrapper<>();
qw.select("applicant_dept_name as dept_name",
"COUNT(*) as count",
"SUM(leave_days) as total_days")
.isNotNull("applicant_dept_name")
.eq(StringUtils.isNotBlank(bo.getLeaveType()), "leave_type", bo.getLeaveType())
.ge(bo.getStartTime() != null, "start_time", bo.getStartTime())
.le(bo.getEndTime() != null, "end_time", bo.getEndTime())
.eq("del_flag", 0)
.groupBy("applicant_dept_name")
.orderByDesc("total_days");
"COUNT(*) as count",
"SUM(leave_days) as total_days")
.isNotNull("applicant_dept_name")
.eq(StringUtils.isNotBlank(bo.getLeaveType()), "leave_type", bo.getLeaveType())
.le(bo.getStartTime() != null, "start_time", bo.getEndTime()) // 开始时间 <= 查询结束时间
.ge(bo.getEndTime() != null, "end_time", bo.getStartTime()) // 结束时间 >= 查询开始时间
.eq("del_flag", 0)
.groupBy("applicant_dept_name")
.orderByDesc("total_days");
return baseMapper.selectMaps(qw);
}
@@ -206,15 +206,15 @@ public class WmsLeaveRequestServiceImpl implements IWmsLeaveRequestService {
public List<Map<String, Object>> getLeaveMonthlyReport(WmsLeaveRequestBo bo) {
QueryWrapper<WmsLeaveRequest> qw = new QueryWrapper<>();
qw.select("DATE_FORMAT(start_time, '%Y-%m') as month",
"COUNT(*) as count",
"SUM(leave_days) as total_days")
.ge(bo.getStartTime() != null, "start_time", bo.getStartTime())
.le(bo.getEndTime() != null, "end_time", bo.getEndTime())
.eq(StringUtils.isNotBlank(bo.getLeaveType()), "leave_type", bo.getLeaveType())
.eq(bo.getApplicantDeptName() != null, "applicant_dept_name", bo.getApplicantDeptName())
.eq("del_flag", 0)
.groupBy("month")
.orderByAsc("month");
"COUNT(*) as count",
"SUM(leave_days) as total_days")
.le(bo.getStartTime() != null, "start_time", bo.getEndTime()) // 开始时间 <= 查询结束时间
.ge(bo.getEndTime() != null, "end_time", bo.getStartTime()) // 结束时间 >= 查询开始时间
.eq(StringUtils.isNotBlank(bo.getLeaveType()), "leave_type", bo.getLeaveType())
.eq(bo.getApplicantDeptName() != null, "applicant_dept_name", bo.getApplicantDeptName())
.eq("del_flag", 0)
.groupBy("month")
.orderByAsc("month");
return baseMapper.selectMaps(qw);
}
@@ -225,16 +225,16 @@ public class WmsLeaveRequestServiceImpl implements IWmsLeaveRequestService {
public List<Map<String, Object>> getLeaveListGroupedByApplicant(WmsLeaveRequestBo bo) {
QueryWrapper<WmsLeaveRequest> qw = new QueryWrapper<>();
qw.select("applicant_name",
"applicant_dept_name",
"GROUP_CONCAT(CONCAT(leave_type, ':', DATE_FORMAT(start_time, '%Y-%m-%d %H:%i'), '~', DATE_FORMAT(end_time, '%Y-%m-%d %H:%i'), '(', leave_days, '天)') ORDER BY start_time SEPARATOR '; ') as leave_details",
"SUM(leave_days) as total_days",
"COUNT(*) as leave_count")
.eq("del_flag", 0);
"applicant_dept_name",
"GROUP_CONCAT(CONCAT(leave_type, ':', DATE_FORMAT(start_time, '%Y-%m-%d %H:%i'), '~', DATE_FORMAT(end_time, '%Y-%m-%d %H:%i'), '(', leave_days, '天)') ORDER BY start_time SEPARATOR '; ') as leave_details",
"SUM(leave_days) as total_days",
"COUNT(*) as leave_count")
.eq("del_flag", 0);
// 时间范围筛选
if (bo.getStartTime() != null && bo.getEndTime() != null) {
qw.le("start_time", bo.getEndTime())
.ge("end_time", bo.getStartTime());
.ge("end_time", bo.getStartTime());
} else if (bo.getStartTime() != null) {
qw.ge("end_time", bo.getStartTime());
} else if (bo.getEndTime() != null) {
@@ -243,10 +243,10 @@ public class WmsLeaveRequestServiceImpl implements IWmsLeaveRequestService {
// 其他筛选条件
qw.eq(StringUtils.isNotBlank(bo.getLeaveType()), "leave_type", bo.getLeaveType())
.like(StringUtils.isNotBlank(bo.getApplicantName()), "applicant_name", bo.getApplicantName())
.like(StringUtils.isNotBlank(bo.getApplicantDeptName()), "applicant_dept_name", bo.getApplicantDeptName())
.groupBy("applicant_name", "applicant_dept_name")
.orderByDesc("total_days");
.like(StringUtils.isNotBlank(bo.getApplicantName()), "applicant_name", bo.getApplicantName())
.like(StringUtils.isNotBlank(bo.getApplicantDeptName()), "applicant_dept_name", bo.getApplicantDeptName())
.groupBy("applicant_name", "applicant_dept_name")
.orderByDesc("total_days");
return baseMapper.selectMaps(qw);
}

View File

@@ -177,8 +177,8 @@ public class WmsMealReportServiceImpl implements IWmsMealReportService {
"SUM(takeout_people) as total_takeout",
"COUNT(*) as report_count")
.eq(StringUtils.isNotBlank(bo.getDeptName()), "dept_name", bo.getDeptName())
.ge(bo.getReportDate() != null, "report_date", bo.getReportDate())
.le(bo.getReportDate() != null, "report_date", bo.getReportDate())
.ge(bo.getStartTime() != null, "report_date", bo.getStartTime())
.le(bo.getEndTime() != null, "report_date", bo.getEndTime())
.eq("del_flag", 0)
.eq(bo.getStatus() != null, "status", bo.getStatus())
.groupBy("meal_type")
@@ -199,8 +199,8 @@ public class WmsMealReportServiceImpl implements IWmsMealReportService {
"COUNT(*) as report_count",
"AVG(total_people) as avg_people")
.eq(bo.getMealType() != null, "meal_type", bo.getMealType())
.ge(bo.getReportDate() != null, "report_date", bo.getReportDate())
.le(bo.getReportDate() != null, "report_date", bo.getReportDate())
.ge(bo.getStartTime() != null, "report_date", bo.getStartTime())
.le(bo.getEndTime() != null, "report_date", bo.getEndTime())
.eq("del_flag", 0)
.eq(bo.getStatus() != null, "status", bo.getStatus())
.groupBy("dept_name")
@@ -221,8 +221,8 @@ public class WmsMealReportServiceImpl implements IWmsMealReportService {
"COUNT(*) as report_count")
.eq(StringUtils.isNotBlank(bo.getDeptName()), "dept_name", bo.getDeptName())
.eq(bo.getMealType() != null, "meal_type", bo.getMealType())
.ge(bo.getReportDate() != null, "report_date", bo.getReportDate())
.le(bo.getReportDate() != null, "report_date", bo.getReportDate())
.ge(bo.getStartTime() != null, "report_date", bo.getStartTime())
.le(bo.getEndTime() != null, "report_date", bo.getEndTime())
.eq("del_flag", 0)
.eq(bo.getStatus() != null, "status", bo.getStatus())
.groupBy("report_date")