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

100 lines
5.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# LMS 备货区域查询与维护设计
## 目标
在 LMS 管理端新增“备货区域”功能,基于 `lms_ivt_stockingivt` 提供分页查询和修改能力;点击托盘号后,基于 `lms_base_papervehicle` 以 5×5 俯视网格展示该托盘库存。
## 范围
- 提供分页查询、详情查询、修改和托盘库存查询。
- 不提供新增、删除、批量删除、导出。
- 不展示截图中的“规划”列。
- 不修改业务表结构;新增系统字典类型和字典数据初始化 SQL。
- 页面权限拆分为 `lms:stocking-ivt:query``lms: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_type``1=绑定位``2=缓存位``3=对接位`
- `lms_stocking_ivt_status``1=空``2=有托盘`
新增幂等初始化脚本 `sql/mysql/lms_stocking_ivt_dict.sql`,向 `system_dict_type``system_dict_data` 写入上述对照关系。前端在 `DICT_TYPE` 中注册两个编码,查询表单、列表字典标签和修改表单统一通过 `getDictOptions`、字典格式化组件读取,不在页面重复维护选项。
## 托盘库存 5×5 网格
点击托盘号后按 `vehicle_code` 查询 `lms_base_papervehicle`,按 `row_num``col_num` 升序返回库存。弹窗固定渲染 5 行 × 5 列:
- `row_num``col_num` 为 1 至 5 的记录填入对应格子。
- 每格代表 1 根物料;有库存时展示物料编码和物料名称,不额外展示数量。
- 无记录的格子显示“空”。
- 顶部显示“已占用 N / 25”和“空位 25-N”。
- 单格悬停或点击可查看完整的行号、列号、物料编码、物料名称和数据库数量。
- 同一托盘同一行列若存在多条记录,接口返回明确业务异常,避免页面静默覆盖脏数据。
- 超出 1 至 5 的行列记录不进入网格,并在接口侧返回业务异常,避免库存位置被隐藏。
## 后端结构
新增独立业务包 `stockingivt`
- `StockingIvtController`:提供 `/page``/get``/update``/paper-vehicle-list` 四个接口。
- 请求与响应 VO隔离分页条件、修改字段、列表数据及托盘格位数据。
- `StockingIvtService`:负责存在性校验、受控更新及托盘行列完整性校验。
- `StockingIvtMapper.xml`:所有查询 SQL 写入 XML分页查询不联查托盘明细。
- `StockingIvtDO``PaperVehicleDO`:分别映射两张现有表。
托盘明细采用点击时按需查询,避免主列表分页请求加载最多 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.vue`5×5 托盘库存弹窗。
- `packages/constants/src/dict-enum.ts`:注册 `LMS_STOCKING_IVT_POINT_TYPE``LMS_STOCKING_IVT_STATUS`
## 错误处理
- 修改不存在的点位时返回“备货区域点位不存在”。
- 托盘无库存时正常返回空列表,前端展示 25 个空格。
- 行列越界、重复格位时返回业务异常并提示数据异常。
- 请求失败沿用全局请求拦截与消息提示,不在页面吞掉异常。
## 验证
- 后端编译验证新增 Java、MyBatis XML 和接口签名。
- 前端运行类型检查确认页面、API 类型和插槽正确。
- 人工核对查询条件、列表字段、只读字段、可编辑字段及权限。
- 使用空托盘、部分占用托盘、满托盘三类数据核对 5×5 坐标、占用统计和空位显示。