Skip to content

工单流程数据模型

**本文引用的文件** - [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)

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构总览
  5. 详细组件分析
  6. 依赖分析
  7. 性能考虑
  8. 故障排查指南
  9. 结论
  10. 附录

简介

本文件聚焦于工单流程模块的数据模型设计,围绕以下核心实体展开:保养工单(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 接口驱动工单状态变更

图表来源

章节来源

核心组件

本节对工单主表、明细与历史表进行逐项解析,并给出字段设计原则与约束。

  • 保养工单表(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为纽带,将业务单据与流程节点解耦
      • 审批日志保留完整的审计轨迹,便于追溯

章节来源

架构总览

工单流程从“任务生成”到“工单执行与确认”的整体架构如下:

图表来源

详细组件分析

工单主表与明细表 ER 关系

图表来源

章节来源

工单编号生成规则

  • 规则说明
    • 保养工单编号:以业务类型前缀 + Redis序列生成,确保全局唯一且具备可读性
    • 巡检/点检/环境工单编号:分别对应不同的前缀,便于区分业务域
    • 生成位置:在任务生成工单时,依据业务类型选择对应前缀与序列键
  • 关键实现
    • 常量定义包含各类工单编号前缀与序列键
    • 服务层在批量生成工单时,调用Redis获取重置后的序列号并拼接前缀
  • 示例路径

章节来源

工单类型分类与维保等级

  • 工单类型(bussiness_type)
    • 保养(0)、点检(1)、巡检(2)、环境(3)
  • 维保等级(maintenance_level)
    • 日点检、日保养、周保养、月保养、年保养、不定期保养
  • 优先等级(precedence_level)
    • 用于同等级内不同工单的调度优先级,系统可基于此进行自动关闭与合并
  • 示例路径

章节来源

工单状态机与业务规则

章节来源

工单执行记录与历史表

章节来源

工单创建、派发、执行、验收、关闭流程示例

  • 创建
    • 任务生成工单:读取任务计划,设置开始/截止时间、优先级、维保等级、业务类型,生成唯一工单编号
  • 派发
    • 保养工单:未受理状态下可指派执行人;维修工单:紧急程度影响派发策略
  • 执行
    • 保养工单:执行人签到、填写执行时间、说明;维修工单:签到、维修、记录问题与不良数
  • 验收
    • 保养工单:确认人确认;维修工单:确认人确认并填写结论与措施
  • 关闭
    • 保养工单:完成计数达到设备总数时关闭;维修工单:完成并关闭
  • 示例路径

章节来源

依赖分析

  • 组件耦合
    • 前端页面通过 HTTP 接口驱动工单状态变更,服务层依赖持久层进行数据读写
    • 工单实体与任务实体存在一对多关系,任务决定工单的生成与属性
    • 工作流相关表为流程配置与审计提供支撑
  • 外部依赖
    • Redis 用于工单编号序列生成
    • PostgreSQL 存储工单、任务与流程相关表
  • 潜在风险
    • 缺少字段级权限控制与审计字段的自动填充需在服务层统一实现
    • 状态变更的幂等性与并发控制需在服务层保证

图表来源

章节来源

性能考虑

  • 查询优化
    • 对工单状态、设备代号、业务类型建立索引,提升分页与筛选性能
    • 任务完成计数与工单批量关闭场景建议使用批量更新
  • 写入优化
    • 工单编号序列通过 Redis 原子递增,避免数据库锁竞争
    • 审批日志与工单变更采用异步写入策略,降低主流程阻塞
  • 缓存策略
    • 工单状态与任务计划可缓存热点数据,减少数据库访问
  • 并发控制
    • 状态变更采用乐观锁或分布式锁,防止并发冲突

故障排查指南

  • 常见问题定位
    • 工单状态异常:检查异常码定义与前端提示,确认是否处于允许状态
    • 工单编号重复:核对 Redis 序列键与前缀配置,确保唯一性
    • 自动关闭逻辑未触发:检查维保等级与优先级字段,确认任务完成计数
  • 关键异常码参考
    • 工单状态相关异常码集中定义,便于快速定位问题
  • 示例路径

章节来源

结论

本数据模型以“任务-工单-执行-确认-关闭”为主线,结合工作流配置与审计日志,形成完整的工单生命周期管理。通过统一的编号规则、清晰的状态机与严格的业务规则,实现了保养、点检、巡检与环境工单的标准化管理。建议在后续迭代中进一步完善权限控制、审计字段自动化与并发控制,以提升系统的稳定性与可维护性。

附录