docs: update and refine project requirement documents
1. 整理并更新工位终端、工艺流程、用户权限等多模块的需求文档 2. 移除冗余的内置账号相关旧需求,补充统一用户源、工艺步骤自定义等新需求细节 3. 优化文档结构,合并重复内容,修正英文状态词使用问题 4. 补充操作流程、PDF挂载、流程卡打印等业务场景的详细设计方案
This commit is contained in:
@@ -1,7 +1,6 @@
|
|||||||
package handler
|
package handler
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
|
||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
|||||||
@@ -43,3 +43,471 @@ ai让我确定的问题 方案答复(简述)
|
|||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
一、工位终端,问题:
|
||||||
|
1、北京动力 · 工位终端 ? 这个标题很潦草,不允许出现 公司名称,而且,北京动力是你瞎写的
|
||||||
|
2、内置账号:admin / admin123 operator1 / 123456 ,这个写法也很多余。内置管理员即可。和mes一样统一登录 密码 admin 123456 ,如果是纯数字 并且提示更改密码,不更改也可以继续登录。 密码填写要求都和mes一样。
|
||||||
|
3、MES 服务不可达:MES GET http://127.0.0.1:8888/api/internal/station/task?dockCode=DOCK01 返回 404:not found
|
||||||
|
4、拧紧结果(实时) ,不需要,1、不需要如此模拟。2、实际应用时也不是这样展示的。工位,先选择的工单,工单有工序步骤(客户维护的),步骤里面有要采集哪些参数,拧紧枪只是其中一项,也可以手动填写。
|
||||||
|
5、拧紧枪,是否ng 什么标准?,数据也是可 编辑
|
||||||
|
6、工位不要展示 英文:dock1 ,我以前跟你提过这个问题
|
||||||
|
7、客户明确表示,希望在这个地方展示操作流程,就是一个PDF一样的说明。来源,是跟着什么走呢? 我记得:一个工位可以有 几个工艺?一个工艺有多道工艺步骤 ,每个步骤有 标准 参考 数字,判断是否ng。你好好捋捋。
|
||||||
|
8、待同步xxx条,应该是指 未点击报工,本地sqlite存的数据表。不用在这里显示。并且上报维度是 工序,你写这么多条,怎么对应工序,有病吗,
|
||||||
|
9、参考,录音通话。看看他想如何展示
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
问题回答补充: 包含,我跟其他ai的一些聊天,请斟酌对错,告知我你的 答案,经我同意,再执行:
|
||||||
|
|
||||||
|
1、admin也不保留,工位终端,不维护数据,他的用户体系来源于 mes ,mes新建用户时,增加是否可以登录工位终端? 还是在mes的用户体系单独开一个 mes操作员 的 维护 tab。单独建账号,分配密码。工位终端可以改自己的密码。
|
||||||
|
2、pdf挂哪里? 挂工位上面吧。和工单等实际产品解耦。mes维护工位信息。刚才提到的问题1,在这里也有了答案,每个工人可以登录的工位是不一样的,不是谁都能操作工位1 ,所以,mes维护工位时,可以在已有用户体系选择 某用户可以操作此工位,多选。 引申出另一个问题,如果某用户没有任何mes菜单权限,显示什么,你要给我方案。并且告诉我,你做菜单权限没有,是不是精确到按钮权限,我们讨论过这个问题。
|
||||||
|
3、你的理解,不对。我反复说,不仅仅有拧紧枪,还有其他步骤,具体有什么,是mes管理后台自定义的。 自定义的工艺流程、工艺步骤,工艺流程包含多个步骤,工艺流程 有个pdf说明,一个工位当前只能绑定一个工艺流程。一个工艺流程可以绑定多个工位。明白没
|
||||||
|
|
||||||
|
下面是ai给我的建议,仅参考,他没你知道的多呢:
|
||||||
|
|
||||||
|
一、工位终端用户体系
|
||||||
|
1. 统一用户源
|
||||||
|
MES是唯一用户源。工位终端不建独立用户表
|
||||||
|
|
||||||
|
MES用户表新增两个字段:
|
||||||
|
|
||||||
|
can_login_workstation:布尔值,表示该用户能否登录工位终端
|
||||||
|
|
||||||
|
workstation_password:工位终端专用密码,用于登录D项目时验证
|
||||||
|
|
||||||
|
2. 工位操作员管理
|
||||||
|
MES后台新增「工位操作员管理」功能:
|
||||||
|
|
||||||
|
从已有用户列表中选择用户
|
||||||
|
|
||||||
|
勾选“允许登录工位终端”开关
|
||||||
|
|
||||||
|
分配可操作的工位(多选,从1~12号工位中选择)
|
||||||
|
|
||||||
|
工位终端登录后可以修改自己的密码(仅改 workstation_password,不改 MES 主密码)
|
||||||
|
|
||||||
|
3. 工位终端登录逻辑
|
||||||
|
用户输入工号 + 工位终端密码,请求 MES 验证
|
||||||
|
|
||||||
|
MES 验证内容:
|
||||||
|
|
||||||
|
用户存在
|
||||||
|
|
||||||
|
can_login_workstation = true
|
||||||
|
|
||||||
|
密码正确
|
||||||
|
|
||||||
|
该用户至少被分配了一个工位
|
||||||
|
|
||||||
|
验证通过后返回:用户可操作的工位列表 + 对应工位的当前工艺流程信息
|
||||||
|
|
||||||
|
如用户未被分配任何工位,提示“您未被授权操作任何工位,请联系管理员”
|
||||||
|
|
||||||
|
二、用户无 MES 菜单权限时的显示
|
||||||
|
如用户没有任何 MES 后台菜单权限,登录 MES 网页时不显示空白页
|
||||||
|
|
||||||
|
重定向到「工位操作员工作台」页面,包含:
|
||||||
|
|
||||||
|
当前可操作工位列表及状态
|
||||||
|
|
||||||
|
当前工单信息
|
||||||
|
|
||||||
|
操作记录查询(仅限本人)
|
||||||
|
|
||||||
|
修改个人信息/密码
|
||||||
|
|
||||||
|
三、权限体系
|
||||||
|
1. 权限粒度
|
||||||
|
菜单级 + 按钮级,精确到按钮
|
||||||
|
|
||||||
|
每个按钮对应一个权限码(如 workorder:delete、material:edit)
|
||||||
|
|
||||||
|
前端根据用户权限码控制按钮显示/隐藏
|
||||||
|
|
||||||
|
后端每个接口校验当前用户是否具有该操作权限
|
||||||
|
|
||||||
|
2. 操作日志
|
||||||
|
所有关键操作记录完整日志
|
||||||
|
|
||||||
|
日志必含字段:
|
||||||
|
|
||||||
|
操作人ID和姓名
|
||||||
|
|
||||||
|
操作时间
|
||||||
|
|
||||||
|
操作类型(新增/修改/删除/提交/审核等)
|
||||||
|
|
||||||
|
操作对象(工单号、物料编码、SN码等)
|
||||||
|
|
||||||
|
操作前后数据变化(如有)
|
||||||
|
|
||||||
|
操作结果(成功/失败及失败原因)
|
||||||
|
|
||||||
|
日志中必须包含 workOrderNo、operator 字段
|
||||||
|
|
||||||
|
四、PDF 与工艺流程
|
||||||
|
1. PDF 归属
|
||||||
|
PDF(作业指导书)挂载在工艺流程上,不直接挂工位或工单
|
||||||
|
|
||||||
|
每个工艺流程有一个 PDF 文件
|
||||||
|
|
||||||
|
工位绑定的是工艺流程(PDF 跟着工艺流程走)
|
||||||
|
|
||||||
|
工位 D 启动时,根据当前绑定的工艺流程,预缓存其 PDF 到本地
|
||||||
|
|
||||||
|
登录后替换成 PDF,不每次请求 MES
|
||||||
|
|
||||||
|
2. 工位与工艺流程关系
|
||||||
|
一个工位当前只能绑定一个工艺流程
|
||||||
|
|
||||||
|
一个工艺流程可以绑定多个工位
|
||||||
|
|
||||||
|
工位今天绑了流程 A,所有经过该工位的工件都按 A 的步骤加工
|
||||||
|
|
||||||
|
明天换成流程 B,就按 B 加工
|
||||||
|
|
||||||
|
3. 工艺流程自定义
|
||||||
|
MES 后台自定义工艺流程
|
||||||
|
|
||||||
|
工艺流程包含多个工艺步骤
|
||||||
|
|
||||||
|
工艺步骤不仅限于拧紧枪,管理员可自定义:
|
||||||
|
|
||||||
|
步骤类型 示例 数据采集方式
|
||||||
|
拧紧 拧螺丝A,目标扭矩 2.5Nm 拧紧枪自动采集
|
||||||
|
手动检查 外观检查 工人手动打勾
|
||||||
|
测量 测量尺寸,公差 ±0.1 工人手工输入数值
|
||||||
|
装配 安装主板 人工操作,扫码确认
|
||||||
|
测试 通电测试,电压 5V 测试设备采集或手动输入
|
||||||
|
4. 工艺步骤与考核数据模型
|
||||||
|
text
|
||||||
|
工艺流程 (Process Flow)
|
||||||
|
↓ 包含
|
||||||
|
工艺步骤 (Step) — 顺序号、操作描述、采集方式
|
||||||
|
↓ 包含
|
||||||
|
考核标准 (Standard) — 参数名、单位、上限、下限
|
||||||
|
↓ 对应
|
||||||
|
考核数据 (Data) — 实际值、是否合格、采集方式(手动/设备)
|
||||||
|
每个步骤可配置多个考核标准
|
||||||
|
|
||||||
|
工人操作时按步骤顺序执行,每步完成后点击「完成本步骤」进入下一步
|
||||||
|
|
||||||
|
五、工人工作量统计
|
||||||
|
1. 工人端 — 工位终端「我的工作量」
|
||||||
|
登录工位终端后可查看
|
||||||
|
|
||||||
|
展示内容:
|
||||||
|
|
||||||
|
总完工工件数(按时间范围统计)
|
||||||
|
|
||||||
|
总工作天数
|
||||||
|
|
||||||
|
平均日产量
|
||||||
|
|
||||||
|
整体合格率(合格数/总完工数)
|
||||||
|
|
||||||
|
明细列表:日期、操作工位、完工工件SN、产品型号、合格/不合格、不合格原因
|
||||||
|
|
||||||
|
时间筛选:今日/本周/本月/近3个月/近1年/自定义起始日期
|
||||||
|
|
||||||
|
合格率趋势图(按日/按周)
|
||||||
|
|
||||||
|
导出 Excel/CSV
|
||||||
|
|
||||||
|
工人仅能看到本人数据,接口校验当前登录用户 ID
|
||||||
|
|
||||||
|
2. 管理端 — MES 后台「工人绩效报表」
|
||||||
|
权限:仅具备该菜单权限的用户可访问
|
||||||
|
|
||||||
|
筛选条件:时间范围、工位、工人、产品型号
|
||||||
|
|
||||||
|
汇总统计表:
|
||||||
|
|
||||||
|
工号 姓名 总完工数 合格数 不合格数 合格率 操作工位 操作
|
||||||
|
001 张三 245 240 5 97.96% 工位1、3 查看明细
|
||||||
|
支持按任意列排序,支持分页
|
||||||
|
|
||||||
|
点击「查看明细」弹窗显示:
|
||||||
|
|
||||||
|
完整历史记录(同工人端明细列表)
|
||||||
|
|
||||||
|
各工位分布统计(工位1干了多少件、工位2干了多少件等)
|
||||||
|
|
||||||
|
汇总图表:
|
||||||
|
|
||||||
|
各工人合格率对比柱状图
|
||||||
|
|
||||||
|
各工位产量分布图
|
||||||
|
|
||||||
|
每日产量趋势图(可切换查看不同工人的趋势)
|
||||||
|
|
||||||
|
导出 Excel/CSV
|
||||||
|
|
||||||
|
六、数据库变更
|
||||||
|
MES 用户表新增字段:
|
||||||
|
|
||||||
|
sql
|
||||||
|
ALTER TABLE users ADD COLUMN can_login_workstation BOOLEAN DEFAULT FALSE;
|
||||||
|
ALTER TABLE users ADD COLUMN workstation_password VARCHAR(128);
|
||||||
|
用户-工位关联表(多对多):
|
||||||
|
|
||||||
|
sql
|
||||||
|
CREATE TABLE user_workstations (
|
||||||
|
id BIGSERIAL PRIMARY KEY,
|
||||||
|
user_id BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||||||
|
workstation_id INT NOT NULL, -- 1~12
|
||||||
|
created_at TIMESTAMP DEFAULT NOW(),
|
||||||
|
UNIQUE(user_id, workstation_id)
|
||||||
|
);
|
||||||
|
权限码表(种子数据):
|
||||||
|
|
||||||
|
sql
|
||||||
|
CREATE TABLE permissions (
|
||||||
|
id BIGSERIAL PRIMARY KEY,
|
||||||
|
code VARCHAR(64) UNIQUE NOT NULL, -- workorder:delete, material:edit, 等
|
||||||
|
name VARCHAR(128) NOT NULL, -- 显示名称
|
||||||
|
category VARCHAR(64), -- 所属模块
|
||||||
|
created_at TIMESTAMP DEFAULT NOW()
|
||||||
|
);
|
||||||
|
用户-权限关联表(按钮级):
|
||||||
|
|
||||||
|
sql
|
||||||
|
CREATE TABLE user_permissions (
|
||||||
|
id BIGSERIAL PRIMARY KEY,
|
||||||
|
user_id BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
||||||
|
permission_code VARCHAR(64) NOT NULL REFERENCES permissions(code) ON DELETE CASCADE,
|
||||||
|
created_at TIMESTAMP DEFAULT NOW(),
|
||||||
|
UNIQUE(user_id, permission_code)
|
||||||
|
);
|
||||||
|
工人工作量统计相关查询涉及的现有表:
|
||||||
|
|
||||||
|
work_order(工单)
|
||||||
|
|
||||||
|
scan_record(扫码报工记录)
|
||||||
|
|
||||||
|
torque_result(拧紧数据)
|
||||||
|
|
||||||
|
process_log(工序流转记录)
|
||||||
|
|
||||||
|
七、接口设计
|
||||||
|
工位终端登录验证:
|
||||||
|
|
||||||
|
text
|
||||||
|
POST /api/internal/workstation/login
|
||||||
|
请求:{ "username": "xxx", "password": "xxx" }
|
||||||
|
返回:{
|
||||||
|
"success": true,
|
||||||
|
"workstations": [1, 3, 5], -- 可操作的工位列表
|
||||||
|
"user_info": { "id": 1, "name": "张三" },
|
||||||
|
"station_configs": { -- 各工位当前绑定的工艺流程
|
||||||
|
"1": { "process_flow_id": 10, "name": "装配流程A", "pdf_url": "..." },
|
||||||
|
"3": { "process_flow_id": 12, "name": "测试流程B", "pdf_url": "..." }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
工位终端修改密码:
|
||||||
|
|
||||||
|
text
|
||||||
|
POST /api/internal/workstation/change-password
|
||||||
|
请求:{ "old_password": "xxx", "new_password": "xxx" }
|
||||||
|
工人端 — 我的工作量:
|
||||||
|
|
||||||
|
text
|
||||||
|
GET /api/internal/workstation/my-workload
|
||||||
|
请求参数:start_date, end_date(默认近30天)
|
||||||
|
返回:{ total_qty, qualified_qty, unqualified_qty, pass_rate,
|
||||||
|
details: [{ date, workstation_id, sn, product_code, result, reason }],
|
||||||
|
chart_data: { dates: [], rates: [] } }
|
||||||
|
管理端 — 工人绩效报表:
|
||||||
|
|
||||||
|
text
|
||||||
|
GET /api/internal/report/worker-performance
|
||||||
|
请求参数:start_date, end_date, workstation_id(可选), worker_id(可选), product_code(可选), page, page_size
|
||||||
|
返回:{ list: [{ worker_id, name, total, qualified, unqualified, pass_rate, workstations }],
|
||||||
|
total, page, page_size }
|
||||||
|
管理端 — 工人明细下钻:
|
||||||
|
|
||||||
|
text
|
||||||
|
GET /api/internal/report/worker-performance/detail
|
||||||
|
请求参数:worker_id, start_date, end_date
|
||||||
|
返回:{ details: [...], station_distribution: { "1": 80, "3": 45 } }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
另外一件事,录音里面说: 希望有个可以打印的东西,上面有工位工人 签名的地方。这个涉及到两个事:
|
||||||
|
1、mes用户体系,需要有一个用户签名的照片?png? 你看看如何设计,将来可以融合到文档里面一起打印。文档是个pdf?
|
||||||
|
2、这个文档,什么维度?工人一天的工作量? 一个成品工件 多个工人的签名? 看看录音如何说吧。我理解是一个成品的质量追踪,也就是 工件多人签名。上面可能显示 ,开始时间、结束时间、工件名称,工艺步骤、合格率、各个工人签名、或者线长(拿pad的那个审核人)的签名。 这个文档自动生产的,但是生成前,可以手动维护 开始时间、结束时间、合格率、等,默认有签名人,也可以手动选择。没问题了,生成pdf。
|
||||||
|
|
||||||
|
数据来源就必须要去 每步工作流程都记录清楚了,每个精密件步骤都能追踪到。
|
||||||
|
|
||||||
|
其他ai答:
|
||||||
|
好,我直接按录音和常规质量追溯实践,给你落地方案:
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 一、签名怎么存?
|
||||||
|
|
||||||
|
**不用图片,用“账号名 + 确认时间”即可。**
|
||||||
|
|
||||||
|
录音里工人已经说了:“不一定非得签字,就是他能追到这个人是他们这一天干了这个活。”所以不需要让用户上传签名照片(PNG),那是自找麻烦——每个工人还得专门拍一张、上传、维护,工厂里根本推行不动。
|
||||||
|
|
||||||
|
**方案:用账号名作为签名字段。**
|
||||||
|
|
||||||
|
打印时显示:
|
||||||
|
```
|
||||||
|
操作人:张三(工号:1001) 确认时间:2026-08-29 14:32:15
|
||||||
|
检验人:李四(工号:1002) 确认时间:2026-08-29 14:35:22
|
||||||
|
```
|
||||||
|
|
||||||
|
如果甲方坚持要“手写签名效果”,可以加一个“电子签名图片”字段,让用户上传一次(可选),有则显示图片,无则显示账号名。但默认用账号名。
|
||||||
|
|
||||||
|
**扩展:**
|
||||||
|
- 在用户管理中添加`signature_image`字段(可选,存储图片URL),供将来扩展用
|
||||||
|
- 如果用户上传了签名图片,打印PDF时使用图片;否则使用账号名(文本)
|
||||||
|
|
||||||
|
|
||||||
|
## 二、文档按什么维度生成?
|
||||||
|
|
||||||
|
**录音原文:**
|
||||||
|
|
||||||
|
> “流程卡呢记录了工序一、工序二,就是所有工序……工序一最终谁干的,然后谁签的字,以及谁检验的。”
|
||||||
|
|
||||||
|
**所以维度是:一个成品工件(SN)的质量追溯。** 一个工件经过多个工位,每个工位有操作人、检验人、时间、合格率。文档汇总了这些信息。
|
||||||
|
|
||||||
|
**不是“工人一天干了多少活”(那是工作量报表,不是这个),而是“这个工件由哪些人经手完成的”。**
|
||||||
|
|
||||||
|
|
||||||
|
## 三、文档里要包含哪些内容?
|
||||||
|
|
||||||
|
| 区域 | 内容 |
|
||||||
|
|------|------|
|
||||||
|
| **头信息** | 工件SN、产品型号、产品名称、工单号、开始时间、结束时间、总合格率 |
|
||||||
|
| **工序追溯明细** | 工序序号、工序名称、工位号、操作人、检验人、各步骤合格状态、完成时间 |
|
||||||
|
| **考核数据摘要** | 该工件各考核项的实际值/判定(拧紧扭矩、测量值等) |
|
||||||
|
| **签名区** | 各工位操作人签名、检验人签名、最终审核人签名(账号名) |
|
||||||
|
| **生成信息** | PDF生成时间、打印人 |
|
||||||
|
|
||||||
|
|
||||||
|
## 四、生成前人工维护什么?
|
||||||
|
|
||||||
|
用户说得对:“生成前可以手动维护开始时间、结束时间、合格率等,默认有签名人,也可以手动选择。”
|
||||||
|
|
||||||
|
**所以流程是:**
|
||||||
|
|
||||||
|
1. 用户在MES后台选择“生成流程卡”
|
||||||
|
2. 输入/选择工件SN或工单号
|
||||||
|
3. 系统自动带出所有工序记录(默认值)
|
||||||
|
4. 用户可手动调整:
|
||||||
|
- 开始时间、结束时间
|
||||||
|
- 合格率(如果系统数据有误,人工修正)
|
||||||
|
- 签名人(默认是实际操作人/检验人,可手动换成别人)
|
||||||
|
5. 点击“生成PDF” → 系统根据当前数据生成PDF文件
|
||||||
|
6. 可下载/打印
|
||||||
|
|
||||||
|
|
||||||
|
## 五、表结构变更
|
||||||
|
|
||||||
|
```sql
|
||||||
|
-- 用户表增加签名图片字段(可选扩展)
|
||||||
|
ALTER TABLE users ADD COLUMN signature_image VARCHAR(256);
|
||||||
|
|
||||||
|
-- 流程卡生成记录表(存储每次生成的快照,防止事后修改导致追溯失效)
|
||||||
|
CREATE TABLE process_card (
|
||||||
|
id BIGSERIAL PRIMARY KEY,
|
||||||
|
card_no VARCHAR(64) UNIQUE NOT NULL, -- 流程卡编号
|
||||||
|
work_order_no VARCHAR(64) NOT NULL, -- 关联工单
|
||||||
|
product_code VARCHAR(64) NOT NULL, -- 产品编码
|
||||||
|
serial_no VARCHAR(64) NOT NULL, -- 工件SN
|
||||||
|
start_time TIMESTAMP, -- 开始时间(可手动修正)
|
||||||
|
end_time TIMESTAMP, -- 结束时间(可手动修正)
|
||||||
|
pass_rate NUMERIC(5,2), -- 总合格率(可手动修正)
|
||||||
|
operator_snapshot JSONB, -- 各工位操作人快照(账号名)
|
||||||
|
inspector_snapshot JSONB, -- 各工位检验人快照(账号名)
|
||||||
|
step_details JSONB, -- 各步骤考核数据快照
|
||||||
|
generated_by BIGINT NOT NULL, -- 生成人
|
||||||
|
generated_at TIMESTAMP DEFAULT NOW(), -- 生成时间
|
||||||
|
pdf_url VARCHAR(256) -- 生成的PDF文件路径
|
||||||
|
);
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## 六、PDF模板
|
||||||
|
|
||||||
|
```
|
||||||
|
┌─────────────────────────────────────────────────────────────┐
|
||||||
|
│ 【北京电力设备总厂】 产线流程卡 │
|
||||||
|
│ 编号:PC-20260829-001 │
|
||||||
|
├─────────────────────────────────────────────────────────────┤
|
||||||
|
│ 产品信息 │
|
||||||
|
│ ┌─────────────────────────────────────────────────────────┐ │
|
||||||
|
│ │ 工件SN:SN-HLX-001 工单号:WO001 │ │
|
||||||
|
│ │ 产品名称:汇流箱 2026标准型 开始:08-29 08:00 │ │
|
||||||
|
│ │ 结束:08-29 15:30 总合格率:98.5% │ │
|
||||||
|
│ └─────────────────────────────────────────────────────────┘ │
|
||||||
|
├─────────────────────────────────────────────────────────────┤
|
||||||
|
│ 工序追溯明细 │
|
||||||
|
│ ┌─────────────────────────────────────────────────────────┐ │
|
||||||
|
│ │ 工序1 工位1 操作:张三 检验:李四 OK 08:30 │ │
|
||||||
|
│ │ 工序2 工位2 操作:张三 检验:李四 OK 09:00 │ │
|
||||||
|
│ │ 工序3 工位3 操作:王五 检验:赵六 NG 09:30 │ │
|
||||||
|
│ │ → 合格率:90.0% 已返修通过 │ │
|
||||||
|
│ │ 工序4 工位4 操作:王五 检验:赵六 OK 10:00 │ │
|
||||||
|
│ └─────────────────────────────────────────────────────────┘ │
|
||||||
|
├─────────────────────────────────────────────────────────────┤
|
||||||
|
│ 考核数据摘要 │
|
||||||
|
│ ┌─────────────────────────────────────────────────────────┐ │
|
||||||
|
│ │ 拧紧螺丝A:2.48Nm(标准:2.5±0.1) OK │ │
|
||||||
|
│ │ 尺寸测量:300.05mm(标准:300±0.5) OK │ │
|
||||||
|
│ └─────────────────────────────────────────────────────────┘ │
|
||||||
|
├─────────────────────────────────────────────────────────────┤
|
||||||
|
│ 签名区 │
|
||||||
|
│ ┌─────────────────────────────────────────────────────────┐ │
|
||||||
|
│ │ 工序1操作人:张三(工号1001) 检验人:李四(工号1002) │ │
|
||||||
|
│ │ 工序2操作人:张三(工号1001) 检验人:李四(工号1002) │ │
|
||||||
|
│ │ 工序3操作人:王五(工号1003) 检验人:赵六(工号1004) │ │
|
||||||
|
│ │ 工序4操作人:王五(工号1003) 检验人:赵六(工号1004) │ │
|
||||||
|
│ │ │ │
|
||||||
|
│ │ 最终审核人:韩总(admin) 日期:2026-08-29 │ │
|
||||||
|
│ └─────────────────────────────────────────────────────────┘ │
|
||||||
|
│ 生成时间:2026-08-29 16:00 打印人:管理员 │
|
||||||
|
└─────────────────────────────────────────────────────────────┘
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
## 七、接口设计
|
||||||
|
|
||||||
|
**生成流程卡(生成前可预览修改):**
|
||||||
|
```
|
||||||
|
POST /api/internal/process-card/generate
|
||||||
|
请求:{
|
||||||
|
"serial_no": "SN-HLX-001",
|
||||||
|
"start_time": "2026-08-29 08:00:00", -- 可选,默认自动
|
||||||
|
"end_time": "2026-08-29 15:30:00", -- 可选,默认自动
|
||||||
|
"pass_rate": 98.5, -- 可选,默认自动计算
|
||||||
|
"operator_overrides": { -- 可选,手动指定某些工位的操作人
|
||||||
|
"3": "wangwu" -- 工序3换成王五
|
||||||
|
}
|
||||||
|
}
|
||||||
|
返回:{
|
||||||
|
"card_no": "PC-20260829-001",
|
||||||
|
"preview": { ...完整数据... } -- 前端展示供用户确认
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
**确认生成PDF:**
|
||||||
|
```
|
||||||
|
POST /api/internal/process-card/confirm
|
||||||
|
请求:{ "card_no": "PC-20260829-001" }
|
||||||
|
返回:{ "pdf_url": "/uploads/process-card-PC-20260829-001.pdf" }
|
||||||
|
```
|
||||||
|
|
||||||
|
**查询已生成的流程卡:**
|
||||||
|
```
|
||||||
|
GET /api/internal/process-card/list
|
||||||
|
请求参数:serial_no(可选), work_order_no(可选), start_date, end_date, page, page_size
|
||||||
|
返回:列表 + 分页
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,464 +1,38 @@
|
|||||||
|
一、
|
||||||
|
mes --- > 工艺流程----> 工位管理 , 1、状态不要用 ENABLED 等英文。2、一个工位只能 有一个 启用的 工艺流程。 这个启用,分两个维度,1、工艺流程是否启动,第二工位管理有没有启用这个工艺流程。我建议简单化,把第二个去掉。所以逻辑就成了,一个工位只能绑定一个工艺流程即可。
|
||||||
|
另外,工艺流程里面 也有英文 ACTIVE ,请改成中文
|
||||||
|
另外,工位管理,改为关联工位。因为工位数量是不变的
|
||||||
|
另外,请考虑,工艺流程、工序,叫法是否合适,如果合适,就保持不变即可。
|
||||||
|
|
||||||
一、工位终端,问题:
|
二、工艺流程 ---> 编辑工艺流程
|
||||||
1、北京动力 · 工位终端 ? 这个标题很潦草,不允许出现 公司名称,而且,北京动力是你瞎写的
|
1、采集方式:在帮助文档里面,给一个详细说明
|
||||||
2、内置账号:admin / admin123 operator1 / 123456 ,这个写法也很多余。内置管理员即可。和mes一样统一登录 密码 admin 123456 ,如果是纯数字 并且提示更改密码,不更改也可以继续登录。 密码填写要求都和mes一样。
|
2、考核标准:在帮助文档里面,给一个详细说明,在什么地方用,如何收集数据等。
|
||||||
3、MES 服务不可达:MES GET http://127.0.0.1:8888/api/internal/station/task?dockCode=DOCK01 返回 404:not found
|
3、菜单,工艺参数 ,和,工艺流程 里面的 步骤模版,重复了。我理解对吗,我建议,去除 工艺参数。 并提出建议:编辑工艺流程--》步骤模板---》考核标准 ,点击多个考核标准时,都出现在下面,不好,不知道哪个是哪个,也没有一个单独的保存按钮。你再设计设计。
|
||||||
4、拧紧结果(实时) ,不需要,1、不需要如此模拟。2、实际应用时也不是这样展示的。工位,先选择的工单,工单有工序步骤(客户维护的),步骤里面有要采集哪些参数,拧紧枪只是其中一项,也可以手动填写。
|
|
||||||
5、拧紧枪,是否ng 什么标准?,数据也是可 编辑
|
|
||||||
6、工位不要展示 英文:dock1 ,我以前跟你提过这个问题
|
|
||||||
7、客户明确表示,希望在这个地方展示操作流程,就是一个PDF一样的说明。来源,是跟着什么走呢? 我记得:一个工位可以有 几个工艺?一个工艺有多道工艺步骤 ,每个步骤有 标准 参考 数字,判断是否ng。你好好捋捋。
|
|
||||||
8、待同步xxx条,应该是指 未点击报工,本地sqlite存的数据表。不用在这里显示。并且上报维度是 工序,你写这么多条,怎么对应工序,有病吗,
|
|
||||||
9、参考,录音通话。看看他想如何展示
|
|
||||||
|
|
||||||
|
4、工位绑定,倒是可以从工艺流程里面,拿出来,将来好分配菜单权限。
|
||||||
|
|
||||||
|
|
||||||
|
三、我现在仍然不知道如何操作。原因:1、问号帮助文档,内容还是不够详细。2、缺少:操作手册.md
|
||||||
|
|
||||||
问题回答补充: 包含,我跟其他ai的一些聊天,请斟酌对错,告知我你的 答案,经我同意,再执行:
|
|
||||||
|
|
||||||
1、admin也不保留,工位终端,不维护数据,他的用户体系来源于 mes ,mes新建用户时,增加是否可以登录工位终端? 还是在mes的用户体系单独开一个 mes操作员 的 维护 tab。单独建账号,分配密码。工位终端可以改自己的密码。
|
四、PLC工序下发,我们聊过,菜单,做什么用的,我仍然没明白。帮助文档里面,也没有业务说明。你再捋捋,弄清楚些
|
||||||
2、pdf挂哪里? 挂工位上面吧。和工单等实际产品解耦。mes维护工位信息。刚才提到的问题1,在这里也有了答案,每个工人可以登录的工位是不一样的,不是谁都能操作工位1 ,所以,mes维护工位时,可以在已有用户体系选择 某用户可以操作此工位,多选。 引申出另一个问题,如果某用户没有任何mes菜单权限,显示什么,你要给我方案。并且告诉我,你做菜单权限没有,是不是精确到按钮权限,我们讨论过这个问题。
|
|
||||||
3、你的理解,不对。我反复说,不仅仅有拧紧枪,还有其他步骤,具体有什么,是mes管理后台自定义的。 自定义的工艺流程、工艺步骤,工艺流程包含多个步骤,工艺流程 有个pdf说明,一个工位当前只能绑定一个工艺流程。一个工艺流程可以绑定多个工位。明白没
|
|
||||||
|
|
||||||
下面是ai给我的建议,仅参考,他没你知道的多呢:
|
五、帮助按钮,太大了。放到右上角,是不是更好? 右上角优化,点击 登录人名称 例如“系统管理员”,修改密码,即可。修改密码,按钮,不要了。 帮助文档 点击标题 弹出来(不是左边菜单,是右边大模块左上角的标题,例如 工单管理)
|
||||||
|
|
||||||
一、工位终端用户体系
|
|
||||||
1. 统一用户源
|
|
||||||
MES是唯一用户源。工位终端不建独立用户表
|
|
||||||
|
|
||||||
MES用户表新增两个字段:
|
五、工单管理---> 维护工序组合123456789101112 ,这也太潦草了。 如何区分 11 还是 11 。要求,1、必须按顺序执行,比如,可以是123不能是 132,传送带不会往回走。要求2,可以选择 启动或未启动的 工序,如果工序禁用,这个工位就不走。 另外说明,当 操作 一个工艺流程,让他变成 停用时,必须先跟工位解绑。 同理,工位绑定 工艺流程,必须是 启用的。
|
||||||
|
另外,工艺流程 菜单,里面的 操作列,加上 按钮 “启用”“停用”。同理,同操作习惯 工单管理也加上 状态操作,在操作里面
|
||||||
|
|
||||||
can_login_workstation:布尔值,表示该用户能否登录工位终端
|
|
||||||
|
|
||||||
workstation_password:工位终端专用密码,用于登录D项目时验证
|
六、菜单:工单管理,里面有个 日排产 。和 菜单: 日排产,重复了,菜单责任划分不明确。应该去除 前者。
|
||||||
|
|
||||||
2. 工位操作员管理
|
七、添加物料清单,跟 wms什么关系,帮助也没说清楚。 编码如何对应。等等 。
|
||||||
MES后台新增「工位操作员管理」功能:
|
操作方式,非常错误。 选择:产品编码, 点击 添加物料 。列表,又没有 产品编码 。非常反人类。禁止这种 标题选择添加,有病吗,你的设计。添加物料清单,就好好添加,在选择框里面选择 产品编码。 你有病吗
|
||||||
|
备料单---》按日排产生成备料, 不明不白,你有病吗。是互联网操作方式吗。
|
||||||
|
|
||||||
从已有用户列表中选择用户
|
|
||||||
|
|
||||||
勾选“允许登录工位终端”开关
|
|
||||||
|
|
||||||
分配可操作的工位(多选,从1~12号工位中选择)
|
|
||||||
|
|
||||||
工位终端登录后可以修改自己的密码(仅改 workstation_password,不改 MES 主密码)
|
|
||||||
|
|
||||||
3. 工位终端登录逻辑
|
|
||||||
用户输入工号 + 工位终端密码,请求 MES 验证
|
|
||||||
|
|
||||||
MES 验证内容:
|
|
||||||
|
|
||||||
用户存在
|
|
||||||
|
|
||||||
can_login_workstation = true
|
|
||||||
|
|
||||||
密码正确
|
|
||||||
|
|
||||||
该用户至少被分配了一个工位
|
|
||||||
|
|
||||||
验证通过后返回:用户可操作的工位列表 + 对应工位的当前工艺流程信息
|
|
||||||
|
|
||||||
如用户未被分配任何工位,提示“您未被授权操作任何工位,请联系管理员”
|
|
||||||
|
|
||||||
二、用户无 MES 菜单权限时的显示
|
|
||||||
如用户没有任何 MES 后台菜单权限,登录 MES 网页时不显示空白页
|
|
||||||
|
|
||||||
重定向到「工位操作员工作台」页面,包含:
|
|
||||||
|
|
||||||
当前可操作工位列表及状态
|
|
||||||
|
|
||||||
当前工单信息
|
|
||||||
|
|
||||||
操作记录查询(仅限本人)
|
|
||||||
|
|
||||||
修改个人信息/密码
|
|
||||||
|
|
||||||
三、权限体系
|
|
||||||
1. 权限粒度
|
|
||||||
菜单级 + 按钮级,精确到按钮
|
|
||||||
|
|
||||||
每个按钮对应一个权限码(如 workorder:delete、material:edit)
|
|
||||||
|
|
||||||
前端根据用户权限码控制按钮显示/隐藏
|
|
||||||
|
|
||||||
后端每个接口校验当前用户是否具有该操作权限
|
|
||||||
|
|
||||||
2. 操作日志
|
|
||||||
所有关键操作记录完整日志
|
|
||||||
|
|
||||||
日志必含字段:
|
|
||||||
|
|
||||||
操作人ID和姓名
|
|
||||||
|
|
||||||
操作时间
|
|
||||||
|
|
||||||
操作类型(新增/修改/删除/提交/审核等)
|
|
||||||
|
|
||||||
操作对象(工单号、物料编码、SN码等)
|
|
||||||
|
|
||||||
操作前后数据变化(如有)
|
|
||||||
|
|
||||||
操作结果(成功/失败及失败原因)
|
|
||||||
|
|
||||||
日志中必须包含 workOrderNo、operator 字段
|
|
||||||
|
|
||||||
四、PDF 与工艺流程
|
|
||||||
1. PDF 归属
|
|
||||||
PDF(作业指导书)挂载在工艺流程上,不直接挂工位或工单
|
|
||||||
|
|
||||||
每个工艺流程有一个 PDF 文件
|
|
||||||
|
|
||||||
工位绑定的是工艺流程(PDF 跟着工艺流程走)
|
|
||||||
|
|
||||||
工位 D 启动时,根据当前绑定的工艺流程,预缓存其 PDF 到本地
|
|
||||||
|
|
||||||
登录后替换成 PDF,不每次请求 MES
|
|
||||||
|
|
||||||
2. 工位与工艺流程关系
|
|
||||||
一个工位当前只能绑定一个工艺流程
|
|
||||||
|
|
||||||
一个工艺流程可以绑定多个工位
|
|
||||||
|
|
||||||
工位今天绑了流程 A,所有经过该工位的工件都按 A 的步骤加工
|
|
||||||
|
|
||||||
明天换成流程 B,就按 B 加工
|
|
||||||
|
|
||||||
3. 工艺流程自定义
|
|
||||||
MES 后台自定义工艺流程
|
|
||||||
|
|
||||||
工艺流程包含多个工艺步骤
|
|
||||||
|
|
||||||
工艺步骤不仅限于拧紧枪,管理员可自定义:
|
|
||||||
|
|
||||||
步骤类型 示例 数据采集方式
|
|
||||||
拧紧 拧螺丝A,目标扭矩 2.5Nm 拧紧枪自动采集
|
|
||||||
手动检查 外观检查 工人手动打勾
|
|
||||||
测量 测量尺寸,公差 ±0.1 工人手工输入数值
|
|
||||||
装配 安装主板 人工操作,扫码确认
|
|
||||||
测试 通电测试,电压 5V 测试设备采集或手动输入
|
|
||||||
4. 工艺步骤与考核数据模型
|
|
||||||
text
|
|
||||||
工艺流程 (Process Flow)
|
|
||||||
↓ 包含
|
|
||||||
工艺步骤 (Step) — 顺序号、操作描述、采集方式
|
|
||||||
↓ 包含
|
|
||||||
考核标准 (Standard) — 参数名、单位、上限、下限
|
|
||||||
↓ 对应
|
|
||||||
考核数据 (Data) — 实际值、是否合格、采集方式(手动/设备)
|
|
||||||
每个步骤可配置多个考核标准
|
|
||||||
|
|
||||||
工人操作时按步骤顺序执行,每步完成后点击「完成本步骤」进入下一步
|
|
||||||
|
|
||||||
五、工人工作量统计
|
|
||||||
1. 工人端 — 工位终端「我的工作量」
|
|
||||||
登录工位终端后可查看
|
|
||||||
|
|
||||||
展示内容:
|
|
||||||
|
|
||||||
总完工工件数(按时间范围统计)
|
|
||||||
|
|
||||||
总工作天数
|
|
||||||
|
|
||||||
平均日产量
|
|
||||||
|
|
||||||
整体合格率(合格数/总完工数)
|
|
||||||
|
|
||||||
明细列表:日期、操作工位、完工工件SN、产品型号、合格/不合格、不合格原因
|
|
||||||
|
|
||||||
时间筛选:今日/本周/本月/近3个月/近1年/自定义起始日期
|
|
||||||
|
|
||||||
合格率趋势图(按日/按周)
|
|
||||||
|
|
||||||
导出 Excel/CSV
|
|
||||||
|
|
||||||
工人仅能看到本人数据,接口校验当前登录用户 ID
|
|
||||||
|
|
||||||
2. 管理端 — MES 后台「工人绩效报表」
|
|
||||||
权限:仅具备该菜单权限的用户可访问
|
|
||||||
|
|
||||||
筛选条件:时间范围、工位、工人、产品型号
|
|
||||||
|
|
||||||
汇总统计表:
|
|
||||||
|
|
||||||
工号 姓名 总完工数 合格数 不合格数 合格率 操作工位 操作
|
|
||||||
001 张三 245 240 5 97.96% 工位1、3 查看明细
|
|
||||||
支持按任意列排序,支持分页
|
|
||||||
|
|
||||||
点击「查看明细」弹窗显示:
|
|
||||||
|
|
||||||
完整历史记录(同工人端明细列表)
|
|
||||||
|
|
||||||
各工位分布统计(工位1干了多少件、工位2干了多少件等)
|
|
||||||
|
|
||||||
汇总图表:
|
|
||||||
|
|
||||||
各工人合格率对比柱状图
|
|
||||||
|
|
||||||
各工位产量分布图
|
|
||||||
|
|
||||||
每日产量趋势图(可切换查看不同工人的趋势)
|
|
||||||
|
|
||||||
导出 Excel/CSV
|
|
||||||
|
|
||||||
六、数据库变更
|
|
||||||
MES 用户表新增字段:
|
|
||||||
|
|
||||||
sql
|
|
||||||
ALTER TABLE users ADD COLUMN can_login_workstation BOOLEAN DEFAULT FALSE;
|
|
||||||
ALTER TABLE users ADD COLUMN workstation_password VARCHAR(128);
|
|
||||||
用户-工位关联表(多对多):
|
|
||||||
|
|
||||||
sql
|
|
||||||
CREATE TABLE user_workstations (
|
|
||||||
id BIGSERIAL PRIMARY KEY,
|
|
||||||
user_id BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
||||||
workstation_id INT NOT NULL, -- 1~12
|
|
||||||
created_at TIMESTAMP DEFAULT NOW(),
|
|
||||||
UNIQUE(user_id, workstation_id)
|
|
||||||
);
|
|
||||||
权限码表(种子数据):
|
|
||||||
|
|
||||||
sql
|
|
||||||
CREATE TABLE permissions (
|
|
||||||
id BIGSERIAL PRIMARY KEY,
|
|
||||||
code VARCHAR(64) UNIQUE NOT NULL, -- workorder:delete, material:edit, 等
|
|
||||||
name VARCHAR(128) NOT NULL, -- 显示名称
|
|
||||||
category VARCHAR(64), -- 所属模块
|
|
||||||
created_at TIMESTAMP DEFAULT NOW()
|
|
||||||
);
|
|
||||||
用户-权限关联表(按钮级):
|
|
||||||
|
|
||||||
sql
|
|
||||||
CREATE TABLE user_permissions (
|
|
||||||
id BIGSERIAL PRIMARY KEY,
|
|
||||||
user_id BIGINT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
||||||
permission_code VARCHAR(64) NOT NULL REFERENCES permissions(code) ON DELETE CASCADE,
|
|
||||||
created_at TIMESTAMP DEFAULT NOW(),
|
|
||||||
UNIQUE(user_id, permission_code)
|
|
||||||
);
|
|
||||||
工人工作量统计相关查询涉及的现有表:
|
|
||||||
|
|
||||||
work_order(工单)
|
|
||||||
|
|
||||||
scan_record(扫码报工记录)
|
|
||||||
|
|
||||||
torque_result(拧紧数据)
|
|
||||||
|
|
||||||
process_log(工序流转记录)
|
|
||||||
|
|
||||||
七、接口设计
|
|
||||||
工位终端登录验证:
|
|
||||||
|
|
||||||
text
|
|
||||||
POST /api/internal/workstation/login
|
|
||||||
请求:{ "username": "xxx", "password": "xxx" }
|
|
||||||
返回:{
|
|
||||||
"success": true,
|
|
||||||
"workstations": [1, 3, 5], -- 可操作的工位列表
|
|
||||||
"user_info": { "id": 1, "name": "张三" },
|
|
||||||
"station_configs": { -- 各工位当前绑定的工艺流程
|
|
||||||
"1": { "process_flow_id": 10, "name": "装配流程A", "pdf_url": "..." },
|
|
||||||
"3": { "process_flow_id": 12, "name": "测试流程B", "pdf_url": "..." }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
工位终端修改密码:
|
|
||||||
|
|
||||||
text
|
|
||||||
POST /api/internal/workstation/change-password
|
|
||||||
请求:{ "old_password": "xxx", "new_password": "xxx" }
|
|
||||||
工人端 — 我的工作量:
|
|
||||||
|
|
||||||
text
|
|
||||||
GET /api/internal/workstation/my-workload
|
|
||||||
请求参数:start_date, end_date(默认近30天)
|
|
||||||
返回:{ total_qty, qualified_qty, unqualified_qty, pass_rate,
|
|
||||||
details: [{ date, workstation_id, sn, product_code, result, reason }],
|
|
||||||
chart_data: { dates: [], rates: [] } }
|
|
||||||
管理端 — 工人绩效报表:
|
|
||||||
|
|
||||||
text
|
|
||||||
GET /api/internal/report/worker-performance
|
|
||||||
请求参数:start_date, end_date, workstation_id(可选), worker_id(可选), product_code(可选), page, page_size
|
|
||||||
返回:{ list: [{ worker_id, name, total, qualified, unqualified, pass_rate, workstations }],
|
|
||||||
total, page, page_size }
|
|
||||||
管理端 — 工人明细下钻:
|
|
||||||
|
|
||||||
text
|
|
||||||
GET /api/internal/report/worker-performance/detail
|
|
||||||
请求参数:worker_id, start_date, end_date
|
|
||||||
返回:{ details: [...], station_distribution: { "1": 80, "3": 45 } }
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
另外一件事,录音里面说: 希望有个可以打印的东西,上面有工位工人 签名的地方。这个涉及到两个事:
|
|
||||||
1、mes用户体系,需要有一个用户签名的照片?png? 你看看如何设计,将来可以融合到文档里面一起打印。文档是个pdf?
|
|
||||||
2、这个文档,什么维度?工人一天的工作量? 一个成品工件 多个工人的签名? 看看录音如何说吧。我理解是一个成品的质量追踪,也就是 工件多人签名。上面可能显示 ,开始时间、结束时间、工件名称,工艺步骤、合格率、各个工人签名、或者线长(拿pad的那个审核人)的签名。 这个文档自动生产的,但是生成前,可以手动维护 开始时间、结束时间、合格率、等,默认有签名人,也可以手动选择。没问题了,生成pdf。
|
|
||||||
|
|
||||||
数据来源就必须要去 每步工作流程都记录清楚了,每个精密件步骤都能追踪到。
|
|
||||||
|
|
||||||
其他ai答:
|
|
||||||
好,我直接按录音和常规质量追溯实践,给你落地方案:
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## 一、签名怎么存?
|
|
||||||
|
|
||||||
**不用图片,用“账号名 + 确认时间”即可。**
|
|
||||||
|
|
||||||
录音里工人已经说了:“不一定非得签字,就是他能追到这个人是他们这一天干了这个活。”所以不需要让用户上传签名照片(PNG),那是自找麻烦——每个工人还得专门拍一张、上传、维护,工厂里根本推行不动。
|
|
||||||
|
|
||||||
**方案:用账号名作为签名字段。**
|
|
||||||
|
|
||||||
打印时显示:
|
|
||||||
```
|
|
||||||
操作人:张三(工号:1001) 确认时间:2026-08-29 14:32:15
|
|
||||||
检验人:李四(工号:1002) 确认时间:2026-08-29 14:35:22
|
|
||||||
```
|
|
||||||
|
|
||||||
如果甲方坚持要“手写签名效果”,可以加一个“电子签名图片”字段,让用户上传一次(可选),有则显示图片,无则显示账号名。但默认用账号名。
|
|
||||||
|
|
||||||
**扩展:**
|
|
||||||
- 在用户管理中添加`signature_image`字段(可选,存储图片URL),供将来扩展用
|
|
||||||
- 如果用户上传了签名图片,打印PDF时使用图片;否则使用账号名(文本)
|
|
||||||
|
|
||||||
|
|
||||||
## 二、文档按什么维度生成?
|
|
||||||
|
|
||||||
**录音原文:**
|
|
||||||
|
|
||||||
> “流程卡呢记录了工序一、工序二,就是所有工序……工序一最终谁干的,然后谁签的字,以及谁检验的。”
|
|
||||||
|
|
||||||
**所以维度是:一个成品工件(SN)的质量追溯。** 一个工件经过多个工位,每个工位有操作人、检验人、时间、合格率。文档汇总了这些信息。
|
|
||||||
|
|
||||||
**不是“工人一天干了多少活”(那是工作量报表,不是这个),而是“这个工件由哪些人经手完成的”。**
|
|
||||||
|
|
||||||
|
|
||||||
## 三、文档里要包含哪些内容?
|
|
||||||
|
|
||||||
| 区域 | 内容 |
|
|
||||||
|------|------|
|
|
||||||
| **头信息** | 工件SN、产品型号、产品名称、工单号、开始时间、结束时间、总合格率 |
|
|
||||||
| **工序追溯明细** | 工序序号、工序名称、工位号、操作人、检验人、各步骤合格状态、完成时间 |
|
|
||||||
| **考核数据摘要** | 该工件各考核项的实际值/判定(拧紧扭矩、测量值等) |
|
|
||||||
| **签名区** | 各工位操作人签名、检验人签名、最终审核人签名(账号名) |
|
|
||||||
| **生成信息** | PDF生成时间、打印人 |
|
|
||||||
|
|
||||||
|
|
||||||
## 四、生成前人工维护什么?
|
|
||||||
|
|
||||||
用户说得对:“生成前可以手动维护开始时间、结束时间、合格率等,默认有签名人,也可以手动选择。”
|
|
||||||
|
|
||||||
**所以流程是:**
|
|
||||||
|
|
||||||
1. 用户在MES后台选择“生成流程卡”
|
|
||||||
2. 输入/选择工件SN或工单号
|
|
||||||
3. 系统自动带出所有工序记录(默认值)
|
|
||||||
4. 用户可手动调整:
|
|
||||||
- 开始时间、结束时间
|
|
||||||
- 合格率(如果系统数据有误,人工修正)
|
|
||||||
- 签名人(默认是实际操作人/检验人,可手动换成别人)
|
|
||||||
5. 点击“生成PDF” → 系统根据当前数据生成PDF文件
|
|
||||||
6. 可下载/打印
|
|
||||||
|
|
||||||
|
|
||||||
## 五、表结构变更
|
|
||||||
|
|
||||||
```sql
|
|
||||||
-- 用户表增加签名图片字段(可选扩展)
|
|
||||||
ALTER TABLE users ADD COLUMN signature_image VARCHAR(256);
|
|
||||||
|
|
||||||
-- 流程卡生成记录表(存储每次生成的快照,防止事后修改导致追溯失效)
|
|
||||||
CREATE TABLE process_card (
|
|
||||||
id BIGSERIAL PRIMARY KEY,
|
|
||||||
card_no VARCHAR(64) UNIQUE NOT NULL, -- 流程卡编号
|
|
||||||
work_order_no VARCHAR(64) NOT NULL, -- 关联工单
|
|
||||||
product_code VARCHAR(64) NOT NULL, -- 产品编码
|
|
||||||
serial_no VARCHAR(64) NOT NULL, -- 工件SN
|
|
||||||
start_time TIMESTAMP, -- 开始时间(可手动修正)
|
|
||||||
end_time TIMESTAMP, -- 结束时间(可手动修正)
|
|
||||||
pass_rate NUMERIC(5,2), -- 总合格率(可手动修正)
|
|
||||||
operator_snapshot JSONB, -- 各工位操作人快照(账号名)
|
|
||||||
inspector_snapshot JSONB, -- 各工位检验人快照(账号名)
|
|
||||||
step_details JSONB, -- 各步骤考核数据快照
|
|
||||||
generated_by BIGINT NOT NULL, -- 生成人
|
|
||||||
generated_at TIMESTAMP DEFAULT NOW(), -- 生成时间
|
|
||||||
pdf_url VARCHAR(256) -- 生成的PDF文件路径
|
|
||||||
);
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
## 六、PDF模板
|
|
||||||
|
|
||||||
```
|
|
||||||
┌─────────────────────────────────────────────────────────────┐
|
|
||||||
│ 【北京电力设备总厂】 产线流程卡 │
|
|
||||||
│ 编号:PC-20260829-001 │
|
|
||||||
├─────────────────────────────────────────────────────────────┤
|
|
||||||
│ 产品信息 │
|
|
||||||
│ ┌─────────────────────────────────────────────────────────┐ │
|
|
||||||
│ │ 工件SN:SN-HLX-001 工单号:WO001 │ │
|
|
||||||
│ │ 产品名称:汇流箱 2026标准型 开始:08-29 08:00 │ │
|
|
||||||
│ │ 结束:08-29 15:30 总合格率:98.5% │ │
|
|
||||||
│ └─────────────────────────────────────────────────────────┘ │
|
|
||||||
├─────────────────────────────────────────────────────────────┤
|
|
||||||
│ 工序追溯明细 │
|
|
||||||
│ ┌─────────────────────────────────────────────────────────┐ │
|
|
||||||
│ │ 工序1 工位1 操作:张三 检验:李四 OK 08:30 │ │
|
|
||||||
│ │ 工序2 工位2 操作:张三 检验:李四 OK 09:00 │ │
|
|
||||||
│ │ 工序3 工位3 操作:王五 检验:赵六 NG 09:30 │ │
|
|
||||||
│ │ → 合格率:90.0% 已返修通过 │ │
|
|
||||||
│ │ 工序4 工位4 操作:王五 检验:赵六 OK 10:00 │ │
|
|
||||||
│ └─────────────────────────────────────────────────────────┘ │
|
|
||||||
├─────────────────────────────────────────────────────────────┤
|
|
||||||
│ 考核数据摘要 │
|
|
||||||
│ ┌─────────────────────────────────────────────────────────┐ │
|
|
||||||
│ │ 拧紧螺丝A:2.48Nm(标准:2.5±0.1) OK │ │
|
|
||||||
│ │ 尺寸测量:300.05mm(标准:300±0.5) OK │ │
|
|
||||||
│ └─────────────────────────────────────────────────────────┘ │
|
|
||||||
├─────────────────────────────────────────────────────────────┤
|
|
||||||
│ 签名区 │
|
|
||||||
│ ┌─────────────────────────────────────────────────────────┐ │
|
|
||||||
│ │ 工序1操作人:张三(工号1001) 检验人:李四(工号1002) │ │
|
|
||||||
│ │ 工序2操作人:张三(工号1001) 检验人:李四(工号1002) │ │
|
|
||||||
│ │ 工序3操作人:王五(工号1003) 检验人:赵六(工号1004) │ │
|
|
||||||
│ │ 工序4操作人:王五(工号1003) 检验人:赵六(工号1004) │ │
|
|
||||||
│ │ │ │
|
|
||||||
│ │ 最终审核人:韩总(admin) 日期:2026-08-29 │ │
|
|
||||||
│ └─────────────────────────────────────────────────────────┘ │
|
|
||||||
│ 生成时间:2026-08-29 16:00 打印人:管理员 │
|
|
||||||
└─────────────────────────────────────────────────────────────┘
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
## 七、接口设计
|
|
||||||
|
|
||||||
**生成流程卡(生成前可预览修改):**
|
|
||||||
```
|
|
||||||
POST /api/internal/process-card/generate
|
|
||||||
请求:{
|
|
||||||
"serial_no": "SN-HLX-001",
|
|
||||||
"start_time": "2026-08-29 08:00:00", -- 可选,默认自动
|
|
||||||
"end_time": "2026-08-29 15:30:00", -- 可选,默认自动
|
|
||||||
"pass_rate": 98.5, -- 可选,默认自动计算
|
|
||||||
"operator_overrides": { -- 可选,手动指定某些工位的操作人
|
|
||||||
"3": "wangwu" -- 工序3换成王五
|
|
||||||
}
|
|
||||||
}
|
|
||||||
返回:{
|
|
||||||
"card_no": "PC-20260829-001",
|
|
||||||
"preview": { ...完整数据... } -- 前端展示供用户确认
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
**确认生成PDF:**
|
|
||||||
```
|
|
||||||
POST /api/internal/process-card/confirm
|
|
||||||
请求:{ "card_no": "PC-20260829-001" }
|
|
||||||
返回:{ "pdf_url": "/uploads/process-card-PC-20260829-001.pdf" }
|
|
||||||
```
|
|
||||||
|
|
||||||
**查询已生成的流程卡:**
|
|
||||||
```
|
|
||||||
GET /api/internal/process-card/list
|
|
||||||
请求参数:serial_no(可选), work_order_no(可选), start_date, end_date, page, page_size
|
|
||||||
返回:列表 + 分页
|
|
||||||
```
|
|
||||||
Reference in New Issue
Block a user