Files
huachuang/docs/superpowers/specs/2026-08-08-lms-stocking-area-design.md
2026-08-08 14:38:57 +08:00

5.0 KiB
Raw Blame History

LMS 备货区域查询与维护设计

目标

在 LMS 管理端新增“备货区域”功能,基于 lms_ivt_stockingivt 提供分页查询和修改能力;点击托盘号后,基于 lms_base_papervehicle 以 5×5 俯视网格展示该托盘库存。

范围

  • 提供分页查询、详情查询、修改和托盘库存查询。
  • 不提供新增、删除、批量删除、导出。
  • 不展示截图中的“规划”列。
  • 不修改业务表结构;新增系统字典类型和字典数据初始化 SQL。
  • 页面权限拆分为 lms:stocking-ivt:querylms:stocking-ivt:update
  • 菜单由系统菜单配置挂载到 LMS 下,前端页面路径为 lms/stockingivt/index

主列表

查询条件采用现有 Vben 响应式表单布局,桌面端一行多项,空间不足时自动换行。查询项为:

  • 点位编码:模糊匹配。
  • 点位名称:模糊匹配。
  • 托盘号:模糊匹配。
  • 点位类型:精确匹配,选项为“绑定位、缓存位、对接位”。
  • 点位状态:精确匹配,选项为“空、有托盘”。
  • 是否启用:精确匹配,显示“启用、停用”。

列表按 ivt_id 倒序分页,展示:点位编码、点位名称、托盘号、点位类型、点位状态、位置、顺序号、是否启用、备注、修改人、修改时间、操作。

托盘号非空时显示为可点击链接;为空时显示 -。操作列只提供“修改”。

修改

修改弹窗按 ivt_id 查询最新记录。点位编码、点位名称只读;可修改字段为:

  • 托盘号 vehicle_code
  • 点位类型 point_type
  • 点位状态 ivt_status
  • 位置 point_location
  • 顺序号 sort_seq
  • 是否启用 is_used
  • 备注 remark

product_area 不在截图字段中,本功能不展示也不修改。更新对象仅包含主键及上述可编辑字段,防止覆盖点位编码、点位名称和审计字段。记录不存在时返回业务异常。

点位类型和点位状态使用系统字典,业务表存储字典编码:

  • lms_stocking_ivt_point_type1=绑定位2=缓存位3=对接位
  • lms_stocking_ivt_status1=空2=有托盘

新增幂等初始化脚本 sql/mysql/lms_stocking_ivt_dict.sql,向 system_dict_typesystem_dict_data 写入上述对照关系。前端在 DICT_TYPE 中注册两个编码,查询表单、列表字典标签和修改表单统一通过 getDictOptions、字典格式化组件读取,不在页面重复维护选项。

托盘库存 5×5 网格

点击托盘号后按 vehicle_code 查询 lms_base_papervehicle,按 row_numcol_num 升序返回库存。弹窗固定渲染 5 行 × 5 列:

  • row_numcol_num 为 1 至 5 的记录填入对应格子。
  • 每格代表 1 根物料;有库存时展示物料编码和物料名称,不额外展示数量。
  • 无记录的格子显示“空”。
  • 顶部显示“已占用 N / 25”和“空位 25-N”。
  • 单格悬停或点击可查看完整的行号、列号、物料编码、物料名称和数据库数量。
  • 同一托盘同一行列若存在多条记录,接口返回明确业务异常,避免页面静默覆盖脏数据。
  • 超出 1 至 5 的行列记录不进入网格,并在接口侧返回业务异常,避免库存位置被隐藏。

后端结构

新增独立业务包 stockingivt

  • StockingIvtController:提供 /page/get/update/paper-vehicle-list 四个接口。
  • 请求与响应 VO隔离分页条件、修改字段、列表数据及托盘格位数据。
  • StockingIvtService:负责存在性校验、受控更新及托盘行列完整性校验。
  • StockingIvtMapper.xml:所有查询 SQL 写入 XML分页查询不联查托盘明细。
  • StockingIvtDOPaperVehicleDO:分别映射两张现有表。

托盘明细采用点击时按需查询,避免主列表分页请求加载最多 25 倍的库存行。

前端结构

新增:

  • src/api/lms/stockingivt/index.ts:类型及四个接口。
  • src/views/lms/stockingivt/index.vue:分页表格、托盘链接和两个弹窗入口。
  • src/views/lms/stockingivt/data.ts:查询项、列表列和修改表单配置。
  • src/views/lms/stockingivt/modules/form.vue:修改弹窗。
  • src/views/lms/stockingivt/modules/pallet-inventory.vue5×5 托盘库存弹窗。
  • packages/constants/src/dict-enum.ts:注册 LMS_STOCKING_IVT_POINT_TYPELMS_STOCKING_IVT_STATUS

错误处理

  • 修改不存在的点位时返回“备货区域点位不存在”。
  • 托盘无库存时正常返回空列表,前端展示 25 个空格。
  • 行列越界、重复格位时返回业务异常并提示数据异常。
  • 请求失败沿用全局请求拦截与消息提示,不在页面吞掉异常。

验证

  • 后端编译验证新增 Java、MyBatis XML 和接口签名。
  • 前端运行类型检查确认页面、API 类型和插槽正确。
  • 人工核对查询条件、列表字段、只读字段、可编辑字段及权限。
  • 使用空托盘、部分占用托盘、满托盘三类数据核对 5×5 坐标、占用统计和空位显示。