Files
bj_power/问题记录.md
T
SunYF 4ec6784629 feat: 完成MES工位终端系统全量功能迭代
本次提交包含以下核心变更:
1. 新增按钮级权限控制框架与前端权限校验
2. 新增工位管理、工艺流程、巡检终端等核心业务模块
3. 完善用户体系,支持工位终端专属登录权限
4. 新增文件上传下载、报表查询等配套功能
5. 修复多系统兼容性与交互体验问题
6. 完成所有文档与配置项的规范化更新
2026-08-31 08:06:55 +08:00

21 KiB
Raw Blame History

一、工位终端,问题: 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 返回 404not 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项目时验证

  1. 工位操作员管理 MES后台新增「工位操作员管理」功能:

从已有用户列表中选择用户

勾选“允许登录工位终端”开关

分配可操作的工位(多选,从1~12号工位中选择)

工位终端登录后可以修改自己的密码(仅改 workstation_password,不改 MES 主密码)

  1. 工位终端登录逻辑 用户输入工号 + 工位终端密码,请求 MES 验证

MES 验证内容:

用户存在

can_login_workstation = true

密码正确

该用户至少被分配了一个工位

验证通过后返回:用户可操作的工位列表 + 对应工位的当前工艺流程信息

如用户未被分配任何工位,提示“您未被授权操作任何工位,请联系管理员”

二、用户无 MES 菜单权限时的显示 如用户没有任何 MES 后台菜单权限,登录 MES 网页时不显示空白页

重定向到「工位操作员工作台」页面,包含:

当前可操作工位列表及状态

当前工单信息

操作记录查询(仅限本人)

修改个人信息/密码

三、权限体系

  1. 权限粒度 菜单级 + 按钮级,精确到按钮

每个按钮对应一个权限码(如 workorder:delete、material:edit

前端根据用户权限码控制按钮显示/隐藏

后端每个接口校验当前用户是否具有该操作权限

  1. 操作日志 所有关键操作记录完整日志

日志必含字段:

操作人ID和姓名

操作时间

操作类型(新增/修改/删除/提交/审核等)

操作对象(工单号、物料编码、SN码等)

操作前后数据变化(如有)

操作结果(成功/失败及失败原因)

日志中必须包含 workOrderNo、operator 字段

四、PDF 与工艺流程

  1. PDF 归属 PDF(作业指导书)挂载在工艺流程上,不直接挂工位或工单

每个工艺流程有一个 PDF 文件

工位绑定的是工艺流程(PDF 跟着工艺流程走)

工位 D 启动时,根据当前绑定的工艺流程,预缓存其 PDF 到本地

登录后替换成 PDF,不每次请求 MES

  1. 工位与工艺流程关系 一个工位当前只能绑定一个工艺流程

一个工艺流程可以绑定多个工位

工位今天绑了流程 A,所有经过该工位的工件都按 A 的步骤加工

明天换成流程 B,就按 B 加工

  1. 工艺流程自定义 MES 后台自定义工艺流程

工艺流程包含多个工艺步骤

工艺步骤不仅限于拧紧枪,管理员可自定义:

步骤类型 示例 数据采集方式 拧紧 拧螺丝A,目标扭矩 2.5Nm 拧紧枪自动采集 手动检查 外观检查 工人手动打勾 测量 测量尺寸,公差 ±0.1 工人手工输入数值 装配 安装主板 人工操作,扫码确认 测试 通电测试,电压 5V 测试设备采集或手动输入 4. 工艺步骤与考核数据模型 text 工艺流程 (Process Flow) ↓ 包含 工艺步骤 (Step) — 顺序号、操作描述、采集方式 ↓ 包含 考核标准 (Standard) — 参数名、单位、上限、下限 ↓ 对应 考核数据 (Data) — 实际值、是否合格、采集方式(手动/设备) 每个步骤可配置多个考核标准

工人操作时按步骤顺序执行,每步完成后点击「完成本步骤」进入下一步

五、工人工作量统计

  1. 工人端 — 工位终端「我的工作量」 登录工位终端后可查看

展示内容:

总完工工件数(按时间范围统计)

总工作天数

平均日产量

整体合格率(合格数/总完工数)

明细列表:日期、操作工位、完工工件SN、产品型号、合格/不合格、不合格原因

时间筛选:今日/本周/本月/近3个月/近1年/自定义起始日期

合格率趋势图(按日/按周)

导出 Excel/CSV

工人仅能看到本人数据,接口校验当前登录用户 ID

  1. 管理端 — 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. 可下载/打印

五、表结构变更

-- 用户表增加签名图片字段(可选扩展)
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
返回:列表 + 分页