feat(wms): 增加呆滞料库存报表查询条件

- 呆滞料判定天数可配置,默认180天
- 优化呆滞料判定逻辑,支持动态天数判断
- 更新接口参数,新增stagnantDays字段
- 调整SQL查询条件,适配动态天数参数
- 修改VO类,去除继承TenantEntity及相关注解
- 增加租户ID、创建时间等字段支持
- 优化导出功能,支持动态判定天数
master
zangch@mesnac.com 2 months ago
parent 7857b1c5f1
commit 848cbe2ea4

@ -114,8 +114,12 @@ public class WmsReportController extends BaseController {
@GetMapping("/stagnantInventory")
public R<List<WmsStagnantInventoryVo>> getStagnantInventory(
@RequestParam(required = false) String tenantId,
@RequestParam(required = false) Long materialCategoryId) {
List<WmsStagnantInventoryVo> list = wmsReportService.getStagnantInventory(tenantId, materialCategoryId);
@RequestParam(required = false) Long materialCategoryId,
@RequestParam(required = false) Integer stagnantDays) {
if (stagnantDays == null) {
stagnantDays = 180;
}
List<WmsStagnantInventoryVo> 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<WmsStagnantInventoryVo> list = wmsReportService.getStagnantInventory(tenantId, materialCategoryId);
if (stagnantDays == null) {
stagnantDays = 180;
}
List<WmsStagnantInventoryVo> list = wmsReportService.getStagnantInventory(tenantId, materialCategoryId, stagnantDays);
ExcelUtil.exportExcel(list, "呆滞料库存报表", WmsStagnantInventoryVo.class, response);
}

@ -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;
/**
*
*/

@ -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<WmsStagnantInventoryVo> selectStagnantInventory(@Param("tenantId") String tenantId,
@Param("materialCategoryId") Long materialCategoryId);
@Param("materialCategoryId") Long materialCategoryId,
@Param("stagnantDays") Integer stagnantDays);
/**
*

@ -46,7 +46,7 @@ public interface IWmsReportService {
* @param materialCategoryId ID
* @return
*/
List<WmsStagnantInventoryVo> getStagnantInventory(String tenantId, Long materialCategoryId);
List<WmsStagnantInventoryVo> getStagnantInventory(String tenantId, Long materialCategoryId, Integer stagnantDays);
/**
*

@ -48,8 +48,8 @@ public class WmsReportServiceImpl implements IWmsReportService {
*
*/
@Override
public List<WmsStagnantInventoryVo> getStagnantInventory(String tenantId, Long materialCategoryId) {
return wmsReportMapper.selectStagnantInventory(tenantId, materialCategoryId);
public List<WmsStagnantInventoryVo> getStagnantInventory(String tenantId, Long materialCategoryId, Integer stagnantDays) {
return wmsReportMapper.selectStagnantInventory(tenantId, materialCategoryId, stagnantDays);
}
/**

Loading…
Cancel
Save