Files
openclaw-config/workspace-planner/tasks/G5-库存优化-需求确认与代码审视清单.md

13 KiB
Raw Permalink Blame History

G5 库存管理优化 — 需求确认与代码审视清单

用途:拿这份清单去代码里翻答案,翻完了回来交底,我再出正式技术规格。


目录

  1. 威玛斯 · 物料转换 — 单价·金额·默认工厂仓库
  2. 切纳 · 库存预警 — 采购申请/采购订单模式参数
  3. 凯熙 · 库存调整 — APP/PC 跨仓库物料移动
  4. 骏全塑胶 · 委外红冲 — 退料失败不回滚

1. 威玛斯 · 物料转换

需求摘要

  • 转换前物料:增加「无税单价」「无税金额」字段,取采购时的值
  • 转换前:合计金额取各行金额合计
  • 转换后物料:自动带出默认工厂和仓库,取自主数据-物料信息

🔍 需要去看代码回答的问题

1.1 物料转换的数据模型

# 去代码里找什么 为什么问
1.1.1 物料转换的数据库表名是什么?(找 mapper.xml@TableName 注解) 确定在哪个表加字段
1.1.2 转换明细表有哪些字段?有无 batch_no(批次号)、warehouse_idpurchase_order_id 等关联字段? 关联采购单时靠什么字段 join
1.1.3 转换单主表有哪些字段?有无 total_amount 合计字段? 合计是存库还是前端算
1.1.4 现有的物料主数据表materialitem)是否有 default_warehouse_iddefault_factory_id 字段? 确认数据源头是否存在

1.2 采购单价取数逻辑

# 去代码里找什么 为什么问
1.2.1 现有代码中采购入库单明细表purchase_inbound_detail 或类似)有哪些字段?是否有 unit_price_no_taxamount_no_tax 找到单价的数据来源表
1.2.2 采购入库明细和物料通过什么字段关联material_idbatch_noinbound_order_no 取数时的 join 键
1.2.3 如果物料有批次管理,同一个物料不同批次的单价不同,现有逻辑怎么取的? 多批次时必须确认取数规则
1.2.4 有没有加权平均或者移动平均的成本计算逻辑?代码的 serviceutil 层有没有相关工具方法? 如果有现成的成本计算工具,可以直接复用
1.2.5 非采购入库场景的物料(盘盈、产成品入库、期初)怎么处理单价?已有代码有没有类似场景的处理? 处理边界情况

1.3 转换后默认工厂/仓库

# 去代码里找什么 为什么问
1.3.1 物料主数据加载时,代码中如何取默认仓库的?搜 getDefaultWarehouse / defaultWarehouseId 复用已有逻辑还是新建
1.3.2 转换后物料的工厂/仓库字段,在前端表单中当前是怎么赋值的?有没有自动填充机制? 确定改哪里
1.3.3 跨工厂的场景:物料主数据的默认仓库属于A工厂,但登录用户属于B工厂,代码有没有做组织校验 判断是否需要增加校验

1.4 前端部分

# 去代码里找什么 为什么问
1.4.1 转换前物料表格的 JSON schema 或 columns 配置在哪里? 确定表格列配置的代码位置
1.4.2 当前表单提交时物料数据的组装逻辑handleSubmittransformPayload 决定新增字段如何提交
1.4.3 详情页有没有只读的渲染组件?是复用的表单组件还是单独的 Detail 组件? 详情页改一处还是两处

2. 切纳 · 库存预警

需求摘要

  • 加一个参数配置:库存预警触发时对接「采购申请」还是「采购订单」
  • 采购申请:走原有逻辑
  • 采购订单:直接新增采购订单

🔍 需要去看代码回答的问题

2.1 现有库存预警流程

# 去代码里找什么 为什么问
2.1.1 现有库存预警触发后,生成采购申请单的代码入口在哪里?搜 warn / alert / purchaseRequisition 相关 service 找到切入点
2.1.2 采购申请的自动生成逻辑是什么?有哪些字段是系统填充的,哪些字段保留给用户填? 理解现有流程完整链路
2.1.3 预警是按物料级别触发还是按物料+仓库级别触发?同一物料多个仓库都缺货时怎么处理? 判断参数配置的作用域

2.2 参数配置

# 去代码里找什么 为什么问
2.2.1 系统现有的参数配置表或配置中心机制是什么?(sys_configsystem_param?还是枚举 + 常量?) 参数放哪里
2.2.2 现有的库存预警相关的参数有哪些?(预警上下限、预警方式等)已经存在哪些配置项?代码如何读取? 复用已有的参数框架
2.2.3 配置参数是全局级别还是仓库/物料分类级别?代码里有没有已有按维度区分参数的写法? 决定参数的作用域

2.3 直接生成采购订单的链路

# 去代码里找什么 为什么问
2.3.1 新增采购订单(purchase_order)的 Service/Create 方法在哪里?方法签名是什么?需要哪些必填参数? 找到订单创建入口
2.3.2 采购订单的默认供应商怎么确定?物料主数据有没有 default_supplier_id 字段? 自动下单必须要填供应商
2.3.3 采购订单的单价怎么取?(上次采购价?物料价格表?加权均价?)代码里有没有现成的取价工具? 自动下单必须有单价
2.3.4 新增采购订单是否需要走审批流?如需审批,审批流代码入口在哪?能否跳过? 决定是否全自动
2.3.5 同一个供应商同时多个物料触达预警,现在是合并生成一张采购申请单还是分开建?直接生成采购订单时是否也要做合并? 确定合并策略

2.4 前端

# 去代码里找什么 为什么问
2.4.1 库存预警的设置页面在哪里?参数配置的UI入口是什么? 找到新增参数的位置
2.4.2 之前的预警参数是怎么做表单联动的?(存在级联/显隐逻辑吗) 参数表单的改法

3. 凯熙 · 库存调整

需求摘要

  • APP 和 PC 的库存调整功能,从"单仓库内调整"扩展为"支持跨仓库间的物料移动"

🔍 需要去看代码回答的问题

3.1 现有库存调整的逻辑

# 去代码里找什么 为什么问
3.1.1 现有库存调整的数据库表是什么?有哪些字段?有无 target_warehouse_id / to_warehouse_id 字段? 要不要加字段
3.1.2 现有调整单Service层的调整逻辑:减源仓库存 → 加目标仓库存。代码位置在哪里? 确定改哪段逻辑
3.1.3 调整是否影响成本?库存调整时有没有调用成本计算的接口(costService / calculateCost 等)? 跨仓库移动是否需要重新计价
3.1.4 现有代码仓库的库存组织是怎么处理的?一个仓库属于一个工厂/法人,代码里怎么校验跨仓库操作的合法性? 判断是否允许跨组织移动

3.2 同一仓库内 vs 跨仓库的关键差异

# 去代码里找什么 为什么问
3.2.1 前端库存调整页面warehouse_id 是从哪里取的?(URL参数?用户默认仓库?还是页面下拉选择?) 确定怎么加"目标仓库"
3.2.2 库存调整的列表页面,是否存在按仓库过滤的查询逻辑? 跨仓移动是否需要显示一张单跨两仓
3.2.3 如果有批次/序列号物料,调整时批次号的处理逻辑是什么? 跨仓时批次是否拆分
3.2.4 现有审批流配置中,有没有按"库存调整类型"设置不同审批链的机制? 判断跨仓是否需要不同的审批

3.3 APP 端(移动端)

# 去代码里找什么 为什么问
3.3.1 APP 库存调整页面是原生还是 H5/WebView?代码在哪个目录? 确定开发语言和工具链
3.3.2 APP 是否有扫码功能?扫码后的逻辑是直接识别物料+数量,还是需要额外选择操作? 跨仓库移动扫码流程设计
3.3.3 APP 端下拉选择仓库列表的数据源是哪个接口?是否有按用户权限过滤? 确定目的仓库的数据源

3.4 后端接口

# 去代码里找什么 为什么问
3.4.1 库存调整的 DTO/VO 有哪些字段?新增/编辑接口的请求体结构? 接口改造范围
3.4.2 列表查询接口已经支持按哪些字段过滤和排序 判断是否需要扩展查询接口
3.4.3 如果是同价调拨,库存移动时是否需要生成财务凭证?代码里有没有凭证生成逻辑? 评估财务影响范围

4. 骏全塑胶 · 委外入库红冲退料不回滚

需求摘要

  • 红冲委外采购入库单时,自动退料失败了,红冲入库单不回滚
  • 提示用户:"入库成功,但自动退料失败,请手工退料"

🔍 需要去看代码回答的问题

4.1 现有委外红冲+退料流程

# 去代码里找什么 为什么问
4.1.1 委外入库单红冲的代码入口在哪里?是 reverse() / redFlush() / negativeInbound() 之类的方法? 找到主入口
4.1.2 红冲时自动生成委外退料单的代码是哪一段?createReturnMaterial() / autoReturn() 找到退料触发点
4.1.3 红冲和退料在同一个事务里吗?@Transactional 注解的范围? 决定事务边界怎么调整
4.1.4 当前退料失败时抛了什么异常?是 RuntimeException + @Transactional(rollbackFor) 导致整体回滚的吗? 找到回滚的根因
4.1.5 退料的Service方法抛出的异常类型都有哪些?代码里有没有区分"可重试"和"不可重试"的异常? 设计异常处理策略

4.2 退料失败的细分场景

# 去代码里找什么 为什么问
4.2.1 退料数量 > 委外商在库数量时,代码怎么处理的?是否有数量校验逻辑? 常见失败场景
4.2.2 委外退料如果需要审批,审批不通过时返回什么结果?是抛异常还是返回状态码? 非抛异常场景的失败判断
4.2.3 委外商已经领用消耗了该物料(如已经加工消耗),系统怎么处理?是否有校验? 物料已被消耗的边界
4.2.4 退料接口调用的网络超时/服务异常场景,现有代码有没有重试机制(@Retryable、MQ、定时任务)? 判断临时失败 vs 确定性失败

4.3 改造后的处理逻辑

# 去代码里找什么 为什么问
4.3.1 红冲入库单表是否有状态字段statusreverse_status)?都有哪些枚举值? 考虑是否需要加退料状态标记
4.3.2 系统中已有的操作日志/系统日志表结构和插入逻辑是怎样的? 记录失败原因到日志
4.3.3 有没有通知/待办/消息推送的现成工具类?(sendNotification() / createTask() 等) 提示用户手工退料时调用
4.3.4 前端提示弹窗或消息提示的统一组件/API是什么?(message.error / notification.warning 等) 前端提示怎么做
4.3.5 现有委外退料的手工入口在哪里?(菜单路径 / 页面路由) 提示"请手工退料"时需要告诉用户去哪里操作

4.4 类似场景排查

# 去代码里找什么 为什么问
4.4.1 PC端/APP端有没有其他"自动流程失败但主流程不回滚"的现有处理模式可以参照? 复用已有模式,保持一致性
4.4.2 除了委外红冲,还有哪些业务也自动触发委外退料?(退货出库、委外结算等) 判断是否需要同步改造

使用建议

  1. 按需求逐一查代码:从 #1.1 开始,逐个问题去看,把答案写在旁边
  2. 不确定就截代码片段:拿不准的或者代码看不懂的,把关键代码片段(方法、变量、表结构)直接截下来带回来
  3. 遇到瓶颈标记下来:代码里找不到答案的,标记为「待产品确认」,我帮你转化为需求澄清问题

答完所有问题后,把结果带回来,我出正式的技术规格说明书(含:数据库变更 DDL、接口定义、前端改造点、伪代码逻辑)。


版次:v1.0 | 生成日期:2026-06-01 | 适用范围:G5 版本 维云智造 库存管理模块