From 6aebc410bfa161b5388df1d837b4b27a9ad92edf Mon Sep 17 00:00:00 2001 From: zhouz <> Date: Sat, 8 Aug 2026 14:36:32 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E6=96=B0=E5=A2=9ELMS=E5=A4=87=E8=B4=A7?= =?UTF-8?q?=E5=8C=BA=E5=9F=9F=E5=8A=9F=E8=83=BD=E8=AE=BE=E8=AE=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../2026-08-08-lms-stocking-area-design.md | 93 +++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 docs/superpowers/specs/2026-08-08-lms-stocking-area-design.md diff --git a/docs/superpowers/specs/2026-08-08-lms-stocking-area-design.md b/docs/superpowers/specs/2026-08-08-lms-stocking-area-design.md new file mode 100644 index 00000000..65fc8aae --- /dev/null +++ b/docs/superpowers/specs/2026-08-08-lms-stocking-area-design.md @@ -0,0 +1,93 @@ +# LMS 备货区域查询与维护设计 + +## 目标 + +在 LMS 管理端新增“备货区域”功能,基于 `lms_ivt_stockingivt` 提供分页查询和修改能力;点击托盘号后,基于 `lms_base_papervehicle` 以 5×5 俯视网格展示该托盘库存。 + +## 范围 + +- 提供分页查询、详情查询、修改和托盘库存查询。 +- 不提供新增、删除、批量删除、导出。 +- 不展示截图中的“规划”列。 +- 不修改数据库表结构。 +- 页面权限拆分为 `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` 不在截图字段中,本功能不展示也不修改。更新对象仅包含主键及上述可编辑字段,防止覆盖点位编码、点位名称和审计字段。记录不存在时返回业务异常。 + +点位类型与状态当前没有现成系统字典和存量数据,使用页面固定选项,接口以中文标签值存取,避免自行假设数字编码;后续若系统补充统一字典,可无损替换显示组件。 + +## 托盘库存 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 托盘库存弹窗。 + +## 错误处理 + +- 修改不存在的点位时返回“备货区域点位不存在”。 +- 托盘无库存时正常返回空列表,前端展示 25 个空格。 +- 行列越界、重复格位时返回业务异常并提示数据异常。 +- 请求失败沿用全局请求拦截与消息提示,不在页面吞掉异常。 + +## 验证 + +- 后端编译验证新增 Java、MyBatis XML 和接口签名。 +- 前端运行类型检查,确认页面、API 类型和插槽正确。 +- 人工核对查询条件、列表字段、只读字段、可编辑字段及权限。 +- 使用空托盘、部分占用托盘、满托盘三类数据核对 5×5 坐标、占用统计和空位显示。