一、数据库总体设计

1.1 设计原则

  • 遵循第三范式
  • 适当冗余以提高查询效率
  • 考虑数据完整性和一致性
  • 预留扩展字段

1.2 表关系图

二、数据库表结构

2.1 基础表

2.1.1 用户表(sys_user)

CREATE TABLE sys_user (
    id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
    username VARCHAR(50) NOT NULL COMMENT '用户名',
    password VARCHAR(100) NOT NULL COMMENT '密码',
    real_name VARCHAR(50) COMMENT '真实姓名',
    phone VARCHAR(20) COMMENT '手机号',
    email VARCHAR(100) COMMENT '邮箱',
    department_id BIGINT COMMENT '部门ID',
    position VARCHAR(50) COMMENT '职位',
    user_type VARCHAR(20) COMMENT '用户类型(工程师/班组长/工区长/部门主管)',
    face_feature TEXT COMMENT '人脸特征数据',
    status TINYINT DEFAULT 1 COMMENT '状态(0:禁用,1:启用)',
    created_time DATETIME COMMENT '创建时间',
    updated_time DATETIME COMMENT '更新时间',
    UNIQUE KEY uk_username (username)
) COMMENT '用户表';

2.1.2 部门表(sys_department)

CREATE TABLE sys_department (
    id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
    dept_name VARCHAR(100) NOT NULL COMMENT '部门名称',
    parent_id BIGINT COMMENT '父部门ID',
    level INT COMMENT '层级',
    sort_order INT COMMENT '排序',
    status TINYINT DEFAULT 1 COMMENT '状态(0:禁用,1:启用)',
    created_time DATETIME COMMENT '创建时间',
    updated_time DATETIME COMMENT '更新时间'
) COMMENT '部门表';

2.2 设备管理相关表

2.2.1 设备信息表(device_info)

CREATE TABLE device_info (
    id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
    device_code VARCHAR(50) NOT NULL COMMENT '设备编号',
    device_name VARCHAR(100) NOT NULL COMMENT '设备名称',
    device_type VARCHAR(50) NOT NULL COMMENT '设备类型(客服/机电/消防/电梯)',
    model VARCHAR(100) COMMENT '设备型号',
    manufacturer VARCHAR(200) COMMENT '生产厂家',
    purchase_date DATE COMMENT '采购日期',
    installation_date DATE COMMENT '安装日期',
    warranty_period DATE COMMENT '保修期',
    maintenance_type VARCHAR(20) COMMENT '维保方式(自维/托管/技服)',
    status VARCHAR(20) COMMENT '设备状态(正常/故障/报废)',
    location VARCHAR(200) COMMENT '安装位置',
    department_id BIGINT COMMENT '所属部门ID',
    specifications TEXT COMMENT '设备规格',
    remark TEXT COMMENT '备注',
    created_time DATETIME COMMENT '创建时间',
    updated_time DATETIME COMMENT '更新时间',
    UNIQUE KEY uk_device_code (device_code)
) COMMENT '设备信息表';

2.2.2 设备变更记录表(device_change_log)

CREATE TABLE device_change_log (
    id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
    device_id BIGINT NOT NULL COMMENT '设备ID',
    change_type VARCHAR(50) NOT NULL COMMENT '变更类型',
    change_content TEXT COMMENT '变更内容',
    operator_id BIGINT COMMENT '操作人ID',
    created_time DATETIME COMMENT '创建时间'
) COMMENT '设备变更记录表';

2.2.3 设备巡检项目表(device_inspection_items)

CREATE TABLE device_inspection_items (
    id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
    device_type VARCHAR(50) NOT NULL COMMENT '设备类型',
    item_name VARCHAR(200) NOT NULL COMMENT '巡检项目名称',
    item_description TEXT COMMENT '项目描述',
    check_method TEXT COMMENT '检查方法',
    standard_value VARCHAR(200) COMMENT '标准值',
    created_time DATETIME COMMENT '创建时间',
    updated_time DATETIME COMMENT '更新时间'
) COMMENT '设备巡检项目表';

2.3 工单管理相关表

2.3.1 工单主表(work_order)

CREATE TABLE work_order (
    id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
    order_no VARCHAR(50) NOT NULL COMMENT '工单编号',
    device_id BIGINT NOT NULL COMMENT '设备ID',
    order_type VARCHAR(20) NOT NULL COMMENT '工单类型(故障/巡检/保养/检测)',
    status VARCHAR(20) NOT NULL COMMENT '工单状态(待处理/处理中/待验收/已完成)',
    priority VARCHAR(20) COMMENT '优先级(低/中/高/紧急)',
    description TEXT COMMENT '工单描述',
    engineer_id BIGINT COMMENT '工程师ID',
    start_time DATETIME COMMENT '开始时间',
    end_time DATETIME COMMENT '完成时间',
    repair_method TEXT COMMENT '维修方法',
    repair_result TEXT COMMENT '维修结果',
    created_time DATETIME COMMENT '创建时间',
    updated_time DATETIME COMMENT '更新时间',
    UNIQUE KEY uk_order_no (order_no)
) COMMENT '工单主表';

-- 修改工单表,添加满意度评分和完成时间字段
ALTER TABLE work_order
ADD COLUMN satisfaction_score INT COMMENT '满意度评分',
ADD COLUMN completion_time DATETIME COMMENT '最终完成时间',
ADD COLUMN approval_stage VARCHAR(50) COMMENT '审核阶段(班组长/工区长/部门主管)';

2.3.2 工单审核记录表(work_order_approval)

CREATE TABLE work_order_approval (
    id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
    order_id BIGINT NOT NULL COMMENT '工单ID',
    approver_id BIGINT NOT NULL COMMENT '审核人ID',
    approval_type VARCHAR(20) COMMENT '审核类型(班组长审核/工区长审核/部门主管审核)',
    approval_status VARCHAR(20) COMMENT '审核状态(待审核/通过/驳回)',
    approval_time DATETIME COMMENT '审核时间',
    approval_opinion TEXT COMMENT '审核意见',
    satisfaction_score INT COMMENT '满意度评分',
    face_verify_status TINYINT COMMENT '人脸验证状态(0:未验证,1:已验证)',
    created_time DATETIME COMMENT '创建时间'
) COMMENT '工单审核记录表';

ALTER TABLE work_order_approval
ADD COLUMN signature TEXT COMMENT '电子签名数据',
ADD COLUMN signature_time DATETIME COMMENT '签名时间';

2.3.3 工单照片表(work_order_photo)

CREATE TABLE work_order_photo (
    id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
    order_id BIGINT NOT NULL COMMENT '工单ID',
    photo_type VARCHAR(20) COMMENT '照片类型(处理前/处理后)',
    photo_url VARCHAR(500) NOT NULL COMMENT '照片URL',
    photo_time DATETIME COMMENT '拍摄时间',
    watermark_info VARCHAR(200) COMMENT '水印信息',
    quality_check_status VARCHAR(20) COMMENT '质量检查状态',
    quality_score DECIMAL(5,2) COMMENT '图片质量分数',
    blur_degree DECIMAL(5,2) COMMENT '模糊度',
    created_time DATETIME COMMENT '创建时间'
) COMMENT '工单照片表';

2.3.4 备件更换记录表(parts_replacement)

CREATE TABLE parts_replacement (
    id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
    order_id BIGINT NOT NULL COMMENT '工单ID',
    part_name VARCHAR(100) NOT NULL COMMENT '备件名称',
    part_model VARCHAR(100) COMMENT '备件型号',
    quantity INT NOT NULL COMMENT '更换数量',
    replacement_time DATETIME COMMENT '更换时间',
    operator_id BIGINT COMMENT '操作人ID',
    created_time DATETIME COMMENT '创建时间'
) COMMENT '备件更换记录表';

2.3.5 巡检记录明细表(inspection_detail)

CREATE TABLE inspection_detail (
    id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
    order_id BIGINT NOT NULL COMMENT '工单ID',
    item_id BIGINT NOT NULL COMMENT '巡检项目ID',
    check_result VARCHAR(50) COMMENT '检查结果(正常/异常)',
    abnormal_description TEXT COMMENT '异常描述',
    created_time DATETIME COMMENT '创建时间'
) COMMENT '巡检记录明细表';

2.4 通知消息相关表

2.4.1 系统通知表(sys_notification)

CREATE TABLE sys_notification (
    id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
    user_id BIGINT NOT NULL COMMENT '接收用户ID',
    title VARCHAR(200) NOT NULL COMMENT '通知标题',
    content TEXT COMMENT '通知内容',
    notify_type VARCHAR(20) COMMENT '通知类型(系统消息/短信通知/待办提醒)',
    read_status TINYINT DEFAULT 0 COMMENT '读取状态(0:未读,1:已读)',
    created_time DATETIME COMMENT '创建时间'
) COMMENT '系统通知表';

2.4.2 待办任务表(todo_task)

CREATE TABLE todo_task (
    id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
    user_id BIGINT NOT NULL COMMENT '用户ID',
    task_type VARCHAR(50) NOT NULL COMMENT '任务类型',
    task_content TEXT COMMENT '任务内容',
    related_id BIGINT COMMENT '关联ID(工单ID等)',
    status TINYINT DEFAULT 0 COMMENT '状态(0:待处理,1:已处理)',
    deadline DATETIME COMMENT '截止时间',
    priority INT DEFAULT 0 COMMENT '优先级',
    created_time DATETIME COMMENT '创建时间',
    updated_time DATETIME COMMENT '更新时间'
) COMMENT '待办任务表';

2.5 系统配置表

2.5.1 系统参数配置表(sys_config)

CREATE TABLE sys_config (
    id BIGINT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
    param_key VARCHAR(100) NOT NULL COMMENT '参数键',
    param_value VARCHAR(500) NOT NULL COMMENT '参数值',
    param_desc VARCHAR(500) COMMENT '参数描述',
    created_time DATETIME COMMENT '创建时间',
    updated_time DATETIME COMMENT '更新时间',
    UNIQUE KEY uk_param_key (param_key)
) COMMENT '系统参数配置表';

三、索引设计

3.1 主要索引列表

  1. sys_user: username(唯一索引)
  2. device_info: device_code(唯一索引)
  3. work_order: order_no(唯一索引)
  4. work_order: device_id, status(复合索引)
  5. work_order_approval: order_id, approval_status(复合索引)
  6. sys_notification: user_id, read_status(复合索引)
  7. todo_task: user_id, status(复合索引)

四、数据字典

4.1 通用状态码

  • 0: 禁用/未处理
  • 1: 启用/已处理

4.2 工单状态

  • PENDING: 待处理
  • PROCESSING: 处理中
  • WAITING_ACCEPTANCE: 待验收
  • COMPLETED: 已完成
  • REJECTED: 已驳回

4.3 设备类型

  • CUSTOMER_SERVICE: 客服设备
  • MECHANICAL: 机电设备
  • FIRE_CONTROL: 消防设备
  • ELEVATOR: 电梯设备

4.4 维保方式

  • SELF: 自维
  • OUTSOURCE: 托管
  • TECHNICAL: 技服

五、注意事项

  1. 所有表都包含审计字段(created_time, updated_time)
  2. 重要操作都需要记录日志
  3. 关键字段都建立了索引
  4. 图片存储使用独立的文件存储系统,数据库只存储URL
  5. 人脸特征数据需要加密存储

六、扩展建议

  1. 可以考虑添加设备保养计划表
  2. 可以添加设备操作手册表
  3. 可以添加设备维修历史统计表
  4. 可以添加工单评价详情表

七、性能优化建议

  1. 对于大表建议进行分区
  2. 历史数据可以考虑归档
  3. 频繁查询的数据可以使用缓存
  4. 图片等大文件建议使用对象存储
posted on 2025-04-29 21:38  -MARIO  阅读(102)  评论(0)    收藏  举报