更新装配、销售、精工车间、技术中心、仓储多个模块,整理文档和SQL脚本

This commit is contained in:
Developer
2026-06-29 13:36:34 +08:00
parent 137e276340
commit be0ff91e24
54 changed files with 5066 additions and 723 deletions

View File

@@ -0,0 +1,90 @@
# 01-项目功能内容
## 1. 需求来源
因现场计件、派工生产、完工入库和后续追溯需要,将零件改制流程接入系统。该需求由罗总牵头,组织技术中心、精工车间、仓储等相关部门讨论后提出。
## 2. 应用场景
- 技术中心根据现场或订单需求发起零件改制订单。
- 改制订单进入精工车间生产任务流程。
- 精工车间在生产任务查询中查看改制任务。
- 车间派工组件查看改制任务并派工。
- MES 加工端按改制订单显示待加工任务。
- 改制加工完成后按现有流程办理入库。
- 改制记录用于查询原零件、改制零件、生产任务和加工状态。
## 3. 功能范围
### 3.1 技术中心
- 新增零件改制订单发起组件。
- 左侧显示订单/产品列表。
- 右侧显示所选产品下的所有零件。
- 零件操作列提供“改制”按钮。
- 点击“改制”后填写改制零件名称、改制零件图号、改制数量、精工期限。
- 原零件图号和改制零件图号相同则禁止发起。
### 3.2 后端记录
- 新增或维护 `技术中心_改制订单记录`
- 记录原订单、原组件、原基本件、原零件名称、原零件图号。
- 记录改制零件名称、改制零件图号、改制数量、精工期限。
- 记录改制订单编号、发起人、发起时间、状态、是否删除。
- 回写新生成的 `工艺计划流水号`
### 3.3 精工车间
- 发起改制后自动生成精工车间生产任务。
- 自动生成默认工艺 `改制`
- 工艺计划进入“工艺完成”状态,后续可进入派工。
- 生产任务查询中优先显示改制订单编号、改制零件名称、改制零件图号。
### 3.4 MES 加工端
- MES 待加工显示关联改制记录。
- 有改制订单时,订单号优先显示改制订单编号。
- 通过 `工艺计划流水号` 关联改制记录,避免重复显示。
## 4. 编号规则
改制订单编号规则:
```text
BHGZ + 年月日 + 4位顺序号
```
示例:
```text
BHGZ202606250001
BHGZ-202606270010
```
实际格式以数据库发起过程最终生成逻辑为准,但业务前缀固定为 `BHGZ`
## 5. 核心流程
```text
技术中心选择订单/产品
-> 查询产品零件
-> 点击零件改制
-> 校验原图号与改制图号不同
-> 生成改制订单记录
-> 生成精工车间工艺计划
-> 回写工艺计划流水号
-> 自动添加默认工艺“改制”
-> 生产任务查询显示改制任务
-> 车间派工
-> MES 加工
-> 完工入库
```
## 6. 不在当前范围内的内容
- 非毛坯物料改制自动生成领料单。
- 仓库出库状态限制派工。
- 改制订单取消、退料、异常处理。
- 改制记录独立查询页面的完整开发。
这些内容作为后续扩展任务维护在任务矩阵中。

View File

@@ -0,0 +1,258 @@
# 02-项目程序开发详细步骤
## 1. 前端开发步骤
### 1.1 新增组件
路径:
```text
src/views/TechnologyCenter/PartModificationOrder/index.vue
```
页面结构:
```text
app-container
-> el-card
-> 左侧订单/产品表格
-> 右侧零件表格
-> 发起改制弹窗
-> 图纸查看弹窗
```
### 1.2 左侧订单/产品查询
订单下拉接口:
```text
订单信息_列表_查询数据_bak
```
要求:
- 不需要传订单编号时也可加载订单列表。
- `label` 使用订单编号。
- `value` 使用订单流水号。
订单/产品查询接口:
```text
技术中心_改制订单_订单_查询
```
要求:
- 传入下拉选择的订单流水号。
- 显示订单编号、产品名称。
- 相同数据去重显示由后端查询保证。
### 1.3 右侧零件查询
接口:
```text
技术中心_改制订单_零件_查询
```
要求:
- 点击左侧产品后查询对应零件。
- 显示零件名称、零件图号、数量。
- 操作列包含“查看图纸”和“改制”。
### 1.4 发起改制弹窗
弹窗字段:
```text
原订单编号
原零件名称
原零件图号
原数量
改制零件名称
改制零件图号
改制数量
精工期限
```
提交前校验:
```js
var oldDrawingNo = (this.form.原零件图号 || '').toString().trim()
var newDrawingNo = (this.form.改制零件图号 || '').toString().trim()
if (oldDrawingNo && newDrawingNo && oldDrawingNo === newDrawingNo) {
this.$message.warning('改制零件图号不能与原零件图号相同')
return
}
```
提交接口:
```text
技术中心_改制订单_发起改制
```
## 2. 数据库开发步骤
### 2.1 改制记录表
表:
```text
技术中心_改制订单记录
```
关键字段:
```text
改制订单流水号
改制订单编号
原订单流水号
原组件流水号
原基本件流水号
原零件名称
原零件图号
改制零件名称
改制零件图号
改制数量
精工期限
工艺计划流水号
状态
发起人
发起时间
是否删除
```
字段补充 SQL
```sql
IF COL_LENGTH('dbo.技术中心_改制订单记录', '原零件名称') IS NULL
BEGIN
ALTER TABLE dbo._改制订单记录
ADD nvarchar(50) NULL;
END;
IF COL_LENGTH('dbo.技术中心_改制订单记录', '原零件图号') IS NULL
BEGIN
ALTER TABLE dbo._改制订单记录
ADD nvarchar(50) NULL;
END;
IF COL_LENGTH('dbo.技术中心_改制订单记录', '工艺计划流水号') IS NULL
BEGIN
ALTER TABLE dbo._改制订单记录
ADD int NULL;
END;
```
### 2.2 改制订单排序表
表:
```text
技术中心_改制订单排序
```
用途:
- 按年份记录改制订单顺序号。
- 支持生成 `BHGZ + 年月日 + 4位顺序号`
### 2.3 发起改制存储过程
过程:
```text
技术中心_改制订单_发起改制
```
主要步骤:
1. 校验参数。
2. 后端校验原零件图号和改制零件图号不同。
3. 查询原基本件流水号。
4. 生成改制订单编号。
5. 插入 `技术中心_改制订单记录`
6. 插入 `车间生产管理工艺_零件工艺计划`
7. 回写 `技术中心_改制订单记录.工艺计划流水号`
8. 查找或创建基础工艺 `改制`
9. 更新或插入 `车间生产管理工艺_零件工序`
10. 调用 `精工车间_工艺保存_派工`
11. 更新组件和订单为精工车间承接。
### 2.4 生产任务视图
视图:
```text
车间生产管理_零件工艺计划_视图
```
已调整:
```sql
ISNULL(dbo._改制订单记录., dbo._物料主文件_基本.) AS
ISNULL(dbo._改制订单记录., dbo._零件工艺计划.) AS
ISNULL(dbo._改制订单记录., dbo._订单信息_基础表.) AS
```
关联:
```sql
LEFT JOIN dbo._改制订单记录
ON dbo._零件工艺计划. = dbo._改制订单记录.
AND ISNULL(dbo._改制订单记录., 0) = 0
```
### 2.5 生产任务查询过程
过程:
```text
精工车间_生成任务_查询数据
```
注意事项:
- 主表已使用别名 `P`
- 动态筛选必须使用 `P.字段名`
- 不得再使用 `车间生产管理_零件工艺计划_视图.字段名`,否则会出现无法绑定多部分标识符错误。
正确示例:
```sql
AND P. LIKE '%' + @ + '%'
AND P. >= @
AND P. <= @
```
### 2.6 MES 待加工显示
过程:
```text
MES_机加工MES_零件待加工显示
```
建议关联:
```sql
LEFT JOIN _改制订单记录 AS GZ
ON V. = GZ.
AND ISNULL(GZ., 0) = 0
```
订单号显示:
```sql
ISNULL(GZ., V.) AS
```
## 3. 验证步骤
1. 前端运行 eslint。
2. 查询改制记录是否回写工艺计划流水号。
3. 查询生产任务视图显示字段是否与改制记录一致。
4. 查询是否存在同一工艺计划流水号关联多条未删除改制记录。
5. 用图号筛选生产任务查询过程,确认不再出现 4104 错误。

View File

@@ -0,0 +1,29 @@
# 03-推进台账
| 轮次 | 日期 | 做了什么 | 改了哪些文件/程序 | 验证了什么 | 下一步 |
| --- | --- | --- | --- | --- | --- |
| 1 | 2026-06-23 | 梳理零件改制整体方案 | `零件改制功能设计方案.md` | 方案包含需求背景、应用场景、流程、表设计 | 生成 PDF 和流程图 |
| 2 | 2026-06-23 | 生成设计方案 PDF 和流程图 | `零件改制功能设计方案.pdf``零件改制流程图.svg` | PDF 可打开,流程图包含入库节点 | 开始前端组件 |
| 3 | 2026-06-24 | 新建零件改制组件 | `src/views/TechnologyCenter/PartModificationOrder/index.vue` | 修复动态路由加载 ENOENT | 调整查询接口 |
| 4 | 2026-06-24 | 调整订单和零件查询接口 | `PartModificationOrder/index.vue` | 使用 `技术中心_改制订单_订单_查询``技术中心_改制订单_零件_查询` | 调整订单下拉 |
| 5 | 2026-06-24 | 订单编号输入框改为下拉框 | `PartModificationOrder/index.vue` | 下拉数据来自 `订单信息_列表_查询数据_bak` | 参考 BOM 优化界面 |
| 6 | 2026-06-24 | 参考 BOM 更换物料界面调整发起改制弹窗 | `PartModificationOrder/index.vue` | eslint 通过 | 开始后端存储过程设计 |
| 7 | 2026-06-25 | 设计发起改制过程 | `技术中心_改制订单_发起改制` | 明确只分配到精工车间 | 增加改制记录表 |
| 8 | 2026-06-25 | 增加改制订单记录表方案 | `技术中心_改制订单记录` | 明确记录字段和回写工艺计划流水号 | 增加订单号规则 |
| 9 | 2026-06-25 | 设计改制订单号生成规则 | `技术中心_改制订单排序` | 规则为 `BHGZ + 年月日 + 4位顺序号` | 添加默认工艺 |
| 10 | 2026-06-25 | 设计默认工艺 `改制` | `车间生产管理工艺_基础表_工艺名称``车间生产管理工艺_零件工序` | 明确不存在则新增基础工艺 | 调整 INSERT/UPDATE 工序逻辑 |
| 11 | 2026-06-25 | 工序插入逻辑改为优先更新 | `技术中心_改制订单_发起改制` | 有默认空工序时更新,无则插入兜底 | 修改查询关联方式 |
| 12 | 2026-06-25 | 查询关联由基本件流水号改为工艺计划流水号 | 生产任务查询、MES 待加工显示 SQL | 避免同一基本件多次改制重复显示 | 补充原零件信息字段 |
| 13 | 2026-06-25 | 添加原零件名称、原零件图号 | `技术中心_改制订单记录`、发起过程 INSERT | 改制记录可追溯原零件 | 修改生产任务视图 |
| 14 | 2026-06-27 | 修复生产任务显示的零件名称不是改制名称 | `车间生产管理_零件工艺计划_视图` | 抽样验证订单号/零件名称/图号与改制记录一致 | 生成测试报告 |
| 15 | 2026-06-27 | 执行不污染数据的测试并生成测试报告 | `零件改制功能测试报告.md` | eslint 通过;显示不一致数为 0重复关联数为 0 | 补历史数据或做真实流程验收 |
| 16 | 2026-06-29 | 修复生产任务查询动态 SQL 别名绑定问题 | `精工车间_生成任务_查询数据` | 将动态条件统一改为 `P.字段名` | 执行数据库过程更新并页面验证 |
| 17 | 2026-06-29 | 拆分标准化推进文档 | `docs/零件改制/README.md``01-06` 文档 | 文档结构完成 | 后续按任务矩阵继续推进 |
## 当前下一步
1.`精工车间_生成任务_查询数据` 最新完整 SQL 应用到数据库。
2. 使用图号 `XT40-07.01` 再次执行查询,确认不再出现 4104 错误。
3. 使用一条业务允许的测试订单发起真实改制。
4. 验证生产任务查询、车间派工、MES 待加工显示。
5. 补齐 3 条历史未回写 `工艺计划流水号` 的改制记录,或确认无需处理。

View File

@@ -0,0 +1,44 @@
# 04-任务矩阵
| 任务编号 | 任务名称 | 状态 | 验收标准 | 备注 |
| --- | --- | --- | --- | --- |
| GZ-001 | 编写零件改制功能方案 | 已完成 | 文档包含需求背景、应用场景、现有流程承接、入库节点 | 已生成设计方案 |
| GZ-002 | 生成方案 PDF 和流程图 | 已完成 | PDF 存在,流程图位置正确,流程包含入库 | 已生成 PDF/SVG |
| GZ-003 | 新建技术中心改制组件 | 已完成 | 路由能加载 `PartModificationOrder/index.vue`,无 ENOENT | 已创建组件 |
| GZ-004 | 左侧订单/产品查询 | 已完成 | 可通过订单编号下拉筛选订单/产品 | 使用 `技术中心_改制订单_订单_查询` |
| GZ-005 | 订单编号下拉 | 已完成 | 下拉 label 为订单编号value 为订单流水号 | 使用 `订单信息_列表_查询数据_bak` |
| GZ-006 | 右侧零件查询 | 已完成 | 点击左侧产品后显示对应零件 | 使用 `技术中心_改制订单_零件_查询` |
| GZ-007 | 发起改制弹窗 | 已完成 | 可录入改制零件名称、图号、数量、精工期限 | 参考 BOM 更换物料风格调整 |
| GZ-008 | 图号一致校验 | 已完成 | 原零件图号与改制零件图号相同时禁止提交 | 前端已加,后端建议保留 |
| GZ-009 | 改制订单记录表 | 已完成 | 表包含原零件、改制零件、工艺计划流水号等字段 | 需以数据库实际结构为准 |
| GZ-010 | 改制订单编号生成 | 已完成 | 编号符合 `BHGZ + 年月日 + 4位顺序号` | 已设计排序表 |
| GZ-011 | 发起改制后端过程 | 进行中 | 能生成改制记录、工艺计划、回写工艺计划流水号 | 需持续按数据库实际过程校验 |
| GZ-012 | 默认工艺 `改制` | 进行中 | 基础工艺不存在时自动新增,工序默认改制 | 已提供 SQL 方案 |
| GZ-013 | 工艺计划流水号回写 | 已完成 | 改制记录可通过工艺计划流水号关联生产任务 | 测试显示 7 条已回写 |
| GZ-014 | 生产任务视图显示改制信息 | 已完成 | 改制任务订单号、零件名称、图号优先取改制记录 | 已修改视图并验证 |
| GZ-015 | 生产任务查询动态 SQL 修复 | 待执行验证 | 图号筛选不再报 4104排序正常 | 需应用完整 SQL |
| GZ-016 | MES 待加工显示改制单号 | 待联调 | MES 端改制任务订单号显示 BHGZ 编号 | 已给 SQL 方案 |
| GZ-017 | 车间派工显示改制单号 | 待联调 | 派工页订单号、零件名称、图号显示改制信息 | 依赖视图或查询调整 |
| GZ-018 | 改制记录查询页面 | 待开发 | 可按改制订单号、原订单、零件图号查询记录 | 后续新增 |
| GZ-019 | 历史记录回写处理 | 待确认 | 未回写工艺计划流水号的历史记录明确处理方式 | 当前有 3 条未回写 |
| GZ-020 | 完整业务流验收 | 待验收 | 使用测试订单完成发起、生产任务、派工、MES、入库验证 | 需业务允许测试数据 |
## 状态说明
| 状态 | 含义 |
| --- | --- |
| 已完成 | 已实现并至少完成基础验证 |
| 进行中 | 已有实现方案或部分实现,仍需数据库/页面联调确认 |
| 待执行验证 | 已提供修改 SQL但需要在数据库执行并验证 |
| 待联调 | 依赖上下游页面或接口,需要真实流程验证 |
| 待开发 | 尚未开始编码或建库 |
| 待确认 | 需要业务或数据归属确认 |
| 待验收 | 功能已基本闭环,需要按验收场景跑通 |
## 后续推进优先级
1. `GZ-015`:先修复生产任务查询动态 SQL。
2. `GZ-020`:选择测试订单跑完整流程。
3. `GZ-016``GZ-017`:验证 MES 和车间派工显示。
4. `GZ-019`:确认历史未回写记录是否需要补数据。
5. `GZ-018`:开发改制记录查询页面。

View File

@@ -0,0 +1,149 @@
# 05-验收证据
## 1. 前端检查证据
组件文件:
```text
D:\景耀\JY1.0\src\views\TechnologyCenter\PartModificationOrder\index.vue
```
执行命令:
```bash
npx eslint --ext .vue D:\景耀\JY1.0\src\views\TechnologyCenter\PartModificationOrder\index.vue
```
结果:
```text
通过
```
备注:
- 命令输出中出现 npm 日志目录权限警告,不影响 eslint 检查结果。
## 2. 设计文档证据
| 文件 | 说明 |
| --- | --- |
| `docs/零件改制/零件改制功能设计方案.md` | 设计方案 Markdown |
| `docs/零件改制/零件改制功能设计方案.pdf` | 设计方案 PDF |
| `docs/零件改制/零件改制流程图.svg` | 改制流程图 |
| `docs/零件改制/零件改制功能开发说明.md` | 汇总版开发说明 |
| `docs/零件改制/零件改制功能测试报告.md` | 测试报告 |
## 3. 数据库视图修改证据
已修改视图:
```text
dbo.车间生产管理_零件工艺计划_视图
```
关键显示逻辑:
```sql
ISNULL(dbo._改制订单记录., dbo._物料主文件_基本.) AS
ISNULL(dbo._改制订单记录., dbo._零件工艺计划.) AS
ISNULL(dbo._改制订单记录., dbo._订单信息_基础表.) AS
```
关键关联逻辑:
```sql
LEFT JOIN dbo._改制订单记录
ON dbo._零件工艺计划. = dbo._改制订单记录.
AND ISNULL(dbo._改制订单记录., 0) = 0
```
## 4. 数据库验证证据
执行 SQL
```sql
SELECT
(SELECT COUNT(*) FROM dbo._改制订单记录 WHERE ISNULL(,0)=0) AS ,
(SELECT COUNT(*) FROM dbo._改制订单记录 WHERE ISNULL(,0)=0 AND IS NOT NULL) AS ,
(SELECT COUNT(*) FROM dbo._改制订单记录 GZ INNER JOIN dbo._零件工艺计划_视图 V ON GZ. = V. WHERE ISNULL(GZ.,0)=0) AS ,
(SELECT COUNT(*) FROM dbo._改制订单记录 GZ INNER JOIN dbo._零件工艺计划_视图 V ON GZ. = V. WHERE ISNULL(GZ.,0)=0 AND (ISNULL(V.,'') <> ISNULL(GZ.,'') OR ISNULL(V.,'') <> ISNULL(GZ.,'') OR ISNULL(V.,'') <> ISNULL(GZ.,''))) AS ,
(SELECT COUNT(*) FROM (SELECT FROM dbo._改制订单记录 WHERE ISNULL(,0)=0 AND IS NOT NULL GROUP BY HAVING COUNT(*) > 1) T) AS ;
```
结果:
| 改制记录数 | 已回写工艺计划数 | 视图可关联数 | 显示不一致数 | 工艺计划重复关联数 |
| --- | --- | --- | --- | --- |
| 10 | 7 | 7 | 0 | 0 |
结论:
- 已回写工艺计划流水号的改制记录均可关联生产任务视图。
- 订单号、零件名称、零件图号显示一致。
- 未发现重复关联。
## 5. 抽样验证证据
执行 SQL
```sql
SELECT TOP 5
V.,
V.,
V.,
V.,
GZ.,
GZ.,
GZ.
FROM dbo._零件工艺计划_视图 V
INNER JOIN dbo._改制订单记录 GZ
ON V. = GZ.
WHERE ISNULL(GZ.,0)=0
ORDER BY GZ. DESC;
```
抽样结果:
| 工艺计划流水号 | 订单号 | 零件名称 | 零件图号 | 改制订单编号 |
| --- | --- | --- | --- | --- |
| 6590 | BHGZ-202606270010 | 从动同步带轮(8M50T50W-45) | XT40-2-BT40-14.09-G | BHGZ-202606270010 |
| 6589 | BHGZ-202606260009 | 防水挡盖 | XT20-02-G | BHGZ-202606260009 |
| 6588 | BHGZ-202606250008 | 止刀键 | XT30-2-01-G | BHGZ-202606250008 |
| 6587 | BHGZ202606250007 | 箱体前盖 | XT30-1-MB-01-G | BHGZ202606250007 |
| 6586 | BHGZ202606250006 | 箱体 | XT30-2-MF-02-G | BHGZ202606250006 |
## 6. 错误与修复证据
错误:
```text
消息 4104级别 16状态 1
无法绑定由多个部分组成的标识符 "车间生产管理_零件工艺计划_视图.零件图号"。
```
原因:
```sql
FROM _零件工艺计划_视图 AS P
```
主表已经使用别名 `P`,动态 SQL 条件中不能继续写原表名。
修复:
```sql
AND P. LIKE '%' + @ + '%'
AND P. >= @
AND P. <= @
```
## 7. 待补充证据
| 证据 | 状态 | 说明 |
| --- | --- | --- |
| 生产任务查询页面截图 | 待补充 | 需页面打开后截图 |
| 车间派工页面截图 | 待补充 | 需选择改制任务后截图 |
| MES 待加工页面截图 | 待补充 | 需现场终端或模拟终端截图 |
| 真实发起改制 job_id/report_id | 暂无 | 当前未通过自动化任务创建真实业务数据 |
| 完整流程测试报告 | 待补充 | 需业务允许测试数据后生成 |

View File

@@ -0,0 +1,81 @@
# 06-决策记录
## DR-001为什么要新增零件改制流程
现场存在零件改制业务,且现场计件、派工、完工入库、统计追溯都需要系统数据支撑。原线下记录无法满足过程管控和后续核算要求,因此需要将改制订单接入系统。
## DR-002为什么改制订单由技术中心发起
改制通常涉及零件图号、技术要求、加工目标等技术信息。由技术中心发起可以保证改制来源和技术要求准确,再由精工车间承接生产。
## DR-003为什么改制订单编号使用 `BHGZ`
改制订单需要与销售订单、补货订单、普通生产任务区分。使用 `BHGZ` 前缀可以让生产任务、派工、MES 加工端快速识别改制任务。
## DR-004为什么改制记录必须保存原零件名称和原零件图号
如果只保存改制后的名称和图号,后续无法追溯“从哪个零件改成哪个零件”。因此记录表必须同时保存:
```text
原零件名称
原零件图号
改制零件名称
改制零件图号
```
## DR-005为什么前后端都要校验图号不能相同
前端校验用于提高操作体验,避免无效提交。后端校验用于保证数据安全,防止绕过前端调用接口导致无意义改制记录。
## DR-006为什么要回写工艺计划流水号
早期临时方案按 `原基本件流水号` 关联改制记录,但同一个基本件可能多次改制,会导致生产任务重复显示。正式方案改为按 `工艺计划流水号` 关联,保证一条改制记录对应一条生产任务。
## DR-007为什么生产任务视图直接显示改制信息
生产任务查询、车间派工、MES 待加工等多个功能都依赖 `车间生产管理_零件工艺计划_视图`。在视图层统一改为改制信息优先显示,可以减少多个页面重复改造。
决策:
```sql
= ISNULL(, )
= ISNULL(, )
= ISNULL(, )
```
## DR-008为什么默认工艺设置为 `改制`
改制任务通常需要快速进入派工和加工。如果每次都人工制定工艺,会增加车间操作成本。自动添加默认工艺 `改制` 后,任务可以直接进入派工流程。
## DR-009为什么默认工序优先 UPDATE
部分工艺计划生成后可能已经存在一条默认空工序。如果直接 INSERT可能导致多一条工序。最终采用
```text
有默认工序 -> UPDATE 为改制
没有默认工序 -> INSERT 一条改制工序
```
## DR-010为什么动态 SQL 必须统一使用别名
`精工车间_生成任务_查询数据` 中主查询使用:
```sql
FROM _零件工艺计划_视图 AS P
```
因此动态 WHERE 中必须使用 `P.字段名`。继续使用原表名会触发 SQL Server 4104 错误。
## DR-011为什么不在当前阶段处理领料单
当前阶段目标是打通:
```text
技术中心发起 -> 精工生产任务 -> 默认工艺 -> 派工/MES 显示
```
非毛坯物料领料、仓库出库、派工限制会影响仓储流程和现场规则,需要作为后续阶段单独联调。
## DR-012为什么保留历史设计方案和测试报告
本次拆分出的 `01-06` 文档用于后续推进和任务管理,原设计方案、开发说明、测试报告保留作为上下文证据,避免历史决策丢失。

View File

@@ -0,0 +1,32 @@
# 零件改制功能文档索引
本目录用于维护“零件改制”功能的设计、开发、推进、验收和决策资料。后续继续开发时,优先从任务矩阵进入,避免重复开发和遗漏验收。
## 文档目录
| 序号 | 文档 | 用途 |
| --- | --- | --- |
| 01 | [01-项目功能内容.md](./01-项目功能内容.md) | 说明需求来源、业务场景、功能范围和流程边界 |
| 02 | [02-项目程序开发详细步骤.md](./02-项目程序开发详细步骤.md) | 记录前端、后端、数据库、查询接口的开发步骤 |
| 03 | [03-推进台账.md](./03-推进台账.md) | 记录每轮做了什么、改了哪些文件、验证了什么、下一步是什么 |
| 04 | [04-任务矩阵.md](./04-任务矩阵.md) | 按任务编号维护状态和验收标准,作为后续推进入口 |
| 05 | [05-验收证据.md](./05-验收证据.md) | 汇总命令、SQL、页面、PDF、报告等证据 |
| 06 | [06-决策记录.md](./06-决策记录.md) | 记录关键技术和业务决策,减少后续重复争论 |
## 现有辅助文档
| 文档 | 说明 |
| --- | --- |
| [零件改制功能设计方案.md](./零件改制功能设计方案.md) | 原始功能设计方案 |
| [零件改制功能设计方案.pdf](./零件改制功能设计方案.pdf) | 设计方案 PDF |
| [零件改制流程图.svg](./零件改制流程图.svg) | 改制流程图 |
| [零件改制功能开发说明.md](./零件改制功能开发说明.md) | 早期汇总版开发说明 |
| [零件改制功能测试报告.md](./零件改制功能测试报告.md) | 早期测试报告 |
## 当前推进建议
1. 先查看 [04-任务矩阵.md](./04-任务矩阵.md),确认任务状态。
2. 如继续开发,按未完成任务编号推进。
3. 每完成一轮修改,同步更新 [03-推进台账.md](./03-推进台账.md)。
4. 每次验证后,同步补充 [05-验收证据.md](./05-验收证据.md)。
5. 如出现影响后续实现方式的选择,同步补充 [06-决策记录.md](./06-决策记录.md)。

View File

@@ -0,0 +1,301 @@
# 零件改制功能开发说明
## 01-功能内容
### 1.1 需求来源
因现场计件和生产过程追溯需要,将零件改制流程接入系统管理。该需求由罗总牵头,组织技术中心、精工车间、仓储等相关部门讨论后提出。
### 1.2 应用场景
- 技术中心根据现场或订单需求发起零件改制订单。
- 改制订单进入精工车间生产流程。
- 精工车间可在生产任务查询中查看改制任务。
- 车间派工可查看改制任务并进行派工。
- MES 加工端显示改制订单编号,现场按改制任务加工。
- 改制过程形成记录,便于后续查询、统计、追溯。
### 1.3 功能范围
- 技术中心新增“零件改制订单发起”组件。
- 左侧显示订单/产品,右侧显示所选产品下的零件。
- 点击零件操作列“改制”按钮后弹窗发起改制。
- 发起改制时要求改制零件图号不能与原零件图号相同。
- 后端生成改制订单编号,规则为:`BHGZ + 年月日 + 4位顺序号`
- 后端写入 `技术中心_改制订单记录`
- 后端生成精工车间工艺计划任务。
- 后端自动添加默认工艺 `改制`
- 改制记录表回写 `工艺计划流水号`,后续查询统一按该字段关联。
- 生产任务、派工、MES 待加工显示改制订单编号。
## 02-程序开发步骤
### 2.1 前端组件
文件:
```text
src/views/TechnologyCenter/PartModificationOrder/index.vue
```
开发步骤:
1. 新建技术中心零件改制组件目录和 `index.vue`
2. 左侧订单下拉使用 `订单信息_列表_查询数据_bak` 获取订单列表。
3. 左侧订单/产品查询使用 `技术中心_改制订单_订单_查询`
4. 点击左侧产品后,右侧零件列表使用 `技术中心_改制订单_零件_查询`
5. 右侧零件表格增加操作列,提供“查看图纸”和“改制”按钮。
6. 参考 BOM 查询/维护组件“更换物料”交互调整改制弹窗。
7. 发起改制提交前判断:
```js
var oldDrawingNo = (this.form.原零件图号 || '').toString().trim()
var newDrawingNo = (this.form.改制零件图号 || '').toString().trim()
if (oldDrawingNo && newDrawingNo && oldDrawingNo === newDrawingNo) {
this.$message.warning('改制零件图号不能与原零件图号相同')
return
}
```
8. 提交接口使用 `技术中心_改制订单_发起改制`
### 2.2 后端表结构
新增或维护表:
```sql
_改制订单记录
_改制订单排序
```
`技术中心_改制订单记录` 需要包含关键字段:
```text
改制订单流水号
改制订单编号
原订单流水号
原组件流水号
原基本件流水号
原零件名称
原零件图号
改制零件名称
改制零件图号
改制数量
精工期限
工艺计划流水号
状态
发起人
发起时间
是否删除
```
如字段不存在,执行:
```sql
IF COL_LENGTH('dbo.技术中心_改制订单记录', '原零件名称') IS NULL
BEGIN
ALTER TABLE dbo._改制订单记录
ADD nvarchar(50) NULL;
END;
IF COL_LENGTH('dbo.技术中心_改制订单记录', '原零件图号') IS NULL
BEGIN
ALTER TABLE dbo._改制订单记录
ADD nvarchar(50) NULL;
END;
IF COL_LENGTH('dbo.技术中心_改制订单记录', '工艺计划流水号') IS NULL
BEGIN
ALTER TABLE dbo._改制订单记录
ADD int NULL;
END;
```
### 2.3 后端发起改制过程
存储过程:
```text
技术中心_改制订单_发起改制
```
处理步骤:
1. 校验原订单流水号、原组件流水号、改制零件名称、改制零件图号、改制数量。
2. 后端再次校验原零件图号和改制零件图号不能相同。
3. 生成改制订单编号。
4. 插入 `技术中心_改制订单记录`
5. 插入 `车间生产管理工艺_零件工艺计划`
6. 回写 `技术中心_改制订单记录.工艺计划流水号`
7. 查询基础工艺表是否存在 `改制`
8. 不存在则插入 `车间生产管理工艺_基础表_工艺名称`
9. 更新或插入 `车间生产管理工艺_零件工序`,默认工艺为 `改制`
10. 调用或复用 `精工车间_工艺保存_派工`,将工艺计划推进到工艺完成状态。
11. 更新原组件和原订单为精工车间承接。
### 2.4 查询接口调整
需要调整的查询:
```text
精工车间生产任务查询
MES_机加工MES_零件待加工显示
车间派工相关查询
```
关联方式统一改为:
```sql
LEFT JOIN _改制订单记录 AS GZ
ON . = GZ.
AND ISNULL(GZ., 0) = 0
```
订单号显示规则:
```sql
ISNULL(GZ., ) AS
```
## 03-推进台账
| 轮次 | 工作内容 | 修改文件/程序 | 验证内容 | 下一步 |
| --- | --- | --- | --- | --- |
| 1 | 梳理零件改制流程方案 | `零件改制功能设计方案.md` | 方案内容、流程承接关系、入库节点 | 生成 PDF 和流程图 |
| 2 | 生成方案 PDF 和流程图 | `part-modification-plan.html``part-modification-plan.pdf` | PDF 文件生成、流程图位置调整 | 开发前端组件 |
| 3 | 新建零件改制组件 | `src/views/TechnologyCenter/PartModificationOrder/index.vue` | 组件路径、动态路由加载不再报 ENOENT | 调整查询接口 |
| 4 | 查询接口调整 | `PartModificationOrder/index.vue` | 订单查询、零件查询接口名调整 | 优化界面 |
| 5 | 参考 BOM 更换物料功能调整界面 | `PartModificationOrder/index.vue` | 弹窗交互、物料选择样式、eslint | 后端过程设计 |
| 6 | 设计发起改制后端过程 | `技术中心_改制订单_发起改制` | 生成改制记录、生成精工任务 | 增加改制订单编号规则 |
| 7 | 改制订单编号规则 | `技术中心_改制订单排序`、发起过程 | `BHGZ + 年月日 + 4位顺序号` | 增加默认工艺 |
| 8 | 增加默认工艺 `改制` | 发起过程、基础工艺表、零件工序表 | 自动添加默认工艺并推进到工艺完成 | 查询显示改制订单号 |
| 9 | 查询关联改制记录 | 生产任务查询、MES 待加工显示 | 订单号优先显示改制订单编号 | 完善验收 |
| 10 | 增加原零件信息字段 | `技术中心_改制订单记录`、发起过程 | 记录原零件名称、原零件图号 | 联调完整流程 |
## 04-任务矩阵
| 任务编号 | 任务名称 | 状态 | 验收标准 |
| --- | --- | --- | --- |
| GZ-001 | 编写零件改制功能方案 | 已完成 | 文档包含背景、场景、流程、表设计、接口设计 |
| GZ-002 | 生成 PDF 和流程图 | 已完成 | PDF 存在,流程图位置正确,流程包含入库 |
| GZ-003 | 新建技术中心改制组件 | 已完成 | 路由可加载 `PartModificationOrder/index.vue` |
| GZ-004 | 左侧订单/产品查询 | 已完成 | 可通过订单编号下拉筛选并显示订单/产品 |
| GZ-005 | 右侧零件查询 | 已完成 | 点击左侧产品后显示对应零件 |
| GZ-006 | 发起改制弹窗 | 已完成 | 可录入改制零件名称、图号、数量、精工期限 |
| GZ-007 | 图号一致校验 | 已完成 | 原零件图号与改制零件图号相同时禁止提交 |
| GZ-008 | 改制订单记录表 | 待数据库执行 | 表包含原零件和改制零件信息 |
| GZ-009 | 改制订单编号生成 | 待数据库执行 | 编号符合 `BHGZyyyyMMdd0001` 规则 |
| GZ-010 | 发起改制后端过程 | 待数据库执行 | 成功写入记录并返回改制订单编号、工艺计划流水号 |
| GZ-011 | 默认工艺 `改制` | 待数据库执行 | 基础工艺不存在时自动创建,工序默认改制 |
| GZ-012 | 工艺计划流水号回写 | 待数据库执行 | 改制记录表能通过工艺计划流水号关联生产任务 |
| GZ-013 | 生产任务查询显示改制单号 | 待联调 | 改制任务显示改制订单编号,非改制任务显示原订单号 |
| GZ-014 | MES 待加工显示改制单号 | 待联调 | 加工端订单号优先显示改制订单编号 |
| GZ-015 | 改制记录查询 | 待开发 | 可按改制订单编号、原订单、零件图号查询记录 |
## 05-验收证据
### 5.1 前端文件
```text
D:\景耀\JY1.0\src\views\TechnologyCenter\PartModificationOrder\index.vue
```
### 5.2 文档与 PDF
```text
D:\景耀\JY1.0\零件改制功能设计方案.md
D:\景耀\JY1.0\part-modification-plan.html
D:\景耀\JY1.0\part-modification-plan.pdf
```
### 5.3 已执行验证命令
```bash
npx eslint --ext .vue D:\景耀\JY1.0\src\views\TechnologyCenter\PartModificationOrder\index.vue
```
结果:已通过。
### 5.4 关键 SQL 验收点
发起改制成功后应能查到:
```sql
SELECT *
FROM _改制订单记录
WHERE LIKE 'BHGZ%';
```
改制记录应回写工艺计划流水号:
```sql
SELECT , , , , ,
FROM _改制订单记录
WHERE IS NOT NULL;
```
默认工艺应生成:
```sql
SELECT *
FROM _基础表_工艺名称
WHERE = N'改制';
```
默认工序应生成或被更新:
```sql
SELECT *
FROM _零件工序
WHERE = @;
```
### 5.5 页面验收点
- 技术中心零件改制页面可以正常打开。
- 订单编号下拉可选择订单。
- 左侧订单/产品数据去重显示。
- 点击左侧产品后,右侧显示零件。
- 点击“改制”打开弹窗。
- 改制零件图号与原图号相同时,页面阻止提交。
- 改制提交成功后返回成功提示。
- 精工车间生产任务查询可看到改制任务。
- MES 待加工显示中,改制任务订单号显示为 `BHGZ...`
## 06-决策记录
### 6.1 为什么改制订单号使用独立编号
改制订单不是原销售订单,也不是普通生产订单。使用 `BHGZ + 年月日 + 4位顺序号` 可以明确区分补货改制任务,便于车间识别、计件统计和后续追溯。
### 6.2 为什么改制记录表要保存工艺计划流水号
早期临时方案按 `原基本件流水号` 关联改制记录,但同一个基本件可能多次改制,会导致生产任务或 MES 待加工数据重复显示。最终决定在发起改制时回写 `工艺计划流水号`,后续查询统一按 `工艺计划流水号` 关联,保证一对一。
### 6.3 为什么需要保存原零件名称和原零件图号
改制后零件名称和图号会变化,如果只保存改制后的信息,后续无法准确追溯改制来源。增加 `原零件名称``原零件图号` 后,改制记录可以完整展示“从哪个零件改成哪个零件”。
### 6.4 为什么前后端都校验图号不能相同
前端校验用于提升用户体验,避免无效提交。后端校验用于保证数据安全,防止绕过前端直接调用接口造成无意义改制记录。
### 6.5 为什么默认工艺设为 `改制`
改制任务进入精工车间后,需要可派工、可加工、可计件。如果每次都人工制定工艺,会增加现场操作成本。自动添加默认工艺 `改制` 后,改制任务可以快速进入派工和生产流程。
### 6.6 为什么不继续按基本件流水号关联改制记录
基本件流水号代表原零件来源,不代表某一次具体改制任务。改制任务真正进入车间后,对应的是新生成的 `工艺计划流水号`。因此正式查询必须按 `工艺计划流水号` 关联,避免重复数据和错误显示。
### 6.7 为什么生产任务和 MES 显示改制订单编号
现场需要识别当前任务是改制任务,并且计件、派工、加工、入库都需要统一单号。生产任务和 MES 端优先显示改制订单编号,可以减少现场沟通成本。
## 后续建议
1. 补充 `技术中心_改制订单_记录_查询` 接口。
2. 建立改制记录查询页面。
3. 对生产任务查询、车间派工、MES 待加工显示做完整联调。
4. 补充改制任务取消、退料、异常处理规则。
5. 如后续恢复“非毛坯物料改制需要领料”,再扩展领料单生成与仓库出库状态。

View File

@@ -0,0 +1,187 @@
# 零件改制功能测试报告
## 1. 测试范围
本次测试针对零件改制功能近期修改内容进行验证,重点覆盖:
- 技术中心发起零件改制组件静态检查。
- `车间生产管理_零件工艺计划_视图` 改制记录关联验证。
- 改制订单编号、改制零件名称、改制零件图号在生产任务数据源中的显示验证。
- `技术中心_改制订单记录.工艺计划流水号` 回写数据检查。
- 改制记录与工艺计划一对一关联检查,避免重复显示。
本次测试未新建真实改制订单,避免污染业务数据。
## 2. 测试环境
| 项目 | 内容 |
| --- | --- |
| 前端项目 | `D:\景耀\JY1.0` |
| 数据库 | `ERPTOOL_JY_20250826Back` |
| SQL Server | 内网 SQL Server |
| 测试日期 | 2026-06-27 |
| 测试方式 | 前端静态检查 + 数据库只读查询验证 |
## 3. 测试项
### 3.1 前端组件静态检查
测试对象:
```text
D:\景耀\JY1.0\src\views\TechnologyCenter\PartModificationOrder\index.vue
```
执行命令:
```bash
npx eslint --ext .vue D:\景耀\JY1.0\src\views\TechnologyCenter\PartModificationOrder\index.vue
```
结果:
```text
通过
```
说明:
- 组件语法与 eslint 规则检查通过。
- 命令输出中存在 npm 日志目录权限警告,不影响组件检查结果。
### 3.2 改制记录回写检查
执行 SQL
```sql
SELECT
(SELECT COUNT(*) FROM dbo._改制订单记录 WHERE ISNULL(,0)=0) AS ,
(SELECT COUNT(*) FROM dbo._改制订单记录 WHERE ISNULL(,0)=0 AND IS NOT NULL) AS ,
(SELECT COUNT(*) FROM dbo._改制订单记录 GZ INNER JOIN dbo._零件工艺计划_视图 V ON GZ. = V. WHERE ISNULL(GZ.,0)=0) AS ,
(SELECT COUNT(*) FROM dbo._改制订单记录 GZ INNER JOIN dbo._零件工艺计划_视图 V ON GZ. = V. WHERE ISNULL(GZ.,0)=0 AND (ISNULL(V.,'') <> ISNULL(GZ.,'') OR ISNULL(V.,'') <> ISNULL(GZ.,'') OR ISNULL(V.,'') <> ISNULL(GZ.,''))) AS ,
(SELECT COUNT(*) FROM (SELECT FROM dbo._改制订单记录 WHERE ISNULL(,0)=0 AND IS NOT NULL GROUP BY HAVING COUNT(*) > 1) T) AS ;
```
结果:
| 改制记录数 | 已回写工艺计划数 | 视图可关联数 | 显示不一致数 | 工艺计划重复关联数 |
| --- | --- | --- | --- | --- |
| 10 | 7 | 7 | 0 | 0 |
结论:
- 当前共有 10 条未删除改制记录。
- 其中 7 条已回写 `工艺计划流水号`
- 已回写的 7 条均可通过 `车间生产管理_零件工艺计划_视图` 关联到生产任务。
- 关联后的订单号、零件名称、零件图号与改制记录一致,不一致数量为 0。
- 未发现同一 `工艺计划流水号` 对应多条未删除改制记录的情况。
### 3.3 改制任务显示字段抽样检查
执行 SQL
```sql
SELECT TOP 5
V.,
V.,
V.,
V.,
GZ.,
GZ.,
GZ.
FROM dbo._零件工艺计划_视图 V
INNER JOIN dbo._改制订单记录 GZ
ON V. = GZ.
WHERE ISNULL(GZ.,0)=0
ORDER BY GZ. DESC;
```
抽样结果:
| 工艺计划流水号 | 订单号 | 零件名称 | 零件图号 | 改制订单编号 | 改制零件名称 | 改制零件图号 |
| --- | --- | --- | --- | --- | --- | --- |
| 6590 | BHGZ-202606270010 | 从动同步带轮(8M50T50W-45) | XT40-2-BT40-14.09-G | BHGZ-202606270010 | 从动同步带轮(8M50T50W-45) | XT40-2-BT40-14.09-G |
| 6589 | BHGZ-202606260009 | 防水挡盖 | XT20-02-G | BHGZ-202606260009 | 防水挡盖 | XT20-02-G |
| 6588 | BHGZ-202606250008 | 止刀键 | XT30-2-01-G | BHGZ-202606250008 | 止刀键 | XT30-2-01-G |
| 6587 | BHGZ202606250007 | 箱体前盖 | XT30-1-MB-01-G | BHGZ202606250007 | 箱体前盖 | XT30-1-MB-01-G |
| 6586 | BHGZ202606250006 | 箱体 | XT30-2-MF-02-G | BHGZ202606250006 | 箱体 | XT30-2-MF-02-G |
结论:
- `车间生产管理_零件工艺计划_视图.订单号` 已优先显示改制订单编号。
- `车间生产管理_零件工艺计划_视图.零件名称` 已优先显示改制零件名称。
- `车间生产管理_零件工艺计划_视图.零件图号` 已优先显示改制零件图号。
## 4. 已修改内容确认
### 4.1 视图修改
已修改:
```text
dbo.车间生产管理_零件工艺计划_视图
```
核心逻辑:
```sql
ISNULL(dbo._改制订单记录., dbo._物料主文件_基本.) AS
ISNULL(dbo._改制订单记录., dbo._零件工艺计划.) AS
ISNULL(dbo._改制订单记录., dbo._订单信息_基础表.) AS
```
关联逻辑:
```sql
LEFT JOIN dbo._改制订单记录
ON dbo._零件工艺计划. = dbo._改制订单记录.
AND ISNULL(dbo._改制订单记录., 0) = 0
```
## 5. 测试结论
本轮测试通过。
已验证:
- 前端改制组件静态检查通过。
- 改制记录已按 `工艺计划流水号` 与生产任务视图关联。
- 已回写工艺计划流水号的改制记录,生产任务视图显示字段一致。
- 未发现工艺计划重复关联改制记录导致重复显示的问题。
- 生产任务数据源中的订单号、零件名称、零件图号已优先显示改制记录中的信息。
## 6. 风险与遗留项
### 6.1 仍有历史记录未回写工艺计划流水号
当前 10 条未删除改制记录中,有 7 条已回写 `工艺计划流水号`,仍有 3 条未回写。
影响:
- 未回写的历史改制记录无法通过新视图逻辑显示改制订单编号、改制零件名称、改制零件图号。
建议:
- 如这些历史记录仍需展示,需要补写 `工艺计划流水号`
- 新发起的改制订单必须在发起过程内立即回写 `工艺计划流水号`
### 6.2 本次未执行真实新增改制订单
本次测试没有调用 `技术中心_改制订单_发起改制` 新增业务数据。
原因:
- 避免污染当前业务库。
建议:
- 如需完整流程验收可指定一条测试订单和测试零件在业务允许的情况下执行一次真实发起改制再验证生产任务、派工、MES 待加工端显示。
## 7. 下一步建议
1. 确认 3 条未回写历史改制记录是否需要补数据。
2. 使用一条测试订单执行完整发起改制流程。
3. 验证生产任务查询页面显示。
4. 验证车间派工页面显示。
5. 验证 MES 待加工显示。
6. 验证改制默认工艺 `改制` 是否可直接派工和加工。

View File

@@ -0,0 +1,477 @@
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>零件改制功能设计方案</title>
<style>
@page { size: A4; margin: 18mm 16mm; }
body {
font-family: "Microsoft YaHei", "SimSun", Arial, sans-serif;
color: #1f2933;
font-size: 13px;
line-height: 1.65;
}
h1 {
font-size: 26px;
text-align: center;
margin: 0 0 24px;
padding-bottom: 12px;
border-bottom: 2px solid #2f80ed;
}
h2 {
font-size: 19px;
margin: 24px 0 10px;
padding-left: 8px;
border-left: 4px solid #2f80ed;
page-break-after: avoid;
}
h3 {
font-size: 16px;
margin: 18px 0 8px;
page-break-after: avoid;
}
p { margin: 7px 0; }
ul { margin: 6px 0 10px 22px; padding: 0; }
li { margin: 3px 0; }
table {
width: 100%;
border-collapse: collapse;
margin: 10px 0 16px;
page-break-inside: avoid;
}
th, td {
border: 1px solid #cbd5e1;
padding: 6px 8px;
text-align: left;
vertical-align: top;
word-break: break-word;
}
th {
background: #eef4ff;
font-weight: 600;
}
code {
font-family: Consolas, "Microsoft YaHei", monospace;
background: #f3f4f6;
padding: 1px 4px;
border-radius: 3px;
}
pre {
background: #f8fafc;
border: 1px solid #d8dee9;
padding: 10px;
overflow-wrap: break-word;
white-space: pre-wrap;
page-break-inside: avoid;
}
figure {
margin: 14px 0 20px;
page-break-inside: avoid;
}
figure img {
display: block;
width: 100%;
max-width: 100%;
height: auto;
border: 1px solid #d8dee9;
}
figcaption {
margin-top: 6px;
color: #64748b;
font-size: 12px;
text-align: center;
}
</style>
</head>
<body>
<h1>零件改制功能设计方案</h1>
<h2>0. 需求背景</h2>
<h3>0.1 需求提出</h3>
<p>本需求由罗总牵头,组织技术中心、精工车间、仓储等相关部门讨论后提出。</p>
<h3>0.2 提出原因</h3>
<p>当前现场存在零件改制业务,但改制过程尚未完整纳入系统管理。由于现场计件、派工生产、完工入库和后续统计都需要明确的数据来源,原有线下记录或零散流转方式无法满足计件核算、过程追溯和部门协同要求。</p>
<p>因此,需要在系统内补充零件改制订单流程,将改制订单从技术中心发起、精工车间派工生产到完工入库的全过程纳入系统管理。</p>
<h3>0.3 应用场景</h3>
<p>本功能主要应用于以下场景:</p>
<ul><li>技术中心根据现场或订单需求发起零件改制订单。</li><li>精工车间根据改制订单制定工艺、派工生产。</li><li>改制订单涉及非毛坯物料时,由系统生成领料单并交由仓库出库。</li><li>改制加工完成后,按现有流程办理入库。</li><li>现场计件、生产统计、入库记录和后续追溯均以系统内改制订单数据为依据。</li></ul>
<h2>1. 需求目标</h2>
<p>基于项目现有精工车间生产流程,新增“零件改制”业务。</p>
<p>本次方案调整为:</p>
<ul><li>在技术中心新增组件发起改制订单。</li><li>改制订单生成后进入现有精工车间生产任务流程。</li><li>精工车间生产任务查询组件可以查看改制订单。</li><li>车间派工组件可以查看改制订单并继续派工。</li><li>新增改制记录查询,用于查看改制订单的发起、生产、派工、领料和完工状态。</li><li>领料时根据改制订单和物料来源判断是否生成领料单。</li></ul>
<p>核心原则:</p>
<ul><li>技术中心负责发起改制订单。</li><li>精工车间复用现有生产任务、工艺、派工、加工流程。</li><li>仓储只在需要额外领用非毛坯物料时介入。</li><li>改制记录独立查询,但状态关联现有生产任务状态。</li></ul>
<h2>2. 现有流程承接关系</h2>
<p>根据项目现有页面,改制订单应承接以下流程:</p>
<table>
<thead><tr><th>流程节点</th><th>现有承接页面</th><th>说明</th></tr></thead>
<tbody>
<tr><td>技术发起</td><td>技术中心新增页面</td><td>发起改制订单,填写改制要求</td></tr>
<tr><td>生成任务</td><td>精工车间生产任务查询</td><td>改制订单进入生产任务列表</td></tr>
<tr><td>制定工艺</td><td>精工车间制定工艺</td><td>可复用或复制原工艺后调整</td></tr>
<tr><td>车间派工</td><td>精工车间车间派工</td><td>工艺完成后派工</td></tr>
<tr><td>领料判断</td><td>领料/仓储出库流程</td><td>根据物料类型决定是否生成领料单</td></tr>
<tr><td>加工执行</td><td>精工车间现有加工流程</td><td>扫码、报工、质检等复用现有逻辑</td></tr>
<tr><td>入库</td><td>仓储入库流程</td><td>改制完工后按现有流程办理入库</td></tr>
<tr><td>记录查询</td><td>改制记录查询</td><td>查看改制全流程</td></tr>
</tbody>
</table>
<figure><img src="零件改制流程图.svg" alt="零件改制业务流程图"><figcaption>零件改制业务流程图</figcaption></figure>
<h2>3. 页面设计</h2>
<h3>3.1 技术中心新增页面:改制订单发起</h3>
<p>建议路径:</p>
<pre><code>src/views/TechnologyCenter/PartModificationOrder/index.vue</code></pre>
<p>页面名称:</p>
<pre><code>改制订单发起</code></pre>
<p>归属模块:</p>
<pre><code>技术中心</code></pre>
<p>主要功能:</p>
<ul><li>查询需要改制的原订单、原零件或原自制件。</li><li>发起改制订单。</li><li>填写改制后零件信息、改制数量、改制原因、技术要求。</li><li>指定是否使用原件改制、毛坯改制或其他物料改制。</li><li>提交后生成改制订单,并进入精工车间生产任务查询。</li></ul>
<h3>3.2 精工车间修改页面:生产任务查询</h3>
<p>现有路径:</p>
<pre><code>src/views/SeikoWorkshop/ProductionTaskQuery/index.vue</code></pre>
<p>需要支持:</p>
<ul><li>查询改制订单生成的生产任务。</li><li>增加任务类型筛选。</li><li>增加任务类型列。</li><li>改制任务显示 <code>改制</code> 标识。</li><li>改制任务继续使用现有 <code>工艺</code><code>派工</code> 按钮。</li></ul>
<h3>3.3 精工车间修改页面:车间派工</h3>
<p>现有路径:</p>
<pre><code>src/views/SeikoWorkshop/WorkshopAssignment/index.vue</code></pre>
<p>需要支持:</p>
<ul><li>查询改制订单对应的待派工任务。</li><li>增加任务类型筛选。</li><li>增加任务类型列。</li><li>复用现有已派工查询、待派工工序查询、派工、取消派工逻辑。</li></ul>
<h3>3.4 新增页面:改制记录查询</h3>
<p>建议路径:</p>
<pre><code>src/views/TechnologyCenter/PartModificationRecord/index.vue</code></pre>
<p>也可以放在精工车间模块,建议最终按业务归属确认。</p>
<p>页面名称:</p>
<pre><code>改制记录查询</code></pre>
<p>主要功能:</p>
<ul><li>查询改制订单记录。</li><li>查看改制订单状态。</li><li>查看是否生成领料单。</li><li>查看仓库是否已出库。</li><li>查看精工生产任务、工艺、派工、完工状态。</li><li>支持跳转生产任务查询、车间派工、零件追溯。</li></ul>
<h2>4. 改制订单类型</h2>
<p>改制订单需要明确物料来源,建议增加字段:</p>
<pre><code>改制来源类型</code></pre>
<p>建议枚举:</p>
<table>
<thead><tr><th>改制来源类型</th><th>说明</th><th>是否生成领料单</th></tr></thead>
<tbody>
<tr><td>原现自制订单</td><td>使用原现有自制订单零件进行改制</td><td></td></tr>
<tr><td>毛坯改制</td><td>直接使用已有毛坯进行改制</td><td></td></tr>
<tr><td>非毛坯物料改制</td><td>使用仓库其他物料、半成品或成品改制</td><td></td></tr>
</tbody>
</table>
<p>说明:</p>
<ul><li>“原现自制订单”指当前已经存在的自制订单或自制零件,改制时不需要额外从仓库领料。</li><li>“毛坯改制”指直接使用毛坯进行改制,不额外生成领料单。</li><li>“非毛坯物料改制”指改制需要领用库存中的非毛坯物料,需要生成领料单并由仓库出库。</li></ul>
<h2>5. 领料规则</h2>
<h3>5.1 领料判断条件</h3>
<p>领料时增加判断:</p>
<pre><code>如果是改制订单,并且使用的物料不是毛坯,则生成领料单,由仓库物料出库。
如果是原现自制订单改制,或者直接使用毛坯改制,则不生成领料单。</code></pre>
<p>规则可表达为:</p>
<pre><code>是否生成领料单 =
是否改制订单 === 1
且 改制来源类型 === 非毛坯物料改制
且 是否毛坯 !== 1</code></pre>
<h3>5.2 生成领料单场景</h3>
<p>以下场景需要生成领料单:</p>
<ul><li>改制订单使用库存半成品。</li><li>改制订单使用库存成品。</li><li>改制订单使用其他非毛坯物料。</li><li>改制订单指定的物料需要仓库出库。</li></ul>
<p>生成后流程:</p>
<p>1. 技术中心发起改制订单。 2. 系统判断需要领料。 3. 生成领料单。 4. 仓库根据领料单出库。 5. 出库完成后,精工车间继续生产、工艺、派工。</p>
<h3>5.3 不生成领料单场景</h3>
<p>以下场景不生成领料单:</p>
<ul><li>原现自制订单改制。</li><li>直接使用毛坯改制。</li><li>改制对象已经在精工车间现场,不需要仓库出库。</li></ul>
<p>不生成领料单时:</p>
<ul><li>改制订单直接进入精工生产任务。</li><li>生产任务查询可查看。</li><li>车间派工可查看并派工。</li></ul>
<h3>5.4 领料状态字段</h3>
<p>建议改制订单增加以下字段:</p>
<table>
<thead><tr><th>字段名</th><th>说明</th></tr></thead>
<tbody>
<tr><td>是否需要领料</td><td>1 是0 否</td></tr>
<tr><td>是否已生成领料单</td><td>1 是0 否</td></tr>
<tr><td>领料单号</td><td>生成的领料单编号</td></tr>
<tr><td>领料状态</td><td>未生成、待出库、已出库、已取消</td></tr>
<tr><td>出库日期</td><td>仓库出库日期</td></tr>
<tr><td>出库人</td><td>仓库操作人</td></tr>
</tbody>
</table>
<h2>6. 业务流程</h2>
<h3>6.1 技术中心发起改制订单</h3>
<p>用户进入技术中心“改制订单发起”页面。</p>
<p>查询原始数据:</p>
<ul><li>订单编号</li><li>产品/部件名称</li><li>零件名称</li><li>图号</li><li>原自制订单</li><li>库存物料</li><li>毛坯物料</li></ul>
<p>发起改制时填写:</p>
<ul><li>改制订单号</li><li>原订单编号</li><li>原零件名称</li><li>原零件图号</li><li>改制零件名称</li><li>改制零件图号</li><li>改制数量</li><li>改制来源类型</li><li>是否毛坯</li><li>物料编号</li><li>物料名称</li><li>改制原因</li><li>改制要求</li><li>技术备注</li><li>精工期限</li></ul>
<p>提交时校验:</p>
<ul><li>改制数量必须大于 0。</li><li>改制来源类型不能为空。</li><li>改制原因不能为空。</li><li>改制要求不能为空。</li><li>精工期限不能为空。</li><li>如果来源类型为非毛坯物料改制,必须选择物料编号。</li></ul>
<h3>6.2 后端生成改制订单</h3>
<p>提交后,后端需要同时处理:</p>
<ul><li>写入改制订单主记录。</li><li>根据改制来源类型判断是否生成领料单。</li><li>生成精工车间生产任务。</li><li>写入任务类型为 <code>改制</code></li><li>关联改制订单号和新工艺计划流水号。</li></ul>
<h3>6.3 进入精工车间生产任务查询</h3>
<p>改制订单生成后,应能在现有接口中查到:</p>
<pre><code>精工车间_生成任务_查询数据</code></pre>
<p>建议返回字段增加:</p>
<ul><li>任务类型</li><li>是否改制</li><li>改制订单号</li><li>改制来源类型</li><li>是否需要领料</li><li>领料状态</li><li>改制原因</li><li>改制要求</li></ul>
<p>生产任务查询页面显示:</p>
<ul><li><code>任务类型 = 改制</code></li><li><code>是否需要领料 = 1</code><code>领料状态 !== 已出库</code>,可显示领料状态提示。</li></ul>
<p>是否允许工艺/派工,需要按业务决定:</p>
<ul><li>如果非毛坯物料改制必须先出库,建议未出库前允许制定工艺,但不允许派工。</li><li>如果现场允许先派工后补出库,则只做提示,不阻断派工。</li></ul>
<p>建议采用更稳妥规则:</p>
<pre><code>需要领料且未出库:允许制定工艺,不允许派工。
不需要领料:正常工艺、派工。
需要领料且已出库:正常工艺、派工。</code></pre>
<h3>6.4 制定工艺</h3>
<p>改制订单在生产任务查询中点击 <code>工艺</code>,进入现有:</p>
<pre><code>/SeikoWorkshop/DevelopProcess</code></pre>
<p>工艺规则:</p>
<ul><li>改制订单必须生成新的工艺计划流水号。</li><li>不覆盖原自制订单或原零件工艺。</li><li>可支持从原工艺复制后调整。</li><li>工艺保存后,任务状态进入 <code>工艺完成</code></li></ul>
<h3>6.5 车间派工</h3>
<p>工艺完成后进入现有车间派工页面:</p>
<pre><code>src/views/SeikoWorkshop/WorkshopAssignment/index.vue</code></pre>
<p>现有查询接口:</p>
<pre><code>精工车间_车间派工_查询</code></pre>
<p>改制订单派工前判断:</p>
<ul><li>不需要领料:允许派工。</li><li>需要领料且已出库:允许派工。</li><li>需要领料但未出库:禁止派工,并提示“改制订单物料未出库,不能派工”。</li></ul>
<p>派工明细继续复用现有接口:</p>
<pre><code>车间生产管理工艺_零件工序_已派工查询
车间生产管理工艺_零件工序_派工_工序查询
车间生产管理工艺_零件工序_派工
车间生产管理工艺_零件工序_取消派工</code></pre>
<h3>6.6 仓库出库</h3>
<p>当改制订单需要领料时,系统生成领料单。</p>
<p>仓库根据领料单完成出库后,需要回写:</p>
<ul><li>领料状态 = 已出库</li><li>出库日期</li><li>出库人</li><li>出库数量</li></ul>
<p>出库完成后,精工车间派工限制解除。</p>
<h3>6.7 加工和完工</h3>
<p>改制订单派工后,继续走现有精工车间加工流程:</p>
<ul><li>工序派工</li><li>扫码加工</li><li>完工报工</li><li>质检</li><li>零件追溯</li><li>工时统计</li></ul>
<p>完工后改制记录状态同步为:</p>
<pre><code>已完成</code></pre>
<h2>7. 数据字段设计</h2>
<h3>7.1 改制订单主记录字段</h3>
<table>
<thead><tr><th>字段名</th><th>说明</th></tr></thead>
<tbody>
<tr><td>改制订单号</td><td>改制业务编号</td></tr>
<tr><td>原订单编号</td><td>原订单编号</td></tr>
<tr><td>原订单流水号</td><td>原订单流水号</td></tr>
<tr><td>原组件流水号</td><td>原组件流水号</td></tr>
<tr><td>原基本件流水号</td><td>原零件流水号</td></tr>
<tr><td>原工艺计划流水号</td><td>原工艺计划流水号</td></tr>
<tr><td>原零件名称</td><td>改制前零件名称</td></tr>
<tr><td>原零件图号</td><td>改制前零件图号</td></tr>
<tr><td>原数量</td><td>原数量</td></tr>
<tr><td>改制零件名称</td><td>改制后零件名称</td></tr>
<tr><td>改制零件图号</td><td>改制后零件图号</td></tr>
<tr><td>改制数量</td><td>改制数量</td></tr>
<tr><td>改制来源类型</td><td>原现自制订单、毛坯改制、非毛坯物料改制</td></tr>
<tr><td>是否毛坯</td><td>1 是0 否</td></tr>
<tr><td>物料编号</td><td>使用物料编号</td></tr>
<tr><td>物料名称</td><td>使用物料名称</td></tr>
<tr><td>物料流水号</td><td>使用物料流水号</td></tr>
<tr><td>是否需要领料</td><td>1 是0 否</td></tr>
<tr><td>是否已生成领料单</td><td>1 是0 否</td></tr>
<tr><td>领料单号</td><td>领料单编号</td></tr>
<tr><td>领料状态</td><td>未生成、待出库、已出库、已取消</td></tr>
<tr><td>改制原因</td><td>改制原因</td></tr>
<tr><td>改制要求</td><td>改制要求</td></tr>
<tr><td>技术备注</td><td>技术备注</td></tr>
<tr><td>精工期限</td><td>精工完工期限</td></tr>
<tr><td>新基本件流水号</td><td>改制任务生成的新零件流水号</td></tr>
<tr><td>新工艺计划流水号</td><td>改制任务生成的新工艺计划流水号</td></tr>
<tr><td>发起人</td><td>当前用户 ID</td></tr>
<tr><td>发起日期</td><td>发起时间</td></tr>
<tr><td>状态</td><td>改制订单状态</td></tr>
<tr><td>是否启用</td><td>逻辑删除标识</td></tr>
</tbody>
</table>
<h3>7.2 改制订单状态</h3>
<table>
<thead><tr><th>状态</th><th>说明</th></tr></thead>
<tbody>
<tr><td>待领料</td><td>需要领料,领料单未出库</td></tr>
<tr><td>待工艺</td><td>不需要领料或已出库,等待制定工艺</td></tr>
<tr><td>工艺完成</td><td>工艺已保存,等待派工</td></tr>
<tr><td>待派工</td><td>工艺完成且满足派工条件</td></tr>
<tr><td>加工中</td><td>已派工或已开始加工</td></tr>
<tr><td>已完成</td><td>改制任务完工</td></tr>
<tr><td>已取消</td><td>改制订单取消</td></tr>
</tbody>
</table>
<p>说明:</p>
<ul><li>如果不需要领料,提交后可直接进入 <code>待工艺</code></li><li>如果需要领料,提交后进入 <code>待领料</code></li><li>仓库出库后从 <code>待领料</code> 转为 <code>待工艺</code> 或保持生产任务状态,由查询时关联显示。</li></ul>
<h2>8. API 设计</h2>
<p>项目请求继续使用:</p>
<pre><code>this.CreateData(type, name, param, pageSize, pageCurrent)
this.ExecDatabase(Data)</code></pre>
<h3>8.1 技术中心查询可改制对象</h3>
<pre><code>var Data = this.CreateData('11', '技术中心_改制订单_可改制对象_查询', param, this.pageSize, this.pageCurrent)</code></pre>
<h3>8.2 技术中心发起改制订单</h3>
<pre><code>var Data = this.CreateData('12', '技术中心_改制订单_发起改制', param)</code></pre>
<p>参数建议:</p>
<table>
<thead><tr><th>参数名</th><th>说明</th></tr></thead>
<tbody>
<tr><td>原订单流水号</td><td>原订单流水号</td></tr>
<tr><td>原组件流水号</td><td>原组件流水号</td></tr>
<tr><td>原基本件流水号</td><td>原基本件流水号</td></tr>
<tr><td>原工艺计划流水号</td><td>原工艺计划流水号</td></tr>
<tr><td>原订单编号</td><td>原订单编号</td></tr>
<tr><td>原零件名称</td><td>原零件名称</td></tr>
<tr><td>原零件图号</td><td>原零件图号</td></tr>
<tr><td>改制零件名称</td><td>改制零件名称</td></tr>
<tr><td>改制零件图号</td><td>改制零件图号</td></tr>
<tr><td>改制数量</td><td>改制数量</td></tr>
<tr><td>改制来源类型</td><td>原现自制订单、毛坯改制、非毛坯物料改制</td></tr>
<tr><td>是否毛坯</td><td>是否毛坯</td></tr>
<tr><td>物料流水号</td><td>使用物料流水号</td></tr>
<tr><td>物料编号</td><td>物料编号</td></tr>
<tr><td>物料名称</td><td>物料名称</td></tr>
<tr><td>改制原因</td><td>改制原因</td></tr>
<tr><td>改制要求</td><td>改制要求</td></tr>
<tr><td>技术备注</td><td>技术备注</td></tr>
<tr><td>精工期限</td><td>精工期限</td></tr>
<tr><td>发起人</td><td>当前用户 ID</td></tr>
</tbody>
</table>
<p>后端处理结果:</p>
<ul><li>生成改制订单。</li><li>判断是否生成领料单。</li><li>生成精工生产任务。</li><li>返回 <code>result</code><code>改制订单号</code><code>领料单号</code><code>是否需要领料</code></li></ul>
<h3>8.3 改制记录查询</h3>
<pre><code>var Data = this.CreateData('11', '技术中心_改制订单_记录_查询', param, this.pageSize, this.pageCurrent)</code></pre>
<h3>8.4 改制订单详情</h3>
<pre><code>var Data = this.CreateData('11', '技术中心_改制订单_详情_查询', param)</code></pre>
<h3>8.5 取消改制订单</h3>
<pre><code>var Data = this.CreateData('12', '技术中心_改制订单_取消', param)</code></pre>
<p>取消前后端需要校验:</p>
<ul><li>未派工可以取消。</li><li>已派工未加工,需要先取消派工。</li><li>已加工、已有质检记录或已完成,不允许取消。</li><li>已生成领料单且已出库,不允许直接取消,需要走退料或异常处理。</li></ul>
<h2>9. 现有接口扩展</h2>
<h3>9.1 生产任务查询接口</h3>
<p>现有接口:</p>
<pre><code>精工车间_生成任务_查询数据</code></pre>
<p>新增查询参数:</p>
<table>
<thead><tr><th>参数名</th><th>说明</th></tr></thead>
<tbody>
<tr><td>任务类型\_check</td><td>是否按任务类型过滤</td></tr>
<tr><td>任务类型</td><td>全部、正常、改制、报废补投</td></tr>
<tr><td>领料状态\_check</td><td>是否按领料状态过滤</td></tr>
<tr><td>领料状态</td><td>待出库、已出库、不需要领料</td></tr>
</tbody>
</table>
<p>新增返回字段:</p>
<table>
<thead><tr><th>字段名</th><th>说明</th></tr></thead>
<tbody>
<tr><td>任务类型</td><td>正常、改制、报废补投</td></tr>
<tr><td>是否改制</td><td>1 是0 否</td></tr>
<tr><td>改制订单号</td><td>改制订单编号</td></tr>
<tr><td>改制来源类型</td><td>原现自制订单、毛坯改制、非毛坯物料改制</td></tr>
<tr><td>是否需要领料</td><td>1 是0 否</td></tr>
<tr><td>领料状态</td><td>未生成、待出库、已出库、已取消</td></tr>
<tr><td>领料单号</td><td>领料单号</td></tr>
<tr><td>改制原因</td><td>改制原因</td></tr>
<tr><td>改制要求</td><td>改制要求</td></tr>
</tbody>
</table>
<h3>9.2 车间派工查询接口</h3>
<p>现有接口:</p>
<pre><code>精工车间_车间派工_查询</code></pre>
<p>新增查询参数:</p>
<table>
<thead><tr><th>参数名</th><th>说明</th></tr></thead>
<tbody>
<tr><td>任务类型\_check</td><td>是否按任务类型过滤</td></tr>
<tr><td>任务类型</td><td>全部、正常、改制、报废补投</td></tr>
</tbody>
</table>
<p>新增返回字段:</p>
<table>
<thead><tr><th>字段名</th><th>说明</th></tr></thead>
<tbody>
<tr><td>任务类型</td><td>正常、改制、报废补投</td></tr>
<tr><td>是否改制</td><td>1 是0 否</td></tr>
<tr><td>改制订单号</td><td>改制订单编号</td></tr>
<tr><td>改制来源类型</td><td>改制来源类型</td></tr>
<tr><td>是否需要领料</td><td>1 是0 否</td></tr>
<tr><td>领料状态</td><td>领料状态</td></tr>
<tr><td>领料单号</td><td>领料单号</td></tr>
</tbody>
</table>
<p>派工前端限制:</p>
<pre><code>如果 是否改制 = 1 且 是否需要领料 = 1 且 领料状态 != 已出库,则不允许派工。</code></pre>
<h2>10. 前端交互调整</h2>
<h3>10.1 技术中心改制订单发起页面</h3>
<p>查询条件:</p>
<ul><li>订单编号</li><li>零件名称</li><li>图号</li><li>物料编号</li><li>物料名称</li><li>改制来源类型</li></ul>
<p>表格列:</p>
<ul><li>订单编号</li><li>产品/部件名称</li><li>零件名称</li><li>零件图号</li><li>数量</li><li>当前状态</li><li>来源类型</li><li>物料编号</li><li>物料名称</li><li>操作</li></ul>
<p>操作:</p>
<ul><li>发起改制</li><li>图纸</li><li>PLM传入工艺</li><li>追溯</li></ul>
<p>发起改制弹窗:</p>
<ul><li>原订单编号</li><li>原零件名称</li><li>原零件图号</li><li>改制零件名称</li><li>改制零件图号</li><li>改制数量</li><li>改制来源类型</li><li>是否毛坯</li><li>物料编号</li><li>物料名称</li><li>改制原因</li><li>改制要求</li><li>技术备注</li><li>精工期限</li></ul>
<h3>10.2 生产任务查询页面</h3>
<p>新增筛选:</p>
<pre><code>任务类型:全部 / 正常 / 改制 / 报废补投
领料状态:全部 / 不需要领料 / 待出库 / 已出库</code></pre>
<p>新增列:</p>
<ul><li>任务类型</li><li>改制订单号</li><li>改制来源类型</li><li>领料状态</li></ul>
<p>显示建议:</p>
<pre><code>&lt;el-tag type="warning" size="mini"&gt;改制&lt;/el-tag&gt;
&lt;el-tag type="danger" size="mini"&gt;待出库&lt;/el-tag&gt;
&lt;el-tag type="success" size="mini"&gt;已出库&lt;/el-tag&gt;
&lt;el-tag type="info" size="mini"&gt;不需要领料&lt;/el-tag&gt;</code></pre>
<h3>10.3 车间派工页面</h3>
<p>新增筛选:</p>
<pre><code>任务类型:全部 / 正常 / 改制 / 报废补投</code></pre>
<p>新增列:</p>
<ul><li>任务类型</li><li>改制订单号</li><li>领料状态</li></ul>
<p>派工按钮或派工操作前增加判断:</p>
<pre><code>if (Number(row.是否改制) === 1 &amp;&amp; Number(row.是否需要领料) === 1 &amp;&amp; row.领料状态 !== '已出库') {
this.$message.warning('改制订单物料未出库,不能派工')
return
}</code></pre>
<h3>10.4 改制记录查询页面</h3>
<p>查询条件:</p>
<ul><li>改制订单号</li><li>原订单编号</li><li>零件名称或图号</li><li>改制来源类型</li><li>领料状态</li><li>改制状态</li><li>发起日期</li><li>发起人</li></ul>
<p>表格列:</p>
<ul><li>改制订单号</li><li>状态</li><li>原订单编号</li><li>原零件名称</li><li>原零件图号</li><li>改制零件名称</li><li>改制零件图号</li><li>改制数量</li><li>改制来源类型</li><li>是否需要领料</li><li>领料单号</li><li>领料状态</li><li>改制原因</li><li>发起人</li><li>发起日期</li><li>精工期限</li><li>完成日期</li><li>操作</li></ul>
<p>操作:</p>
<ul><li>详情</li><li>生产任务</li><li>派工</li><li>追溯</li><li>取消</li></ul>
<h2>11. 菜单配置</h2>
<p>建议后端菜单配置:</p>
<pre><code>技术中心
改制订单发起
改制记录查询</code></pre>
<p>组件路径:</p>
<pre><code>TechnologyCenter/PartModificationOrder/index
TechnologyCenter/PartModificationRecord/index</code></pre>
<p>精工车间不新增发起入口,只扩展现有页面:</p>
<pre><code>SeikoWorkshop/ProductionTaskQuery/index
SeikoWorkshop/WorkshopAssignment/index</code></pre>
<h2>12. 实施顺序</h2>
<p>建议按以下顺序实施:</p>
<p>1. 后端新增改制订单主记录表。 2. 后端新增技术中心发起改制订单接口。 3. 后端在发起接口中加入领料判断规则。 4. 后端按规则生成或不生成领料单。 5. 后端生成标准精工生产任务,并标记 <code>任务类型 = 改制</code>。 6. 扩展生产任务查询接口,返回改制和领料字段。 7. 扩展车间派工查询接口,返回改制和领料字段。 8. 前端新增技术中心改制订单发起页面。 9. 前端新增改制记录查询页面。 10. 前端修改生产任务查询页面,增加任务类型和领料状态显示。 11. 前端修改车间派工页面,增加改制任务显示和派工前领料状态校验。 12. 联调从技术中心发起、领料判断、仓库出库、精工工艺、车间派工、加工完工、记录查询的完整流程。</p>
<h2>13. 风险点</h2>
<h3>13.1 领料判断风险</h3>
<p>改制订单是否生成领料单,必须以后端判断为准。</p>
<p>前端可以显示和提示,但不能只依赖前端判断,避免绕过仓库出库流程。</p>
<h3>13.2 派工前物料状态风险</h3>
<p>如果改制订单需要仓库出库,但尚未出库,直接派工会导致车间无物料加工。</p>
<p>建议车间派工接口或派工保存接口再次校验:</p>
<pre><code>需要领料且未出库,不允许派工。</code></pre>
<h3>13.3 原任务数据覆盖风险</h3>
<p>改制订单必须生成新的生产任务和新的工艺计划流水号。</p>
<p>不能直接覆盖原自制订单或原零件工艺,否则会影响原订单追溯、工时和质量记录。</p>
<h3>13.4 取消改制风险</h3>
<p>已生成领料单、已出库、已派工或已加工的改制订单取消规则需要严格控制。</p>
<p>建议:</p>
<ul><li>未出库、未派工:允许取消。</li><li>已出库:需要退料后取消。</li><li>已派工未加工:先取消派工再取消。</li><li>已加工:不允许取消,只能走异常处理。</li></ul>
<h3>13.5 统计口径风险</h3>
<p>改制订单进入精工生产任务后,会影响生产任务数量、工时统计、完工统计。</p>
<p>建议所有统计接口增加任务类型维度:</p>
<pre><code>正常
改制
报废补投</code></pre>
<h2>14. 总结</h2>
<p>本方案采用:</p>
<pre><code>技术中心发起改制订单,精工车间承接生产,仓库按需出库,改制记录统一查询。</code></pre>
<p>关键规则:</p>
<ul><li>技术中心新增组件发起改制订单。</li><li>改制订单生成后进入精工车间生产任务查询。</li><li>改制订单工艺和派工复用现有精工流程。</li><li>领料时如果是改制订单,并且使用物料不是毛坯,则生成领料单,由仓库物料出库。</li><li>如果是原现自制订单改制,或者直接使用毛坯改制,则不生成领料单。</li><li>改制记录查询独立展示全流程状态。</li></ul>
</body>
</html>

View File

@@ -0,0 +1,841 @@
# 零件改制功能设计方案
## 0. 需求背景
### 0.1 需求提出
本需求由罗总牵头,组织技术中心、精工车间、仓储等相关部门讨论后提出。
### 0.2 提出原因
当前现场存在零件改制业务,但改制过程尚未完整纳入系统管理。由于现场计件、派工生产、完工入库和后续统计都需要明确的数据来源,原有线下记录或零散流转方式无法满足计件核算、过程追溯和部门协同要求。
因此,需要在系统内补充零件改制订单流程,将改制订单从技术中心发起、精工车间派工生产到完工入库的全过程纳入系统管理。
### 0.3 应用场景
本功能主要应用于以下场景:
- 技术中心根据现场或订单需求发起零件改制订单。
- 精工车间根据改制订单制定工艺、派工生产。
- 改制订单涉及非毛坯物料时,由系统生成领料单并交由仓库出库。
- 改制加工完成后,按现有流程办理入库。
- 现场计件、生产统计、入库记录和后续追溯均以系统内改制订单数据为依据。
## 1. 需求目标
基于项目现有精工车间生产流程,新增“零件改制”业务。
本次方案调整为:
- 在技术中心新增组件发起改制订单。
- 改制订单生成后进入现有精工车间生产任务流程。
- 精工车间生产任务查询组件可以查看改制订单。
- 车间派工组件可以查看改制订单并继续派工。
- 新增改制记录查询,用于查看改制订单的发起、生产、派工、领料和完工状态。
- 领料时根据改制订单和物料来源判断是否生成领料单。
核心原则:
- 技术中心负责发起改制订单。
- 精工车间复用现有生产任务、工艺、派工、加工流程。
- 仓储只在需要额外领用非毛坯物料时介入。
- 改制记录独立查询,但状态关联现有生产任务状态。
## 2. 现有流程承接关系
根据项目现有页面,改制订单应承接以下流程:
| 流程节点 | 现有承接页面 | 说明 |
| ---- | ---------- | --------------- |
| 技术发起 | 技术中心新增页面 | 发起改制订单,填写改制要求 |
| 生成任务 | 精工车间生产任务查询 | 改制订单进入生产任务列表 |
| 制定工艺 | 精工车间制定工艺 | 可复用或复制原工艺后调整 |
| 车间派工 | 精工车间车间派工 | 工艺完成后派工 |
| 领料判断 | 领料/仓储出库流程 | 根据物料类型决定是否生成领料单 |
| 加工执行 | 精工车间现有加工流程 | 扫码、报工、质检等复用现有逻辑 |
| 入库 | 仓储入库流程 | 改制完工后按现有流程办理入库 |
| 记录查询 | 改制记录查询 | 查看改制全流程 |
![零件改制业务流程图](零件改制流程图.svg)
## 3. 页面设计
### 3.1 技术中心新增页面:改制订单发起
建议路径:
```text
src/views/TechnologyCenter/PartModificationOrder/index.vue
```
页面名称:
```text
改制订单发起
```
归属模块:
```text
技术中心
```
主要功能:
- 查询需要改制的原订单、原零件或原自制件。
- 发起改制订单。
- 填写改制后零件信息、改制数量、改制原因、技术要求。
- 指定是否使用原件改制、毛坯改制或其他物料改制。
- 提交后生成改制订单,并进入精工车间生产任务查询。
### 3.2 精工车间修改页面:生产任务查询
现有路径:
```text
src/views/SeikoWorkshop/ProductionTaskQuery/index.vue
```
需要支持:
- 查询改制订单生成的生产任务。
- 增加任务类型筛选。
- 增加任务类型列。
- 改制任务显示 `改制` 标识。
- 改制任务继续使用现有 `工艺``派工` 按钮。
### 3.3 精工车间修改页面:车间派工
现有路径:
```text
src/views/SeikoWorkshop/WorkshopAssignment/index.vue
```
需要支持:
- 查询改制订单对应的待派工任务。
- 增加任务类型筛选。
- 增加任务类型列。
- 复用现有已派工查询、待派工工序查询、派工、取消派工逻辑。
### 3.4 新增页面:改制记录查询
建议路径:
```text
src/views/TechnologyCenter/PartModificationRecord/index.vue
```
也可以放在精工车间模块,建议最终按业务归属确认。
页面名称:
```text
改制记录查询
```
主要功能:
- 查询改制订单记录。
- 查看改制订单状态。
- 查看是否生成领料单。
- 查看仓库是否已出库。
- 查看精工生产任务、工艺、派工、完工状态。
- 支持跳转生产任务查询、车间派工、零件追溯。
## 4. 改制订单类型
改制订单需要明确物料来源,建议增加字段:
```text
改制来源类型
```
建议枚举:
| 改制来源类型 | 说明 | 是否生成领料单 |
| ------- | ----------------- | ------- |
| 原现自制订单 | 使用原现有自制订单零件进行改制 | 否 |
| 毛坯改制 | 直接使用已有毛坯进行改制 | 否 |
| 非毛坯物料改制 | 使用仓库其他物料、半成品或成品改制 | 是 |
说明:
- “原现自制订单”指当前已经存在的自制订单或自制零件,改制时不需要额外从仓库领料。
- “毛坯改制”指直接使用毛坯进行改制,不额外生成领料单。
- “非毛坯物料改制”指改制需要领用库存中的非毛坯物料,需要生成领料单并由仓库出库。
## 5. 领料规则
### 5.1 领料判断条件
领料时增加判断:
```text
如果是改制订单,并且使用的物料不是毛坯,则生成领料单,由仓库物料出库。
如果是原现自制订单改制,或者直接使用毛坯改制,则不生成领料单。
```
规则可表达为:
```text
是否生成领料单 =
是否改制订单 === 1
且 改制来源类型 === 非毛坯物料改制
且 是否毛坯 !== 1
```
### 5.2 生成领料单场景
以下场景需要生成领料单:
- 改制订单使用库存半成品。
- 改制订单使用库存成品。
- 改制订单使用其他非毛坯物料。
- 改制订单指定的物料需要仓库出库。
生成后流程:
1. 技术中心发起改制订单。
2. 系统判断需要领料。
3. 生成领料单。
4. 仓库根据领料单出库。
5. 出库完成后,精工车间继续生产、工艺、派工。
### 5.3 不生成领料单场景
以下场景不生成领料单:
- 原现自制订单改制。
- 直接使用毛坯改制。
- 改制对象已经在精工车间现场,不需要仓库出库。
不生成领料单时:
- 改制订单直接进入精工生产任务。
- 生产任务查询可查看。
- 车间派工可查看并派工。
### 5.4 领料状态字段
建议改制订单增加以下字段:
| 字段名 | 说明 |
| -------- | --------------- |
| 是否需要领料 | 1 是0 否 |
| 是否已生成领料单 | 1 是0 否 |
| 领料单号 | 生成的领料单编号 |
| 领料状态 | 未生成、待出库、已出库、已取消 |
| 出库日期 | 仓库出库日期 |
| 出库人 | 仓库操作人 |
## 6. 业务流程
### 6.1 技术中心发起改制订单
用户进入技术中心“改制订单发起”页面。
查询原始数据:
- 订单编号
- 产品/部件名称
- 零件名称
- 图号
- 原自制订单
- 库存物料
- 毛坯物料
发起改制时填写:
- 改制订单号
- 原订单编号
- 原零件名称
- 原零件图号
- 改制零件名称
- 改制零件图号
- 改制数量
- 改制来源类型
- 是否毛坯
- 物料编号
- 物料名称
- 改制原因
- 改制要求
- 技术备注
- 精工期限
提交时校验:
- 改制数量必须大于 0。
- 改制来源类型不能为空。
- 改制原因不能为空。
- 改制要求不能为空。
- 精工期限不能为空。
- 如果来源类型为非毛坯物料改制,必须选择物料编号。
### 6.2 后端生成改制订单
提交后,后端需要同时处理:
- 写入改制订单主记录。
- 根据改制来源类型判断是否生成领料单。
- 生成精工车间生产任务。
- 写入任务类型为 `改制`
- 关联改制订单号和新工艺计划流水号。
### 6.3 进入精工车间生产任务查询
改制订单生成后,应能在现有接口中查到:
```text
精工车间_生成任务_查询数据
```
建议返回字段增加:
- 任务类型
- 是否改制
- 改制订单号
- 改制来源类型
- 是否需要领料
- 领料状态
- 改制原因
- 改制要求
生产任务查询页面显示:
- `任务类型 = 改制`
-`是否需要领料 = 1``领料状态 !== 已出库`,可显示领料状态提示。
是否允许工艺/派工,需要按业务决定:
- 如果非毛坯物料改制必须先出库,建议未出库前允许制定工艺,但不允许派工。
- 如果现场允许先派工后补出库,则只做提示,不阻断派工。
建议采用更稳妥规则:
```text
需要领料且未出库:允许制定工艺,不允许派工。
不需要领料:正常工艺、派工。
需要领料且已出库:正常工艺、派工。
```
### 6.4 制定工艺
改制订单在生产任务查询中点击 `工艺`,进入现有:
```text
/SeikoWorkshop/DevelopProcess
```
工艺规则:
- 改制订单必须生成新的工艺计划流水号。
- 不覆盖原自制订单或原零件工艺。
- 可支持从原工艺复制后调整。
- 工艺保存后,任务状态进入 `工艺完成`
### 6.5 车间派工
工艺完成后进入现有车间派工页面:
```text
src/views/SeikoWorkshop/WorkshopAssignment/index.vue
```
现有查询接口:
```text
精工车间_车间派工_查询
```
改制订单派工前判断:
- 不需要领料:允许派工。
- 需要领料且已出库:允许派工。
- 需要领料但未出库:禁止派工,并提示“改制订单物料未出库,不能派工”。
派工明细继续复用现有接口:
```text
车间生产管理工艺_零件工序_已派工查询
车间生产管理工艺_零件工序_派工_工序查询
车间生产管理工艺_零件工序_派工
车间生产管理工艺_零件工序_取消派工
```
### 6.6 仓库出库
当改制订单需要领料时,系统生成领料单。
仓库根据领料单完成出库后,需要回写:
- 领料状态 = 已出库
- 出库日期
- 出库人
- 出库数量
出库完成后,精工车间派工限制解除。
### 6.7 加工和完工
改制订单派工后,继续走现有精工车间加工流程:
- 工序派工
- 扫码加工
- 完工报工
- 质检
- 零件追溯
- 工时统计
完工后改制记录状态同步为:
```text
已完成
```
## 7. 数据字段设计
### 7.1 改制订单主记录字段
| 字段名 | 说明 |
| -------- | ------------------- |
| 改制订单号 | 改制业务编号 |
| 原订单编号 | 原订单编号 |
| 原订单流水号 | 原订单流水号 |
| 原组件流水号 | 原组件流水号 |
| 原基本件流水号 | 原零件流水号 |
| 原工艺计划流水号 | 原工艺计划流水号 |
| 原零件名称 | 改制前零件名称 |
| 原零件图号 | 改制前零件图号 |
| 原数量 | 原数量 |
| 改制零件名称 | 改制后零件名称 |
| 改制零件图号 | 改制后零件图号 |
| 改制数量 | 改制数量 |
| 改制来源类型 | 原现自制订单、毛坯改制、非毛坯物料改制 |
| 是否毛坯 | 1 是0 否 |
| 物料编号 | 使用物料编号 |
| 物料名称 | 使用物料名称 |
| 物料流水号 | 使用物料流水号 |
| 是否需要领料 | 1 是0 否 |
| 是否已生成领料单 | 1 是0 否 |
| 领料单号 | 领料单编号 |
| 领料状态 | 未生成、待出库、已出库、已取消 |
| 改制原因 | 改制原因 |
| 改制要求 | 改制要求 |
| 技术备注 | 技术备注 |
| 精工期限 | 精工完工期限 |
| 新基本件流水号 | 改制任务生成的新零件流水号 |
| 新工艺计划流水号 | 改制任务生成的新工艺计划流水号 |
| 发起人 | 当前用户 ID |
| 发起日期 | 发起时间 |
| 状态 | 改制订单状态 |
| 是否启用 | 逻辑删除标识 |
### 7.2 改制订单状态
| 状态 | 说明 |
| ---- | ---------------- |
| 待领料 | 需要领料,领料单未出库 |
| 待工艺 | 不需要领料或已出库,等待制定工艺 |
| 工艺完成 | 工艺已保存,等待派工 |
| 待派工 | 工艺完成且满足派工条件 |
| 加工中 | 已派工或已开始加工 |
| 已完成 | 改制任务完工 |
| 已取消 | 改制订单取消 |
说明:
- 如果不需要领料,提交后可直接进入 `待工艺`
- 如果需要领料,提交后进入 `待领料`
- 仓库出库后从 `待领料` 转为 `待工艺` 或保持生产任务状态,由查询时关联显示。
## 8. API 设计
项目请求继续使用:
```js
this.CreateData(type, name, param, pageSize, pageCurrent)
this.ExecDatabase(Data)
```
### 8.1 技术中心查询可改制对象
```js
var Data = this.CreateData('11', '技术中心_改制订单_可改制对象_查询', param, this.pageSize, this.pageCurrent)
```
### 8.2 技术中心发起改制订单
```js
var Data = this.CreateData('12', '技术中心_改制订单_发起改制', param)
```
参数建议:
| 参数名 | 说明 |
| -------- | ------------------- |
| 原订单流水号 | 原订单流水号 |
| 原组件流水号 | 原组件流水号 |
| 原基本件流水号 | 原基本件流水号 |
| 原工艺计划流水号 | 原工艺计划流水号 |
| 原订单编号 | 原订单编号 |
| 原零件名称 | 原零件名称 |
| 原零件图号 | 原零件图号 |
| 改制零件名称 | 改制零件名称 |
| 改制零件图号 | 改制零件图号 |
| 改制数量 | 改制数量 |
| 改制来源类型 | 原现自制订单、毛坯改制、非毛坯物料改制 |
| 是否毛坯 | 是否毛坯 |
| 物料流水号 | 使用物料流水号 |
| 物料编号 | 物料编号 |
| 物料名称 | 物料名称 |
| 改制原因 | 改制原因 |
| 改制要求 | 改制要求 |
| 技术备注 | 技术备注 |
| 精工期限 | 精工期限 |
| 发起人 | 当前用户 ID |
后端处理结果:
- 生成改制订单。
- 判断是否生成领料单。
- 生成精工生产任务。
- 返回 `result``改制订单号``领料单号``是否需要领料`
### 8.3 改制记录查询
```js
var Data = this.CreateData('11', '技术中心_改制订单_记录_查询', param, this.pageSize, this.pageCurrent)
```
### 8.4 改制订单详情
```js
var Data = this.CreateData('11', '技术中心_改制订单_详情_查询', param)
```
### 8.5 取消改制订单
```js
var Data = this.CreateData('12', '技术中心_改制订单_取消', param)
```
取消前后端需要校验:
- 未派工可以取消。
- 已派工未加工,需要先取消派工。
- 已加工、已有质检记录或已完成,不允许取消。
- 已生成领料单且已出库,不允许直接取消,需要走退料或异常处理。
## 9. 现有接口扩展
### 9.1 生产任务查询接口
现有接口:
```text
精工车间_生成任务_查询数据
```
新增查询参数:
| 参数名 | 说明 |
| ----------- | ------------- |
| 任务类型\_check | 是否按任务类型过滤 |
| 任务类型 | 全部、正常、改制、报废补投 |
| 领料状态\_check | 是否按领料状态过滤 |
| 领料状态 | 待出库、已出库、不需要领料 |
新增返回字段:
| 字段名 | 说明 |
| ------ | ------------------- |
| 任务类型 | 正常、改制、报废补投 |
| 是否改制 | 1 是0 否 |
| 改制订单号 | 改制订单编号 |
| 改制来源类型 | 原现自制订单、毛坯改制、非毛坯物料改制 |
| 是否需要领料 | 1 是0 否 |
| 领料状态 | 未生成、待出库、已出库、已取消 |
| 领料单号 | 领料单号 |
| 改制原因 | 改制原因 |
| 改制要求 | 改制要求 |
### 9.2 车间派工查询接口
现有接口:
```text
精工车间_车间派工_查询
```
新增查询参数:
| 参数名 | 说明 |
| ----------- | ------------- |
| 任务类型\_check | 是否按任务类型过滤 |
| 任务类型 | 全部、正常、改制、报废补投 |
新增返回字段:
| 字段名 | 说明 |
| ------ | ---------- |
| 任务类型 | 正常、改制、报废补投 |
| 是否改制 | 1 是0 否 |
| 改制订单号 | 改制订单编号 |
| 改制来源类型 | 改制来源类型 |
| 是否需要领料 | 1 是0 否 |
| 领料状态 | 领料状态 |
| 领料单号 | 领料单号 |
派工前端限制:
```text
如果 是否改制 = 1 且 是否需要领料 = 1 且 领料状态 != 已出库,则不允许派工。
```
## 10. 前端交互调整
### 10.1 技术中心改制订单发起页面
查询条件:
- 订单编号
- 零件名称
- 图号
- 物料编号
- 物料名称
- 改制来源类型
表格列:
- 订单编号
- 产品/部件名称
- 零件名称
- 零件图号
- 数量
- 当前状态
- 来源类型
- 物料编号
- 物料名称
- 操作
操作:
- 发起改制
- 图纸
- PLM传入工艺
- 追溯
发起改制弹窗:
- 原订单编号
- 原零件名称
- 原零件图号
- 改制零件名称
- 改制零件图号
- 改制数量
- 改制来源类型
- 是否毛坯
- 物料编号
- 物料名称
- 改制原因
- 改制要求
- 技术备注
- 精工期限
### 10.2 生产任务查询页面
新增筛选:
```text
任务类型:全部 / 正常 / 改制 / 报废补投
领料状态:全部 / 不需要领料 / 待出库 / 已出库
```
新增列:
- 任务类型
- 改制订单号
- 改制来源类型
- 领料状态
显示建议:
```html
<el-tag type="warning" size="mini">改制</el-tag>
<el-tag type="danger" size="mini">待出库</el-tag>
<el-tag type="success" size="mini">已出库</el-tag>
<el-tag type="info" size="mini">不需要领料</el-tag>
```
### 10.3 车间派工页面
新增筛选:
```text
任务类型:全部 / 正常 / 改制 / 报废补投
```
新增列:
- 任务类型
- 改制订单号
- 领料状态
派工按钮或派工操作前增加判断:
```js
if (Number(row.是否改制) === 1 && Number(row.是否需要领料) === 1 && row.领料状态 !== '已出库') {
this.$message.warning('改制订单物料未出库,不能派工')
return
}
```
### 10.4 改制记录查询页面
查询条件:
- 改制订单号
- 原订单编号
- 零件名称或图号
- 改制来源类型
- 领料状态
- 改制状态
- 发起日期
- 发起人
表格列:
- 改制订单号
- 状态
- 原订单编号
- 原零件名称
- 原零件图号
- 改制零件名称
- 改制零件图号
- 改制数量
- 改制来源类型
- 是否需要领料
- 领料单号
- 领料状态
- 改制原因
- 发起人
- 发起日期
- 精工期限
- 完成日期
- 操作
操作:
- 详情
- 生产任务
- 派工
- 追溯
- 取消
## 11. 菜单配置
建议后端菜单配置:
```text
技术中心
改制订单发起
改制记录查询
```
组件路径:
```text
TechnologyCenter/PartModificationOrder/index
TechnologyCenter/PartModificationRecord/index
```
精工车间不新增发起入口,只扩展现有页面:
```text
SeikoWorkshop/ProductionTaskQuery/index
SeikoWorkshop/WorkshopAssignment/index
```
## 12. 实施顺序
建议按以下顺序实施:
1. 后端新增改制订单主记录表。
2. 后端新增技术中心发起改制订单接口。
3. 后端在发起接口中加入领料判断规则。
4. 后端按规则生成或不生成领料单。
5. 后端生成标准精工生产任务,并标记 `任务类型 = 改制`
6. 扩展生产任务查询接口,返回改制和领料字段。
7. 扩展车间派工查询接口,返回改制和领料字段。
8. 前端新增技术中心改制订单发起页面。
9. 前端新增改制记录查询页面。
10. 前端修改生产任务查询页面,增加任务类型和领料状态显示。
11. 前端修改车间派工页面,增加改制任务显示和派工前领料状态校验。
12. 联调从技术中心发起、领料判断、仓库出库、精工工艺、车间派工、加工完工、记录查询的完整流程。
## 13. 风险点
### 13.1 领料判断风险
改制订单是否生成领料单,必须以后端判断为准。
前端可以显示和提示,但不能只依赖前端判断,避免绕过仓库出库流程。
### 13.2 派工前物料状态风险
如果改制订单需要仓库出库,但尚未出库,直接派工会导致车间无物料加工。
建议车间派工接口或派工保存接口再次校验:
```text
需要领料且未出库,不允许派工。
```
### 13.3 原任务数据覆盖风险
改制订单必须生成新的生产任务和新的工艺计划流水号。
不能直接覆盖原自制订单或原零件工艺,否则会影响原订单追溯、工时和质量记录。
### 13.4 取消改制风险
已生成领料单、已出库、已派工或已加工的改制订单取消规则需要严格控制。
建议:
- 未出库、未派工:允许取消。
- 已出库:需要退料后取消。
- 已派工未加工:先取消派工再取消。
- 已加工:不允许取消,只能走异常处理。
### 13.5 统计口径风险
改制订单进入精工生产任务后,会影响生产任务数量、工时统计、完工统计。
建议所有统计接口增加任务类型维度:
```text
正常
改制
报废补投
```
## 14. 总结
本方案采用:
```text
技术中心发起改制订单,精工车间承接生产,仓库按需出库,改制记录统一查询。
```
关键规则:
- 技术中心新增组件发起改制订单。
- 改制订单生成后进入精工车间生产任务查询。
- 改制订单工艺和派工复用现有精工流程。
- 领料时如果是改制订单,并且使用物料不是毛坯,则生成领料单,由仓库物料出库。
- 如果是原现自制订单改制,或者直接使用毛坯改制,则不生成领料单。
- 改制记录查询独立展示全流程状态。

Binary file not shown.

View File

@@ -0,0 +1,85 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1180" height="1080" viewBox="0 0 1180 1080">
<defs>
<style>
.title { font: 700 30px "Microsoft YaHei", "SimSun", Arial, sans-serif; fill: #1f2933; }
.label { font: 600 18px "Microsoft YaHei", "SimSun", Arial, sans-serif; fill: #1f2933; }
.small { font: 15px "Microsoft YaHei", "SimSun", Arial, sans-serif; fill: #475569; }
.node { fill: #ffffff; stroke: #2f80ed; stroke-width: 2; rx: 10; }
.tech { fill: #eef6ff; stroke: #2f80ed; }
.seiko { fill: #f0fdf4; stroke: #16a34a; }
.warehouse { fill: #fff7ed; stroke: #f97316; }
.record { fill: #f8fafc; stroke: #64748b; }
.decision { fill: #fff7ed; stroke: #f59e0b; stroke-width: 2; }
.line { stroke: #64748b; stroke-width: 2; fill: none; marker-end: url(#arrow); }
.yesno { font: 600 14px "Microsoft YaHei", "SimSun", Arial, sans-serif; fill: #334155; }
</style>
<marker id="arrow" markerWidth="10" markerHeight="10" refX="9" refY="3" orient="auto" markerUnits="strokeWidth">
<path d="M0,0 L0,6 L9,3 z" fill="#64748b" />
</marker>
</defs>
<rect x="0" y="0" width="1180" height="1080" fill="#ffffff"/>
<text x="590" y="48" text-anchor="middle" class="title">零件改制业务流程图</text>
<rect x="70" y="90" width="1040" height="90" class="node tech"/>
<text x="590" y="126" text-anchor="middle" class="label">技术中心:改制订单发起</text>
<text x="590" y="154" text-anchor="middle" class="small">选择原订单/零件/物料,填写改制数量、来源类型、原因、要求、精工期限</text>
<path d="M590 180 L590 225" class="line"/>
<polygon points="590,225 755,305 590,385 425,305" class="decision"/>
<text x="590" y="292" text-anchor="middle" class="label">是否改制订单</text>
<text x="590" y="322" text-anchor="middle" class="small">且使用物料不是毛坯?</text>
<path d="M755 305 L900 305 L900 365" class="line"/>
<text x="820" y="292" class="yesno"></text>
<rect x="760" y="365" width="280" height="88" class="node warehouse"/>
<text x="900" y="400" text-anchor="middle" class="label">生成领料单</text>
<text x="900" y="428" text-anchor="middle" class="small">仓库按领料单物料出库</text>
<path d="M900 453 L900 515 L670 515" class="line"/>
<text x="918" y="488" class="yesno">已出库</text>
<path d="M425 305 L280 305 L280 515 L510 515" class="line"/>
<text x="320" y="292" class="yesno"></text>
<text x="118" y="384" class="small">原现自制订单改制</text>
<text x="118" y="410" class="small">或直接毛坯改制</text>
<text x="118" y="436" class="small">不生成领料单</text>
<rect x="510" y="475" width="160" height="80" class="node seiko"/>
<text x="590" y="508" text-anchor="middle" class="label">生成精工</text>
<text x="590" y="535" text-anchor="middle" class="small">生产任务</text>
<path d="M590 555 L590 602" class="line"/>
<rect x="390" y="602" width="400" height="80" class="node seiko"/>
<text x="590" y="636" text-anchor="middle" class="label">精工车间:生产任务查询</text>
<text x="590" y="662" text-anchor="middle" class="small">显示任务类型=改制、领料状态、改制订单号</text>
<path d="M590 682 L590 728" class="line"/>
<rect x="390" y="728" width="400" height="80" class="node seiko"/>
<text x="590" y="762" text-anchor="middle" class="label">制定工艺</text>
<text x="590" y="788" text-anchor="middle" class="small">生成新工艺计划,可复制原工艺后调整</text>
<path d="M590 808 L590 854" class="line"/>
<rect x="390" y="854" width="400" height="80" class="node seiko"/>
<text x="590" y="888" text-anchor="middle" class="label">车间派工与加工完工</text>
<text x="590" y="914" text-anchor="middle" class="small">需要领料且未出库时禁止派工,出库后正常派工</text>
<path d="M590 934 L590 980" class="line"/>
<rect x="390" y="980" width="400" height="70" class="node warehouse"/>
<text x="590" y="1010" text-anchor="middle" class="label">仓储入库</text>
<text x="590" y="1036" text-anchor="middle" class="small">改制完工后按现有流程办理入库并回写状态</text>
<path d="M790 1015 L970 1015 L970 215 L720 215" class="line"/>
<rect x="820" y="188" width="300" height="54" class="node record"/>
<text x="970" y="222" text-anchor="middle" class="label">改制记录查询贯穿全流程</text>
<path d="M390 1015 L210 1015 L210 215 L460 215" class="line"/>
<rect x="60" y="188" width="300" height="54" class="node record"/>
<text x="210" y="222" text-anchor="middle" class="label">状态回写与追溯关联</text>
</svg>

After

Width:  |  Height:  |  Size: 4.6 KiB