# 维保工单模块使用说明

## 功能概述

维保工单模块是基于若依框架开发的完整工单管理系统，支持工单的创建、派单、接单、挂起、重启和完成等完整流程。

## 模块组成

### 1. 数据库表

#### 维保工单表（wl_maintenance_work_order）
包含工单的所有基本信息和状态字段。

#### 工单流转记录表（wl_work_order_flow）
记录工单的所有操作历史，便于追溯。

**SQL脚本位置**: `sql/maintenance_work_order.sql`

### 2. 后端代码

- **实体类**:
  - `MaintenanceWorkOrder.java` - 维保工单实体
  - `WorkOrderFlow.java` - 工单流转记录实体

- **Mapper接口**:
  - `MaintenanceWorkOrderMapper.java`
  - `WorkOrderFlowMapper.java`

- **Mapper XML**:
  - `MaintenanceWorkOrderMapper.xml`
  - `WorkOrderFlowMapper.xml`

- **Service接口及实现**:
  - `IMaintenanceWorkOrderService.java`
  - `MaintenanceWorkOrderServiceImpl.java`

- **Controller**:
  - `MaintenanceWorkOrderController.java`

### 3. 前端代码

- **API接口**: `ygtx-ui/src/api/worklog/maintenanceOrder.js`
- **页面组件**: `ygtx-ui/src/views/worklog/maintenanceOrder/index.vue`

## 部署步骤

### 1. 执行数据库脚本

```sql
-- 在数据库中执行以下脚本
source sql/maintenance_work_order.sql
```

### 2. 后台菜单配置

登录系统后台，进入 **系统管理 > 菜单管理**，添加以下菜单：

#### 一级菜单 - 工作日志
- 菜单名称: 工作日志
- 菜单类型: 目录
- 菜单图标: 选择合适的图标
- 显示排序: 根据需要设置
- 路由地址: worklog
- 组件路径: 空

#### 二级菜单 - 维保工单
- 上级菜单: 工作日志
- 菜单名称: 维保工单
- 菜单类型: 菜单
- 菜单图标: 选择合适的图标
- 路由地址: maintenanceOrder
- 组件路径: worklog/maintenanceOrder/index
- 权限标识: worklog:maintenance:order:list

#### 按钮权限配置

在"维保工单"菜单下添加以下按钮权限：

| 按钮名称 | 权限标识 |
|---------|---------|
| 查询 | worklog:maintenance:order:query |
| 新增 | worklog:maintenance:order:add |
| 修改 | worklog:maintenance:order:edit |
| 删除 | worklog:maintenance:order:remove |
| 导出 | worklog:maintenance:order:export |
| 派单 | worklog:maintenance:order:assign |
| 接单 | worklog:maintenance:order:accept |
| 挂起 | worklog:maintenance:order:suspend |
| 重启 | worklog:maintenance:order:restart |
| 完成 | worklog:maintenance:order:complete |

### 3. 角色权限配置

进入 **系统管理 > 角色管理**，为相应角色分配维保工单的菜单和按钮权限。

## 工单流程说明

### 工单状态

1. **草稿（draft）**: 工单创建后的初始状态
2. **待派单（to_assign）**: 等待派单
3. **已派单（assigned）**: 已派给班组组长或工作组成员
4. **已接单（accepted）**: 班组组长已接单
5. **处理中（processing）**: 工作组成员正在处理
6. **暂停中（paused）**: 工单暂停
7. **待审批（to_approve）**: 等待审批（预留状态）
8. **已挂起（suspended）**: 工单被挂起
9. **已完成（completed）**: 工单已完成

### 工单流转流程

```
创建工单（草稿/待派单）
    ↓
派单给班组组长
    ↓
班组组长接单
    ↓
班组组长派单给工作组成员
    ↓
工作组成员接单（状态变为处理中）
    ↓
工作组成员完成工单
```

### 特殊操作

#### 挂起工单
- **触发条件**: 工单处于"处理中"状态
- **操作权限**: 班组组长或工作组成员
- **必填信息**: 挂起原因

#### 重启工单
- **触发条件**: 工单处于"已挂起"状态
- **操作权限**: 班组组长或工作组成员
- **状态变更**: 已挂起 → 处理中

## API接口说明

### 基础接口

| 接口 | 方法 | 路径 | 说明 |
|-----|------|------|------|
| 查询列表 | GET | /worklog/maintenance/order/list | 分页查询工单列表 |
| 查询详情 | GET | /worklog/maintenance/order/{id} | 查询工单详情 |
| 新增工单 | POST | /worklog/maintenance/order | 创建新工单 |
| 修改工单 | PUT | /worklog/maintenance/order | 修改工单信息 |
| 删除工单 | DELETE | /worklog/maintenance/order/{ids} | 删除工单 |

### 流程接口

| 接口 | 方法 | 路径 | 说明 |
|-----|------|------|------|
| 派单给班组组长 | PUT | /worklog/maintenance/order/assignToTeamLeader/{id} | 参数: teamLeaderId, teamLeaderName |
| 班组组长接单 | PUT | /worklog/maintenance/order/acceptByTeamLeader/{id} | 无参数 |
| 派单给工作组成员 | PUT | /worklog/maintenance/order/assignToWorkGroupMember/{id} | 参数: workGroupMemberId, workGroupMemberName |
| 工作组成员接单 | PUT | /worklog/maintenance/order/acceptByWorkGroupMember/{id} | 无参数 |
| 挂起工单 | PUT | /worklog/maintenance/order/suspend/{id} | 参数: suspendReason |
| 重启工单 | PUT | /worklog/maintenance/order/restart/{id} | 无参数 |
| 完成工单 | PUT | /worklog/maintenance/order/complete/{id} | 无参数 |
| 查询流转记录 | GET | /worklog/maintenance/order/flow/{orderId} | 无参数 |

## 查询条件说明

前端列表页支持以下查询条件：
- 工单编码（模糊查询）
- 工单状态（精确匹配）
- 维保中心（精确匹配）
- 风电场（精确匹配）
- 工单来源（精确匹配）

## 功能特性

1. **完整的工单生命周期管理**
2. **多级派单机制**：支持从管理员→班组组长→工作组成员的多级派单
3. **权限控制**：基于若依框架的权限体系，精确控制每个操作
4. **流转记录**：自动记录所有工单状态变更，便于追溯
5. **灵活的状态流转**：支持挂起、重启等特殊操作
6. **丰富的界面交互**：列表、详情、时间线展示等多种展示方式

## 注意事项

1. 工单编码必须唯一，系统会自动校验
2. 派单和接单操作有严格的权限控制和状态校验
3. 只有班组组长或工作组成员可以挂起/重启工单
4. 删除工单会同时删除相关的流转记录（需注意数据一致性）
5. 建议在生产环境中定期备份工单数据

## 扩展建议

1. 可以添加工单附件上传功能
2. 可以集成消息通知（短信、邮件等）
3. 可以添加工单统计和报表功能
4. 可以添加工单审批流程
5. 可以集成定时任务自动创建周期性维保工单

## 技术支持

如有问题，请联系技术支持团队。
