Files
Inventory-Management-System/物料入库出库系统_使用教程.md
star 5060d027e5 feat: 多工厂/厂间调拨/替代料/流水台账折叠 + 重写 README
- 多工厂(factory 表) + 顶栏工厂下拉过滤, 库存按厂聚合
- 厂间调拨(transfer): 源厂减+目标厂加, 总库存不变, 双向流水对账
- 替代料关系(substitute): 出库/BOM领料/生产领料缺料时提示可替代料
- 流水台账(ledger): 入出按日期合并折叠, 按日期导出同一 Excel
- 生产订单增强: 编辑/删除(级联清关联流水)/调入数量/确认调入=厂间调拨
- 入库新增送货日期字段; 出库物料编码扫码定位
- 重写 README 补全全部模块; .gitignore 排除 dist_pkg/build_pkg/*.db
- 停止跟踪 instance/app.db(运行时自动生成)
2026-09-29 11:17:48 +08:00

351 lines
20 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.
# 物料入库 / 出库管理系统 —— 使用教程
> 适用对象:仓库管理员、车间计划员、系统管理员
> 系统形态:Windows 单文件 EXE(双击即用,免安装数据库,中文界面)
> 版本:M1 基础版 + M2 核算版(含 M2-1 多工厂 / M2-2 厂间调拨)+ M3 治理版
> 最近新增:多工厂与代工厂、出库 BOM 批量操作、生产订单删除/编辑/调入数量、厂间调拨
---
## 一、系统能做什么
把工厂车间的「物料台账 + BOM 用量核算」从 Excel 宽表搬进系统,解决三个核心痛点:
| 你现在的麻烦 | 用了系统之后 |
|---|---|
| 库存 = 入库 − 出库 靠手算公式,错一处全列错 | 在库数量实时计算,负数/低库存自动标红预警 |
| BOM 用量要手动乘接单量 | 录入订单接单量,自动展开每种料的「需求量」并提示缺料 |
| 多人改表无记录、无法分工 | 带登录、三种角色、操作日志,谁改了什么可追溯 |
**四个核心概念要先分清:**
- **物料**:一颗料的主数据(编号、规格型号、单位、安全库存)。
- **入库 / 出库**:每一笔收发货的流水记录,按物料汇总成「在库数量」。
- **BOM**:一个产品的「用料清单」,记录每种料「单套用量」是多少。
- **生产订单**:某个产品接了多少单(接单量),系统按 BOM 自动算出要领哪些料、领多少。
---
## 二、安装与启动
1. 把 `MaterialWMS.exe` 放到任意文件夹(建议单独一个目录,例如 `D:\MaterialWMS\`)。
2. **双击** `MaterialWMS.exe` —— 程序会在后台启动本地服务,并**自动打开浏览器**到 `http://127.0.0.1:8080`。
3. 数据库文件 `app.db` 会自动生成在 **EXE 同目录**,所有数据都存在这里。
**常用操作:**
| 需求 | 做法 |
|---|---|
| 换端口(8080 被占用) | 命令行运行 `MaterialWMS.exe 8081`,访问 `http://127.0.0.1:8081` |
| 备份数据 | 关闭程序后,复制同目录的 `app.db` 到别处即可 |
| 指定数据库位置 | 启动前设置环境变量 `WMS_DB=绝对路径\xxx.db` |
| 多台电脑共用 | 把 `app.db` 放网络盘或定期拷贝同步(单机程序,非多用户服务器) |
> ⚠️ 数据全在 `app.db` 一个文件里,**删掉它就全没了**。至少每周备份一次。
---
## 三、登录与账号
- 打开页面首先看到登录框。
- **默认管理员账号**:用户名 `admin`,密码 `admin123`(首次使用请尽快改密码或新增专属账号,见第十一节)。
### 三种角色权限
| 菜单 | admin(管理员) | manager(主管) | operator(操作员) |
|---|:---:|:---:|:---:|
| 库存看板 | ✅ | ✅ | ✅ |
| 物料(列表 / 明细) | ✅ | ✅ | ✅ |
| 入库 / 出库 | ✅ | ✅ | ✅ |
| 出库里的 BOM 批量操作 | ✅ | ✅ | ❌ |
| 物料新增 / 编辑 / 删除 | ✅ | ✅ | ❌ |
| BOM 管理 | ✅ | ✅ | ❌ |
| 生产订单(新建 / 编辑 / 删除 / 调入) | ✅ | ✅ | ❌ |
| 工厂(工厂管理 / 工厂工作台) | ✅ | ✅ | ✅(仅查看工作台,不能导入/建厂) |
| 调拨(厂间调拨) | ✅ | ✅ | ❌ |
| 报表 / 导出 Excel | ✅ | ✅ | ❌ |
| 操作日志 | ✅ | ✅ | ❌ |
| 用户管理 | ✅ | ❌ | ❌ |
> 顶部导航栏会**按当前账号角色自动显示/隐藏**菜单,看不到的菜单就是当前角色没有权限。
---
## 四、库存看板(首页)
登录后默认进入「库存看板」,一眼看清所有物料的库存状态:
- 🟢 **正常**:在库 ≥ 安全库存
- 🟡 **预警(黄)**:在库 < 安全库存,该补货了
- 🔴 **异常(红)**:在库为负,说明出库多于入库,数据有矛盾需核查
顶部会汇总「负库存数量」「低于安全库存数量」两个计数,方便快速排查。
> **BOM 物料齐套标签页**:看板顶部有「📦 库存预警 / 🔧 BOM 物料齐套」两个标签(仅管理员、主管可见)。切到 **BOM 物料齐套** 后,顶部有一个「选择 BOM」下拉框:默认「全部 BOM(总览)」会逐棵列出其组成物料的「单套用量 / 当前在库 / 状态」;选中某棵 BOM 则只看那棵。右侧显示「共 N 棵 / 已选 1/N 棵」计数。每棵 BOM 标题处给出整体齐套结论(齐套 / 部分偏低 / 缺料),点物料编号可跳到该料明细。这样不用进 BOM 列表就能在看板上直接看清每棵 BOM 里每颗料的库存情况。
> **模拟齐套(试算缺料)**:在 BOM 物料齐套标签页里,「选择 BOM」下拉框下方有一条「模拟齐套」工具条。输入该 BOM 的**计划生产数量**(如 1000 套 / PCS),点「▶ 模拟齐套」,系统按每颗料的「单套用量 × 计划数量」算出**总需求用量**,与**当前在库**对比:
> - 每行右侧新增「需求用量」「缺口」两列;缺口为正的行(需求 > 在库)整行标红并显示「缺 X」;
> - 该 BOM 标题处出现模拟结论徽章:「模拟齐套 / N 种充足」或「模拟缺料 / 缺 M/N 种」;
> - 选择「全部 BOM(总览)」时会对每棵 BOM 同时模拟,工具条右侧给出整体结论。
> 点「重置」可清除模拟结果。该模式**只做试算、不改任何库存数据**,适合接单前快速判断"这批货能不能齐套、还差多少料"。
---
## 五、物料管理
### 5.1 物料列表
路径:导航栏 **物料**。
表格字段:物料编号、型号/规格、单位、安全库存、**在库数量**、**入库总数量**、**消耗总数量**、操作。
- 顶部搜索框支持按「物料编号」或「型号规格」模糊查找。
- 点 **明细** 进入单颗物料的流水页(见 5.4)。
### 5.2 新增物料(admin / manager)
点 **+ 新增物料**,填写:
- **物料编号**(必填,唯一,例如 `P0001`)
- **型号/规格**(选填,即规格型号)
- **单位**(默认「个」)
- **安全库存**(低于此值看板标黄)
- **备注**
### 5.3 编辑 / 删除(admin / manager)
列表行内「编辑」改信息;「删除」会移除该物料(含其流水,操作需谨慎)。
### 5.4 物料明细与流水查询
点列表里的 **明细** 链接,进入单颗物料页面,顶部三张卡片显示在库 / 入库总 / 消耗总;下方两张表分别是:
- **入库流水**:入库日期、送货日期、录入时间、数量、批次、来源、经手人
- **出库流水**:出库日期、录入时间、数量、批次、用途、关联单号、经手人
> 这就是「查看每颗物料每次的入库时间」的入口。
### 5.5 用 Excel 批量导入物料(admin / manager)
1. 在 **物料** 页点 **⬇ 下载导入模板**,得到 `物料导入模板.xlsx`。
2. 按表头填:**物料编号 / 型号规格 / 单位 / 安全库存 / 期初库存**(后四列可选)。
3. 回到 **物料** 页(或导入入口)上传文件,系统先解析再写入。
4. **期初库存 > 0** 的物料,会自动写入一条来源为「期初」的入库流水,作为开局库存。
---
## 六、入库操作
路径:导航栏 **入库**。两种录入方式:
### 6.1 单笔录入
表单顶部有一个 **「物料编码」输入框**(与「物料」下拉并列):
- **直接输入或扫码**物料编码(如 `P0001`),系统会**自动定位**到下拉里对应的物料:精确命中、或编码前缀唯一时立即锁定,并把光标跳到「数量」;多个前缀候选会提示「继续输入」;编码不存在会标红提示「未找到」。
- 也可以照旧在「物料」下拉里手动选择——手选后编码框会自动反向填入对应编码,两种方式互通。
- 填送货日期、批次号、数量、经手人、来源/供应商(出库为用途/关联单号)、业务日期、备注 → 提交。库存实时 +N(出库实时 −N,不足会拦截),并写操作日志。送货日期默认当天,可改成供应商实际到货日,与「业务日期」(记账日)区分。
### 6.2 批量导入窗口
点右上角 **⊞ 批量导入窗口**,支持两种方式:
- **粘贴文本**:每行一条 `物料编号 数量 批次 日期 备注`(列间空格/制表符分隔,带表头行会自动跳过)。
- **上传 Excel/CSV**:表头需含 `物料编号 / 数量 / 批次 / 日期 / 备注`(中英文列名都识别)。
点 **解析预览** 后会逐行校验(物料不存在、数量≤0 会标红),确认无误再点 **确认导入**。
---
## 七、出库操作
路径:导航栏 **出库**。界面与入库一致,区别:
- 字段为「用途」「关联单号」而非来源。
- **库存不足保护**:出库数量 > 当前在库时,系统拦截并提示「库存不足」,不会让库存变负。
批量导入窗口同样可用(见 6.2),勾选「出库」时同样有库存校验。
### 7.1 按 BOM 批量操作(admin / manager)
出库页底部有一个 **「🧩 按 BOM 批量操作」** 卡片(仅管理员、主管可见),提供两种模式:
**① 齐套领料出库**(从本厂库存发料)
- 选 BOM + 填「生产套数」→ 点「预览需求」,系统按 `单套用量 × 套数` 列出每种料的「需求数量 / 本厂在库 / 缺料数」。
- 缺料的行会标红;**缺口 > 0 的行不会出库**,只把够的部分发掉,避免库存变负。
- 点「确认齐套领料」即生成一批出库流水(用途「生产领用」)。
**② 调拨入库(调入到工厂)**
- 选「目标工厂」+ 选 BOM + 填套数 → 预览后点「确认调拨入库」。
- 系统生成的是**入库流水**,直接计入目标工厂的该物料库存(来源「调拨入库」)。
- 适合「总部有货、代工厂缺料」时,把料调拨进代工厂库存的场景。
> 两种模式共用同一张预览表,切换模式即可;预览实时显示缺料,确认前请先核对数量。
## 八、BOM 管理(admin / manager)
路径:导航栏 **BOM**。
### 8.1 新增 BOM(手工)
点 **+ 新增 BOM**,填 BOM 型号、名称,然后逐行添加「物料编号 + 单套用量」(只能选已存在的物料)。
### 8.2 BOM 详情(显示规格型号)
点列表里的型号进入详情页,列出每项组成物料的:**物料编号 / 型号规格 / 单位 / 单套用量**。点物料编号可跳到该物料明细。
### 8.3 批量导入 BOM(推荐)
在 **BOM** 页点 **⊞ 批量导入窗口**,支持两种来源:
**① 上传嘉立创 / Altium BOM(最省事)**
- 每个 worksheet 就是一个 BOM,**sheet 名 = BOM 型号**;
- 列头识别 `Item / Part Number / Manufacture Part Number / Quantity / Reference / Part / Package`;
- `Part Number` 关联物料,`Quantity` 列即单套用量。
- 点 **⬇ 下载模板** 拿到的就是这种格式,直接照填即可。
**② 粘贴文本**
```
#BOM M4021 示例产品A
P0001 2
P0002 0.5
#BOM M4022 示例产品B
P0003 4
```
以 `#BOM <型号> <名称>` 开头,其下每行 `物料编号 单套用量`,空行分隔不同 BOM。
> 💡 **物料不存在会自动新建**:导入时若某 `Part Number` 在系统里没有,会先建好物料主数据再挂到 BOM,并在预览里标「新建」。
解析预览确认后点 **确认导入** 即可。
---
## 九、生产订单与领料(admin / manager)
路径:导航栏 **生产订单**。
### 9.1 新建订单
选 BOM + 选「生产工厂」+ 填接单量(+ 可选单号 / 备注)→ 生成订单号(如 `WO20260920xxx`)。订单会与所选工厂绑定,后续看库存、调入都按该工厂口径。
### 9.2 编辑 / 删除订单
- **编辑**:订单详情页点「编辑订单」→ 可改单号、BOM、生产工厂、接单量、备注。
- **删除**:列表或详情页点「删除」→ 只删订单头与「调入计划行」,**保留**已发生的关联出入库流水(已发/已调入的料不会因删单而回滚),操作需谨慎。
### 9.3 订单详情(用量展开 + 调入数量)
详情页按 `需求量 = 接单量 × 单套用量` 算出每种料需要领多少,并与**该生产工厂**当前在库对比:够 → 正常;不够 → **缺料标红**,列出缺口。特点是:
- **BOM 物料后新增「调入数量」列**(可手动录入):你可以逐料填「计划从别的厂/渠道调入多少」。
- **保存调入数量**:把计划暂存(不立即动库存)。
- **确认调入**:把每行的「调入数量」一键生成**入库流水**直接计入该生产工厂库存(来源「生产订单调入」)。已入账的行显示徽标、不可重复入账,避免重复调入。
- 物料编号可点击直达该物料明细页。
- 底部「**调入总览**」汇总:已调入项数 / 已调入合计件数 / 计划调入合计。
- **一键领料**:点「领料」,系统按 BOM 用量自动生成一批出库流水(用途「生产领用」,关联订单号);仍有缺料会提示但不阻止,需人工确认。
这一步既保留了原来「接单量 × 单套用量」的自动展开与一键领料,又让你能手动登记「这单要从别处调多少料进来」。
---
## 十、多工厂与代工厂管理(M2-1,admin / manager)
如果你的业务涉及多个工厂 / 代工厂,可以用「单库多地点」模式把各厂的库存放在同一套系统里管理,既统一又互不串库。
### 10.1 工厂管理页
路径:导航栏 **工厂**(仅管理员、主管可见)。
- 列出全部工厂:编码、名称、类型(**自厂 / 代工厂**)、是否启用。
- **新增工厂**:填编码(如 `SUB01`,唯一)、名称、类型、备注。
- **停用 / 启用**:停用的工厂不再出现在切换器与下拉里(历史数据保留)。
### 10.2 顶栏工厂切换器
页面右上角有一个 **「全部工厂 / 各工厂」** 下拉:
- 选「全部工厂」→ 看板、物料、出入库均为**汇总口径**。
- 选某个具体工厂 → 看板 / 物料列表 / 出入库明细 / 物料流水全部**按该厂过滤**。
- 选择写入当前会话,刷新后保持。
### 10.3 工厂工作台
在工厂管理页点某厂的「进入」,或访问 `/factory/<id>`,是一个三页签的工作台:
- **物料看板**:仅该厂的在库与预警。
- **BOM 齐套**:基于该厂库存判断各 BOM 是否齐套。
- **批量导入**:可把期初物料 / 入库快速导入到该厂(仅管理员、主管可操作)。
> 设计原则:所有账号都能看到全部工厂数据(不做厂间权限隔离);库存聚合按 `factory_id` 实时计算,不冗余存储。
---
## 十一、厂间调拨(M2-2,admin / manager)
当「甲厂有货、乙厂缺料」时,用调拨把料从一个厂划到另一个厂,系统自动做**双向记账**。
### 11.1 新建调拨
路径:导航栏 **调拨** → **+ 新建调拨**。
填写:源厂、目标厂、物料、数量、业务日期、经手人、备注。
- **库存校验**:源厂在库不足时拦截,不让调拨变负。
- 提交后自动生成两条流水:
- 源厂:`Outbound`(出库,库存 −N)
- 目标厂:`Inbound`(入库,库存 +N)
- 同时写入 `transfer` 调拨主表,作为调拨凭证。
### 11.2 调拨列表
路径:导航栏 **调拨**(列表页,所有角色可查看)。
显示每笔调拨:调拨单号、源厂→目标厂、物料、数量、经手人、业务日期、备注。可用于对账。
> 调拨与「出库页的调拨入库」区别:本模块是**厂与厂之间的正式调拨**(双向记账、有调拨单号);出库页的「调拨入库」是把 BOM 料直接调入某厂(单向入库)。两者都会让目标厂库存 +N,看板/物料按厂过滤后都会体现。
---
## 十二、报表与操作日志(admin / manager)
- **报表**:导航栏 **报表**,全量库存表,预警状态标红,可点 **⬇ 导出库存 Excel** 下载 `库存导出_日期.xlsx`。
- **日志**:导航栏 **日志**,记录所有关键操作(新增/编辑/删除物料、入库、出库、导入、领料等),含操作人、动作、目标、明细,最多保留 200 条,用于审计追溯。
---
## 十一、用户管理(仅 admin)
路径:导航栏 **用户**(仅管理员可见)。
- **新增用户**:填用户名、密码、角色(admin / manager / operator)、显示名。
- **启用 / 停用**:停用后该账号无法登录(不能停用自己)。
> 建议:日常使用别共用 `admin`,给每位同事建独立账号并赋对应角色,方便日志追溯。
---
## 十四、数据备份与维护(重要)
| 项目 | 说明 |
|---|---|
| 数据库文件 | `app.db`,位于 EXE 同目录,**唯一数据源** |
| 备份方法 | 关闭程序 → 复制 `app.db` 到备份盘 / 云盘 |
| 还原方法 | 用备份的 `app.db` 覆盖同目录文件,重启 EXE |
| 换电脑 | 把 `MaterialWMS.exe` + `app.db` 一起拷贝过去即可 |
| 指定库路径 | 设置环境变量 `WMS_DB` 指向自定义位置 |
---
## 十三、常见问题 FAQ
**Q1:打开后浏览器没反应 / 白屏?**
先确认 `MaterialWMS.exe` 是否在运行(任务管理器看进程)。若 8080 端口被占,用 `MaterialWMS.exe 8081` 换端口,并访问对应地址。
**Q2:提示「库存不足」无法出库?**
当前在库小于你要出的数量。先核对入库是否录全,或去物料明细查流水。系统故意拦截,避免库存变负。
**Q3:BOM 导入后某项被「跳过」?**
该项物料编号在系统里找不到,且不是可自动新建的情况(如用量≤0)。先用「物料导入」建好主数据,或允许自动新建后重新导入。
**Q4:Excel 导入提示「格式不符」?**
检查表头是否含必需列:物料导入需 `物料编号`;BOM 简单表需 `BOM型号/物料编号/单套用量`;嘉立创表需 `Part Number/Quantity`。下载对应模板对照最稳妥。
**Q5:多人同时用一台电脑?**
本系统是**单机程序**,同一时刻一个 `app.db`。如需多人协作,应部署为共享服务或错峰使用,并勤于备份。
**Q6:忘记 admin 密码?**
关闭程序,用备份恢复,或联系部署人重置 `app.db`(暂无自助找回,需直接改库)。
**Q7:顶栏工厂切换器怎么用?**
右上角下拉选「全部工厂」看汇总,选某厂只看该厂数据;切换只影响当前浏览器会话。新增/停用工厂在「工厂」页(管理员、主管)。
**Q8:厂间调拨和出库里的「调拨入库」有什么不同?**
调拨模块是厂↔厂的正式调拨(源厂减、目标厂加,有调拨单号);出库页的「调拨入库」是单向把 BOM 料直接加进某厂。两者都会让目标厂库存增加,按厂过滤后都会体现。
**Q9:生产订单里的「调入数量」是什么?**
是逐料「计划从别处调多少进来」的手工登记。点「保存调入数量」暂存计划,点「确认调入」才真正生成入库流水进该生产工厂;已入账的行不可重复调入。
---
## 附:快速上手清单
1. 双击 `MaterialWMS.exe`,浏览器打开,用 `admin / admin123` 登录。
2. 下载「物料导入模板」,把现有物料清单填好导入。
3. 用「BOM 批量导入窗口」上传嘉立创 BOM(或粘贴文本),建好产品用料。
4. 多工厂场景:进「工厂」页建好各工厂/代工厂,用顶栏切换器按厂查看。
5. 日常收发货:入库 / 出库 单笔或批量录入;出库页可用「按 BOM 批量操作」(齐套领料 / 调拨入库)。
6. 接单后:生产订单新建(选工厂)→ 看缺料 → 登记「调入数量」并确认调入 → 一键领料。
7. 厂间调拨:调拨页建调拨单,系统自动源厂减、目标厂加。
8. 每天看一眼「库存看板」的红/黄预警,每周备份一次 `app.db`。
9. 给同事建独立账号并分配角色(admin 专属)。