fix(wms,oms):出库排名件数改为复核确认的实际出库量(CHECK_QUANTITY),排序同步调整

- 件数取数由明细 PIECE_COUNT(计划/申报件数)改为 SUM(CHECK_QUANTITY) 复核确认的实际出库量,与入库排名的实际上架量 SHELVES_QUANTITY 取数逻辑对称(已验证现有已出库数据 222/222 全覆盖)

- 排序第一键由出库数量(outbound_quantity,下发时的计划复制值)改为件数(实际出库量)降序,出仓日期/单号次之

- 接口路径/传参/返回字段结构均不变,前端无感;其余为注释同步
This commit is contained in:
rcx
2026-09-02 15:41:51 +08:00
parent 3af78d5d7b
commit 028af3dd2f
6 changed files with 16 additions and 14 deletions
@@ -61,7 +61,7 @@ public class ExecutionOutboundDetailRankPO implements Serializable {
@Excel(name = "线路")
private String lineName;
@ApiModelProperty("件数")
@ApiModelProperty("件数(复核确认的实际出库量合计,与入库排名的实际上架量对称)")
@Excel(name = "件数")
private BigDecimal pieceCount;
@@ -26,7 +26,7 @@ import java.util.List;
/**
* 出库排名统计Api
*
* <p>按日期区间筛选出库明细列表(一行 = 仓单×货品,件数/毛重/体积按行汇总,按出库数量(销售量)降序,件数/出仓日期/单号次之)。
* <p>按日期区间筛选出库明细列表(一行 = 仓单×货品,件数/毛重/体积按行汇总,按件数(实际复核出库量)降序,出仓日期/单号次之)。
* OMS 库出库单状态不流转(无"已出库"数据),数据源跨库取 WMS 库出库表(NGWL_TEST_WMS.stock_out_order / out_material_detail),
* 口径与 WMS 端 /outboundRankApi 完全一致,两边数字一致;统计条件:出库单创建时间 + 已出库及之后状态(9,12,13),明细仅取 level=1 主行。
* 商品/线路两个 tab 各自独立接口,内部为同一份明细查询:商品接口忽略线路筛选参数,线路接口忽略商品筛选参数。
@@ -12,7 +12,8 @@
故跨库取数(与 OMS 库存查询跨库 join NGWL_TEST_WMS.material_base_info 同一模式),
口径与 WMS 端 /outboundRankApi 完全一致,两边数字一致;
条件:b.status in (9已出库,12已复核,13已交接),排除已取消(10)/已关闭(11);
日期按出库单创建时间 b.create_time;一行 = 某仓单内某货品的合计,按出库数量(销售量)降序,件数/出仓日期/单号次之
日期按出库单创建时间 b.create_time;一行 = 某仓单内某货品的合计
件数 = SUM(a.CHECK_QUANTITY) 复核确认的实际出库量(与入库排名的实际上架量 SHELVES_QUANTITY 对称),按件数降序排名
-->
<sql id="outboundRankConditions">
a.del_flag = 1
@@ -61,7 +62,7 @@
join NGWL_TEST_WMS.stock_out_order b on a.out_order_number = b.out_order_number and b.del_flag = 1
</sql>
<!-- 出库明细列表(仓单+货品汇总,按出库数量(销售量)降序;退保总额暂无后端字段不提供) -->
<!-- 出库明细列表(仓单+货品汇总,按件数(实际复核出库量)降序;退保总额暂无后端字段不提供) -->
<select id="queryDetailList" parameterType="com.mhd.oms.domain.outboundRank.repository.todo.ExecutionOutboundRankDO"
resultType="com.mhd.oms.domain.outboundRank.repository.po.ExecutionOutboundDetailRankPO">
select
@@ -74,7 +75,7 @@
MAX(a.material_name) AS materialName,
MAX(b.line_code) AS lineCode,
MAX(b.line_name) AS lineName,
IFNULL(SUM(a.PIECE_COUNT), 0) AS pieceCount,
IFNULL(SUM(a.CHECK_QUANTITY), 0) AS pieceCount,
ROUND(IFNULL(SUM(a.TOTAL_GROSS_WEIGHT), 0) / 1000, 3) AS grossWeightTon,
IFNULL(SUM(a.TOTAL_VOLUME), 0) AS totalVolume,
MAX(IFNULL(b.OUTBOUND_DATE, IFNULL(b.COMPLETE_TIME, b.create_time))) AS outboundDate
@@ -83,7 +84,7 @@
<include refid="outboundRankConditions"/>
</where>
GROUP BY b.out_order_number, a.material_code
order by IFNULL(SUM(a.outbound_quantity), 0) desc, pieceCount desc, outboundDate desc, outOrderNumber desc
order by pieceCount desc, outboundDate desc, outOrderNumber desc
</select>
<!-- 出库明细合计(当前筛选条件全量;外层对分组结果再汇总,与入库排名同模板) -->
@@ -97,7 +98,7 @@
from (
select
b.out_order_number AS outOrderNumber,
IFNULL(SUM(a.PIECE_COUNT), 0) AS pieceCount,
IFNULL(SUM(a.CHECK_QUANTITY), 0) AS pieceCount,
IFNULL(SUM(a.TOTAL_GROSS_WEIGHT), 0) AS grossWeightKG,
IFNULL(SUM(a.TOTAL_VOLUME), 0) AS totalVolume
<include refid="outboundRankFrom"/>
@@ -61,7 +61,7 @@ public class OutboundDetailRankPO implements Serializable {
@Excel(name = "线路")
private String lineName;
@ApiModelProperty("件数")
@ApiModelProperty("件数(复核确认的实际出库量合计,与入库排名的实际上架量对称)")
@Excel(name = "件数")
private BigDecimal pieceCount;
@@ -25,7 +25,7 @@ import java.util.List;
/**
* 出库排名统计Api
*
* <p>按日期区间筛选出库明细列表(一行 = 仓单×货品,件数/毛重/体积按行汇总,按出库数量(销售量)降序,件数/出仓日期/单号次之)。
* <p>按日期区间筛选出库明细列表(一行 = 仓单×货品,件数/毛重/体积按行汇总,按件数(实际复核出库量)降序,出仓日期/单号次之)。
* 统计口径:出库单创建时间 + 已出库及之后状态(9,12,13),明细仅取 level=1 主行。
* 商品/线路两个 tab 各自独立接口,内部为同一份明细查询:商品接口忽略线路筛选参数,线路接口忽略商品筛选参数。
* 字段:种类/仓单编号/入库单号/客户编号/收货人/货名/线路/件数/毛重(吨)/体积(CBM)/退保总额(占位null)/出仓日期</p>
@@ -9,7 +9,8 @@
数据源:出库明细 out_material_detail(a,仅 level=1 主行防重复) join 出库单 stock_out_order(b)
口径:b.status in (9已出库,12已复核,13已交接),排除已取消(10)/已关闭(11);
日期按出库单创建时间 b.create_time(与出库单列表日期筛选一致);
一行 = 某仓单(b.out_order_number)内某货品(a.material_code)的合计,按出库数量(销售量)降序,件数/出仓日期/单号次之
一行 = 某仓单(b.out_order_number)内某货品(a.material_code)的合计
件数 = SUM(a.CHECK_QUANTITY) 复核确认的实际出库量(与入库排名的实际上架量 SHELVES_QUANTITY 对称),按件数降序排名
-->
<sql id="outboundRankConditions">
a.del_flag = 1
@@ -61,7 +62,7 @@
join stock_out_order b on a.out_order_number = b.out_order_number and b.del_flag = 1
</sql>
<!-- 出库明细列表(仓单+货品汇总,按出库数量(销售量)降序;退保总额暂无后端字段不提供) -->
<!-- 出库明细列表(仓单+货品汇总,按件数(实际复核出库量)降序;退保总额暂无后端字段不提供) -->
<select id="queryDetailList" parameterType="com.mhd.wms.domain.outboundRank.repository.todo.OutboundRankDO"
resultType="com.mhd.wms.domain.outboundRank.repository.po.OutboundDetailRankPO">
select
@@ -74,7 +75,7 @@
MAX(a.material_name) AS materialName,
MAX(b.line_code) AS lineCode,
MAX(b.line_name) AS lineName,
IFNULL(SUM(a.PIECE_COUNT), 0) AS pieceCount,
IFNULL(SUM(a.CHECK_QUANTITY), 0) AS pieceCount,
ROUND(IFNULL(SUM(a.TOTAL_GROSS_WEIGHT), 0) / 1000, 3) AS grossWeightTon,
IFNULL(SUM(a.TOTAL_VOLUME), 0) AS totalVolume,
MAX(IFNULL(b.OUTBOUND_DATE, IFNULL(b.COMPLETE_TIME, b.create_time))) AS outboundDate
@@ -83,7 +84,7 @@
<include refid="outboundRankConditions"/>
</where>
GROUP BY b.out_order_number, a.material_code
order by IFNULL(SUM(a.outbound_quantity), 0) desc, pieceCount desc, outboundDate desc, outOrderNumber desc
order by pieceCount desc, outboundDate desc, outOrderNumber desc
</select>
<!-- 出库明细合计(当前筛选条件全量;外层对分组结果再汇总,与入库排名同模板) -->
@@ -97,7 +98,7 @@
from (
select
b.out_order_number AS outOrderNumber,
IFNULL(SUM(a.PIECE_COUNT), 0) AS pieceCount,
IFNULL(SUM(a.CHECK_QUANTITY), 0) AS pieceCount,
IFNULL(SUM(a.TOTAL_GROSS_WEIGHT), 0) AS grossWeightKG,
IFNULL(SUM(a.TOTAL_VOLUME), 0) AS totalVolume
<include refid="outboundRankFrom"/>