feat: 库存动销分析「销售=0」导出增加系统仓位列 #50

Merged
youruo merged 1 commits from codex/ssa-zero-export-bin-0928 into main 2026-09-28 09:36:11 +08:00
Collaborator

需求

「库存动销分析」页面导出的「销售=0」明细中增加一列系统仓位,用于定位滞销库存的实际存放位置。

数据来源

  • jst_sku.bin / other_bin 全部为空(56 万 SKU 中 0 条有值),jst_inventoryInfo 无仓位字段
  • 业务库唯一可得的系统仓位是 rpt.jst_packInventoryInfo.bin(29577 行,22220 行有仓位,覆盖 14 个仓库)

实现

  • 按 (wms_co_id, sku_id) 聚合:LTRIM 去空格后 DISTINCT,STRING_AGG 按名称排序、用「、」连接
  • 排除 bin 为空与 qty=0 的仓位记录,避免无效仓位干扰
  • LEFT JOIN 且按「仓库 + SKU」双条件匹配,避免跨仓错配(已加断言)
  • 导出列顺序:仓库 | SKU编码 | SKU名称 | 系统仓位 | 库存数量 | 销量 | 统计天数 | 统计基准日
  • 前端按钮提示同步说明多仓位拼接规则与留空含义

验证

  • 后端 syntax 通过;单测 9/9(全量 389/390,唯一失败为既有 Windows 权限环境项)
  • 前端 eslint / build / npm test 均通过
  • 本地导出实测:3650 行,系统仓位列就位,3381 行有仓位(92.6%),销量列全为 0,最长仓位串 600 字符(Excel 上限 32767 内)
  • 未覆盖的 7.4% 是因为仓位表本身只含 13 个仓库,属数据范围限制,导出时留空
  • 浏览器实测点击下载,文件名 库存动销分析-销售0明细-20260927.xlsx 与列结构正确
## 需求 「库存动销分析」页面导出的「销售=0」明细中增加一列**系统仓位**,用于定位滞销库存的实际存放位置。 ## 数据来源 - `jst_sku.bin` / `other_bin` 全部为空(56 万 SKU 中 0 条有值),`jst_inventoryInfo` 无仓位字段 - 业务库唯一可得的系统仓位是 `rpt.jst_packInventoryInfo.bin`(29577 行,22220 行有仓位,覆盖 14 个仓库) ## 实现 - 按 (wms_co_id, sku_id) 聚合:LTRIM 去空格后 DISTINCT,`STRING_AGG` 按名称排序、用「、」连接 - 排除 bin 为空与 qty=0 的仓位记录,避免无效仓位干扰 - LEFT JOIN 且按「仓库 + SKU」双条件匹配,避免跨仓错配(已加断言) - 导出列顺序:仓库 | SKU编码 | SKU名称 | **系统仓位** | 库存数量 | 销量 | 统计天数 | 统计基准日 - 前端按钮提示同步说明多仓位拼接规则与留空含义 ## 验证 - 后端 syntax 通过;单测 9/9(全量 389/390,唯一失败为既有 Windows 权限环境项) - 前端 eslint / build / npm test 均通过 - 本地导出实测:3650 行,系统仓位列就位,3381 行有仓位(92.6%),销量列全为 0,最长仓位串 600 字符(Excel 上限 32767 内) - 未覆盖的 7.4% 是因为仓位表本身只含 13 个仓库,属数据范围限制,导出时留空 - 浏览器实测点击下载,文件名 `库存动销分析-销售0明细-20260927.xlsx` 与列结构正确
youruo added 1 commit 2026-09-28 09:35:37 +08:00
仓位用于定位滞销库存的实际存放位置,便于盘点与挪位处理。
数据源为 rpt.jst_packInventoryInfo.bin(jst_sku.bin 全部为空、库存表无仓位字段,
这是业务库唯一可得的系统仓位):
- 按 (wms_co_id, sku_id) 聚合,LTRIM 去空格后 DISTINCT,STRING_AGG 按名称排序用「、」连接
- 排除无仓位(bin 为空)与零库存(qty=0)的行,避免无效仓位干扰
- LEFT JOIN 且按「仓库+SKU」双条件匹配,避免跨仓错配
- 导出列顺序:仓库 | SKU编码 | SKU名称 | 系统仓位 | 库存数量 | 销量 | 统计天数 | 统计基准日
- 前端按钮提示同步说明多仓位拼接规则与留空含义

验证:后端 syntax 通过、单测 9/9(全量 389/390,唯一失败为既有 Windows 权限环境项);
前端 eslint/build/测试均通过;
本地实测导出 3650 行,系统仓位列就位,3381 行有仓位(92.6%,未覆盖的 7.4% 为
仓位表仅含 13 个仓库所致),销量列全为 0,最长仓位串 600 字符(Excel 上限内);
浏览器实测点击下载,文件名与列结构正确
Author
Collaborator

用户授权合并与部署

  • 授权时间:2026-09-28T01:36:10.001Z
  • 授权范围:合并到 main 并按服务器部署规范更新生产环境
  • 授权人:仓库管理员(会话中明确选择「授权合并并部署」)
## 用户授权合并与部署 - 授权时间:2026-09-28T01:36:10.001Z - 授权范围:合并到 main 并按服务器部署规范更新生产环境 - 授权人:仓库管理员(会话中明确选择「授权合并并部署」)
youruo merged commit 38804f6624 into main 2026-09-28 09:36:11 +08:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: lunanting/cangku#50
No description provided.