feat(report): 添加请假和报餐统计报表功能
- 在IWmsLeaveRequestService接口中新增按请假类型、部门、月份统计的方法 - 在IWmsMealReportService接口中新增按餐别、部门、日期统计的方法 - 在WmsLeaveRequestController中添加请假统计报表相关API端点 - 在WmsMealReportController中添加报餐统计报表相关API端点 - 在WmsLeaveRequestServiceImpl中实现请假统计报表的数据查询逻辑 - 在WmsMealReportServiceImpl中实现报餐统计报表的数据查询逻辑 - 使用QueryWrapper构建统计查询条件,支持多维度筛选和分组统计 - 统一返回Map格式的统计数据,便于前端展示报表图表
This commit is contained in:
@@ -21,6 +21,8 @@ import com.klp.domain.vo.WmsLeaveRequestVo;
|
||||
import com.klp.domain.bo.WmsLeaveRequestBo;
|
||||
import com.klp.service.IWmsLeaveRequestService;
|
||||
import com.klp.common.core.page.TableDataInfo;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 员工请假申请
|
||||
@@ -96,4 +98,28 @@ public class WmsLeaveRequestController extends BaseController {
|
||||
@PathVariable Long[] leaveIds) {
|
||||
return toAjax(iWmsLeaveRequestService.deleteWithValidByIds(Arrays.asList(leaveIds), true));
|
||||
}
|
||||
|
||||
/**
|
||||
* 请假统计报表 - 按请假类型统计
|
||||
*/
|
||||
@GetMapping("/report/leaveType")
|
||||
public R<List<Map<String, Object>>> getLeaveTypeReport(WmsLeaveRequestBo bo) {
|
||||
return R.ok(iWmsLeaveRequestService.getLeaveTypeReport(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 请假统计报表 - 按部门统计
|
||||
*/
|
||||
@GetMapping("/report/dept")
|
||||
public R<List<Map<String, Object>>> getLeaveDeptReport(WmsLeaveRequestBo bo) {
|
||||
return R.ok(iWmsLeaveRequestService.getLeaveDeptReport(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 请假统计报表 - 按月份统计
|
||||
*/
|
||||
@GetMapping("/report/monthly")
|
||||
public R<List<Map<String, Object>>> getLeaveMonthlyReport(WmsLeaveRequestBo bo) {
|
||||
return R.ok(iWmsLeaveRequestService.getLeaveMonthlyReport(bo));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,6 +21,8 @@ import com.klp.domain.vo.WmsMealReportVo;
|
||||
import com.klp.domain.bo.WmsMealReportBo;
|
||||
import com.klp.service.IWmsMealReportService;
|
||||
import com.klp.common.core.page.TableDataInfo;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 部门报餐主
|
||||
@@ -96,4 +98,28 @@ public class WmsMealReportController extends BaseController {
|
||||
@PathVariable Long[] reportIds) {
|
||||
return toAjax(iWmsMealReportService.deleteWithValidByIds(Arrays.asList(reportIds), true));
|
||||
}
|
||||
|
||||
/**
|
||||
* 报餐统计报表 - 按餐别统计
|
||||
*/
|
||||
@GetMapping("/report/mealType")
|
||||
public R<List<Map<String, Object>>> getMealTypeReport(WmsMealReportBo bo) {
|
||||
return R.ok(iWmsMealReportService.getMealTypeReport(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 报餐统计报表 - 按部门统计
|
||||
*/
|
||||
@GetMapping("/report/dept")
|
||||
public R<List<Map<String, Object>>> getMealDeptReport(WmsMealReportBo bo) {
|
||||
return R.ok(iWmsMealReportService.getMealDeptReport(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 报餐统计报表 - 按日期统计
|
||||
*/
|
||||
@GetMapping("/report/date")
|
||||
public R<List<Map<String, Object>>> getMealDateReport(WmsMealReportBo bo) {
|
||||
return R.ok(iWmsMealReportService.getMealDateReport(bo));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ import com.klp.common.core.domain.PageQuery;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 员工请假申请Service接口
|
||||
@@ -46,4 +47,19 @@ public interface IWmsLeaveRequestService {
|
||||
* 校验并批量删除员工请假申请信息
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 请假统计报表 - 按请假类型统计
|
||||
*/
|
||||
List<Map<String, Object>> getLeaveTypeReport(WmsLeaveRequestBo bo);
|
||||
|
||||
/**
|
||||
* 请假统计报表 - 按部门统计
|
||||
*/
|
||||
List<Map<String, Object>> getLeaveDeptReport(WmsLeaveRequestBo bo);
|
||||
|
||||
/**
|
||||
* 请假统计报表 - 按月份统计
|
||||
*/
|
||||
List<Map<String, Object>> getLeaveMonthlyReport(WmsLeaveRequestBo bo);
|
||||
}
|
||||
|
||||
@@ -8,6 +8,7 @@ import com.klp.common.core.domain.PageQuery;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 部门报餐主Service接口
|
||||
@@ -46,4 +47,19 @@ public interface IWmsMealReportService {
|
||||
* 校验并批量删除部门报餐主信息
|
||||
*/
|
||||
Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
|
||||
|
||||
/**
|
||||
* 报餐统计报表 - 按餐别统计
|
||||
*/
|
||||
List<Map<String, Object>> getMealTypeReport(WmsMealReportBo bo);
|
||||
|
||||
/**
|
||||
* 报餐统计报表 - 按部门统计
|
||||
*/
|
||||
List<Map<String, Object>> getMealDeptReport(WmsMealReportBo bo);
|
||||
|
||||
/**
|
||||
* 报餐统计报表 - 按日期统计
|
||||
*/
|
||||
List<Map<String, Object>> getMealDateReport(WmsMealReportBo bo);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,6 +18,8 @@ import com.klp.service.IWmsMealReportService;
|
||||
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业务层处理
|
||||
@@ -113,4 +115,74 @@ public class WmsMealReportServiceImpl implements IWmsMealReportService {
|
||||
}
|
||||
return baseMapper.deleteBatchIds(ids) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* 报餐统计报表 - 按餐别统计
|
||||
*/
|
||||
@Override
|
||||
public List<Map<String, Object>> getMealTypeReport(WmsMealReportBo bo) {
|
||||
QueryWrapper<WmsMealReport> qw = new QueryWrapper<>();
|
||||
qw.select("CASE meal_type " +
|
||||
"WHEN 1 THEN '早餐' " +
|
||||
"WHEN 2 THEN '午餐' " +
|
||||
"WHEN 3 THEN '晚餐' " +
|
||||
"WHEN 4 THEN '夜宵' " +
|
||||
"ELSE '未知' END as meal_name",
|
||||
"SUM(total_people) as total_people",
|
||||
"SUM(dine_in_people) as total_dine_in",
|
||||
"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())
|
||||
.eq("del_flag", 0)
|
||||
.eq(bo.getStatus() != null, "status", bo.getStatus())
|
||||
.groupBy("meal_type")
|
||||
.orderByAsc("meal_type");
|
||||
return baseMapper.selectMaps(qw);
|
||||
}
|
||||
|
||||
/**
|
||||
* 报餐统计报表 - 按部门统计
|
||||
*/
|
||||
@Override
|
||||
public List<Map<String, Object>> getMealDeptReport(WmsMealReportBo bo) {
|
||||
QueryWrapper<WmsMealReport> qw = new QueryWrapper<>();
|
||||
qw.select("dept_name",
|
||||
"SUM(total_people) as total_people",
|
||||
"SUM(dine_in_people) as total_dine_in",
|
||||
"SUM(takeout_people) as total_takeout",
|
||||
"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())
|
||||
.eq("del_flag", 0)
|
||||
.eq(bo.getStatus() != null, "status", bo.getStatus())
|
||||
.groupBy("dept_name")
|
||||
.orderByDesc("total_people");
|
||||
return baseMapper.selectMaps(qw);
|
||||
}
|
||||
|
||||
/**
|
||||
* 报餐统计报表 - 按日期统计
|
||||
*/
|
||||
@Override
|
||||
public List<Map<String, Object>> getMealDateReport(WmsMealReportBo bo) {
|
||||
QueryWrapper<WmsMealReport> qw = new QueryWrapper<>();
|
||||
qw.select("report_date",
|
||||
"SUM(total_people) as total_people",
|
||||
"SUM(dine_in_people) as total_dine_in",
|
||||
"SUM(takeout_people) as total_takeout",
|
||||
"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())
|
||||
.eq("del_flag", 0)
|
||||
.eq(bo.getStatus() != null, "status", bo.getStatus())
|
||||
.groupBy("report_date")
|
||||
.orderByAsc("report_date");
|
||||
return baseMapper.selectMaps(qw);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user