|
|
1 yıl önce | |
|---|---|---|
| .. | ||
| 技术设计 | 1 yıl önce | |
| 需求分析 | 1 yıl önce | |
| README.md | 1 yıl önce | |
🎯 模块用途:学校物业维修服务数字化管理,提供从报修申请到维修完成的全流程管理
模块名称:property-maintenance / 物业报修管理模块
负责人:[待分配]
开发状态:⭕ 待开始
技术栈:Spring Boot 3.4.6 + Vue3 + TypeScript + Warm-Flow + Element Plus
依赖模块:用户管理模块、系统管理模块、文件服务模块
开发周期:[待规划] - [待规划]
本模块旨在解决学校物业维修服务的数字化管理问题,实现报修申请、任务分派、维修跟踪、服务评价的全流程线上化处理,提高维修效率,提升用户满意度,建立可追踪的服务质量体系。
property-maintenance/
├── README.md # 本文件 - 模块总览
├── 需求分析/
│ ├── 业务需求说明.md # 详细业务需求
│ ├── 功能需求清单.md # 功能点清单
│ ├── 非功能需求.md # 性能、安全要求
│ └── 用户故事.md # 用户使用场景
├── 技术设计/
│ ├── 数据库设计.md # 表结构设计
│ ├── API接口设计.md # 接口定义
│ ├── 架构设计.md # 模块架构
│ └── 技术选型.md # 技术决策说明
├── 实现文档/
│ ├── 后端实现说明.md # 后端代码结构
│ ├── 前端实现说明.md # 前端代码结构
│ ├── 关键业务逻辑.md # 核心算法逻辑
│ └── 代码规范.md # 编码规范
├── 测试文档/
│ ├── 测试计划.md # 测试策略
│ ├── 测试用例.md # 具体测试用例
│ └── 测试报告.md # 测试结果
└── 运维文档/
├── 部署指南.md # 部署步骤
├── 监控配置.md # 监控指标
└── 故障处理.md # 常见问题
graph TB
subgraph "前端展示层"
A1[报修申请页面<br/>用户提交报修]
A2[工单管理页面<br/>管理员派单]
A3[维修工作台<br/>维修员操作]
A4[统计分析页面<br/>数据可视化]
end
subgraph "接口服务层"
B1[报修单Controller<br/>CRUD操作]
B2[工作流Controller<br/>流程控制]
B3[文件服务Controller<br/>文件上传]
B4[统计分析Controller<br/>数据统计]
end
subgraph "业务逻辑层"
C1[报修单Service<br/>业务逻辑处理]
C2[工作流Service<br/>流程管理]
C3[通知Service<br/>消息通知]
C4[统计Service<br/>数据分析]
end
subgraph "数据持久层"
D1[报修单Mapper<br/>数据访问]
D2[工作流Mapper<br/>流程数据]
D3[文件Mapper<br/>文件信息]
D4[MySQL数据库<br/>数据存储]
end
subgraph "外部服务"
E1[文件存储服务<br/>OSS/本地存储]
E2[消息通知服务<br/>短信/邮件]
E3[用户权限服务<br/>Sa-Token]
end
A1 --> B1
A2 --> B1
A2 --> B2
A3 --> B1
A3 --> B2
A4 --> B4
B1 --> C1
B2 --> C2
B3 --> C1
B4 --> C4
C1 --> D1
C2 --> D2
C3 --> D1
C4 --> D1
D1 --> D4
D2 --> D4
D3 --> D4
C1 --> E1
C3 --> E2
B1 --> E3
sequenceDiagram
participant U as 用户
participant F as 前端
participant C as Controller
participant S as Service
participant W as 工作流引擎
participant M as Mapper
participant D as Database
U->>F: 提交报修申请
F->>C: POST /api/maintenance/repair-order
C->>S: 创建报修单
S->>W: 启动维修流程
W->>M: 保存流程数据
M->>D: 存储到数据库
D-->>M: 返回结果
M-->>S: 返回数据
S-->>C: 返回报修单ID
C-->>F: JSON响应
F-->>U: 显示提交成功
Note over S,W: 自动通知物业管理员
用户通过 Web 端或移动端在线提交报修申请,填写报修地点、问题描述、紧急程度等信息,并可上传现场图片或视频作为辅助说明。系统自动生成唯一的报修单号,并启动维修工作流程。
物业管理员接收用户报修申请后,根据维修类型、紧急程度、维修员专业技能和工作负荷,智能推荐并分派工单给合适的维修员。支持批量分派和分派撤回功能。
维修员接收工单后,可实时更新维修进度状态(接单、到达现场、开始维修、完成维修等),用户可通过系统实时查看维修进度。支持维修过程照片上传和问题上报。
维修完成后,用户对维修服务进行评分(1-5 星)和文字反馈,包括维修质量、服务态度、响应速度等维度。评价结果作为维修员绩效考核和服务改进的重要依据。
| 接口名称 | 请求方式 | 路径 | 功能描述 |
|---|---|---|---|
| 创建报修单 | POST | /api/maintenance/repair-order | 用户提交报修申请 |
| 查询报修单列表 | GET | /api/maintenance/repair-order/list | 分页查询报修单列表 |
| 查询报修单详情 | GET | /api/maintenance/repair-order/{id} | 根据 ID 查询报修单详情 |
| 更新报修单状态 | PUT | /api/maintenance/repair-order/{id}/status | 更新报修单处理状态 |
| 分派工单 | POST | /api/maintenance/repair-order/{id}/assign | 管理员分派工单给维修员 |
| 完成维修 | POST | /api/maintenance/repair-order/{id}/finish | 维修员提交维修完成结果 |
| 接口名称 | 请求方式 | 路径 | 功能描述 |
|---|---|---|---|
| 上传文件 | POST | /api/maintenance/file/upload | 上传图片、视频文件 |
| 删除文件 | DELETE | /api/maintenance/file/{id} | 删除已上传文件 |
| 获取文件信息 | GET | /api/maintenance/file/{id} | 获取文件详细信息 |
| 接口名称 | 请求方式 | 路径 | 功能描述 |
|---|---|---|---|
| 提交评价 | POST | /api/maintenance/evaluation | 用户提交服务评价 |
| 查询评价列表 | GET | /api/maintenance/evaluation/list | 查询评价记录列表 |
| 统计满意度 | GET | /api/maintenance/evaluation/statistics | 统计服务满意度数据 |
| 接口名称 | 请求方式 | 路径 | 功能描述 |
|---|---|---|---|
| 维修统计概览 | GET | /api/maintenance/statistics/overview | 获取维修业务概览数据 |
| 维修员工作量统计 | GET | /api/maintenance/statistics/workload | 统计维修员工作负荷 |
| 维修类型分析 | GET | /api/maintenance/statistics/category | 按维修类型统计分析 |
| 满意度趋势分析 | GET | /api/maintenance/statistics/satisfaction | 用户满意度趋势分析 |
| 字段名 | 类型 | 长度 | 非空 | 默认值 | 说明 |
|---|---|---|---|---|---|
| id | BIGINT | - | Y | - | 主键 ID |
| order_no | VARCHAR | 32 | Y | - | 报修单号 |
| title | VARCHAR | 200 | Y | - | 报修标题 |
| description | TEXT | - | Y | - | 问题描述 |
| location | VARCHAR | 500 | Y | - | 报修地点 |
| contact_name | VARCHAR | 50 | Y | - | 联系人姓名 |
| contact_phone | VARCHAR | 20 | Y | - | 联系电话 |
| urgency_level | TINYINT | - | Y | 1 | 紧急程度(1-5) |
| expected_time | DATETIME | - | N | - | 期望完成时间 |
| repair_type | VARCHAR | 50 | Y | - | 维修类型 |
| status | VARCHAR | 20 | Y | PENDING | 状态 |
| assignee_id | BIGINT | - | N | - | 分派维修员 ID |
| assign_time | DATETIME | - | N | - | 分派时间 |
| start_time | DATETIME | - | N | - | 开始维修时间 |
| finish_time | DATETIME | - | N | - | 完成维修时间 |
| repair_result | TEXT | - | N | - | 维修结果说明 |
| evaluation_score | DECIMAL(3,2) | - | N | - | 评价分数 |
| evaluation_comment | TEXT | - | N | - | 评价内容 |
| tenant_id | VARCHAR | 20 | Y | 000000 | 租户 ID |
| create_dept | BIGINT | - | Y | - | 创建部门 |
| create_by | BIGINT | - | Y | - | 创建者 |
| create_time | DATETIME | - | Y | - | 创建时间 |
| update_by | BIGINT | - | Y | - | 更新者 |
| update_time | DATETIME | - | Y | - | 更新时间 |
| deleted | TINYINT | - | Y | 0 | 删除标记 |
| 字段名 | 类型 | 长度 | 非空 | 默认值 | 说明 |
|---|---|---|---|---|---|
| id | BIGINT | - | Y | - | 主键 ID |
| repair_order_id | BIGINT | - | Y | - | 报修单 ID |
| file_name | VARCHAR | 255 | Y | - | 文件名 |
| file_path | VARCHAR | 500 | Y | - | 文件路径 |
| file_size | BIGINT | - | Y | - | 文件大小 |
| file_type | VARCHAR | 50 | Y | - | 文件类型 |
| attachment_type | VARCHAR | 20 | Y | - | 附件类型 |
| tenant_id | VARCHAR | 20 | Y | 000000 | 租户 ID |
| create_by | BIGINT | - | Y | - | 创建者 |
| create_time | DATETIME | - | Y | - | 创建时间 |
| update_by | BIGINT | - | Y | - | 更新者 |
| update_time | DATETIME | - | Y | - | 更新时间 |
| deleted | TINYINT | - | Y | 0 | 删除标记 |
| 字段名 | 类型 | 长度 | 非空 | 默认值 | 说明 |
|---|---|---|---|---|---|
| id | BIGINT | - | Y | - | 主键 ID |
| repair_order_id | BIGINT | - | Y | - | 报修单 ID |
| status | VARCHAR | 20 | Y | - | 进度状态 |
| description | TEXT | - | N | - | 进度描述 |
| operator_id | BIGINT | - | Y | - | 操作人 ID |
| operator_name | VARCHAR | 50 | Y | - | 操作人姓名 |
| progress_time | DATETIME | - | Y | - | 进度更新时间 |
| tenant_id | VARCHAR | 20 | Y | 000000 | 租户 ID |
| create_by | BIGINT | - | Y | - | 创建者 |
| create_time | DATETIME | - | Y | - | 创建时间 |
| deleted | TINYINT | - | Y | 0 | 删除标记 |
erDiagram
HQ_PM_REPAIR_ORDER ||--o{ HQ_PM_REPAIR_ATTACHMENT : "一对多"
HQ_PM_REPAIR_ORDER ||--o{ HQ_PM_REPAIR_PROGRESS : "一对多"
HQ_PM_REPAIR_ORDER }o--|| SYS_USER : "报修人"
HQ_PM_REPAIR_ORDER }o--|| SYS_USER : "维修员"
HQ_PM_REPAIR_ORDER {
bigint id PK
varchar order_no UK
varchar title
text description
varchar location
varchar status
bigint assignee_id FK
datetime create_time
}
HQ_PM_REPAIR_ATTACHMENT {
bigint id PK
bigint repair_order_id FK
varchar file_name
varchar file_path
varchar file_type
}
HQ_PM_REPAIR_PROGRESS {
bigint id PK
bigint repair_order_id FK
varchar status
text description
bigint operator_id FK
datetime progress_time
}
SYS_USER {
bigint id PK
varchar username
varchar nickname
varchar phone
}
flowchart TD
A[用户发起报修] --> B[填写报修信息]
B --> C{信息完整?}
C -->|否| B
C -->|是| D[上传附件]
D --> E[提交申请]
E --> F[生成报修单号]
F --> G[通知物业管理员]
G --> H[报修单进入待分派状态]
流程说明:
flowchart TD
A[管理员查看待分派工单] --> B[选择报修单]
B --> C[查看报修详情]
C --> D{是否需要分派?}
D -->|否| E[标记为无需维修]
D -->|是| F[选择维修员]
F --> G[确认分派]
G --> H[更新工单状态]
H --> I[通知维修员]
I --> J[通知报修用户]
流程说明:
flowchart TD
A[维修员接收工单] --> B[确认接单]
B --> C[到达现场]
C --> D[开始维修]
D --> E[更新维修进度]
E --> F{维修是否完成?}
F -->|否| D
F -->|是| G[提交维修报告]
G --> H[上传完成照片]
H --> I[更新工单状态]
I --> J[通知用户确认]
流程说明:
// 组件属性接口
interface RepairOrderFormProps {
modelValue: RepairOrderForm;
readonly?: boolean;
showAttachment?: boolean;
}
// 组件事件接口
interface RepairOrderFormEmits {
'update:modelValue': [value: RepairOrderForm];
submit: [formData: RepairOrderForm];
cancel: [];
}
// 组件属性接口
interface AssignDialogProps {
visible: boolean;
repairOrder: RepairOrderVo;
maintainerList: MaintainerVo[];
}
// 组件事件接口
interface AssignDialogEmits {
'update:visible': [visible: boolean];
confirm: [assignData: AssignFormData];
cancel: [];
}
src/main/java/org/dromara/modules/maintenance/
├── controller/ # 控制器层
│ ├── RepairOrderController.java
│ ├── RepairAttachmentController.java
│ ├── RepairProgressController.java
│ └── MaintenanceStatisticsController.java
├── domain/ # 领域对象层
│ ├── bo/ # 业务对象
│ │ ├── RepairOrderBo.java
│ │ ├── RepairOrderQueryBo.java
│ │ └── AssignRepairOrderBo.java
│ └── vo/ # 视图对象
│ ├── RepairOrderVo.java
│ ├── RepairOrderDetailVo.java
│ └── MaintenanceStatisticsVo.java
├── mapper/ # 数据访问层
│ ├── RepairOrderMapper.java
│ ├── RepairOrderMapper.xml
│ ├── RepairAttachmentMapper.java
│ └── RepairProgressMapper.java
├── service/ # 业务服务层
│ ├── IRepairOrderService.java
│ ├── IRepairAttachmentService.java
│ ├── IMaintenanceStatisticsService.java
│ └── impl/
│ ├── RepairOrderServiceImpl.java
│ ├── RepairAttachmentServiceImpl.java
│ └── MaintenanceStatisticsServiceImpl.java
└── utils/ # 工具类
└── MaintenanceUtils.java
src/views/maintenance/
├── repair-order/ # 报修单管理
│ ├── index.vue # 报修单列表页
│ ├── form.vue # 报修申请表单
│ └── detail.vue # 报修单详情
├── work-order/ # 工单管理
│ ├── index.vue # 工单管理页面
│ └── assign.vue # 工单分派页面
├── workbench/ # 维修工作台
│ ├── index.vue # 维修员工作台
│ └── progress.vue # 进度更新页面
├── statistics/ # 统计分析
│ └── index.vue # 统计分析页面
├── components/ # 页面组件
│ ├── RepairOrderForm.vue
│ ├── AssignDialog.vue
│ ├── ProgressTimeline.vue
│ └── AttachmentUpload.vue
├── types/ # 类型定义
│ └── index.ts
└── api/ # API接口
└── index.ts
重要说明: