From c408d15f854b363727198c0cbf2ccd777babdd6e Mon Sep 17 00:00:00 2001 From: Joshi <3040996759@qq.com> Date: Sat, 17 Jan 2026 10:18:42 +0800 Subject: [PATCH 1/2] =?UTF-8?q?feat(wms):=20=E4=B8=BAVO=E7=B1=BB=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=9F=BA=E7=A1=80=E5=AE=9E=E4=BD=93=E7=BB=A7=E6=89=BF?= =?UTF-8?q?=E5=B9=B6=E5=A2=9E=E5=8A=A0=E6=95=B0=E6=8D=AE=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - WmsLeaveRequestVo继承BaseEntity类 - WmsMealReportVo继承BaseEntity类 - WmsMaterialCoilExportVo新增dataType字段 - 在WmsMaterialCoilMapper.xml中映射数据类型字段 - 实现历史数据处理逻辑,当dataType为0时将实际库区设为null --- .../src/main/java/com/klp/domain/vo/WmsLeaveRequestVo.java | 3 ++- .../main/java/com/klp/domain/vo/WmsMaterialCoilExportVo.java | 3 +++ klp-wms/src/main/java/com/klp/domain/vo/WmsMealReportVo.java | 3 ++- .../com/klp/service/impl/WmsMaterialCoilServiceImpl.java | 5 +++++ .../src/main/resources/mapper/klp/WmsMaterialCoilMapper.xml | 2 ++ 5 files changed, 14 insertions(+), 2 deletions(-) diff --git a/klp-wms/src/main/java/com/klp/domain/vo/WmsLeaveRequestVo.java b/klp-wms/src/main/java/com/klp/domain/vo/WmsLeaveRequestVo.java index 3a3e3aa7..d44e2b7a 100644 --- a/klp-wms/src/main/java/com/klp/domain/vo/WmsLeaveRequestVo.java +++ b/klp-wms/src/main/java/com/klp/domain/vo/WmsLeaveRequestVo.java @@ -7,6 +7,7 @@ import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; import com.klp.common.annotation.ExcelDictFormat; import com.klp.common.convert.ExcelDictConvert; +import com.klp.common.core.domain.BaseEntity; import lombok.Data; @@ -18,7 +19,7 @@ import lombok.Data; */ @Data @ExcelIgnoreUnannotated -public class WmsLeaveRequestVo { +public class WmsLeaveRequestVo extends BaseEntity { private static final long serialVersionUID = 1L; diff --git a/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilExportVo.java b/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilExportVo.java index 9624b5fa..928c630e 100644 --- a/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilExportVo.java +++ b/klp-wms/src/main/java/com/klp/domain/vo/WmsMaterialCoilExportVo.java @@ -166,4 +166,7 @@ public class WmsMaterialCoilExportVo { * 更新时间(仅临时存储,不导出,用于发货时间为空时兜底) */ private Date updateTime; + + // 数据类型 + private Integer dataType; } diff --git a/klp-wms/src/main/java/com/klp/domain/vo/WmsMealReportVo.java b/klp-wms/src/main/java/com/klp/domain/vo/WmsMealReportVo.java index 668c4c15..5a9faba7 100644 --- a/klp-wms/src/main/java/com/klp/domain/vo/WmsMealReportVo.java +++ b/klp-wms/src/main/java/com/klp/domain/vo/WmsMealReportVo.java @@ -6,6 +6,7 @@ import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; import com.alibaba.excel.annotation.ExcelProperty; import com.klp.common.annotation.ExcelDictFormat; import com.klp.common.convert.ExcelDictConvert; +import com.klp.common.core.domain.BaseEntity; import lombok.Data; @@ -17,7 +18,7 @@ import lombok.Data; */ @Data @ExcelIgnoreUnannotated -public class WmsMealReportVo { +public class WmsMealReportVo extends BaseEntity { private static final long serialVersionUID = 1L; diff --git a/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java b/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java index 0a1c3bc5..b324a0e4 100644 --- a/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java +++ b/klp-wms/src/main/java/com/klp/service/impl/WmsMaterialCoilServiceImpl.java @@ -2210,6 +2210,11 @@ public class WmsMaterialCoilServiceImpl implements IWmsMaterialCoilService { vo.setCreateTime(finalDate); } // 非1的情况,保持原有create_time不变 + + // 如果是dataType=0的历史数据,将实际库区设置为null + if (vo.getDataType() != null && vo.getDataType() == 0) { + vo.setActualWarehouseName(null); + } }); return wmsMaterialCoilExportVos; } diff --git a/klp-wms/src/main/resources/mapper/klp/WmsMaterialCoilMapper.xml b/klp-wms/src/main/resources/mapper/klp/WmsMaterialCoilMapper.xml index d74429fe..9b28ee82 100644 --- a/klp-wms/src/main/resources/mapper/klp/WmsMaterialCoilMapper.xml +++ b/klp-wms/src/main/resources/mapper/klp/WmsMaterialCoilMapper.xml @@ -350,6 +350,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" END AS itemTypeDesc, -- 物品ID mc.item_id AS itemId, + -- 数据类型 + mc.data_type AS dataType, -- 逻辑库区 w.warehouse_name AS warehouseName, -- 实际库区 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 2/2] =?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); + } }