feat(report): 添加请假和报餐统计报表功能

- 在IWmsLeaveRequestService接口中新增按请假类型、部门、月份统计的方法
- 在IWmsMealReportService接口中新增按餐别、部门、日期统计的方法
- 在WmsLeaveRequestController中添加请假统计报表相关API端点
- 在WmsMealReportController中添加报餐统计报表相关API端点
- 在WmsLeaveRequestServiceImpl中实现请假统计报表的数据查询逻辑
- 在WmsMealReportServiceImpl中实现报餐统计报表的数据查询逻辑
- 使用QueryWrapper构建统计查询条件,支持多维度筛选和分组统计
- 统一返回Map格式的统计数据,便于前端展示报表图表
This commit is contained in:
2026-01-17 10:36:24 +08:00
parent c408d15f85
commit 672fbefca3
6 changed files with 214 additions and 0 deletions

View File

@@ -18,6 +18,8 @@ import com.klp.service.IWmsLeaveRequestService;
import java.util.List;
import java.util.Map;
import java.util.Collection;
import java.util.Date;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
/**
* 员工请假申请Service业务层处理
@@ -115,4 +117,60 @@ public class WmsLeaveRequestServiceImpl implements IWmsLeaveRequestService {
}
return baseMapper.deleteBatchIds(ids) > 0;
}
/**
* 请假统计报表 - 按请假类型统计
*/
@Override
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");
return baseMapper.selectMaps(qw);
}
/**
* 请假统计报表 - 按部门统计
*/
@Override
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");
return baseMapper.selectMaps(qw);
}
/**
* 请假统计报表 - 按月份统计
*/
@Override
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");
return baseMapper.selectMaps(qw);
}
}