From 672fbefca3e959906ba5b751c4c3d1e6e10fd395 Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Sat, 17 Jan 2026 10:36:24 +0800 Subject: [PATCH] =?UTF-8?q?feat(report):=20=E6=B7=BB=E5=8A=A0=E8=AF=B7?= =?UTF-8?q?=E5=81=87=E5=92=8C=E6=8A=A5=E9=A4=90=E7=BB=9F=E8=AE=A1=E6=8A=A5?= =?UTF-8?q?=E8=A1=A8=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在IWmsLeaveRequestService接口中新增按请假类型、部门、月份统计的方法 - 在IWmsMealReportService接口中新增按餐别、部门、日期统计的方法 - 在WmsLeaveRequestController中添加请假统计报表相关API端点 - 在WmsMealReportController中添加报餐统计报表相关API端点 - 在WmsLeaveRequestServiceImpl中实现请假统计报表的数据查询逻辑 - 在WmsMealReportServiceImpl中实现报餐统计报表的数据查询逻辑 - 使用QueryWrapper构建统计查询条件,支持多维度筛选和分组统计 - 统一返回Map格式的统计数据,便于前端展示报表图表 --- .../controller/WmsLeaveRequestController.java | 26 +++++++ .../controller/WmsMealReportController.java | 26 +++++++ .../klp/service/IWmsLeaveRequestService.java | 16 +++++ .../klp/service/IWmsMealReportService.java | 16 +++++ .../impl/WmsLeaveRequestServiceImpl.java | 58 +++++++++++++++ .../impl/WmsMealReportServiceImpl.java | 72 +++++++++++++++++++ 6 files changed, 214 insertions(+) diff --git a/klp-wms/src/main/java/com/klp/controller/WmsLeaveRequestController.java b/klp-wms/src/main/java/com/klp/controller/WmsLeaveRequestController.java index 2b221441..9c4379d1 100644 --- a/klp-wms/src/main/java/com/klp/controller/WmsLeaveRequestController.java +++ b/klp-wms/src/main/java/com/klp/controller/WmsLeaveRequestController.java @@ -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>> getLeaveTypeReport(WmsLeaveRequestBo bo) { + return R.ok(iWmsLeaveRequestService.getLeaveTypeReport(bo)); + } + + /** + * 请假统计报表 - 按部门统计 + */ + @GetMapping("/report/dept") + public R>> getLeaveDeptReport(WmsLeaveRequestBo bo) { + return R.ok(iWmsLeaveRequestService.getLeaveDeptReport(bo)); + } + + /** + * 请假统计报表 - 按月份统计 + */ + @GetMapping("/report/monthly") + public R>> getLeaveMonthlyReport(WmsLeaveRequestBo bo) { + return R.ok(iWmsLeaveRequestService.getLeaveMonthlyReport(bo)); + } } diff --git a/klp-wms/src/main/java/com/klp/controller/WmsMealReportController.java b/klp-wms/src/main/java/com/klp/controller/WmsMealReportController.java index 05c567a4..a22ec4c1 100644 --- a/klp-wms/src/main/java/com/klp/controller/WmsMealReportController.java +++ b/klp-wms/src/main/java/com/klp/controller/WmsMealReportController.java @@ -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>> getMealTypeReport(WmsMealReportBo bo) { + return R.ok(iWmsMealReportService.getMealTypeReport(bo)); + } + + /** + * 报餐统计报表 - 按部门统计 + */ + @GetMapping("/report/dept") + public R>> getMealDeptReport(WmsMealReportBo bo) { + return R.ok(iWmsMealReportService.getMealDeptReport(bo)); + } + + /** + * 报餐统计报表 - 按日期统计 + */ + @GetMapping("/report/date") + public R>> getMealDateReport(WmsMealReportBo bo) { + return R.ok(iWmsMealReportService.getMealDateReport(bo)); + } } diff --git a/klp-wms/src/main/java/com/klp/service/IWmsLeaveRequestService.java b/klp-wms/src/main/java/com/klp/service/IWmsLeaveRequestService.java index 2d7a766e..2ed7e2f9 100644 --- a/klp-wms/src/main/java/com/klp/service/IWmsLeaveRequestService.java +++ b/klp-wms/src/main/java/com/klp/service/IWmsLeaveRequestService.java @@ -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 ids, Boolean isValid); + + /** + * 请假统计报表 - 按请假类型统计 + */ + List> getLeaveTypeReport(WmsLeaveRequestBo bo); + + /** + * 请假统计报表 - 按部门统计 + */ + List> getLeaveDeptReport(WmsLeaveRequestBo bo); + + /** + * 请假统计报表 - 按月份统计 + */ + List> getLeaveMonthlyReport(WmsLeaveRequestBo bo); } diff --git a/klp-wms/src/main/java/com/klp/service/IWmsMealReportService.java b/klp-wms/src/main/java/com/klp/service/IWmsMealReportService.java index a34d3228..a93555ed 100644 --- a/klp-wms/src/main/java/com/klp/service/IWmsMealReportService.java +++ b/klp-wms/src/main/java/com/klp/service/IWmsMealReportService.java @@ -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 ids, Boolean isValid); + + /** + * 报餐统计报表 - 按餐别统计 + */ + List> getMealTypeReport(WmsMealReportBo bo); + + /** + * 报餐统计报表 - 按部门统计 + */ + List> getMealDeptReport(WmsMealReportBo bo); + + /** + * 报餐统计报表 - 按日期统计 + */ + List> getMealDateReport(WmsMealReportBo bo); } diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsLeaveRequestServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsLeaveRequestServiceImpl.java index 4e2e8979..f079496f 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsLeaveRequestServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsLeaveRequestServiceImpl.java @@ -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> getLeaveTypeReport(WmsLeaveRequestBo bo) { + QueryWrapper 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> getLeaveDeptReport(WmsLeaveRequestBo bo) { + QueryWrapper 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> getLeaveMonthlyReport(WmsLeaveRequestBo bo) { + QueryWrapper 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); + } } diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsMealReportServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsMealReportServiceImpl.java index b1ecf1d0..6ecc2bf4 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsMealReportServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsMealReportServiceImpl.java @@ -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> getMealTypeReport(WmsMealReportBo bo) { + QueryWrapper 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> getMealDeptReport(WmsMealReportBo bo) { + QueryWrapper 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> getMealDateReport(WmsMealReportBo bo) { + QueryWrapper 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); + } }