87 lines
5.2 KiB
Markdown
87 lines
5.2 KiB
Markdown
# 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 编译。
|
||
- [ ] 运行前端类型检查。
|
||
- [ ] 检查工作区差异,不覆盖既有用户修改。
|