# G5 库存管理优化 — 需求确认与代码审视清单 > 用途:拿这份清单去代码里翻答案,翻完了回来交底,我再出正式技术规格。 --- ## 目录 1. [威玛斯 · 物料转换 — 单价·金额·默认工厂仓库](#1-威玛斯--物料转换) 2. [切纳 · 库存预警 — 采购申请/采购订单模式参数](#2-切纳--库存预警) 3. [凯熙 · 库存调整 — APP/PC 跨仓库物料移动](#3-凯熙--库存调整) 4. [骏全塑胶 · 委外红冲 — 退料失败不回滚](#4-骏全塑胶--委外入库红冲退料不回滚) --- ## 1. 威玛斯 · 物料转换 ### 需求摘要 - 转换前物料:增加「无税单价」「无税金额」字段,取采购时的值 - 转换前:合计金额取各行金额合计 - 转换后物料:自动带出默认工厂和仓库,取自主数据-物料信息 ### 🔍 需要去看代码回答的问题 #### 1.1 物料转换的数据模型 | # | 去代码里找什么 | 为什么问 | |---|---------------|----------| | 1.1.1 | 物料转换的**数据库表名**是什么?(找 `mapper.xml` 或 `@TableName` 注解) | 确定在哪个表加字段 | | 1.1.2 | 转换**明细表**有哪些字段?有无 `batch_no`(批次号)、`warehouse_id`、`purchase_order_id` 等关联字段? | 关联采购单时靠什么字段 join | | 1.1.3 | 转换单**主表**有哪些字段?有无 `total_amount` 合计字段? | 合计是存库还是前端算 | | 1.1.4 | 现有的**物料主数据表**(`material` 或 `item`)是否有 `default_warehouse_id`、`default_factory_id` 字段? | 确认数据源头是否存在 | #### 1.2 采购单价取数逻辑 | # | 去代码里找什么 | 为什么问 | |---|---------------|----------| | 1.2.1 | 现有代码中**采购入库单明细表**(`purchase_inbound_detail` 或类似)有哪些字段?是否有 `unit_price_no_tax`、`amount_no_tax`? | 找到单价的数据来源表 | | 1.2.2 | 采购入库明细和物料**通过什么字段关联**?`material_id`?`batch_no`?`inbound_order_no`? | 取数时的 join 键 | | 1.2.3 | 如果物料有**批次管理**,同一个物料不同批次的单价不同,现有逻辑怎么取的? | 多批次时必须确认取数规则 | | 1.2.4 | 有没有**加权平均**或者**移动平均**的成本计算逻辑?代码的 `service` 或 `util` 层有没有相关工具方法? | 如果有现成的成本计算工具,可以直接复用 | | 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 | 当前表单**提交时物料数据的组装逻辑**(`handleSubmit` 或 `transformPayload`) | 决定新增字段如何提交 | | 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_config`?`system_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 | 红冲入库单表是否有**状态字段**(`status` 或 `reverse_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 版本 维云智造 库存管理模块*