Appearance
工单流程数据模型
**本文引用的文件** - [workflow.sql](file://docs/ddl/workflow.sql) - [MaintenanceWorkOrdersDo.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/model/device/MaintenanceWorkOrdersDo.java) - [RepairWorkOrdersDo.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/model/device/RepairWorkOrdersDo.java) - [MaintenanceTasksDo.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/model/device/MaintenanceTasksDo.java) - [MaintenanceWorkOrdersMapper.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/mapper/device/MaintenanceWorkOrdersMapper.java) - [MaintenanceWorkOrdersServiceImpl.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/service/device/impl/MaintenanceWorkOrdersServiceImpl.java) - [MpLevelCloseWotJob.java](file://lemes-job-devicemate/lemes-job-devicemate-executor/src/main/java/com/lenovo/lemes/job/devicemate/executor/handler/MpLevelCloseWotJob.java) - [Constant.java](file://lemes-job-devicemate/lemes-job-devicemate-common/src/main/java/com/lenovo/lemes/job/devicemate/common/constant/Constant.java) - [DeviceEnum.java](file://lemes-job-devicemate/lemes-job-devicemate-common/src/main/java/com/lenovo/lemes/job/devicemate/common/enums/DeviceEnum.java) - [repair.vue](file://app/devicemate-app/modules/repair/repair.vue) - [maintain.vue](file://app/devicemate-app/modules/maintain/maintain.vue) - [ExceptionCode.java](file://lemes-cloud/lemes-business-devicemate/lemes-service-dm-common/lemes-service-dm-common-common/src/main/java/com/lenovo/lemes/service/dm/common/client/tools/entity/constant/ExceptionCode.java)目录
简介
本文件聚焦于工单流程模块的数据模型设计,围绕以下核心实体展开:保养工单(maintenance_work_orders)、维修工单(repair_work_orders)、保养任务(maintenance_tasks),并结合工作流相关表(flow_business_config、flow_node_config、flow_user、flow_user_role、flow_audit_log 等)进行整体建模。文档详细说明工单编号生成规则、工单类型分类、优先级与等级、状态流转、执行记录等关键字段的设计原理,并阐述工单与设备、维护计划、人员权限的关联关系,以及状态机设计与业务规则实现。最后提供工单创建、派发、执行、验收、关闭的完整流程数据模型示例。
项目结构
工单流程数据模型由三层构成:
- 数据层:PostgreSQL DDL 定义的工作流与工单相关表
- 实体层:MyBatis-Plus DO 实体类映射工单与任务表
- 应用层:前端页面通过 HTTP 接口驱动工单状态变更
图表来源
- workflow.sql:111-146
- workflow.sql:276-294
- workflow.sql:327-363
- workflow.sql:365-411
- workflow.sql:1-71
- MaintenanceWorkOrdersDo.java:12-123
- RepairWorkOrdersDo.java:15-225
- MaintenanceTasksDo.java:15-126
- repair.vue:137-183
- maintain.vue:199-232
章节来源
- workflow.sql:1-564
- MaintenanceWorkOrdersDo.java:1-123
- RepairWorkOrdersDo.java:1-225
- MaintenanceTasksDo.java:1-126
- repair.vue:122-183
- maintain.vue:185-232
核心组件
本节对工单主表、明细与历史表进行逐项解析,并给出字段设计原则与约束。
保养工单表(maintenance_work_orders)
- 关键字段
- 工单单号(work_order_no):唯一标识,用于跨系统追踪
- 设备代号(device_no):关联设备
- 工单状态(order_status):状态机流转的关键
- 执行人(excutor_name/no)、执行时间(excutor_time)
- 开始/截止时间(start_time/end_time)
- 确认人(confirm_name/no/time)、备注(remark)
- 优先等级(precedence_level)、维保等级(maintenance_level)
- 业务类型(bussiness_type):区分保养/点检/巡检/环境
- 巡检负责人(patrol_name/no)、产线(product_line_no/name)
- 超期预警(is_overdue_warn)、提前提醒(is_ahead_alert)
- 关联任务(task_id/task_no)
- 设计原则
- 字段命名统一采用英文语义化,便于跨语言与国际化
- 时间字段使用精确到秒或毫秒的时间戳,满足审计与统计需求
- 逻辑删除字段(is_delete)与审计字段(create_time/update_time/create_user/update_user)遵循统一基类规范
- 业务类型与等级字段用于后续扩展与过滤
- 关键字段
维修工单表(repair_work_orders)
- 关键字段
- 工单单号(work_order_no)、设备代号(device_no)
- 工单状态(order_status)、紧急程度(urgency_degree)
- 责任人(excutor_name/no)、签到时间(sign_in_time)、维修时间(repair_time)
- 确认人(confirm_name/no/time)、上报人(report_name/no)
- 问题说明(issue_description)、不良数(rejects_number)、不良率(rejects_percent)
- 问题代码(issue_code)、问题分类(issue_classify)、不良部件(rejects_part)
- 临时/长久措施(interim_measure/permanent_measure)及其责任人与完成日期
- 产品线(product_line_no/name)、部门代号(dept_no)
- 备注(remark)、来源标记(from_create)
- 设计原则
- 将维修过程中的“临时-长久”措施分离,支持闭环管理
- 问题分类与代码字段便于统计分析与知识沉淀
- 与保养工单共享状态机与流程控制,但细节字段差异明显
- 关键字段
保养任务表(maintenance_tasks)
- 关键字段
- 任务单号(task_no)、计划代号(plan_no)、计划名称(plan_name)
- 设备数量(device_count)、已完成设备数量(completed_device_count)
- 任务生成/完成时间(task_generate_time/task_completed_time)
- 计划类型(plan_type)、周期计划(period_plan/value)
- 提醒提前期(ahead_alert/value)、超期预警(overdue_warn/value)
- 需要领导确认(need_confirm)、部门编号(dept_no)
- 计划开始时间(task_plan_be_time)
- 巡检负责人(excutor_name/no)、产线(line_no/name)
- 业务类型(bussiness_type)、维保等级(maintenance_level)、优先等级(precedence_level)
- 设计原则
- 任务表作为工单生成的上游来源,承载计划与提醒策略
- 完成计数字段用于任务进度统计与工单批量关闭联动
- 关键字段
工作流相关表
- 流程业务配置(flow_business_config):业务码与流程图key映射
- 流程节点配置(flow_node_config):节点标题、索引、类型与参数
- 用户表(flow_user)与角色中间表(flow_user_role):用户、角色、层级(工厂/部门)
- 审批日志(flow_audit_log):流程实例、节点、审批人、时间、业务单号与类型
- 设计原则
- 以流程图key为纽带,将业务单据与流程节点解耦
- 审批日志保留完整的审计轨迹,便于追溯
章节来源
- MaintenanceWorkOrdersDo.java:12-123
- RepairWorkOrdersDo.java:15-225
- MaintenanceTasksDo.java:15-126
- workflow.sql:111-146
- workflow.sql:276-294
- workflow.sql:327-363
- workflow.sql:365-411
- workflow.sql:1-71
架构总览
工单流程从“任务生成”到“工单执行与确认”的整体架构如下:
图表来源
- repair.vue:137-183
- maintain.vue:199-232
- MaintenanceWorkOrdersServiceImpl.java:26-43
- MaintenanceWorkOrdersMapper.java:1-16
- MaintenanceWorkOrdersDo.java:12-123
- MaintenanceTasksDo.java:15-126
详细组件分析
工单主表与明细表 ER 关系
图表来源
章节来源
工单编号生成规则
- 规则说明
- 保养工单编号:以业务类型前缀 + Redis序列生成,确保全局唯一且具备可读性
- 巡检/点检/环境工单编号:分别对应不同的前缀,便于区分业务域
- 生成位置:在任务生成工单时,依据业务类型选择对应前缀与序列键
- 关键实现
- 常量定义包含各类工单编号前缀与序列键
- 服务层在批量生成工单时,调用Redis获取重置后的序列号并拼接前缀
- 示例路径
章节来源
工单类型分类与维保等级
- 工单类型(bussiness_type)
- 保养(0)、点检(1)、巡检(2)、环境(3)
- 维保等级(maintenance_level)
- 日点检、日保养、周保养、月保养、年保养、不定期保养
- 优先等级(precedence_level)
- 用于同等级内不同工单的调度优先级,系统可基于此进行自动关闭与合并
- 示例路径
章节来源
工单状态机与业务规则
- 状态机设计
- 未受理(1)、已受理(2)、已确认(3)、已关闭(6)等
- 维修工单包含紧急程度字段,影响派发与响应策略
- 业务规则
- 待确认状态才能指派/确认/驳回
- 已完成或已关闭的工单不允许再次操作
- 未受理状态下才允许签到
- 同设备同等级内高优先级工单可自动关闭低优先级工单
- 异常码参考
- 工单状态相关异常码集中定义,便于前后端统一处理
- 示例路径
章节来源
工单执行记录与历史表
- 执行记录
- 保养工单:执行人、执行时间、开始/截止时间、确认人、确认时间
- 维修工单:签到时间、维修时间、确认人、上报人、问题描述、不良数/率、措施与责任人
- 历史表
- 审批日志(flow_audit_log):记录流程实例、节点、审批人、时间、业务单号与类型
- 节点配置(flow_node_config):节点标题、索引、类型与参数
- 用户与角色(flow_user/flow_user_role):用户、角色、层级(工厂/部门)
- 示例路径
章节来源
- MaintenanceWorkOrdersDo.java:34-81
- RepairWorkOrdersDo.java:35-162
- workflow.sql:1-71
- workflow.sql:276-294
- workflow.sql:327-411
工单创建、派发、执行、验收、关闭流程示例
- 创建
- 任务生成工单:读取任务计划,设置开始/截止时间、优先级、维保等级、业务类型,生成唯一工单编号
- 派发
- 保养工单:未受理状态下可指派执行人;维修工单:紧急程度影响派发策略
- 执行
- 保养工单:执行人签到、填写执行时间、说明;维修工单:签到、维修、记录问题与不良数
- 验收
- 保养工单:确认人确认;维修工单:确认人确认并填写结论与措施
- 关闭
- 保养工单:完成计数达到设备总数时关闭;维修工单:完成并关闭
- 示例路径
章节来源
依赖分析
- 组件耦合
- 前端页面通过 HTTP 接口驱动工单状态变更,服务层依赖持久层进行数据读写
- 工单实体与任务实体存在一对多关系,任务决定工单的生成与属性
- 工作流相关表为流程配置与审计提供支撑
- 外部依赖
- Redis 用于工单编号序列生成
- PostgreSQL 存储工单、任务与流程相关表
- 潜在风险
- 缺少字段级权限控制与审计字段的自动填充需在服务层统一实现
- 状态变更的幂等性与并发控制需在服务层保证
图表来源
- repair.vue:137-183
- maintain.vue:199-232
- MaintenanceWorkOrdersServiceImpl.java:26-43
- MaintenanceWorkOrdersMapper.java:1-16
- MaintenanceTasksDo.java:15-126
- Constant.java:150-199
- workflow.sql:1-71
章节来源
- repair.vue:137-183
- maintain.vue:199-232
- MaintenanceWorkOrdersServiceImpl.java:26-43
- MaintenanceWorkOrdersMapper.java:1-16
- MaintenanceTasksDo.java:15-126
- Constant.java:150-199
- workflow.sql:1-71
性能考虑
- 查询优化
- 对工单状态、设备代号、业务类型建立索引,提升分页与筛选性能
- 任务完成计数与工单批量关闭场景建议使用批量更新
- 写入优化
- 工单编号序列通过 Redis 原子递增,避免数据库锁竞争
- 审批日志与工单变更采用异步写入策略,降低主流程阻塞
- 缓存策略
- 工单状态与任务计划可缓存热点数据,减少数据库访问
- 并发控制
- 状态变更采用乐观锁或分布式锁,防止并发冲突
故障排查指南
- 常见问题定位
- 工单状态异常:检查异常码定义与前端提示,确认是否处于允许状态
- 工单编号重复:核对 Redis 序列键与前缀配置,确保唯一性
- 自动关闭逻辑未触发:检查维保等级与优先级字段,确认任务完成计数
- 关键异常码参考
- 工单状态相关异常码集中定义,便于快速定位问题
- 示例路径
章节来源
结论
本数据模型以“任务-工单-执行-确认-关闭”为主线,结合工作流配置与审计日志,形成完整的工单生命周期管理。通过统一的编号规则、清晰的状态机与严格的业务规则,实现了保养、点检、巡检与环境工单的标准化管理。建议在后续迭代中进一步完善权限控制、审计字段自动化与并发控制,以提升系统的稳定性与可维护性。
附录
- 相关 DDL 文件
- 相关实体类
- 相关前端页面