From 848cbe2ea4e5a5478c5833de8aaf1b79acff66ed Mon Sep 17 00:00:00 2001 From: "zangch@mesnac.com" Date: Sat, 11 Oct 2025 19:57:06 +0800 Subject: [PATCH] =?UTF-8?q?feat(wms):=20=E5=A2=9E=E5=8A=A0=E5=91=86?= =?UTF-8?q?=E6=BB=9E=E6=96=99=E5=BA=93=E5=AD=98=E6=8A=A5=E8=A1=A8=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E6=9D=A1=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 呆滞料判定天数可配置,默认180天 - 优化呆滞料判定逻辑,支持动态天数判断 - 更新接口参数,新增stagnantDays字段 - 调整SQL查询条件,适配动态天数参数 - 修改VO类,去除继承TenantEntity及相关注解 - 增加租户ID、创建时间等字段支持 - 优化导出功能,支持动态判定天数 --- .../wms/controller/WmsReportController.java | 14 ++++++-- .../dromara/wms/domain/WmsMonthlyReport.java | 32 ++++++++++++++++--- .../dromara/wms/mapper/WmsReportMapper.java | 11 ++++--- .../wms/service/IWmsReportService.java | 2 +- .../service/impl/WmsReportServiceImpl.java | 4 +-- 5 files changed, 48 insertions(+), 15 deletions(-) diff --git a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/controller/WmsReportController.java b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/controller/WmsReportController.java index fe68601e..1e0d291a 100644 --- a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/controller/WmsReportController.java +++ b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/controller/WmsReportController.java @@ -114,8 +114,12 @@ public class WmsReportController extends BaseController { @GetMapping("/stagnantInventory") public R> getStagnantInventory( @RequestParam(required = false) String tenantId, - @RequestParam(required = false) Long materialCategoryId) { - List list = wmsReportService.getStagnantInventory(tenantId, materialCategoryId); + @RequestParam(required = false) Long materialCategoryId, + @RequestParam(required = false) Integer stagnantDays) { + if (stagnantDays == null) { + stagnantDays = 180; + } + List list = wmsReportService.getStagnantInventory(tenantId, materialCategoryId, stagnantDays); return R.ok(list); } @@ -128,8 +132,12 @@ public class WmsReportController extends BaseController { public void exportStagnantInventory( @RequestParam(required = false) String tenantId, @RequestParam(required = false) Long materialCategoryId, + @RequestParam(required = false) Integer stagnantDays, HttpServletResponse response) { - List list = wmsReportService.getStagnantInventory(tenantId, materialCategoryId); + if (stagnantDays == null) { + stagnantDays = 180; + } + List list = wmsReportService.getStagnantInventory(tenantId, materialCategoryId, stagnantDays); ExcelUtil.exportExcel(list, "呆滞料库存报表", WmsStagnantInventoryVo.class, response); } diff --git a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/WmsMonthlyReport.java b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/WmsMonthlyReport.java index 7994547b..cbecddf3 100644 --- a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/WmsMonthlyReport.java +++ b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/domain/WmsMonthlyReport.java @@ -1,11 +1,13 @@ package org.dromara.wms.domain; -import org.dromara.common.tenant.core.TenantEntity; -import com.baomidou.mybatisplus.annotation.*; +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; -import lombok.EqualsAndHashCode; import java.io.Serial; +import java.util.Date; /** * WMS月度报对象 wms_monthly_report @@ -14,13 +16,33 @@ import java.io.Serial; * @date 2025-09-25 */ @Data -@EqualsAndHashCode(callSuper = true) +//@EqualsAndHashCode(callSuper = true) @TableName("wms_monthly_report") -public class WmsMonthlyReport extends TenantEntity { +public class WmsMonthlyReport { @Serial private static final long serialVersionUID = 1L; + /** + * 租户编号 + */ + private String tenantId; + + /** + * 搜索值 + */ + @JsonIgnore + @TableField(exist = false) + private String searchValue; + + + /** + * 创建时间 + */ + @TableField(fill = FieldFill.INSERT) + private Date createTime; + + /** * 报表主键 */ diff --git a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/mapper/WmsReportMapper.java b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/mapper/WmsReportMapper.java index 3f3c7558..5d0f07f0 100644 --- a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/mapper/WmsReportMapper.java +++ b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/mapper/WmsReportMapper.java @@ -155,6 +155,8 @@ public interface WmsReportMapper { /** * 查询呆滞料库存报表 */ + /*从未出库:如果物料从未出库(即没有对应的出库记录),则从首次入库时间开始计算,若距离当前日期已超过180天,则判定为呆滞料。 +长期未出库:如果物料有出库记录,但从最后一次出库时间开始计算,若距离当前日期已超过180天,则判定为呆滞料。*/ @Select("SELECT " + " inv.tenant_id AS tenantId, " + " inv.material_id AS materialId, " + @@ -173,7 +175,7 @@ public interface WmsReportMapper { " END AS stagnantDays, " + " CASE " + " WHEN last_out.lastOutstockTime IS NULL THEN '从未出库' " + - " WHEN DATEDIFF(DAY, last_out.lastOutstockTime, GETDATE()) > 180 THEN '超过6个月未出库' " + + " WHEN DATEDIFF(DAY, last_out.lastOutstockTime, GETDATE()) >= #{stagnantDays} THEN '超过' + CAST(#{stagnantDays} AS VARCHAR(10)) + '天未出库' " + " ELSE '正常' " + " END AS stagnantReason, " + " mi.material_spec AS materialSpec, " + @@ -209,8 +211,8 @@ public interface WmsReportMapper { " AND mi.active_flag = '1' " + " AND mi.del_flag = '0' " + " AND ( " + - " last_out.lastOutstockTime IS NULL " + - " OR DATEDIFF(DAY, last_out.lastOutstockTime, GETDATE()) >= 180 " + + " (last_out.lastOutstockTime IS NULL AND DATEDIFF(DAY, first_in.firstInstockTime, GETDATE()) >= #{stagnantDays}) " + + " OR (last_out.lastOutstockTime IS NOT NULL AND DATEDIFF(DAY, last_out.lastOutstockTime, GETDATE()) >= #{stagnantDays}) " + " ) " + " AND (#{tenantId} IS NULL OR inv.tenant_id = #{tenantId}) " + " AND (#{materialCategoryId} IS NULL OR mc.material_category_id = #{materialCategoryId}) " + @@ -227,7 +229,8 @@ public interface WmsReportMapper { " first_in.firstInstockTime " + "ORDER BY inv.tenant_id, stagnantDays DESC, stagnantInventoryQty DESC") List selectStagnantInventory(@Param("tenantId") String tenantId, - @Param("materialCategoryId") Long materialCategoryId); + @Param("materialCategoryId") Long materialCategoryId, + @Param("stagnantDays") Integer stagnantDays); /** * 查询库存差异报表 diff --git a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/IWmsReportService.java b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/IWmsReportService.java index eed39970..62434686 100644 --- a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/IWmsReportService.java +++ b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/IWmsReportService.java @@ -46,7 +46,7 @@ public interface IWmsReportService { * @param materialCategoryId 物料大类ID * @return 呆滞料库存报表列表 */ - List getStagnantInventory(String tenantId, Long materialCategoryId); + List getStagnantInventory(String tenantId, Long materialCategoryId, Integer stagnantDays); /** * 查询库存差异报表 diff --git a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/impl/WmsReportServiceImpl.java b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/impl/WmsReportServiceImpl.java index 906ece3b..fbea17ba 100644 --- a/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/impl/WmsReportServiceImpl.java +++ b/ruoyi-modules/hwmom-wms/src/main/java/org/dromara/wms/service/impl/WmsReportServiceImpl.java @@ -48,8 +48,8 @@ public class WmsReportServiceImpl implements IWmsReportService { * 查询呆滞料库存报表 */ @Override - public List getStagnantInventory(String tenantId, Long materialCategoryId) { - return wmsReportMapper.selectStagnantInventory(tenantId, materialCategoryId); + public List getStagnantInventory(String tenantId, Long materialCategoryId, Integer stagnantDays) { + return wmsReportMapper.selectStagnantInventory(tenantId, materialCategoryId, stagnantDays); } /**