refactor(wms): 合并库存表为统一inventory,重构业务逻辑

1. 合并inventory_batch与serial_number为统一inventory表,用manage_mode区分结构件批次/精密件SN
2. 移除冗余的material_type字段与相关逻辑
3. 重构库存查询、检验、入库出库等业务逻辑适配新表结构
4. 调整前端路由与菜单,拆分基础数据为区域维护和物料档案
5. 优化入库校验逻辑,避免空单问题
6. 调整Vite构建配置,关闭自动清空输出目录
7. 为各模块添加详细中文注释,统一业务术语
8. 生成并更新Ent自动代码文件
This commit is contained in:
SunYF
2026-09-02 08:21:11 +08:00
parent 47573e44b0
commit 68f50ee46e
70 changed files with 5895 additions and 9818 deletions
-165
View File
@@ -1,168 +1,3 @@
wms
1、结构件入库--->提交入库。报错提示: 精密件入库 序列号(SN)必填
2、结构件入库--->区域 undefined 。并且 区域 ,应该是必填
3、精密件SN入库-->物料、区域,都应该是必填
4、基础数据,拆分一下。并且,保存方式,不要再用这种表格上面 。 行内新增 vs 弹窗新增 ? wms和mes 等,都必须用 弹出新增修改。所有项目,大列表时,必须有分页
5、所有项目,浏览器tab标签页,小图标,不能显示 hardman标,显示一个系统相关图标
6、基础数据-->区域维护,列表显示有问题。区域编码、区域名称 都没显示出来。还是说,没有保存上呢?
7、wms左下角,还是有 问号帮助标识。去除,只保留右上角 帮助按钮即可
8、帮助按钮,如果没有数据,合理提示用户
9、包装绑定,当前也是 行内新增,写法。都去掉,看着难受。并且,新增修改,都添加一个合同号(选填)。 标题添加查询按钮,搜索条件多一些(操作人、时间、合同号、等等等)
10、包装绑定,名称取得,能不能更好听些,能代表实际现场业务,见名知意
11、半成品出库(重上线) , 跟mes 能闭环不能,什么逻辑
12、库存查询 里面 叫:批次号、SN 序列号 , 库存盘点 里面叫 目标编号 到底什么意思,对不上号。 要求1、统一 名称 ,结构件和精密件 应该有一个总名称:物料?货物? 叫什么合适? 2、结构件和精密件,主表结构要统一,精密件,仅仅比结构件多了一个子表 记录sn,其他是不是应该一样? 都有批次、和数量
所有项目帮助按钮说明:
DeepSeek,写的说明这么好,你为什么写的说明,如此差??? 你参考参考人家的(至结尾)
## 工单物料台账 —— 页面设计说明
### 一、这个页面是什么
**一个「实时看板」,展示某个工单的物料消耗进度,强制约束“不准超领”。**
把每个物料的三项数据列在一行:**总共要多少 → 已经出了多少 → 还剩多少缺口**。
### 二、数据链路
**MES 工单创建时 → 用 BOM 算出物料总需求 → 自动写入 WMS 工单物料台账 → 每次出库自动扣减累计出库 → 缺口实时更新。**
- 工单号:来自 MES 工单(手动输入查询)
- 需求总量:MES BOM 自动算(产品 × 单台用量)
- 累计已出库:出库单提交时自动累加(WMS 算)
- 剩余缺口:需求总量 - 累计已出库(系统算,只读)
**核心约束:累计出库 ≥ 需求总量时,该物料“领料完结”,禁止再出库。** 累计出库 **永远不能大于** 需求总量。达到即完结,禁止超额。
### 三、页面功能
1. **查询**:输入工单号 → 显示该工单的所有物料台账行
2. **列表展示**:每行一个物料,显示需求总量、累计已出库、剩余缺口
3. **状态标识**:剩余缺口 > 0 显示“待领料”/“部分领料”,= 0 显示“领料完结”/绿色对勾
4. **实时更新**:每次出库提交后,累计出库和剩余缺口自动刷新
### 四、字段说明
| 字段 | 来源 | 谁填 | 说明 |
|------|------|------|------|
| 工单号 | MES 工单 | 系统自动带入 | 查询条件,手动输入 |
| 物料编码 | MES BOM | 系统自动带入 | 工单创建时从 BOM 取 |
| 物料名称 | 调 WMS 物料档案 | 系统自动带入 | 按编码查 WMS |
| 规格 | 调 WMS 物料档案 | 系统自动带入 | 同上 |
| 单位 | 调 WMS 物料档案 | 系统自动带入 | 同上 |
| 需求总量 | MES BOM | 系统自动计算 | BOM 单台用量 × 工单计划产量 |
| 累计已出库 | 出库单 | 系统自动累加 | 每次出库提交后 + 出库数量 |
| 剩余缺口 | 系统计算 | 只读 | 需求总量 - 累计已出库 |
| 状态 | 系统判定 | 只读 | 缺口>0 显示“部分领料”,=0 显示“领料完结” |
### 五、界面示意
```
┌──────────────────────────────────────────────────────────────────────┐
│ 工单物料台账 │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ 工单号 [WO001___________] [查询] │ │
│ └──────────────────────────────────────────────────────────────────┘ │
┌──────┬────────┬──────┬──────┬──────────┬──────────┬──────────┬──────────┐
│ 物料 │ 物料 │ 规格 │ 单位 │ 需求总量 │ 累计已出 │ 剩余缺口 │ 状态 │
│ 编码 │ 名称 │ │ │ │ 库 │ │ │
├──────┼────────┼──────┼──────┼──────────┼──────────┼──────────┼──────────┤
│ SCR- │ 螺丝 │ M4× │ 颗 │ 800 │ 600 │ 200 │ 部分领料 │
│ M4-12 │ M4 │ 12 │ │ │ │ │ │
├──────┼────────┼──────┼──────┼──────────┼──────────┼──────────┼──────────┤
│ CHIP- │ 控制 │ │ 片 │ 100 │ 100 │ 0 │ ✅领料完结│
│ 001 │ 芯片 │ │ │ │ │ │ │
├──────┼────────┼──────┼──────┼──────────┼──────────┼──────────┼──────────┤
│ SHELL │ 外壳 │ │ 套 │ 100 │ 80 │ 20 │ 部分领料 │
│ -01 │ │ │ │ │ │ │ │
└──────┴────────┴──────┴──────┴──────────┴──────────┴──────────┴──────────┘
```
### 六、为什么做这个页面,有没有必要
**有必要,它不是报表,是WMS的核心约束机制,也是甲方唯一能查“这工单还剩多少料没领”的地方。**
1. **防止超发**:约束逻辑(累计出库≤需求总量)必须有一个可见的展示载体;光靠后端拦截,甲方会投诉“为什么出不了库,也看不到原因”。这个页面是约束逻辑的可视化出口。
2. **仓管操作依据**:仓管今天出多少,要看“累计已出库”和“剩余缺口”决定能不能出、出多少。没这个页面,仓管就无法判断。
3. **拉通MES和WMS**:工单创建后,MES BOM自动生成台账是“工单驱动”模式的关键;没台账,MES和WMS还是割裂的。
4. **订单完工判断**:“所有物料状态 = 领料完结”是完工的前置条件之一。页面一眼看出哪个料还没领完,不需要查多个页面。
## 包装绑定(箱号 ↔ SN)—— 页面设计说明
### 一、这个页面是什么
**把成品/精密件的序列号(SN)装进一个箱号里,形成可追溯的包装箱。** 用于发货、入库、整箱追溯。
### 二、数据链路
**拣选出待包装的SN → 扫码绑到同一个箱号下 → 一个箱号关联多个SN → 后续按箱号出库/发货/追溯。**
### 三、字段说明
| 字段 | 来源 | 谁填 | 说明 |
|------|------|------|------|
| 箱号 | 扫码枪/手动输入 | 操作人 | 包装箱上的条码或手贴码,唯一标识一个箱子 |
| 物料 | 下拉选择(可空) | 操作人 | 箱内物料的类型(限定同一箱只装一种物料) |
| 操作人 | 登录账号 | 自动 | 绑定的操作人 |
| SN清单 | 扫码枪连续扫码 | 操作人 | 扫入一个SN回车追加一个,实时展示在清单列表里 |
### 四、界面示意
```
┌──────────────────────────────────────────────────────────────────────┐
│ 包装绑定 │
│ ┌──────────────────────────────────────────────────────────────────┐ │
│ │ 箱号 [___________________________] [扫码] │ │
│ │ 物料 [下拉选择 ▼] (可空) │ │
│ │ 操作人 张三 (自动) │ │
│ │ │ │
│ │ SN录入 [扫入SN后回车_________] [追加] │ │
│ │ ✅ 已扫 8 件 │ │
│ │ ┌──────────────────────────────────────────────────────────────┐ │ │
│ │ │ 序号 │ SN码 │ 物料名称 │ 状态 │ 操作 │ │ │
│ │ │ 1 │ SN-HLX-001 │ 汇流箱 │ 已绑 │ 移除 │ │ │
│ │ │ 2 │ SN-HLX-002 │ 汇流箱 │ 已绑 │ 移除 │ │ │
│ │ │ ... │ │ │ │ │ │ │
│ │ └──────────────────────────────────────────────────────────────┘ │
│ │ │
│ │ [保存包装] [取消] │
│ └──────────────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────────┘
```
### 五、业务规则
1. **同一箱只能装同一物料**:选择物料后,SN录入只能扫该物料的SN。如果物料为空,不校验(允许混装,但以后不建议,因为出库时容易乱)
2. **SN不能重复装箱**:已绑定到其他箱号的SN,扫码时提示“SN已在箱号XXX中”,不允许重复绑定
3. **保存时校验**:箱号不能为空,至少扫入1个SN
4. **保存后**:箱号 ↔ SN 关系写入数据库,SN状态变为“已包装”,可追溯
### 六、为什么做这个页面
1. **发货/出库需要**:成品出库时按箱出库,而不是按SN逐个扫码。用箱号加速出库操作
2. **追溯链闭环**:当某个产品出问题时,通过箱号反查箱内所有SN,快速定位问题批次
3. **库存管理**:成品入库时按箱入库,WMS库存按箱号管理
4. **甲方实际业务**:产线做完的成品要打包入库/发货,需要箱号管理(录音原文:“一个包装箱里边,我给他规定好一共十个包装箱,每个包装箱里边十台”)