RuoYi/.trae/documents/线索值班配置系统技术架构文档.md

7.3 KiB
Raw Blame History

线索值班配置系统技术架构文档

1. 架构设计

graph TD
    A[用户浏览器] --> B[Spring Boot Web层]
    B --> C[Service业务层]
    C --> D[MyBatis数据访问层]
    D --> E[MySQL数据库]
    
    B --> F[Thymeleaf模板引擎]
    C --> G[定时任务调度]
    C --> H[缓存层Redis]
    
    subgraph "前端层"
        B
        F
    end
    
    subgraph "业务层"
        C
        G
        H
    end
    
    subgraph "数据层"
        D
        E
    end

2. 技术描述

  • 前端Thymeleaf@3.0 + Bootstrap@4.6 + jQuery@3.6 + LayUI@2.6
  • 后端Spring Boot@2.5.14 + MyBatis@3.5 + Apache Shiro@1.10.1
  • 数据库MySQL@8.0
  • 缓存Redis@6.2(可选,用于分配算法优化)

3. 路由定义

路由 用途
/system/dutyConfig 值班配置管理主页面
/system/dutyConfig/list 获取值班配置列表数据
/system/dutyConfig/add 新增值班配置页面
/system/dutyConfig/edit/{id} 编辑值班配置页面
/system/dutyConfig/save 保存值班配置
/system/dutyConfig/update 更新值班配置
/system/dutyConfig/remove/{ids} 删除值班配置
/system/dutyConfig/changeStatus 修改配置状态
/system/dutyConfig/getAvailableUsers 获取可用用户列表
/system/dutyConfig/statistics 分配统计页面

4. API定义

4.1 核心API

值班配置管理相关接口

GET /system/dutyConfig/list

请求参数:

参数名称 参数类型 是否必填 描述
pageNum int false 页码默认1
pageSize int false 每页大小默认10
configName string false 配置名称(模糊查询)
status string false 状态0-禁用1-启用

响应数据:

参数名称 参数类型 描述
code int 响应状态码
msg string 响应消息
rows array 配置列表数据
total int 总记录数
POST /system/dutyConfig/save

请求参数:

参数名称 参数类型 是否必填 描述
configName string true 配置名称
startTime string true 开始时间HH:mm格式
endTime string true 结束时间HH:mm格式
userIds string true 值班用户ID列表逗号分隔
status string true 状态0-禁用1-启用
remark string false 备注信息

响应数据:

参数名称 参数类型 描述
code int 响应状态码
msg string 响应消息

示例请求:

{
  "configName": "工作日白班",
  "startTime": "09:00",
  "endTime": "18:00",
  "userIds": "1,2,3,4",
  "status": "1",
  "remark": "工作日白班值班安排"
}
GET /system/dutyConfig/getAvailableUsers

响应数据:

参数名称 参数类型 描述
code int 响应状态码
data array 可用用户列表

用户对象结构:

参数名称 参数类型 描述
userId long 用户ID
userName string 用户姓名
loginName string 登录名
status string 用户状态

5. 服务器架构图

graph TD
    A[Controller层] --> B[Service层]
    B --> C[Mapper层]
    C --> D[(MySQL数据库)]
    
    B --> E[分配算法服务]
    B --> F[缓存服务]
    E --> G[轮询分配器]
    E --> H[时间匹配器]
    
    subgraph "Web层"
        A
    end
    
    subgraph "业务层"
        B
        E
        F
    end
    
    subgraph "数据访问层"
        C
    end
    
    subgraph "算法组件"
        G
        H
    end

6. 数据模型

6.1 数据模型定义

erDiagram
    DUTY_CONFIG ||--o{ DUTY_CONFIG_USER : contains
    SYS_USER ||--o{ DUTY_CONFIG_USER : assigned
    DUTY_CONFIG ||--o{ CLEW_ASSIGN_LOG : generates
    SYS_USER ||--o{ CLEW_ASSIGN_LOG : receives
    
    DUTY_CONFIG {
        bigint id PK
        string config_name
        string start_time
        string end_time
        string status
        string remark
        datetime create_time
        datetime update_time
        string create_by
        string update_by
    }
    
    DUTY_CONFIG_USER {
        bigint id PK
        bigint config_id FK
        bigint user_id FK
        int sort_order
        datetime create_time
    }
    
    SYS_USER {
        bigint user_id PK
        string user_name
        string login_name
        string status
        datetime create_time
    }
    
    CLEW_ASSIGN_LOG {
        bigint id PK
        bigint clew_id
        bigint config_id FK
        bigint assigned_user_id FK
        datetime assign_time
        string assign_type
    }

6.2 数据定义语言

值班配置表duty_config

-- 创建值班配置表
CREATE TABLE duty_config (
    id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
    config_name VARCHAR(100) NOT NULL COMMENT '配置名称',
    start_time VARCHAR(5) NOT NULL COMMENT '开始时间HH:mm',
    end_time VARCHAR(5) NOT NULL COMMENT '结束时间HH:mm',
    status CHAR(1) DEFAULT '1' COMMENT '状态0-禁用1-启用)',
    remark VARCHAR(500) COMMENT '备注',
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    update_time DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
    create_by VARCHAR(64) COMMENT '创建者',
    update_by VARCHAR(64) COMMENT '更新者',
    del_flag CHAR(1) DEFAULT '0' COMMENT '删除标志0-正常1-删除)'
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='值班配置表';

-- 创建值班配置用户关联表
CREATE TABLE duty_config_user (
    id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
    config_id BIGINT NOT NULL COMMENT '配置ID',
    user_id BIGINT NOT NULL COMMENT '用户ID',
    sort_order INT DEFAULT 0 COMMENT '排序顺序',
    create_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    INDEX idx_config_id (config_id),
    INDEX idx_user_id (user_id),
    FOREIGN KEY (config_id) REFERENCES duty_config(id) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='值班配置用户关联表';

-- 创建线索分配日志表
CREATE TABLE clew_assign_log (
    id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键ID',
    clew_id BIGINT COMMENT '线索ID',
    config_id BIGINT COMMENT '使用的配置ID',
    assigned_user_id BIGINT NOT NULL COMMENT '分配的用户ID',
    assign_time DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '分配时间',
    assign_type VARCHAR(20) DEFAULT 'AUTO' COMMENT '分配类型AUTO-自动MANUAL-手动)',
    remark VARCHAR(200) COMMENT '备注',
    INDEX idx_clew_id (clew_id),
    INDEX idx_assigned_user (assigned_user_id),
    INDEX idx_assign_time (assign_time)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='线索分配日志表';

-- 创建索引
CREATE INDEX idx_duty_config_time ON duty_config(start_time, end_time, status);
CREATE INDEX idx_duty_config_status ON duty_config(status, del_flag);

-- 插入初始数据
INSERT INTO duty_config (config_name, start_time, end_time,{"file_path": "/Users/clunt/java/RuoYi/.trae/documents/线索值班配置系统技术架构文档.md", "content":