Skip to content

调拨转移管理

**本文引用的文件** - [transfers.vue](file://dm/lemes-web/src/views/devicemate/inventory/transfers/transfers.vue) - [transfers.js](file://dm/lemes-web/src/views/devicemate/api/inventory/transfers/transfers.js) - [StoreInOrderDetailDo.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/model/store/StoreInOrderDetailDo.java) - [StoreOutDetailDo.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/model/store/StoreOutDetailDo.java) - [StoreInOrdersVo.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/model/store/StoreInOrdersVo.java) - [StoreOutDetailVo.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/model/store/StoreOutDetailVo.java) - [StoreInOrderDetailMapper.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/mapper/store/StoreInOrderDetailMapper.java) - [StoreInOrderDetailMapper.xml](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/resources/mapper/StoreInOrderDetailMapper.xml) - [StoreOutOrderDetailMapper.xml](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/resources/mapper/StoreOutOrderDetailMapper.xml) - [ExceptionCode.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-common/lemes-service-dm-common-common/src/main/java/com/lenovo/lemes/service/dm/common/client/tools/entity/constant/ExceptionCode.java)

目录

  1. 引言
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖关系分析
  7. 性能考量
  8. 故障排查指南
  9. 结论
  10. 附录

引言

本技术文档围绕“调拨转移管理”模块展开,聚焦于调拨订单与调拨明细的数据模型、业务流程与前后端交互接口设计。通过对前端页面、API 定义以及后端数据模型与查询映射的系统梳理,帮助读者快速理解从“调拨申请—审批—执行—确认”的完整闭环,并掌握不同调拨场景(仓库间调拨、部门间转移、客户退回)的实现要点与最佳实践。

项目结构

调拨转移管理涉及三层:前端界面层、前端接口层、后端数据层(DO/VO/Mapper/XML)。前端通过 Vue 页面与 API 层交互,后端通过 MyBatis 映射器访问数据库表,完成调拨订单与明细的查询与统计。

图表来源

章节来源

核心组件

  • 前端界面组件:负责筛选、分页、导出、路由跳转到调拨详情与编辑页面。
  • 前端接口封装:统一管理调拨列表、仓库权限、明细、提交、接收、导出等 API 请求。
  • 后端数据模型:StoreInOrderDetailDo/StoreOutDetailDo 描述调拨明细字段;StoreInOrdersVo/StoreOutDetailVo 作为查询结果视图对象。
  • 后端映射器与 SQL:通过 XML 映射器查询当日满足条件的调拨明细,供前端展示与统计。

章节来源

架构总览

调拨管理的端到端流程由前端页面发起请求,经由接口封装调用后端接口,后端通过映射器执行 SQL 查询,返回视图对象给前端渲染。调拨明细支持按日期范围、仓库、状态、类型等多维筛选,并提供导出能力。

图表来源

详细组件分析

组件A:调拨列表页面(前端)

  • 功能职责
    • 支持按调拨单号、调出/调入仓库、状态、类型、日期范围筛选。
    • 分页加载与多选删除、导出功能。
    • 路由跳转至调拨详情或编辑页,区分“申请/执行/确认”阶段。
  • 关键交互
    • 研究/清空筛选条件、分页变更、导出动作均通过方法触发。
    • 字典项(状态、类型)动态加载,保障展示一致性。
  • 数据绑定
    • 表格列包含单号、状态、调出/调入仓库、经办人、创建时间等字段。

图表来源

章节来源

组件B:调拨API封装(前端)

  • 功能职责
    • 封装调拨列表、仓库权限、明细、提交、接收、导出等接口调用。
    • 统一封装下载服务,支持 Excel 导出。
  • 关键接口
    • 列表分页、仓库列表、字典获取、调拨信息/明细查询、新增/删除、提交/接收、单号生成/删除、导出等。

图表来源

章节来源

组件C:调拨明细数据模型(后端)

  • StoreInOrderDetailDo:描述调拨入库明细的关键字段(单号、仓库/库区/库位、物料、序列号/箱号、数量、单价、寿命数/有效期等),用于入库侧的明细建模。
  • StoreOutDetailDo:描述调拨出库明细的关键字段(出库单号、物料、库区/库位、序列号/箱号、出库数量、单价、有效期、寿命数、申请数量、库存数量、成本核算、处理状态/数量、仓库、可用库存等),用于出库侧的明细建模。
  • StoreInOrdersVo / StoreOutDetailVo:作为查询结果视图对象,承载前端展示所需字段(如借用人、仓库名称、状态、执行人、创建人、序列号、箱号、包装数量、入库/出库数量、申请数量、单位、单价、总价、寿命数、有效期、PO/PR/借用单号、处理状态/数量、是否好品/坏品、归还单号、供应商代号等)。

图表来源

章节来源

组件D:调拨明细查询映射(后端)

  • StoreInOrderDetailMapper.searchList:通过 XML 映射器查询当日满足条件的入库调拨明细,用于前端“当日入库调拨”场景的展示。
  • StoreOutOrderDetailMapper.findList:通过 XML 映射器查询当日满足条件的出库调拨明细,用于前端“当日出库调拨”场景的展示。
  • 过滤条件
    • 入库:入库类型=1、入库状态=3、创建日期为当日。
    • 出库:出库状态=1、出库数量>0、非特定收货类型、创建日期为当日。

图表来源

章节来源

组件E:调拨业务流程(概念示意)

以下流程图展示调拨从申请到确认的典型步骤,结合前端页面与后端接口的职责划分:

说明

  • 申请:前端填写调拨单并提交,后端校验(如数量、序列号/箱号、有效期/寿命数等)。
  • 执行:调出仓库根据明细拣选、包装、运输;调入仓库接收、核对、登记。
  • 确认:双方确认无误后完成,系统更新库存与状态。
  • 同步:异常或错误时,通过异常码提示并阻断后续流程。

(本图为概念流程,不直接对应具体源码文件)

依赖关系分析

  • 前端依赖
    • 页面依赖接口封装,接口封装依赖服务配置与下载服务。
    • 页面依赖字典与仓库权限数据,以保证筛选与权限控制。
  • 后端依赖
    • 映射器依赖数据库表结构与视图对象,视图对象承载前端展示字段。
    • 异常码集中定义于公共模块,用于约束业务规则与错误提示。

图表来源

章节来源

性能考量

  • 查询性能
    • 使用索引覆盖常见筛选字段(仓库、状态、日期、单号)可显著降低扫描成本。
    • 采用“当日”过滤减少结果集规模,避免全表扫描。
  • 分页与缓存
    • 前端分页参数合理设置,避免一次性拉取大量数据。
    • 对高频字典与仓库列表进行本地缓存,减少重复请求。
  • 导出性能
    • 导出接口应限制最大导出条数与并发,避免内存溢出。
    • 对大文件导出采用流式输出与分段写入。

故障排查指南

  • 常见异常码与提示
    • 出库数量不能大于申请数量:EX90141
    • 出库数量不能大于实际可用库存:EX90142
    • 调拨数量不能大于库存数量:EX90158
    • 归还数量必须和申请数量保持一致:EX90159
    • 价格不能为空:EX90160
    • 移入数量大于剩余库存数量:EX90206
    • 移入数量不能为0:EX90207
  • 排查步骤
    • 核对前端传参与后端校验逻辑,定位异常码来源。
    • 检查库存台账与可用库存字段(practicalUsableStockNumber)是否正确。
    • 确认序列号/箱号/有效期/寿命数等必填字段是否完整。

章节来源

结论

调拨转移管理模块通过清晰的前后端分工与规范的数据模型,实现了从申请、审批、执行到确认的完整业务闭环。前端提供灵活的筛选与导出能力,后端通过映射器与视图对象支撑高效查询与展示。结合异常码约束与最佳实践,可在保证数据准确性的同时提升整体效率与用户体验。

附录

API 接口清单(前端封装)

  • 列表分页:POST /inventory/transfers/page
  • 仓库权限:POST /inventory/transfers/storePermissionPage
  • 仓库列表:POST /inventory/transfers/storeMainPage
  • 调拨信息:GET /inventory/transfers/transferInfo/
  • 调拨明细:GET /inventory/transfers/transferDetail
  • 新增调拨:POST /inventory/transfers/addTransfer
  • 删除调拨:GET /inventory/transfers/delTransfer/
  • 提交出库:POST /inventory/transfers/submitOut
  • 接收调拨:POST /inventory/transfers/receive
  • 单号生成:GET /inventory/transfers/orderNo
  • 删除新增单号:GET /inventory/transfers/delOrderNo/
  • 调拨列表导出:GET /inventory/transfers/transferExcel
  • 调出导出:GET /inventory/transfers/outTransferExcel
  • 调入导出:GET /inventory/transfers/inTransferExcel?transferOrderNo=
  • 导入调拨:POST /inventory/transfers/importExcel

章节来源