diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/inboundRank/repository/mapper/ExecutionInboundRankMapper.java b/mhd_oms/src/main/java/com/mhd/oms/domain/inboundRank/repository/mapper/ExecutionInboundRankMapper.java index 64654e548..699f91e69 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/inboundRank/repository/mapper/ExecutionInboundRankMapper.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/inboundRank/repository/mapper/ExecutionInboundRankMapper.java @@ -15,7 +15,7 @@ import java.util.List; public interface ExecutionInboundRankMapper { /** - * 商品入库排名列表(仓单+货品汇总,按件数降序) + * 商品入库排名列表(按物料编码合并,按件数降序,过滤0件行) */ List queryMaterialRankList(ExecutionInboundRankDO executionInboundRankDO); diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/inboundRank/repository/po/ExecutionInboundMaterialRankPO.java b/mhd_oms/src/main/java/com/mhd/oms/domain/inboundRank/repository/po/ExecutionInboundMaterialRankPO.java index 6532af87f..1aa7db54f 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/inboundRank/repository/po/ExecutionInboundMaterialRankPO.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/inboundRank/repository/po/ExecutionInboundMaterialRankPO.java @@ -1,24 +1,21 @@ package com.mhd.oms.domain.inboundRank.repository.po; -import com.fasterxml.jackson.annotation.JsonFormat; import com.mhd.common.core.annotation.Excel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import org.springframework.format.annotation.DateTimeFormat; import java.io.Serializable; import java.math.BigDecimal; -import java.util.Date; /** - * 入库排名统计PO(一行 = 某仓单内某货品的合计,按件数降序排名) + * 入库排名统计PO(一行 = 一个物料的合计(按物料编码合并,查询区间内全部已入库仓单),按件数降序排名) * *

数据源跨库取 WMS 入库表(NGWL_TEST_WMS.stock_in_order / in_material_detail,OMS 执行单状态/上架量不回传), * 口径与 WMS 端 /inboundRankApi 完全一致,两边数字一致。 - * 字段口径:入仓日期=WMS入仓单入仓日期(为空兜底建档时间);仓单编号=WMS入库单号;客户编号/存货人=入仓单货主; - * 件数/毛重/体积=仓单内该货品明细合计(件数取实际上架量 SHELVES_QUANTITY);毛重(吨)=明细总毛重KG/1000; - * 投保总额=货品档案保额(NGWL_TEST_WMS.material_base_info.insure_amount,组内取MAX防多批次明细行重复累加)

+ * 字段口径:件数=实际上架量(SHELVES_QUANTITY)合计;毛重(吨)=明细总毛重KG/1000;体积=明细合计; + * 投保总额=货品档案保额(NGWL_TEST_WMS.material_base_info.insure_amount,物料维度单一值取MAX,不跨仓单累加); + * 仓单编号/客户编号/存货人/入仓日期为单据级字段,按物料合并后单值失真,仅作查询条件不返回

* * @author rcx * @date 2026-08-31 @@ -29,26 +26,8 @@ public class ExecutionInboundMaterialRankPO implements Serializable { private static final long serialVersionUID = 1L; - @ApiModelProperty("入仓日期") - @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") - @DateTimeFormat(pattern = "yyyy-MM-dd") - @Excel(name = "入仓日期", width = 30, dateFormat = "yyyy-MM-dd") - private Date warehouseDate; - - @ApiModelProperty("仓单编号(WMS入库单号)") - @Excel(name = "仓单编号") - private String inOrderNumber; - - @ApiModelProperty("客户编号") - @Excel(name = "客户编号") - private String shipperCode; - - @ApiModelProperty("存货人(客户名称)") - @Excel(name = "存货人") - private String shipperName; - - @ApiModelProperty("商品货号") - @Excel(name = "商品货号") + @ApiModelProperty("物料编码(合并依据)") + @Excel(name = "物料编码") private String materialCode; @ApiModelProperty("货名/商品名称") @@ -63,19 +42,19 @@ public class ExecutionInboundMaterialRankPO implements Serializable { @Excel(name = "单位") private String unitName; - @ApiModelProperty("件数(仓单内该货品实际上架量合计 SHELVES_QUANTITY,排名依据)") + @ApiModelProperty("件数(该物料实际上架量合计 SHELVES_QUANTITY,排名依据)") @Excel(name = "件数") private BigDecimal pieceCount; - @ApiModelProperty("毛重(吨)(仓单内该货品合计,KG/1000)") + @ApiModelProperty("毛重(吨)(该物料合计,KG/1000)") @Excel(name = "毛重(吨)") private BigDecimal grossWeightTon; - @ApiModelProperty("投保总额(货品档案保额)") + @ApiModelProperty("投保总额(货品档案保额,物料维度单一值)") @Excel(name = "投保总额") private BigDecimal insureAmount; - @ApiModelProperty("体积(CBM)(仓单内该货品合计)") + @ApiModelProperty("体积(CBM)(该物料合计)") @Excel(name = "体积(CBM)") private BigDecimal totalVolume; } diff --git a/mhd_oms/src/main/java/com/mhd/oms/domain/inboundRank/repository/po/ExecutionInboundRankTotalPO.java b/mhd_oms/src/main/java/com/mhd/oms/domain/inboundRank/repository/po/ExecutionInboundRankTotalPO.java index c8a51892e..6bd14a5f4 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/domain/inboundRank/repository/po/ExecutionInboundRankTotalPO.java +++ b/mhd_oms/src/main/java/com/mhd/oms/domain/inboundRank/repository/po/ExecutionInboundRankTotalPO.java @@ -28,12 +28,12 @@ public class ExecutionInboundRankTotalPO implements Serializable { @ApiModelProperty("毛重(吨)合计") private BigDecimal totalGrossWeightTon; - @ApiModelProperty("投保总额合计(各仓单+货品行保额之和)") + @ApiModelProperty("投保总额合计(各物料保额之和,每物料计一次)") private BigDecimal totalInsureAmount; @ApiModelProperty("体积(CBM)合计") private BigDecimal totalVolume; - @ApiModelProperty("仓单数合计") + @ApiModelProperty("涉及仓单数(当前筛选条件下去重统计)") private Long totalOrderCount; } diff --git a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/inboundRank/ExecutionInboundRankApi.java b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/inboundRank/ExecutionInboundRankApi.java index f97d23e57..5fa9b0fe0 100644 --- a/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/inboundRank/ExecutionInboundRankApi.java +++ b/mhd_oms/src/main/java/com/mhd/oms/interfaces/facade/inboundRank/ExecutionInboundRankApi.java @@ -30,7 +30,9 @@ import java.util.List; * 故数据源跨库取 WMS 入库表(NGWL_TEST_WMS.stock_in_order/in_material_detail,与 OMS 出库排名跨库修法一致); * 口径与 WMS 端 /inboundRankApi 完全一致,两边数字一致:仅已入库(5) + 明细 level=1 主行 + * 入仓日期(为空的历史单按建档时间兜底) + 件数=实际上架量(SHELVES_QUANTITY); - * 一行 = 某仓单内某货品的合计,按件数降序排名。 + * 一行 = 一个物料的合计(按物料编码合并区间内全部已入库仓单),按件数降序排名,件数为0的物料不返回。 + * 返回字段:物料编码/货名/规格型号/单位/件数/毛重(吨)/投保总额/体积(CBM); + * 仓单编号/客户编号/存货人/入仓日期为单据级字段仅作查询条件,不返回。 * 字段:入仓日期/仓单编号/客户编号/存货人/货名/件数/毛重(吨)/投保总额/体积(CBM)。 * 与出库排名(/executionOutboundRankApi)配对,前端用 tab 页区分

* diff --git a/mhd_oms/src/main/resources/mapper/inboundRank/ExecutionInboundRankMapper.xml b/mhd_oms/src/main/resources/mapper/inboundRank/ExecutionInboundRankMapper.xml index e6b76eb0d..f73e13eea 100644 --- a/mhd_oms/src/main/resources/mapper/inboundRank/ExecutionInboundRankMapper.xml +++ b/mhd_oms/src/main/resources/mapper/inboundRank/ExecutionInboundRankMapper.xml @@ -15,8 +15,8 @@ 口径与 WMS 端 /inboundRankApi 完全一致,两边数字一致; 条件:b.status = 5已入库(排除已取消(6)/已关闭(7)及未完成单据); 日期筛选按入仓单入仓日期 b.warehouse_date(与列表"入仓日期"列同源,为空的历史单按建档时间兜底); - 一行 = 某仓单(b.in_order_number)内某货品(a.material_code)的合计, - 按件数(实际上架量 SUM(a.SHELVES_QUANTITY))降序排名 + 一行 = 一个物料的合计(按物料编码合并,区间内全部已入库仓单),按件数(实际上架量 SUM(a.SHELVES_QUANTITY))降序排名, + 件数为0的物料不返回(HAVING过滤);仓单编号/客户编号/存货人/入仓日期为单据级字段仅作查询条件不返回 --> a.del_flag = 1 @@ -57,14 +57,10 @@ left join NGWL_TEST_WMS.material_base_info c on a.material_base_info_id = c.material_base_info_id - + - + diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inboundRank/repository/mapper/InboundRankMapper.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inboundRank/repository/mapper/InboundRankMapper.java index 5c95d09fa..bb30997d2 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/inboundRank/repository/mapper/InboundRankMapper.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inboundRank/repository/mapper/InboundRankMapper.java @@ -15,7 +15,7 @@ import java.util.List; public interface InboundRankMapper { /** - * 商品入库排名列表(仓单+货品汇总,按件数降序) + * 商品入库排名列表(按物料编码合并,按件数降序,过滤0件行) */ List queryMaterialRankList(InboundRankDO inboundRankDO); diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inboundRank/repository/po/InboundMaterialRankPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inboundRank/repository/po/InboundMaterialRankPO.java index 3044767a9..0805c433c 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/inboundRank/repository/po/InboundMaterialRankPO.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inboundRank/repository/po/InboundMaterialRankPO.java @@ -1,22 +1,19 @@ package com.mhd.wms.domain.inboundRank.repository.po; -import com.fasterxml.jackson.annotation.JsonFormat; import com.mhd.common.core.annotation.Excel; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import org.springframework.format.annotation.DateTimeFormat; import java.io.Serializable; import java.math.BigDecimal; -import java.util.Date; /** - * 入库排名统计PO(一行 = 某仓单内某货品的合计,按件数降序排名) + * 入库排名统计PO(一行 = 一个物料的合计(按物料编码合并,查询区间内全部已入库仓单),按件数降序排名) * - *

字段口径:入仓日期=入仓单入仓日期(为空兜底建档时间);仓单编号=入库单号;客户编号/存货人=入仓单货主; - * 件数/毛重/体积=仓单内该货品明细合计(件数取实际上架量 SHELVES_QUANTITY);毛重(吨)=明细总毛重KG/1000; - * 投保总额=货品档案保额(material_base_info.insure_amount,组内取MAX防多批次明细行重复累加)

+ *

字段口径:件数=实际上架量(SHELVES_QUANTITY)合计;毛重(吨)=明细总毛重KG/1000;体积=明细合计; + * 投保总额=货品档案保额(material_base_info.insure_amount,物料维度单一值取MAX,不跨仓单累加); + * 仓单编号/客户编号/存货人/入仓日期为单据级字段,按物料合并后单值失真,仅作查询条件不返回

* * @author rcx * @date 2026-08-31 @@ -27,26 +24,8 @@ public class InboundMaterialRankPO implements Serializable { private static final long serialVersionUID = 1L; - @ApiModelProperty("入仓日期") - @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") - @DateTimeFormat(pattern = "yyyy-MM-dd") - @Excel(name = "入仓日期", width = 30, dateFormat = "yyyy-MM-dd") - private Date warehouseDate; - - @ApiModelProperty("仓单编号(入库单号)") - @Excel(name = "仓单编号") - private String inOrderNumber; - - @ApiModelProperty("客户编号") - @Excel(name = "客户编号") - private String shipperCode; - - @ApiModelProperty("存货人(客户名称)") - @Excel(name = "存货人") - private String shipperName; - - @ApiModelProperty("商品货号") - @Excel(name = "商品货号") + @ApiModelProperty("物料编码(合并依据)") + @Excel(name = "物料编码") private String materialCode; @ApiModelProperty("货名/商品名称") @@ -61,19 +40,19 @@ public class InboundMaterialRankPO implements Serializable { @Excel(name = "单位") private String unitName; - @ApiModelProperty("件数(仓单内该货品实际上架量合计 SHELVES_QUANTITY,排名依据)") + @ApiModelProperty("件数(该物料实际上架量合计 SHELVES_QUANTITY,排名依据)") @Excel(name = "件数") private BigDecimal pieceCount; - @ApiModelProperty("毛重(吨)(仓单内该货品合计,KG/1000)") + @ApiModelProperty("毛重(吨)(该物料合计,KG/1000)") @Excel(name = "毛重(吨)") private BigDecimal grossWeightTon; - @ApiModelProperty("投保总额(货品档案保额)") + @ApiModelProperty("投保总额(货品档案保额,物料维度单一值)") @Excel(name = "投保总额") private BigDecimal insureAmount; - @ApiModelProperty("体积(CBM)(仓单内该货品合计)") + @ApiModelProperty("体积(CBM)(该物料合计)") @Excel(name = "体积(CBM)") private BigDecimal totalVolume; } diff --git a/mhd_wms/src/main/java/com/mhd/wms/domain/inboundRank/repository/po/InboundRankTotalPO.java b/mhd_wms/src/main/java/com/mhd/wms/domain/inboundRank/repository/po/InboundRankTotalPO.java index f7433e5af..59ac8006b 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/domain/inboundRank/repository/po/InboundRankTotalPO.java +++ b/mhd_wms/src/main/java/com/mhd/wms/domain/inboundRank/repository/po/InboundRankTotalPO.java @@ -28,12 +28,12 @@ public class InboundRankTotalPO implements Serializable { @ApiModelProperty("毛重(吨)合计") private BigDecimal totalGrossWeightTon; - @ApiModelProperty("投保总额合计(各仓单+货品行保额之和)") + @ApiModelProperty("投保总额合计(各物料保额之和,每物料计一次)") private BigDecimal totalInsureAmount; @ApiModelProperty("体积(CBM)合计") private BigDecimal totalVolume; - @ApiModelProperty("仓单数合计") + @ApiModelProperty("涉及仓单数(当前筛选条件下去重统计)") private Long totalOrderCount; } diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inboundRank/InboundRankDTO.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inboundRank/InboundRankDTO.java index e7c812636..a73386995 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inboundRank/InboundRankDTO.java +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/dto/inboundRank/InboundRankDTO.java @@ -9,7 +9,8 @@ import java.io.Serializable; * 入库排名统计入参DTO * *

按入仓日期区间筛选商品入库量统计排名,统计口径:入仓日期 + 仅已入库状态(5) + 明细仅取 level=1 主行; - * 一行 = 某仓单内某货品的合计,按件数降序排名

+ * 一行 = 一个物料的合计(按物料编码合并),按件数降序排名; + * 仓单编号/客户编号/存货人/入仓日期为单据级字段仅作查询条件,返回列不含这些字段

* * @author rcx * @date 2026-08-31 diff --git a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inboundRank/InboundRankApi.java b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inboundRank/InboundRankApi.java index bde6855dd..a60b9308a 100644 --- a/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inboundRank/InboundRankApi.java +++ b/mhd_wms/src/main/java/com/mhd/wms/interfaces/facadeApi/inboundRank/InboundRankApi.java @@ -26,8 +26,10 @@ import java.util.List; * 入库排名统计Api * *

按入仓日期区间筛选商品入库量统计排名。统计口径:入仓日期(为空的历史单按建档时间兜底) + 仅已入库状态(5), - * 明细仅取 level=1 主行;一行 = 某仓单内某货品的合计,按件数(实际上架量 SHELVES_QUANTITY)降序排名。 - * 字段:入仓日期/仓单编号/客户编号/存货人/货名/件数/毛重(吨)/投保总额/体积(CBM)。 + * 明细仅取 level=1 主行;一行 = 一个物料的合计(按物料编码合并区间内全部已入库仓单), + * 按件数(实际上架量 SHELVES_QUANTITY)降序排名,件数为0的物料不返回。 + * 返回字段:物料编码/货名/规格型号/单位/件数/毛重(吨)/投保总额/体积(CBM); + * 仓单编号/客户编号/存货人/入仓日期为单据级字段仅作查询条件,不返回。 * 与出库排名(/outboundRankApi)配对,前端用 tab 页区分

* * @author rcx diff --git a/mhd_wms/src/main/resources/mapper/inboundRank/InboundRankMapper.xml b/mhd_wms/src/main/resources/mapper/inboundRank/InboundRankMapper.xml index 63f9a07e0..f4c34136c 100644 --- a/mhd_wms/src/main/resources/mapper/inboundRank/InboundRankMapper.xml +++ b/mhd_wms/src/main/resources/mapper/inboundRank/InboundRankMapper.xml @@ -10,7 +10,8 @@ left join 货品档案 material_base_info(c,取保额作投保总额) 口径:b.status = 5已入库(排除已取消(6)/已关闭(7)及未完成单据); 日期筛选按入仓单入仓日期 b.warehouse_date(与列表"入仓日期"列同源,为空的历史单按建档时间兜底); - 一行 = 某仓单(b.in_order_number)内某货品(a.material_code)的合计,按件数(实际上架量 SUM(a.SHELVES_QUANTITY))降序排名 + 一行 = 一个物料的合计(按物料编码合并,区间内全部已入库仓单),按件数(实际上架量 SUM(a.SHELVES_QUANTITY))降序排名, + 件数为0的物料不返回(HAVING过滤);仓单编号/客户编号/存货人/入仓日期为单据级字段仅作查询条件不返回 --> a.del_flag = 1 @@ -54,14 +55,10 @@ left join material_base_info c on a.material_base_info_id = c.material_base_info_id - + - +