【生产】工作记录

来源:https://cloud.iocoder.cn/mes/pro/work-record/

工作记录模块,由 yudao-module-mes 后端模块的 pro.workrecord 包实现,用于管理车间操作人员与工作站之间的上工/下工绑定关系

模块采用快照 + 流水的双表架构:

本文涉及表如下图所示:

工作记录模块

1. 当前绑定状态(快照表)

当前绑定状态表用于存储每个用户最新的工作站绑定快照,由 MesProWorkRecordServiceImpl 内部维护,不由前端直接增删改。

1.1 表结构

省略 creator/create_time/updater/update_time/deleted/tenant_id 等通用字段

CREATE TABLE `mes_pro_work_record` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号',

  `user_id` bigint NOT NULL COMMENT '用户编号',

  `workstation_id` bigint NOT NULL COMMENT '工作站编号',

  `type` tinyint NOT NULL COMMENT '当前状态(1=上工 2=下工)',

  `clock_in_time` datetime DEFAULT NULL COMMENT '上工时间',
  `clock_out_time` datetime DEFAULT NULL COMMENT '下工时间',

  `remark` varchar(500) DEFAULT '' COMMENT '备注',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_user_id` (`user_id`)
) ENGINE=InnoDB COMMENT='MES 当前绑定状态快照';

user_id 关联 system_users 表的 id 字段,通过唯一索引 uk_user_id 保证每个用户最多一条记录。首次上工时插入,后续上工/下工均为更新。

workstation_id 关联 mes_md_workstation 表的 id 字段,记录用户最近一次操作的工作站,详见 《【基础】车间设置、工作站设置》下工时不会清空该字段,仅更新 typeclock_out_time

type 为当前状态,枚举 MesProWorkRecordTypeEnum(1=上工,2=下工)。上工时设置为 1,下工时设置为 2。

clock_in_timeclock_out_time 记录最近一次上工/下工的时间。上工时系统更新 clock_in_timeclock_out_time 保留上一次下工时间不变;下工时系统写入 clock_out_time

2. 上下工记录流水

上下工记录流水,由 MesProWorkRecordController 提供接口。每一次上工/下工操作都会在流水表中追加一条记录,构成完整的历史时间线。

2.1 表结构

省略 creator/create_time/updater/update_time/deleted/tenant_id 等通用字段

CREATE TABLE `mes_pro_work_record_log` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '编号',

  `user_id` bigint NOT NULL COMMENT '用户编号',

  `workstation_id` bigint NOT NULL COMMENT '工作站编号',

  `type` tinyint NOT NULL COMMENT '操作类型(1=上工 2=下工)',

  `remark` varchar(500) DEFAULT '' COMMENT '备注',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB COMMENT='MES 上下工记录流水';

user_id 关联 system_users 表的 id 字段,标识执行上工/下工操作的用户。

workstation_id 关联 mes_md_workstation 表的 id 字段,标识本次操作关联的工作站,详见 《【基础】车间设置、工作站设置》

type 为操作类型,枚举 MesProWorkRecordTypeEnum(1=上工,2=下工)。

上工/下工业务流程

用户A 上工(工作站X) ──→ 快照表:插入/更新为上工状态
                      流水表:追加一条「上工」记录

用户A 下工 ──────────→ 快照表:更新为下工状态
                      流水表:追加一条「下工」记录

用户A 再次上工(工作站Y) → 快照表:更新工作站为Y,状态为上工
                        流水表:追加一条「上工」记录

2.2 管理后台

对应 [MES 系统 -> 生产管理 -> 工作记录] 菜单,对应 yudao-ui-admin-vue3 项目的 @/views/mes/pro/workrecord 目录。

我的工作站状态栏

页面顶部有一个横向状态栏(WorkRecordStatusBar.vue),显示当前登录用户的工作站绑定状态:

上工/下工操作完成后,状态栏会自动刷新,同时触发下方流水列表重新加载。

管理后台 - 工作记录状态栏

列表

状态栏下方为上下工记录流水列表。支持按用户、工作站、操作类型、操作时间范围等条件搜索。列表展示编号、用户、工作站编码、工作站名称、操作类型(上工/下工)、创建时间等信息。

管理后台 - 工作记录列表