Files
huachuang/docs/superpowers/plans/2026-07-27-wms-move-inventory.md

87 lines
5.2 KiB
Markdown
Raw Permalink 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.

# WMS 移库管理功能实现计划
> **面向 AI 代理的工作者:** 在当前会话内按任务顺序执行,使用 TDD 验证核心找位和锁定行为。
**目标:** 实现移库单 CRUD、库存与目标仓位选择、仓位锁定以及按来源载具自动找位建单的内部 API。
**架构:** WMS Server 新增独立 `moveinv` 业务包,主 Service 维护单据事务,`MoveTargetStructSelector` 专门负责目标仓位选择。数据库查询集中在 Mapper XML跨模块自动建单契约放在 WMS API。前端沿用出库页面的 Vben 表格、抽屉和弹窗模式。
**技术栈:** Java 17、Spring Boot、MyBatis/MyBatis-Plus、OpenFeign、Vue 3、TypeScript、Ant Design Vue。
---
### 任务 1数据模型和 Mapper
**文件:**
- 创建:`nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/dal/dataobject/moveinv/MoveInvDO.java`
- 创建:`nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/dal/dataobject/moveinvdtl/MoveInvDtlDO.java`
- 创建:`nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/dal/mysql/moveinv/MoveInvMapper.java`
- 创建:`nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/dal/mysql/moveinvdtl/MoveInvDtlMapper.java`
- 创建:`nl-module-wms/nl-module-wms-server/src/main/resources/mapper/moveinv/MoveInvMapper.xml`
- 创建:`nl-module-wms/nl-module-wms-server/src/main/resources/mapper/moveinvdtl/MoveInvDtlMapper.xml`
- 修改:`nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/dal/mysql/structAttr/StrucAttrMapper.java`
- 修改:`nl-module-wms/nl-module-wms-server/src/main/resources/mapper/structAttr/StrucAttrMapper.xml`
- [ ] 映射两张移库表全部字段。
- [ ] 增加分页、详情、按载具查询来源库存、同层空闲目标仓位查询。
- [ ] 增加移出锁、移入锁和按移库单释放锁的条件更新。
### 任务 2目标仓位选择器
**文件:**
- 创建:`nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/service/moveinv/MoveTargetStructSelector.java`
- 创建:`nl-module-wms/nl-module-wms-server/src/test/java/cn/code/nl/module/wms/service/moveinv/MoveTargetStructSelectorTest.java`
- [ ] 先写测试,覆盖同层、距离排序和批次目标去重。
- [ ] 运行测试确认因选择器不存在而失败。
- [ ] 实现最小选择算法并运行测试通过。
### 任务 3后端业务和管理端接口
**文件:**
- 创建:`nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/moveinv/vo/*.java`
- 创建:`nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/controller/admin/moveinv/MoveInvController.java`
- 创建:`nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/service/moveinv/MoveInvService.java`
- 创建:`nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/service/moveinv/MoveInvServiceImpl.java`
- 修改:`nl-module-wms/nl-module-wms-api/src/main/java/cn/code/nl/module/wms/enums/ErrorCodeConstants.java`
- [ ] 实现分页、详情、可用库存、可用目标仓位。
- [ ] 实现新增、修改、删除事务。
- [ ] 创建时给来源仓位加 `4` 移出锁、目标仓位加 `5` 移入锁。
- [ ] 修改/删除时只释放当前移库单持有的锁。
### 任务 4自动找位建单 API
**文件:**
- 创建:`nl-module-wms/nl-module-wms-api/src/main/java/cn/code/nl/module/wms/api/moveinv/MoveInvApi.java`
- 创建:`nl-module-wms/nl-module-wms-api/src/main/java/cn/code/nl/module/wms/api/moveinv/dto/MoveInvAutoCreateReqDTO.java`
- 创建:`nl-module-wms/nl-module-wms-api/src/main/java/cn/code/nl/module/wms/api/moveinv/dto/MoveInvAutoCreateRespDTO.java`
- 创建:`nl-module-wms/nl-module-wms-server/src/main/java/cn/code/nl/module/wms/api/moveinv/MoveInvApiImpl.java`
- [ ] API 只接收来源载具编码列表。
- [ ] Service 逐载具选择同库区同层目标仓位,确保目标不重复。
- [ ] 任意载具不可用或无目标时整单回滚。
### 任务 5前端管理页面
**文件:**
- 创建:`nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/api/wms/moveinv/index.ts`
- 创建:`nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/wms/moveinv/data.ts`
- 创建:`nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/wms/moveinv/index.vue`
- 创建:`nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/wms/moveinv/modules/form.vue`
- 创建:`nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/wms/moveinv/modules/inventory-select.vue`
- 创建:`nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/wms/moveinv/modules/struct-select.vue`
- 创建:`nl-ui/nl-ui-admin-vben/yudao-ui-admin-vben/apps/web-antdv-next/src/views/wms/moveinv/modules/detail.vue`
- [ ] 实现列表和生成状态操作限制。
- [ ] 新增/修改抽屉默认全屏并回填明细。
- [ ] 每个载具分别选择不同目标仓位。
- [ ] 实现详情展示。
### 任务 6验证
- [ ] 运行后端核心测试。
- [ ] 运行 WMS reactor 编译。
- [ ] 运行前端类型检查。
- [ ] 检查工作区差异,不覆盖既有用户修改。