- 新增 deploy/docker/:Docker 本机模拟部署,含 Dockerfile、docker-compose、deploy.sh 一键脚本 - 新增 deploy/remote/:远程服务器部署,含 SSH 自动上传、重启、回滚脚本 - 新增 deploy/README.md:完整使用手册,含现状分析、落地调整工作清单、命令速查 - 新增 build.sh/start.sh:本地构建和启动脚本(含飞书通知) - 新增前端 .env.docker 环境配置,API 指向测试服务器 - 前端 package.json 新增 build-docker 命令 - 更新 .gitignore:排除 IDE 配置、SQL 数据、Docker 敏感文件 - 前端 UI 样式优化(多个页面组件) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
971 lines
39 KiB
Markdown
971 lines
39 KiB
Markdown
# 智慧清洁 SaaS 平台 - 业务需求全景文档
|
||
|
||
> 基于后端 xiaoqu-intellectual-web 和 xiaoqu-intellectual-task 两个项目的代码分析整理
|
||
|
||
---
|
||
|
||
## 一、系统概述
|
||
|
||
智慧清洁 SaaS 平台面向物业/市政清洁行业,提供从计划排班、任务调度、打卡考勤、IoT设备管理到绩效分析的全链路数字化管理能力。
|
||
|
||
**系统架构**:
|
||
- **Web 服务**(端口 8095):提供 REST API,支撑后台管理 SPA
|
||
- **Task 服务**(端口 8097):定时任务调度 + MQTT 设备通信 + 消息推送
|
||
|
||
---
|
||
|
||
## 二、业务模块清单
|
||
|
||
### 模块 1:登录与认证
|
||
|
||
| 功能 | 端点 | 说明 |
|
||
|------|------|------|
|
||
| 短信验证码登录 | `POST /login` | 手机号+验证码登录,生成UUID(30天有效期) |
|
||
| 用户退出 | `GET /logOut` | 清除Redis登录态 |
|
||
| 发送验证码 | `GET /sms/sendCode` | 短信平台发送验证码 |
|
||
|
||
**业务规则**:
|
||
- 单点登录控制,防止多终端同时登录
|
||
- 请求签名机制:UUID + 时间戳 + 手机号 MD5签名
|
||
- 签名有效期10秒窗口
|
||
- 登录日志记录(IP、登录类型)
|
||
|
||
---
|
||
|
||
### 模块 2:权限管理
|
||
|
||
| 功能 | 端点 | 说明 |
|
||
|------|------|------|
|
||
| 设置权限组人员 | `POST /authority/setAuthorityUser` | 批量添加用户到权限组 |
|
||
| 查询权限组成员 | `POST /authority/getAuthorityUserList` | 支持分页查询 |
|
||
|
||
**动态权限体系**:
|
||
- **字段级权限**:按权限组控制表格列的显示/隐藏
|
||
- **按钮级权限**:按权限组控制操作按钮的可见性
|
||
- 权限链路:权限组 → 用户 → 页面 → 字段/按钮
|
||
|
||
---
|
||
|
||
### 模块 3:用户与组织管理
|
||
|
||
| 功能 | 端点 | 说明 |
|
||
|------|------|------|
|
||
| 用户分页查询 | `POST /userCenter/pageList` | 按服务区域、事项、技能、标签筛选 |
|
||
| 新增/修改用户 | `POST /userCenter/addOrUpdateUser` | |
|
||
| 删除用户 | `POST /userCenter/deleteUser` | |
|
||
| 用户导出 | `POST /userCenter/export` | Excel导出 |
|
||
| 用户菜单树 | `POST /userCenter/getUserMenuTree` | |
|
||
| 用户下拉选择 | `POST /userCenter/selectUsers` | |
|
||
|
||
**用户属性**:
|
||
- 工作状态:作业(0) / 转场(1) / 空闲(2) / 休息(3)
|
||
- 关联:班组、技能标签、事项标签、服务区域、考勤设置
|
||
|
||
---
|
||
|
||
### 模块 4:班组管理
|
||
|
||
| 功能 | 端点 | 说明 |
|
||
|------|------|------|
|
||
| 班组分页查询 | `POST /workGroup/pageList` | |
|
||
| 新增/修改班组 | `POST /workGroup/addOrUpdate` | |
|
||
| 删除班组 | `POST /workGroup/deleteWorkGroup` | |
|
||
| 班组导出 | `POST /workGroup/export` | |
|
||
| 设置班组负责人 | `POST /workGroup/setWorkGroupPrincipal` | |
|
||
| 设置班组成员 | `POST /workGroup/setWorkGroupMember` | |
|
||
| 获取班组成员 | `POST /workGroup/getWorkGroupMember` | |
|
||
|
||
---
|
||
|
||
### 模块 5:标签与技能管理
|
||
|
||
| 功能 | 端点 | 说明 |
|
||
|------|------|------|
|
||
| 标签分页查询 | `POST /label/pageList` | |
|
||
| 新增/修改标签 | `POST /label/addOrUpdate` | |
|
||
| 删除标签 | `POST /label/delete` | |
|
||
| 获取所有标签 | `POST /label/allLabels` | |
|
||
| 技能分页查询 | `POST /skill/pageList` | |
|
||
| 新增/修改技能 | `POST /skill/addOrUpdate` | |
|
||
| 删除技能 | `POST /skill/delete` | |
|
||
| 获取所有技能 | `POST /skill/allSkills` | |
|
||
|
||
---
|
||
|
||
### 模块 6:基础数据管理
|
||
|
||
#### 6.1 网格管理
|
||
|
||
| 功能 | 端点 | 说明 |
|
||
|------|------|------|
|
||
| 网格查询 | `POST /grid/pageList` | 建筑/楼层/多级网格 |
|
||
| 新增/修改网格 | `POST /grid/addOrUpdateGrid` | |
|
||
| 删除网格 | `POST /grid/deleteGrid` | |
|
||
| 批量导入网格 | `POST /grid/importGrid` | |
|
||
| 网格负责人列表 | `POST /grid/gridPrincipalList` | |
|
||
|
||
**网格级别**:建筑(1) → 楼层(2) → 多级网格(3)
|
||
|
||
#### 6.2 场景管理
|
||
|
||
| 功能 | 端点 | 说明 |
|
||
|------|------|------|
|
||
| 场景查询 | `POST /scenes/pageList` | 厕所、楼道等特定场景 |
|
||
| 新增/修改场景 | `POST /scenes/addOrUpdateScenes` | |
|
||
| 删除场景 | `POST /scenes/deleteScenes` | |
|
||
| 批量导入场景 | `POST /scenes/batchInsertScenes` | |
|
||
| 导入场景模板 | `POST /scenes/importScenes` | |
|
||
|
||
**场景级别**:一级场景(1,如卫生间) → 二级场景(2,如楼层卫生间)
|
||
|
||
#### 6.3 场景对象关联
|
||
|
||
| 功能 | 端点 | 说明 |
|
||
|------|------|------|
|
||
| 场景对象查询 | `POST /sceneObject/sceneObjectPageList` | |
|
||
| 关联对象到场景 | `POST /sceneObject/addOrUpdateSceneObject` | |
|
||
|
||
#### 6.4 对象管理
|
||
|
||
| 功能 | 端点 | 说明 |
|
||
|------|------|------|
|
||
| 对象分页查询 | `POST /object/objectPageList` | 支持树查询 |
|
||
| 新增/修改对象 | `POST /object/addOrUpdateObject` | |
|
||
| 删除对象 | `POST /object/deleteObject` | |
|
||
| 批量导入对象 | `POST /object/importObject` | |
|
||
|
||
#### 6.5 事项管理
|
||
|
||
| 功能 | 端点 | 说明 |
|
||
|------|------|------|
|
||
| 事项分页查询 | `POST /matter/matterPageList` | |
|
||
| 批量添加事项 | `POST /matter/addMatter` | |
|
||
| 修改事项 | `POST /matter/updateMatter` | |
|
||
| 删除事项 | `POST /matter/deleteMatter` | |
|
||
|
||
#### 6.6 作业管理
|
||
|
||
| 功能 | 端点 | 说明 |
|
||
|------|------|------|
|
||
| 作业分页查询 | `POST /operation/oprationPageList` | 含工具关联 |
|
||
| 新增作业 | `POST /operation/addOperation` | |
|
||
| 修改作业 | `POST /operation/updateOperation` | |
|
||
| 删除作业 | `POST /operation/deleteOperation` | |
|
||
| 作业导出 | `POST /operation/export` | |
|
||
|
||
#### 6.7 工具管理
|
||
|
||
| 功能 | 端点 | 说明 |
|
||
|------|------|------|
|
||
| 工具分页查询 | `POST /tools/toolsPageList` | |
|
||
| 新增/修改工具 | `POST /tools/addOrUpdateTools` | |
|
||
| 删除工具 | `POST /tools/deleteTools` | |
|
||
|
||
**层级关系**:对象(Object) → 事项(Matter) → 作业(Operation) + 工具(Tools)
|
||
|
||
---
|
||
|
||
### 模块 7:计划管理
|
||
|
||
| 功能 | 端点 | 说明 |
|
||
|------|------|------|
|
||
| 计划分页查询 | `POST /plan/planPageList` | 按场景、对象、作业筛选 |
|
||
| 新增/修改计划 | `POST /plan/addOrUpdatePlan` | |
|
||
| 删除计划 | `POST /plan/deletePlan` | |
|
||
| 启用计划 | `POST /plan/enablePlan` | |
|
||
| 禁用计划 | `POST /plan/disablePlan` | |
|
||
| 计划导出 | `POST /plan/export` | 保洁/巡检/设备维护三类 |
|
||
| 执行计划 | `POST /plan/executePlan` | 立即生成任务 |
|
||
| 复制计划 | `POST /plan/copyPlan` | |
|
||
| 计划选择列表 | `POST /plan/selectPlanList` | |
|
||
| 计划详情 | `POST /plan/getPlanDetail` | |
|
||
|
||
**计划类型**:
|
||
- 保洁计划(appointment)
|
||
- 巡检计划(inspect)
|
||
- 设备维护计划(devOps)
|
||
|
||
**周期规则**:
|
||
- 周期类型:天(0) / 周(1,指定周几) / 月(2,指定日期)
|
||
- 周期模式:不重复(0) / 周期重复(1) / 间隔重复(2)
|
||
- 支持节假日跳过或强制执行
|
||
- 支持人次触发(按规定人数完成后自动生成下一轮)
|
||
|
||
**计划关联**:
|
||
- 计划对象(PlanObject)- 清洁对象清单
|
||
- 计划作业(PlanOperation)- 作业步骤
|
||
- 计划场景(PlanScenes)- 执行范围
|
||
- 计划用户(PlanUser)- 分配人员
|
||
- 计划班组(PlanWorkGroup)- 分配班组
|
||
|
||
---
|
||
|
||
### 模块 8:任务管理
|
||
|
||
#### 8.1 清洁/保洁任务
|
||
|
||
| 功能 | 端点 | 说明 |
|
||
|------|------|------|
|
||
| 任务分页查询 | `POST /task/pageList` | 按网格/场景、状态、时间筛选 |
|
||
| 任务明细导出 | `POST /task/export` | Excel |
|
||
| 人工取消任务 | `POST /task/cancel` | |
|
||
| 查看任务详情 | `POST /task/look` | 含对象、作业、进度、积分 |
|
||
| 设置任务优先级 | `POST /task/setTaskTaskOrder` | |
|
||
|
||
#### 8.2 巡检任务
|
||
|
||
| 功能 | 端点 | 说明 |
|
||
|------|------|------|
|
||
| 巡检任务列表 | `POST /taskInspect/pageList` | |
|
||
| 巡检任务导出 | `POST /taskInspect/export` | |
|
||
| 巡检任务详情 | `POST /taskInspect/look` | |
|
||
| 上传巡检照片 | `POST /taskInspect/updateInspectPic` | |
|
||
|
||
#### 8.3 用户上报任务
|
||
|
||
| 功能 | 端点 | 说明 |
|
||
|------|------|------|
|
||
| 上报任务列表 | `POST /taskUserUpload/pageList` | |
|
||
| 上报任务详情 | `POST /taskUserUpload/look` | |
|
||
| 人工设置时薪 | `POST /taskUserUpload/setWageByManual` | |
|
||
|
||
**任务状态流转**:
|
||
```
|
||
已生成(0) → 已匹配(1) → 待抢单(2) → 已接单(3) → 作业中(4) → 按时完成(5) / 超时完成(6)
|
||
↘ 人工取消(7) / 系统取消(8) / 未完成(9)
|
||
```
|
||
|
||
**任务类型**:
|
||
- 0/1/2 = 保洁任务
|
||
- 3/4 = 用户上报任务
|
||
- 5 = 巡检任务
|
||
|
||
---
|
||
|
||
### 模块 9:打卡与考勤
|
||
|
||
| 功能 | 端点 | 说明 |
|
||
|------|------|------|
|
||
| 打卡记录查询 | `POST /punchRecord/pageList` | 按网格/场景、时间筛选 |
|
||
| 打卡记录导出 | `POST /punchRecord/export` | |
|
||
| 考勤记录查询 | `POST /attendance/pageList` | |
|
||
| 考勤记录导出 | `POST /attendance/export` | |
|
||
| 日打卡统计查询 | `POST /punchRecordDayStatis/pageList` | 按用户分组 |
|
||
| 日打卡统计导出 | `POST /punchRecordDayStatis/export` | |
|
||
|
||
---
|
||
|
||
### 模块 10:效率与绩效分析
|
||
|
||
| 功能 | 端点 | 说明 |
|
||
|------|------|------|
|
||
| 任务人效查询 | `POST /efficiency/taskEfficiencyPageList` | 按员工统计 |
|
||
| 人效数据导出 | `POST /efficiency/export` | |
|
||
| 时薪分页查询 | `POST /wage/wagePageList` | |
|
||
| 新增/修改时薪 | `POST /wage/addOrUpdateWage` | |
|
||
| 删除时薪 | `POST /wage/deleteWage` | |
|
||
| 积分换算时薪 | `POST /wage/getAmount` | |
|
||
|
||
**计价逻辑**:任务完成 → 获得积分(point) → 根据时薪表(Wage)换算金额
|
||
|
||
---
|
||
|
||
### 模块 11:用户上报管理
|
||
|
||
| 功能 | 端点 | 说明 |
|
||
|------|------|------|
|
||
| 上报用户列表 | `POST /escalationUser/pageList` | |
|
||
| 添加/修改上报用户 | `POST /escalationUser/addOrUpdate` | |
|
||
| 导出 | `POST /escalationUser/export` | |
|
||
|
||
---
|
||
|
||
### 模块 12:系统参数配置
|
||
|
||
| 功能 | 端点 | 说明 |
|
||
|------|------|------|
|
||
| 站点参数查询 | `POST /taskDistrictParam/taskDistrictParamPageList` | |
|
||
| 修改站点参数 | `POST /taskDistrictParam/updateTaskDistrictParam` | 紧急/特殊任务限制数 |
|
||
|
||
---
|
||
|
||
## 三、Task 服务 - 定时任务与后台处理
|
||
|
||
### 模块 13:任务自动调度引擎(XXL-Job)
|
||
|
||
| 任务 | 触发方式 | 说明 |
|
||
|------|----------|------|
|
||
| planCreateTask | XXL-Job 动态创建 | 根据计划规则自动生成清洁/巡检/维护任务 |
|
||
| planDisableTask | XXL-Job 动态创建 | 按时间段禁用/启用任务生成 |
|
||
| InitWatch | XXL-Job 调度 | 手表设备初始化(震动/语音/蓝牙参数) |
|
||
| userRestStartTask | XXL-Job 调度 | 员工开始休息(记录、状态变更、蓝牙关闭) |
|
||
| userRestEndTask | XXL-Job 调度 | 员工结束休息(恢复状态) |
|
||
| restCountDown | XXL-Job 调度 | 休息倒计时监控,超时自动恢复 |
|
||
|
||
### 模块 14:任务处理队列(Spring @Scheduled)
|
||
|
||
| 任务 | 频率 | 说明 |
|
||
|------|------|------|
|
||
| 任务人员派单 | 每秒 | 根据计划分配任务给清洁员 |
|
||
| 任务过期处理 | 每秒 | 超时任务自动标记超期 |
|
||
| 任务完成处理 | 每秒 | 完成后计算工资、评分 |
|
||
| 任务重派发 | 每秒 | 失败/拒绝后重新分配 |
|
||
| 巡检任务派单 | 每秒 | 巡检任务分配 |
|
||
| 上报任务派单 | 每秒 | 用户上报维修任务分配 |
|
||
| 设备维护自动完成 | 每秒 | 部分设备维护任务自动标记完成 |
|
||
| 设备告警任务生成 | 每秒 | 监听设备告警,自动创建维护任务 |
|
||
|
||
---
|
||
|
||
### 模块 15:消息推送系统
|
||
|
||
| 任务 | 频率 | 说明 |
|
||
|------|------|------|
|
||
| 个推推送 | 每秒 | 通过个推SDK推送APP通知 |
|
||
| MQTT任务状态推送 | 每2秒 | 推送任务状态变更到手机端 |
|
||
| 任务动态消息生成 | 每2秒 | 生成任务动态并存储 |
|
||
|
||
**推送类型**:
|
||
- 新任务提醒(status=1)
|
||
- 抢单池任务(status=2)
|
||
- 已接单通知(status=3)
|
||
- 任务取消通知(status=7/8)
|
||
- 厕所保养提醒(status=-1)
|
||
|
||
**推送方式**:
|
||
- 在线推送:NotificationTemplate,立即推送
|
||
- 离线推送:TransmissionTemplate,24小时内推送,支持厂商通道
|
||
|
||
---
|
||
|
||
### 模块 16:IoT 设备通信(MQTT)
|
||
|
||
| 任务 | 频率 | 说明 |
|
||
|------|------|------|
|
||
| 手表连接状态监听 | 每秒 | 监测上下线,维护设备状态 |
|
||
| 手表震动语音参数下发 | 每秒 | 实时调整手表配置 |
|
||
| 手表参数初始化 | 每2秒 | 初始化手表配置 |
|
||
| 手表绑定/解绑消息 | 每2秒 | 下发绑定/解绑指令 |
|
||
| 手表任务消息推送 | 每2秒 | 下发新任务到手表 |
|
||
| 任务-用户关联处理 | 每2秒 | 将任务消息转换为手表格式 |
|
||
| 考勤状态消息 | 每秒 | 下班提醒,关闭手表蓝牙 |
|
||
| 放大镜监控消息 | 每秒 | 实时位置追踪提醒 |
|
||
| 心跳保活 | 每20秒/298秒 | 保持手表连接 |
|
||
|
||
---
|
||
|
||
### 模块 17:蓝牙定位与轨迹追踪
|
||
|
||
| 任务 | 频率 | 说明 |
|
||
|------|------|------|
|
||
| 蓝牙信标定位 | 每秒 | 根据RSSI信号强度计算员工位置 |
|
||
| 下班定位关闭 | 每秒 | 结束进行中的轨迹记录 |
|
||
|
||
**定位逻辑**:
|
||
- 手表扫描周围蓝牙信标 → 上报信标MAC+RSSI → 服务端计算位置
|
||
- RSSI ≥ 阈值 → 进入信标范围 → 记录驻留时间
|
||
- 同一位置停留 ≥ 5秒保存轨迹
|
||
- 生成员工轨迹记录(UserTrajectory)
|
||
|
||
---
|
||
|
||
### 模块 18:员工休息管理
|
||
|
||
**完整流程**:
|
||
1. 员工点击休息 → 创建休息记录 → 更新状态为"休息中"
|
||
2. 存入Redis倒计时(默认60分钟)
|
||
3. 发送蓝牙关闭消息到手表
|
||
4. 倒计时结束 → 自动生成休息完成记录 → 恢复员工状态
|
||
|
||
---
|
||
|
||
### 模块 19:节假日同步
|
||
|
||
| 任务 | 频率 | 说明 |
|
||
|------|------|------|
|
||
| 节假日同步 | 每年12月28日 06:06:06 | 调用外部API同步下一年节假日 |
|
||
|
||
**节假日类型**:工作日(0) / 法定节假日(1) / 调休日(2) / 周末(3)
|
||
|
||
---
|
||
|
||
## 四、核心业务流程
|
||
|
||
### 流程 1:清洁任务全生命周期
|
||
|
||
```
|
||
创建计划(Plan)
|
||
↓
|
||
定义:对象 + 作业 + 场景范围 + 人员/班组
|
||
↓
|
||
启用计划 → XXL-Job 定时触发 planCreateTask
|
||
↓
|
||
生成 TaskInfo → 推入 PlanTaskQueue
|
||
↓
|
||
TaskCorrelationSetTask 派单(匹配人员)
|
||
↓
|
||
推送通知:个推(APP) + MQTT(手表)
|
||
↓
|
||
员工接单 → 开始作业 → 完成作业
|
||
↓
|
||
核算积分 → 换算时薪 → 绩效统计
|
||
```
|
||
|
||
### 流程 2:设备告警 → 维护任务
|
||
|
||
```
|
||
设备传感器告警(如纸巾不足、空气质量异常)
|
||
↓
|
||
告警推入 taskCommand 队列
|
||
↓
|
||
TaskCreateQueue 处理:去重检查 + 创建 TaskInfo
|
||
↓
|
||
分配维护员 → 推送通知
|
||
↓
|
||
维护员完成维护 → 标记完成
|
||
```
|
||
|
||
### 流程 3:员工实时定位
|
||
|
||
```
|
||
手表持续扫描蓝牙信标
|
||
↓
|
||
上报信标数据 → BleutoothLocationQueue
|
||
↓
|
||
计算位置 → 保存 UserLocation
|
||
↓
|
||
生成驻留轨迹 → UserTrajectory
|
||
↓
|
||
支撑人效分析报表
|
||
```
|
||
|
||
---
|
||
|
||
## 五、核心数据模型
|
||
|
||
| 实体 | 说明 | 所属库 |
|
||
|------|------|--------|
|
||
| TaskInfo | 任务主表 | db2 |
|
||
| Plan | 清洁/巡检/维护计划 | db2 |
|
||
| PlanObject | 计划对象清单 | db2 |
|
||
| PlanOperation | 计划作业 | db2 |
|
||
| PlanScenes | 计划执行范围 | db2 |
|
||
| TaskUser | 任务分配人员 | db2 |
|
||
| TaskScenes | 任务场景 | db2 |
|
||
| Operation | 作业定义 | db2 |
|
||
| Object | 清洁对象 | db2 |
|
||
| Matter | 事项 | db2 |
|
||
| Tools | 工具 | db2 |
|
||
| Wage | 时薪 | db2 |
|
||
| Authority | 权限组 | db2 |
|
||
| WorkGroup | 班组 | db2 |
|
||
| PunchRecord | 打卡记录 | db2 |
|
||
| AttendanceRecord | 考勤记录 | db2 |
|
||
| UserLocation | 实时定位 | db2 |
|
||
| UserTrajectory | 员工轨迹 | db2 |
|
||
| Watch | 手表设备 | db1 |
|
||
| WatchOffLog | 手表上下线日志 | db1 |
|
||
| Hardware | 硬件设备 | db1 |
|
||
| Beacon | 蓝牙信标 | db1 |
|
||
| Holiday | 节假日 | db2 |
|
||
| PushLog | 推送日志 | db2 |
|
||
| TodayDynamic | 任务动态消息 | db2 |
|
||
|
||
---
|
||
|
||
## 六、关键 Redis 数据结构
|
||
|
||
| Key | 类型 | 用途 |
|
||
|-----|------|------|
|
||
| `PlanTaskQueue` | List | 待生成的计划任务队列 |
|
||
| `taskCommand` | List | 设备告警命令队列 |
|
||
| `taskPushQueue` | List | 待推送的通知消息队列 |
|
||
| `IntellectualTaskIdList` | List | 待处理的任务ID队列 |
|
||
| `MqttWatchTaskMessage` | List | 待推送给手表的任务消息 |
|
||
| `WatchTaskUserList` | List | 待处理的任务-用户关联 |
|
||
| `WatchConnectList` | List | 手表连接/断开事件 |
|
||
| `BleutoothLocationQueue` | List | 蓝牙定位数据队列 |
|
||
| `CleaningRestLastTime` | ZSet | 员工休息倒计时(score=截止时间戳) |
|
||
| `MQTTTOPIC` | Set | 活跃手表设备集合 |
|
||
| `Location:userId` | String | 员工最新位置 |
|
||
| `Disable:d/t/p:id:taskTypeId` | String | 任务生成禁用标记 |
|
||
|
||
---
|
||
|
||
## 七、数据库详细分析
|
||
|
||
### 7.1 数据库架构
|
||
|
||
系统使用 **两个 MySQL 数据库**,通过 MyBatis-Plus 多数据源配置:
|
||
|
||
| 数据库 | 名称 | 说明 |
|
||
|--------|------|------|
|
||
| DB1 | xiaoqu_comples_d | 基础信息库:组织、用户、硬件、设备、定位数据 |
|
||
| DB2 | xiaoqu_intellectual_d | 业务数据库:任务、计划、权限、考勤、日志 |
|
||
|
||
**连接配置**:Druid 连接池,最大连接数100,初始10,最小空闲5
|
||
|
||
### 7.2 DB1 实体表清单(51张)
|
||
|
||
#### 组织架构
|
||
|
||
| 表名 | 实体 | 说明 | 关键字段 |
|
||
|------|------|------|----------|
|
||
| agent | Agent | 代理商 | name, type(0区域主管/1代理/2物业), level(0总部/1一级/2二级), channel_no, parents_id |
|
||
| properyt | Properyt | 物业公司 | name, agent_id, serialnumber, district_on_count, hard_on_count, user_count |
|
||
| district | District | 区域站/站点 | district_name, property_id, agent_id, address, buildCount, punch_flag, online_state |
|
||
| building | Building | 一级网格(楼座) | name, district_id, longitude, latitude, grid_level, orderby |
|
||
| floor | Floor | 二级网格(楼层) | name, building_id, man, woman, man_floorpic, woman_floorpic, grid_level |
|
||
| multistage_grid | MultistageGrid | 多级网格 | 支持更细粒度的网格划分 |
|
||
| grid_to_principal | GridToPrincipal | 网格-负责人关联 | grid_id, principal_id |
|
||
| positions | Positions | 位置/岗位 | 厕所内具体位置(男厕、女厕等) |
|
||
|
||
**组织层级**:Agent(代理) → Properyt(物业) → District(站点) → Building(楼座) → Floor(楼层) → MultistageGrid(多级网格)
|
||
|
||
#### 用户管理
|
||
|
||
| 表名 | 实体 | 说明 | 关键字段 |
|
||
|------|------|------|----------|
|
||
| user | User | 用户表 | mobile, name, idcard, sex, role_type, work_status, work_at_status, district_id, property_id, agent_id, authority_id |
|
||
| user_detail | UserDetail | 用户详情 | 扩展用户信息 |
|
||
| user_proper | UserProper | 用户-物业关联 | user_id, proper_id |
|
||
| user_toilet | UserToilet | 用户-卫生间关联 | user_id, toilet_id |
|
||
| user_district_attendance | UserDistrictAttendance | 用户站点考勤 | user_id, district_id, status, workAtStatus |
|
||
| user_rest | UserRest | 用户休息记录 | user_id, rest_time |
|
||
| user_location | UserLocation | 用户实时位置 | user_id, longitude, latitude, beacon_mac, rssi |
|
||
| user_trajectory | UserTrajectory | 用户轨迹 | user_id, location_id, stay_time, status |
|
||
| user_menu_district | UserMenuDistrict | 用户菜单-站点 | user_id, menu_id, district_id |
|
||
| proper_user_district | ProperUserDistrict | 物业用户-站点关联 | user_id, district_id |
|
||
|
||
**User 核心字段**:
|
||
- 工作状态:work_status, work_at_status(0作业/1转场/2空闲/3休息)
|
||
- 组织关联:district_id, property_id, agent_id
|
||
- 权限:role_id, authority_id, property_authority_id
|
||
- 认证:weixin_openid, registration_id
|
||
|
||
#### 硬件设备
|
||
|
||
| 表名 | 实体 | 说明 | 关键字段 |
|
||
|------|------|------|----------|
|
||
| hardware | Hardware | 硬件设备 | sn_code, type, status, district_id |
|
||
| hardware_var | HardwareVar | 硬件变量 | hardware_id, var_name, var_value |
|
||
| watch | Watch | 手表设备 | imei, user_id, bind_status, online_status, shock_state, voice_state |
|
||
| watch_set_params | WatchSetParams | 手表参数设置 | watch_id, param_name, param_value |
|
||
| watch_bind_log | WatchBindLog | 手表绑定日志 | watch_id, user_id, bind_time |
|
||
| watch_off_log | WatchOffLog | 手表上下线日志 | watch_id, status(0离线/1在线), connected_at, disconnected_at |
|
||
| watch_test_log | WatchTestLog | 手表测试日志 | 测试数据 |
|
||
| toilet | Toilet | 卫生间/场景设备 | name, district_id, building_id, floor_id |
|
||
| toilet_airquality | ToiletAirquality | 空气质量传感器 | sn_code, toilet_id |
|
||
| heyi_dev | HeyiDev | 合一设备 | 第三方设备集成 |
|
||
| heyi_group | HeyiGroup | 合一设备分组 | 设备分组管理 |
|
||
| equipment_repair_recording | EquipmentRepairRecording | 设备维修记录 | equipment_id, repair_time, status |
|
||
|
||
#### 蓝牙信标与定位
|
||
|
||
| 表名 | 实体 | 说明 | 关键字段 |
|
||
|------|------|------|----------|
|
||
| beacon | Beacon | 蓝牙信标 | mac, name, district_id, rssi_threshold |
|
||
| beacon_log | BeaconLog | 信标日志 | beacon_id, event_type |
|
||
| beacon_area_pic | BeaconAreaPic | 场景区域图 | area_id, pic_url |
|
||
| beacon_area_position | BeaconAreaPosition | 图层管理 | area_id, position_x, position_y |
|
||
| beacon_point_manage | BeaconPointManage | 点位管理 | beacon_id, point_name |
|
||
| bluetooth_communication | BluetoothCommunication | 蓝牙通信日志 | 通信记录 |
|
||
| bluetooth_connect | BluetoothConnect | 蓝牙连接数据 | 连接状态 |
|
||
| bluetooth_location | BluetoothLocation | 蓝牙定位数据 | mac, rssi, user_id |
|
||
| rfid_info | RfidInfo | RFID信息 | rfid标签数据 |
|
||
|
||
#### 菜单与统计
|
||
|
||
| 表名 | 实体 | 说明 |
|
||
|------|------|------|
|
||
| app_menu | AppMenu | 物业APP菜单权限 |
|
||
| my_menu | MyMenu | 自定义菜单 |
|
||
| my_user_menu | MyUserMenu | 用户菜单 |
|
||
| district_strategy | DistrictStrategy | 区域策略 |
|
||
| monthly_statistics | MonthlyStatistics | 月度统计 |
|
||
| statistics_month_log | StatisticsMonthLog | 月度统计日志 |
|
||
| switch_day_data | SwitchDayData | 日数据统计 |
|
||
| switch_hour_data | SwitchHourData | 小时数据统计 |
|
||
| switch_month_data | SwitchMonthData | 月数据统计 |
|
||
| switch_year_data | SwitchYearData | 年数据统计 |
|
||
| airqualitylevelgrade | Airqualitylevelgrade | 分润管理明细 |
|
||
| xinbiao_record | XinbiaoRecord | 新表记录 |
|
||
|
||
### 7.3 DB2 实体表清单(61张)
|
||
|
||
#### 任务管理
|
||
|
||
| 表名 | 实体 | 说明 | 关键字段 |
|
||
|------|------|------|----------|
|
||
| task_info | TaskInfo | 任务主表 | name, no, task_type, status, plan_id, district_id, point, wage_hour |
|
||
| task_type | TaskType | 任务类型 | name, code |
|
||
| task_user | TaskUser | 任务-用户关联 | task_id, user_id, status |
|
||
| task_accept_user | TaskAcceptUser | 接单人员 | task_id, user_id |
|
||
| task_distributi_user | TaskDistributiUser | 派发人员 | task_id, user_id |
|
||
| task_pic | TaskPic | 任务照片 | task_id, pic_url, type |
|
||
| task_scenes | TaskScenes | 任务场景 | task_id, grid_level, scenes_level, building_id, floor_id |
|
||
| task_task_scenes | TaskTaskScenes | 任务-场景关联 | task_id, scenes_id |
|
||
| task_status_log | TaskStatusLog | 任务状态日志 | task_id, old_status, new_status, change_time |
|
||
| task_district_param | TaskDistrictParam | 站点任务参数 | district_id, rest_time, beacon_no |
|
||
|
||
**TaskInfo 核心字段**:
|
||
- 状态流转:status(0已生成→1匹配→2待抢→3已接→4作业中→5按时完成/6超时/7人工取消/8系统取消/9未完成)
|
||
- 时间跟踪:create_time, send_time, confirm_time, action_time, finish_time, expire_time
|
||
- 时长统计:confirm_timing(响应), timing(作业), over_timing(超时), transfer_timing(转场)
|
||
- 绩效:point(积分), wage_hour(工时), wage_id, salary
|
||
- 巡检:should_inspect(应巡), actual_inspect(实巡), not_inspect(未巡)
|
||
|
||
#### 计划管理
|
||
|
||
| 表名 | 实体 | 说明 | 关键字段 |
|
||
|------|------|------|----------|
|
||
| plan | Plan | 任务计划 | task_name, type(0例行/2指派/5巡检), circle_status, circle_type(0天/1周/2月), status |
|
||
| plan_object | PlanObject | 计划-对象关联 | plan_id, object_id |
|
||
| plan_operation | PlanOperation | 计划-作业关联 | plan_id, operation_id |
|
||
| plan_scenes | PlanScenes | 计划-场景关联 | plan_id, building_id, floor_id, multistage_grid_id, scenes_id |
|
||
| plan_user | PlanUser | 计划-用户关联 | plan_id, user_id |
|
||
| plan_work_group | PlanWorkGroup | 计划-班组关联 | plan_id, work_group_id |
|
||
| plan_logic_label | PlanLogicLabel | 计划-标签关联 | plan_id, label_id |
|
||
|
||
**Plan 核心字段**:
|
||
- 周期配置:circle_status(0不重复/1周期/2间隔), circle_type(0天/1周/2月), circle_no
|
||
- 执行时段:action_start_time, action_end_time
|
||
- 过期设置:expire_type(0不过期/1次日/2指定), expire_timing
|
||
- 时长参数:working_timing(标准工时), transition_timing(转场), ready_timing(准备), redundance_timing(冗余)
|
||
- 跳过配置:eliminate_type(0不跳/1节假日/2自定义)
|
||
|
||
#### 考勤打卡
|
||
|
||
| 表名 | 实体 | 说明 | 关键字段 |
|
||
|------|------|------|----------|
|
||
| punch_record | PunchRecord | 打卡记录 | user_id, punch_time, longitude, latitude, address, punch_type, pic_url |
|
||
| punch_record_day_statis | PunchRecordDayStatis | 打卡日统计 | user_id, date, punch_count |
|
||
| rest_record | RestRecord | 休息记录 | user_id, punch_type(0休息/1恢复), rest_duration |
|
||
| attendance_record | AttendanceRecord | 考勤记录 | user_id, date, status |
|
||
|
||
#### 权限管理
|
||
|
||
| 表名 | 实体 | 说明 | 关键字段 |
|
||
|------|------|------|----------|
|
||
| authority | Authority | 权限组 | name, type |
|
||
| webpage | Webpage | 页面 | name, url, parent_id |
|
||
| webpage_authority | WebpageAuthority | 页面权限 | webpage_id, authority_id |
|
||
| page_field | PageField | 页面字段 | webpage_id, field_name, field_label |
|
||
| field_webpage_authority | FieldWebpageAuthority | 字段-权限关联 | field_id, webpage_id, authority_id |
|
||
| button | Button | 按钮 | webpage_id, name, code |
|
||
| button_field | ButtonField | 按钮字段 | button_id, field_name |
|
||
| button_webpage_authority | ButtonWebpageAuthority | 按钮-权限关联 | button_id, webpage_id, authority_id |
|
||
|
||
**权限链路**:Authority(权限组) → WebpageAuthority(页面) → FieldWebpageAuthority(字段) + ButtonWebpageAuthority(按钮)
|
||
|
||
#### 基础数据
|
||
|
||
| 表名 | 实体 | 说明 | 关键字段 |
|
||
|------|------|------|----------|
|
||
| object | Object | 清洁对象 | name, parent_id, level, type |
|
||
| object_type | ObjectType | 对象类型 | name |
|
||
| matter | Matter | 事项 | object_id, name, type |
|
||
| matter_type | MatterType | 事项类型 | name |
|
||
| operation | Operation | 作业 | name, type, tool_ids |
|
||
| tools | Tools | 工具 | name, district_id, status |
|
||
| scene_object | SceneObject | 场景-对象关联 | scene_id, object_id |
|
||
| inspect_scenes | InspectScenes | 巡检场景 | name, district_id |
|
||
| inspect_pic | InspectPic | 巡检照片 | inspect_id, pic_url |
|
||
|
||
#### 人员管理
|
||
|
||
| 表名 | 实体 | 说明 | 关键字段 |
|
||
|------|------|------|----------|
|
||
| work_group | WorkGroup | 班组 | work_group_name, district_id |
|
||
| work_group_to_principal | WorkGroupToPrincipal | 班组-负责人 | work_group_id, principal_id |
|
||
| skill_manage | SkillManage | 技能 | name |
|
||
| user_to_skill | UserToSkill | 用户-技能 | user_id, skill_id |
|
||
| label_manage | LabelManage | 标签 | name |
|
||
| user_to_label | UserToLabel | 用户-标签 | user_id, label_id |
|
||
| user_to_matter | UserToMatter | 用户-事项 | user_id, matter_id |
|
||
| user_to_service_area | UserToServiceArea | 用户-服务区域 | user_id, area_id |
|
||
| escalation_user | EscalationUser | 上报用户 | user_id |
|
||
| escalation_service_area | EscalationServiceArea | 上报服务区域 | escalation_id, area_id |
|
||
|
||
#### 绩效与薪资
|
||
|
||
| 表名 | 实体 | 说明 | 关键字段 |
|
||
|------|------|------|----------|
|
||
| wage | Wage | 时薪配置 | type, point, amount |
|
||
| efficiency_recording | EfficiencyRecording | 人效录入 | user_id, date |
|
||
| efficiency_detail | EfficiencyDetail | 人效详情 | recording_id, metric, value |
|
||
|
||
#### 日志与通知
|
||
|
||
| 表名 | 实体 | 说明 | 关键字段 |
|
||
|------|------|------|----------|
|
||
| login_log | LoginLog | 登录日志 | user_id, login_time, ip, type(0登录/1退出) |
|
||
| change_log | ChangeLog | 变更日志 | entity, operation, old_value, new_value |
|
||
| modify_log | ModifyLog | 修改日志 | 记录数据修改历史 |
|
||
| push_log | PushLog | 推送日志 | client_id, user_id, title, content, status |
|
||
| sms_send_record | SmsSendRecord | 短信发送记录 | mobile, content, status |
|
||
| user_push | UserPush | 用户推送映射 | user_id, client_id |
|
||
| today_dynamic | TodayDynamic | 今日动态消息 | task_id, user_id, message, type |
|
||
|
||
#### 其他
|
||
|
||
| 表名 | 实体 | 说明 |
|
||
|------|------|------|
|
||
| holiday | Holiday | 节假日(0工作日/1法定/2调休/3周末) |
|
||
| app_version | AppVersion | APP版本管理 |
|
||
| type_source | TypeSource | 类型来源 |
|
||
|
||
### 7.4 通用字段规范
|
||
|
||
所有实体均包含以下标准字段:
|
||
- `id` (Long) - 自增主键
|
||
- `create_id` (Long) - 创建人ID
|
||
- `create_time` (Date) - 创建时间
|
||
- `modify_id` (Long) - 修改人ID
|
||
- `modify_time` (Date) - 修改时间
|
||
- `soft_delete` (Integer) - 软删除标记(0正常/1已删除)
|
||
|
||
### 7.5 核心关系映射
|
||
|
||
```
|
||
组织层级:
|
||
Agent(代理) → Properyt(物业) → District(站点) → Building(楼座) → Floor(楼层) → MultistageGrid(多级网格)
|
||
|
||
用户关系:
|
||
User ←→ Authority(权限组)
|
||
User ←→ WorkGroup(班组)
|
||
User ←→ SkillManage(技能)
|
||
User ←→ LabelManage(标签)
|
||
User ←→ District(站点)
|
||
User ←→ Watch(手表)
|
||
|
||
任务流程:
|
||
Plan(计划) → TaskInfo(任务) → TaskUser(执行人)
|
||
Plan → PlanObject(对象) + PlanOperation(作业) + PlanScenes(场景)
|
||
TaskInfo → TaskScenes(场景) + TaskPic(照片) + TaskStatusLog(状态日志)
|
||
|
||
基础数据:
|
||
Object(对象) → Matter(事项) → Operation(作业) + Tools(工具)
|
||
District → Beacon(信标) → UserLocation(定位) → UserTrajectory(轨迹)
|
||
```
|
||
|
||
---
|
||
|
||
## 八、Redis 详细分析
|
||
|
||
### 8.1 Redis 架构配置
|
||
|
||
| 配置项 | 值 |
|
||
|--------|-----|
|
||
| 连接驱动 | Lettuce (Spring Data Redis) |
|
||
| 数据库数量 | 2 个独立 DB (DB4 和 DB5) |
|
||
| 连接池最大连接数 | 200 |
|
||
| 最大空闲连接 | 8 |
|
||
| 最小空闲连接 | 1 |
|
||
| 序列化方式 | StringRedisSerializer (Key + Value 均为字符串) |
|
||
|
||
**数据库分工**:
|
||
| 数据库 | 用途 |
|
||
|--------|------|
|
||
| DB 4 | 消息队列、状态标志、计数器、分布式锁 |
|
||
| DB 5 | 实体缓存、设备命令队列、字典配置、时间序列 |
|
||
|
||
### 8.2 Redis 操作工具
|
||
|
||
**RedisService4 / RedisService5** - 封装以下数据类型操作:
|
||
|
||
| 数据类型 | 操作方法 |
|
||
|---------|---------|
|
||
| String | set, get, remove, exists |
|
||
| List | lPush, rPush, leftPop, rightPop, lRange, lRangeAll |
|
||
| Set | add, setRemove, isMember, setMembers, setPop |
|
||
| Hash | hmSet, hmGet |
|
||
| ZSet | zAdd, zRemove, rangeByScore |
|
||
|
||
**RedisDistributedLock** - 分布式锁:
|
||
- 锁前缀:`redis_lock_`
|
||
- 默认过期:30秒
|
||
- 自旋重试:最多10次,间隔50ms
|
||
|
||
### 8.3 DB4 Key 详细映射
|
||
|
||
#### 任务消息队列
|
||
|
||
| Key | 类型 | 内容 | 写入方 | 消费方 |
|
||
|-----|------|------|--------|--------|
|
||
| `taskUserQueue` | List | 保洁派单消息 (TaskPlanEntity JSON) | TaskCorrelationSetTask, TaskCreateQueue | TaskCorrelationSetTask |
|
||
| `taskPushQueue` | List | APP推送消息 (TaskPushInfo JSON) | TaskCorrelationSetTask, TaskCreateQueue | TaskPushMessage |
|
||
| `taskReportQueue` | List | 上报任务派单 (TaskPlanEntity JSON) | TaskCorrelationSetTask | TaskCorrelationSetTask |
|
||
| `inspectTaskUserQueue` | List | 巡检任务派单 (TaskPlanEntity JSON) | TaskCorrelationSetTask | TaskCorrelationSetTask |
|
||
| `IntellectualTaskIdList` | List | 待处理任务ID | TaskCorrelationSetTask | ScheduledTask |
|
||
| `PlanTaskQueue` | List | 待生成的计划ID | PlanTimeTask | 任务处理系统 |
|
||
|
||
#### 手表/MQTT 消息队列
|
||
|
||
| Key | 类型 | 内容 | 写入方 | 消费方 |
|
||
|-----|------|------|--------|--------|
|
||
| `WatchTaskUserList` | List | 手表任务-用户ID | TaskCorrelationSetTask | ScheduledTask |
|
||
| `MqttWatchTaskMessage` | List | 手表任务消息 (JSON) | ScheduledTask | ScheduledTask (MQTT发送) |
|
||
| `MqttTaskStateMessage` | List | 任务状态变更消息 (JSON) | ScheduledTask | ScheduledTask (MQTT发送) |
|
||
| `AttendanceStatusMessage` | List | 考勤状态消息 (JSON) | UserRestTask | ScheduledTask |
|
||
| `TaskMagnifierMessage` | List | 放大镜监控消息 (JSON) | 业务系统 | ScheduledTask |
|
||
| `WatchConnectList` | List | 手表连接/断开事件 (JSON) | PushCallback | ScheduledTask |
|
||
| `WatchShockAndVoiceMessage` | List | 手表震动/语音参数 (JSON) | 业务系统 | ScheduledTask |
|
||
|
||
#### 蓝牙定位队列
|
||
|
||
| Key | 类型 | 内容 | 写入方 | 消费方 |
|
||
|-----|------|------|--------|--------|
|
||
| `BleutoothLocationQueue` | List | 蓝牙定位数据 (JSON) | 设备上报 | LocationTask |
|
||
| `OffDutyBleutoothLocationQueue` | List | 下班定位数据 (JSON) | 设备上报 | LocationTask |
|
||
|
||
#### 任务禁用/启用标志
|
||
|
||
| Key 模式 | 类型 | 值 | 说明 |
|
||
|---------|------|-----|------|
|
||
| `Disable:d:<districtId>:<taskTypeId>` | String | "0"/"1" | 站点级任务禁用 |
|
||
| `Disable:t:<toiletId>:<taskTypeId>` | String | "0"/"1" | 场景级任务禁用 |
|
||
| `Disable:p:<positionId>:<taskTypeId>` | String | "0"/"1" | 位置级任务禁用 |
|
||
| `DevTaskFlag:<districtId>` | String | "0"/"1" | 设备维护任务开关 |
|
||
| `workingTimeing:d:<districtId>:<taskTypeId>` | String | 数字 | 站点级工作时长 |
|
||
| `workingTimeing:t:<scenesId>:<taskTypeId>` | String | 数字 | 场景级工作时长 |
|
||
| `workingTimeing:p:<scenesId>:<taskTypeId>` | String | 数字 | 位置级工作时长 |
|
||
|
||
#### 计划/计数器
|
||
|
||
| Key 模式 | 类型 | 值 | 说明 |
|
||
|---------|------|-----|------|
|
||
| `Plan:<planType>:<planId>` | String | 任务ID | 计划关联的XXL-Job任务ID |
|
||
| `UserCount:p:<scenesId>` | Set | 计划ID集合 | 位置级计划集合 |
|
||
| `UserCount:p:<scenesId>:<planId>` | String | 数字 | 人次触发剩余次数 |
|
||
| `PoolOrderCount:<orderType>:<districtId>` | String | 数字 | 订单计数 |
|
||
|
||
#### MQTT 主题管理
|
||
|
||
| Key | 类型 | 值 | 说明 |
|
||
|-----|------|-----|------|
|
||
| `MQTTTOPIC` | Set | MQTT Topic 集合 | 活跃手表设备(旧) |
|
||
| `MQTTTOPICNEW` | Set | MQTT Topic 集合 | 活跃手表设备(新) |
|
||
|
||
#### 分布式锁
|
||
|
||
| Key 模式 | 类型 | TTL | 说明 |
|
||
|---------|------|-----|------|
|
||
| `redis_lock_<endpoint>` | String | 30秒 | 防重复提交 |
|
||
| `HolidayLock` | String | 1800秒 | 节假日同步锁 |
|
||
|
||
#### 其他
|
||
|
||
| Key 模式 | 类型 | 说明 |
|
||
|---------|------|------|
|
||
| `AuthorityWebpage:<authorityId>` | String | 权限页面缓存 |
|
||
| `mobileLimit:<mobile>` | String | 手机号限制标志 |
|
||
| `ToiletToUser:<toiletId>` | String | 厕所-用户映射 |
|
||
| `CleaningRestLastTime` | ZSet | 员工休息倒计时(score=截止时间戳) |
|
||
|
||
### 8.4 DB5 Key 详细映射
|
||
|
||
#### 设备命令队列
|
||
|
||
| Key | 类型 | 内容 | 写入方 | 消费方 |
|
||
|-----|------|------|--------|--------|
|
||
| `taskCommand` | List | 设备告警命令 (TaskCommandInfo JSON) | PlanTimeTask | TaskCreateQueue |
|
||
| `taskFinishCommand` | List | 任务完成命令 (TaskCommandInfo JSON) | 业务系统 | TaskCorrelationSetTask |
|
||
| `FinishTaskQueue` | List | 已完成任务ID | TaskCorrelationSetTask | TaskCorrelationSetTask |
|
||
| `ConfirmTaskQueue` | List | 已确认任务ID | 业务系统 | TaskCorrelationSetTask |
|
||
| `WatchSetParamsInit` | List | 手表初始化参数 (JSON) | 业务系统 | ScheduledTask |
|
||
| `WatchShockSetParamsInit` | List | 手表震动初始化参数 (JSON) | 业务系统 | ScheduledTask |
|
||
| `RepeatTaskQueue` | Set | 重派发任务集合 | TaskCorrelationSetTask | TaskCorrelationSetTask |
|
||
| `DistrictBeaconNoChange` | List | 信标号更新队列 | 业务系统 | BeaconTask |
|
||
|
||
#### 实体缓存
|
||
|
||
| Key 模式 | 类型 | 内容 | TTL |
|
||
|---------|------|------|-----|
|
||
| `entity:UserDistrictAttendance:<userId>_<districtId>` | String | 用户站点考勤 JSON | 无 |
|
||
| `entity:Hardware:<snCode>` | String | 硬件设备信息 JSON | 无 |
|
||
| `entity:ToiletAirQualityAirMac:<snCode>` | String | 空气质量传感器 JSON | 无 |
|
||
| `entity:TaskTypeNearFlag:<typeId>:<districtId>` | String | 任务类型临期标志 | 无 |
|
||
|
||
#### 名称缓存
|
||
|
||
| Key 模式 | 类型 | 内容 |
|
||
|---------|------|------|
|
||
| `name:Agent:<agentId>` | String | 代理商名称 |
|
||
| `name:Properyt:<propertyId>` | String | 物业名称 |
|
||
| `name:District:<districtId>` | String | 站点名称 |
|
||
| `name:PropertyAuthority:<authorityId>` | String | 权限组名称 |
|
||
|
||
#### 字典配置 (Hash)
|
||
|
||
| Key | Hash 字段 | 值 | 说明 |
|
||
|-----|----------|-----|------|
|
||
| `Dictionary` | `UserAppointFlag` | "0"/"1" | 用户预约标志 |
|
||
| `Dictionary` | `UserAreaFlag` | "0"/"1" | 用户服务区域标志 |
|
||
| `Dictionary` | `UserDutyFlag` | "0"/"1" | 用户职责标志 |
|
||
| `Dictionary` | `LogicFlag` | "0"/"1" | 逻辑标志 |
|
||
| `Dictionary` | `TaskNearFlag` | "0"/"1" | 任务临期标志 |
|
||
| `Dictionary` | `OperateAssignmentTypes` | 类型列表 | 操作分配类型 |
|
||
| `Dictionary` | `AutoOffWorkTime` | 数字 | 自动下班时间 |
|
||
| `Dictionary` | `ScenesType` | 场景类型列表 | 场景类型 |
|
||
|
||
#### 定位与状态
|
||
|
||
| Key 模式 | 类型 | 内容 |
|
||
|---------|------|------|
|
||
| `Location:<userId>` | String | 最新位置(格式: 时间_场景_楼栋_楼层) |
|
||
| `DistrictBeaconNo:<districtId>` | String | 站点信标编号 |
|
||
| `disinfect:p:<scenesId>` | String | 位置消毒状态("0"/"1") |
|
||
| `CleaningUpWorkAtStatus:<mobile>` | String | 员工原始工作状态 |
|
||
|
||
#### 时间序列
|
||
|
||
| Key | 类型 | Score | 说明 |
|
||
|-----|------|-------|------|
|
||
| `ImpendingTime` | ZSet | 过期时间戳(ms) | 临期任务队列 |
|
||
| `TaskExprieQueue` | ZSet | 过期时间戳(ms) | 任务过期队列 |
|
||
|
||
### 8.5 Redis 数据流转图
|
||
|
||
```
|
||
[计划调度]
|
||
PlanTimeTask → PlanTaskQueue(DB4) → 任务生成
|
||
PlanTimeTask → taskCommand(DB5) → TaskCreateQueue → taskPushQueue(DB4)
|
||
|
||
[任务派单]
|
||
TaskCorrelationSetTask ←→ taskUserQueue(DB4)
|
||
TaskCorrelationSetTask ←→ inspectTaskUserQueue(DB4)
|
||
TaskCorrelationSetTask ←→ taskReportQueue(DB4)
|
||
TaskCorrelationSetTask → WatchTaskUserList(DB4) → ScheduledTask → MqttWatchTaskMessage(DB4) → MQTT
|
||
|
||
[消息推送]
|
||
taskPushQueue(DB4) → TaskPushMessage → 个推SDK → APP
|
||
IntellectualTaskIdList(DB4) → ScheduledTask → MqttTaskStateMessage(DB4) → MQTT → 手机端
|
||
|
||
[设备通信]
|
||
WatchConnectList(DB4) → ScheduledTask → 更新Watch表
|
||
BleutoothLocationQueue(DB4) → LocationTask → UserLocation/UserTrajectory
|
||
|
||
[员工休息]
|
||
UserRestTask → AttendanceStatusMessage(DB4) → ScheduledTask → MQTT
|
||
CleaningRestLastTime(DB4, ZSet) → restCountDown → 自动恢复
|
||
```
|
||
|
||
---
|
||
|
||
## 九、统计汇总
|
||
|
||
| 维度 | 数量 |
|
||
|------|------|
|
||
| Controller 数量 | 27 个 |
|
||
| REST API 端点 | 约 150+ 个 |
|
||
| XXL-Job 定时任务 | 6 个 |
|
||
| Spring @Scheduled 任务 | 20+ 个 |
|
||
| 业务模块 | 19 个 |
|
||
| DB1 数据表 | 51 张 |
|
||
| DB2 数据表 | 61 张 |
|
||
| 数据表总计 | 112 张 |
|
||
| Redis DB4 Key 类型 | 30+ 种 |
|
||
| Redis DB5 Key 类型 | 25+ 种 |
|
||
| Redis 消息队列 | 15+ 个 |
|