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); + } }