智慧清洁 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 = 巡检任务
模块 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:员工休息管理
完整流程:
- 员工点击休息 → 创建休息记录 → 更新状态为"休息中"
- 存入Redis倒计时(默认60分钟)
- 发送蓝牙关闭消息到手表
- 倒计时结束 → 自动生成休息完成记录 → 恢复员工状态
模块 19:节假日同步
| 任务 |
频率 |
说明 |
| 节假日同步 |
每年12月28日 06:06:06 |
调用外部API同步下一年节假日 |
节假日类型:工作日(0) / 法定节假日(1) / 调休日(2) / 周末(3)
四、核心业务流程
流程 1:清洁任务全生命周期
流程 2:设备告警 → 维护任务
流程 3:员工实时定位
五、核心数据模型
| 实体 |
说明 |
所属库 |
| 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 核心关系映射
八、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 数据流转图
九、统计汇总
| 维度 |
数量 |
| 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+ 个 |