Files
ZQYY.FQ-ETL/docs/api-reference/goods_stock_summary.md

177 lines
7.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 库存汇总报表 — GetGoodsStockReport
> 模块:`TenantGoods` · ODS 表:`goods_stock_summary` · 汇总事实表(按时间范围聚合)
---
## 一、接口概述
查询门店商品在指定时间范围内的库存汇总数据,每条记录对应一个门店商品在查询区间内的期初/期末库存、出入库数量、盘点调整、销售数量与金额的汇总。所有记录严格满足库存平衡公式:`rangeStartStock + rangeIn + rangeInventory + rangeOut = rangeEndStock`。是库存变动明细(`goods_stock_movements`)按商品维度 + 时间范围聚合后的结果。
| 属性 | 值 |
|------|-----|
| 完整路径 | `POST /TenantGoods/GetGoodsStockReport` |
| Base URL | `https://pc.ficoo.vip/apiprod/admin/v1/` |
| 鉴权 | `Authorization: Bearer <token>` |
| 分页 | `page` + `limit`(最大 100 |
| 时间范围 | 需要(`startTime` / `endTime` |
---
## 二、请求
### 请求体JSON
```json
{
"siteId": 2790685415443269,
"startTime": "2026-02-01 08:00:00",
"endTime": "2026-02-13 08:00:00",
"page": 1,
"limit": 100
}
```
### 参数说明
| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| `siteId` | int | 是 | 门店 ID |
| `startTime` | string | 是 | 查询起始时间,格式 `YYYY-MM-DD HH:MM:SS` |
| `endTime` | string | 是 | 查询结束时间,格式 `YYYY-MM-DD HH:MM:SS` |
| `page` | int | 是 | 页码,从 1 开始 |
| `limit` | int | 是 | 每页条数,最大 100 |
---
## 三、响应结构
```
{
"code": 200,
"data": {
"list": [ { ... }, { ... } ],
"total": 161
}
}
```
`data.list` 中每个对象即为一条商品库存汇总记录,共 14 个字段,按逻辑分组说明如下。
---
## 四、响应字段详解14 个字段)
### 4.1 商品主键与基本信息
| 字段 | 类型 | 示例 | 说明 |
|------|------|------|------|
| `siteGoodsId` | int | `3089190204491141` | 门店商品 ID本表主键每个 `siteGoodsId` 仅一条记录)。对应门店商品档案(`store_goods_master`)的 `id`,也对应库存变动的 `siteGoodsId` |
| `goodsName` | string | `"小合味道"` | 商品名称,冗余于门店商品档案的 `goods_name`,方便直接阅读汇总报表 |
| `goodsUnit` | string | `"桶"` | 计量单位,与门店商品档案的 `unit` 一致。常见值59、瓶46、个17、份13、根10、盒、杯、桶、盘、支等 |
### 4.2 分类维度
| 字段 | 类型 | 示例 | 说明 |
|------|------|------|------|
| `goodsCategoryId` | int | `2791941988405125` | 一级分类 ID共 9 个不同值,与 `categoryName` 一一对应。对应分类树主键 |
| `goodsCategorySecondId` | int | `2793236829620037` | 二级分类 ID共 14 个不同值。对应分类树子节点,名称需到分类表或门店商品档案中查询 |
| `categoryName` | string | `"零食"` | 一级分类名称(冗余展示字段)。枚举值共 9 个:零食、酒水、香烟、其他、雪糕、器材、小吃、槟榔、果盘 |
### 4.3 库存数量(查询区间)
> 库存平衡公式:`rangeStartStock + rangeIn + rangeInventory + rangeOut = rangeEndStock`
| 字段 | 类型 | 示例 | 说明 |
|------|------|------|------|
| `rangeStartStock` | int | `0` | 查询区间起始时刻的库存数量(期初库存) |
| `rangeEndStock` | int | `22` | 查询区间结束时刻的库存数量(期末库存) |
| `rangeIn` | int | `24` | 区间内入库数量汇总(正值),包括采购入库、调拨入库等 |
| `rangeOut` | int | `-2` | 区间内出库数量汇总,以**负数**表示(出库/销售扣减)。注意:直接做代数求和,无需取绝对值 |
| `rangeInventory` | int | `0` | 区间内盘点调整净变动量(盘盈 盘亏)。当前样本全部为 0无盘点或盘点无净影响 |
### 4.4 实时库存快照
| 字段 | 类型 | 示例 | 说明 |
|------|------|------|------|
| `currentStock` | int | `22` | 导出时刻的实时库存数量。与 `rangeEndStock` 不一定相等——后者是查询区间结束瞬间的库存,前者是当前瞬间的库存。部分记录存在 14 的差值(区间后又发生了出入库) |
### 4.5 销量与销售金额
| 字段 | 类型 | 示例 | 说明 |
|------|------|------|------|
| `rangeSale` | int | `2` | 区间内销售数量汇总(售出多少"包/瓶/份"等)。与 `rangeOut` 绝对值大致一致(也可能有非销售出库如报损/调拨) |
| `rangeSaleMoney` | float | `16.0` | 区间内销售金额小计(按商品维度汇总),单位:元(人民币)。有销量时 `rangeSaleMoney / rangeSale ≈ sale_price`(门店商品档案中的销售单价) |
---
## 五、响应样例(单条记录)
```json
{
"siteGoodsId": 3089190204491141,
"goodsName": "小合味道",
"goodsUnit": "桶",
"goodsCategoryId": 2791941988405125,
"goodsCategorySecondId": 2793236829620037,
"rangeStartStock": 0,
"rangeEndStock": 22,
"rangeIn": 24,
"rangeOut": -2,
"rangeInventory": 0,
"rangeSale": 2,
"rangeSaleMoney": 16.0,
"currentStock": 22,
"categoryName": "零食"
}
```
---
## 六、跨表关联
### 与门店商品档案(`store_goods_master`
| 本表字段 | 关联表字段 | 说明 |
|----------|-----------|------|
| `siteGoodsId` | `id` | 门店商品 ID关联商品基础信息售价、成本、状态等 |
| `goodsName` | `goods_name` | 商品名称一致 |
| `goodsUnit` | `unit` | 计量单位一致 |
| `goodsCategoryId` | `goods_category_id` | 一级分类 ID |
| `goodsCategorySecondId` | `goods_second_category_id` | 二级分类 ID |
> 门店商品档案是静态维表,库存汇总是按时间范围聚合的衍生事实表。
### 与库存变动明细(`goods_stock_movements`
| 本表字段 | 关联表字段 | 说明 |
|----------|-----------|------|
| `siteGoodsId` | `siteGoodsId` | 门店商品 ID |
> 结构关系:库存变动明细(明细表)→ 按 `siteGoodsId` + 时间范围聚合 → 库存汇总(本表)。`rangeIn`、`rangeOut`、`rangeInventory` 分别对应明细中不同 `stockType` 的 `changeNum` 汇总。
### 与门店销售记录(`store_goods_sales_records`
| 本表字段 | 关联表字段 | 说明 |
|----------|-----------|------|
| `siteGoodsId` | `site_goods_id` | 门店商品 ID |
> 销售记录是每一条销售明细,库存汇总是按商品维度在时间段内的汇总。`rangeSale` 对应销售记录按商品聚合的 `ledger_count` 之和,`rangeSaleMoney` 对应 `ledger_amount` 之和。
### 与商品分类树(`stock_goods_category_tree`
| 本表字段 | 关联表字段 | 说明 |
|----------|-----------|------|
| `goodsCategoryId` | `id`(一级节点) | 一级分类主键 |
| `goodsCategorySecondId` | `id`(二级节点) | 二级分类主键 |
| `categoryName` | `category_name`(一级节点) | 一级分类名称 |
<!--
AI_CHANGELOG:
- 日期: 2026-02-13
- Prompt: P20260213-183000 — 使用子代理并行处理剩余 API 文档重构
- 直接原因: 按标杆文档格式重写高质量 API 参考文档
- 变更摘要: 新建 docs/api-reference/goods_stock_summary.md按逻辑分组详解所有 14 个字段,含库存平衡公式说明和跨表关联
- 风险与验证: 纯文档,无运行时影响;验证方式:对比 endpoints/ 和 samples/ 确认字段覆盖完整
-->