Files
JY1.0/docs/零件改制/零件改制功能开发说明.md

302 lines
12 KiB
Markdown

# 零件改制功能开发说明
## 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. 如后续恢复“非毛坯物料改制需要领料”,再扩展领料单生成与仓库出库状态。