# 库存移库 - 前端联调方案 ## 涉及页面 - 库存台账页面(/mes/wm/material-stock) ## 业务场景 在库存台账页面,用户可以选择一条库存记录,点击"移库"按钮,将该库存从当前库位移动到目标库位。移库操作会生成两条成对的库存事务流水(调拨移出 + 调拨移入),确保库存变动可追溯。 ## 新增 API ### 库存移库 | 方法 | 路径 | 说明 | |------|------|------| | POST | /mes/wm/material-stock/move | 库存移库 | **请求参数:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | materialStockId | Long | 是 | 库存记录ID | | toWarehouseId | Long | 是 | 目标仓库ID | | toLocationId | Long | 是 | 目标库区ID | | toAreaId | Long | 是 | 目标库位ID | | quantity | BigDecimal | 是 | 移库数量 | | remark | String | 否 | 备注 | **请求示例:** ```json { "materialStockId": 1024, "toWarehouseId": 1, "toLocationId": 2, "toAreaId": 3, "quantity": 100, "remark": "库位调整" } ``` **响应:** ```json { "code": 0, "msg": "操作成功", "data": true } ``` ## 前端修改点 ### 1. 库存台账列表页 - 在操作列添加"移库"按钮 - 点击后打开移库弹窗 ### 2. 移库弹窗 **表单字段:** | 字段 | 类型 | 必填 | 说明 | |------|------|------|------| | 物料编码 | 文本 | - | 只读,从选中行带入 | | 物料名称 | 文本 | - | 只读,从选中行带入 | | 批次号 | 文本 | - | 只读,从选中行带入 | | 当前仓库 | 文本 | - | 只读,从选中行带入 | | 当前库区 | 文本 | - | 只读,从选中行带入 | | 当前库位 | 文本 | - | 只读,从选中行带入 | | 当前数量 | 数字 | - | 只读,从选中行带入 | | 目标仓库 | 下拉 | 是 | 选择目标仓库 | | 目标库区 | 下拉 | 是 | 根据目标仓库联动 | | 目标库位 | 下拉 | 是 | 根据目标库区联动 | | 移库数量 | 数字 | 是 | 输入移库数量,不能超过当前数量 | | 备注 | 文本 | 否 | 备注信息 | **联动逻辑:** 1. 选择目标仓库后,加载该仓库下的库区列表 2. 选择目标库区后,加载该库区下的库位列表 **提交逻辑:** 1. 校验移库数量不能超过当前库存数量 2. 校验移库数量不能超过可用量(当前数量 - 冻结数量 - 占用量) 3. 调用移库接口 4. 成功后关闭弹窗,刷新列表 ## 业务规则说明 | 场景 | 规则 | |------|------| | 库存数量校验 | 移库数量不能超过可用量(在库数量 - 冻结数量 - 占用量) | | 冻结校验 | 库存记录已冻结时,不允许移库 | | 库位混放规则 | 目标库位需满足混放规则(物料混放、批次混放) | | 同库位移库 | 源库位和目标库位相同时,不允许移库 | ## 库存事务流水 移库操作会生成两条成对的库存事务流水: | 字段 | 调拨移出 | 调拨移入 | |------|----------|----------| | type | 3 (MOVE_OUT) | 4 (MOVE_IN) | | bizType | 112 (WM_TRANSFER_OUT) | 113 (WM_TRANSFER_IN) | | bizCode | MOVE_xxx | MOVE_xxx(相同) | | quantity | 负数(如 -100) | 正数(如 100) | | warehouseId | 源仓库 | 目标仓库 | | locationId | 源库区 | 目标库区 | | areaId | 源库位 | 目标库位 | | relatedTransactionId | null | 移出事务ID | ## 注意事项 1. **权限要求**:需要 `mes:wm-material-stock:move` 权限 2. **事务一致性**:移库操作在事务中执行,确保出库和入库操作的原子性 3. **批次保留**:移库时批次信息保留,不会改变批次属性 4. **供应商保留**:移库时供应商信息保留