feat: 实现员工同步任务的WebSocket支持及合同名称锁定功能

- 为EmployeesSyncTask添加WebSocket客户端和服务端支持,实现实时任务进度反馈
- 新增合同名称锁定功能,防止误修改重要合同名称
- 优化SmbFileService的连接异常处理,提高稳定性
- 重构ContractFilesRebuildTasker的任务执行逻辑,改进错误处理
- 更新tasker_mapper.json注册EmployeesSyncTask
- 添加相关任务文档和验收报告

修复WebSocketClientSession的任务完成状态处理问题
改进UITools中任务执行的线程管理
优化DepartmentService的findByCode方法返回类型
This commit is contained in:
2025-11-20 16:26:34 +08:00
parent 02afa189f8
commit a784438e97
28 changed files with 983 additions and 329 deletions

View File

@@ -0,0 +1,191 @@
# EmployeesSyncTask WebSocket集成实现任务分解
## 任务概述
根据《EmployeesSyncTask WebSocket集成设计方案》将整个集成工作分解为6个原子任务按依赖关系排序执行。
## 任务依赖图
```mermaid
graph TD
A[任务4: 客户端WebSocket支持] --> C[任务6: 验证和测试]
B[任务5: 服务器端WebSocket支持和注册] --> C
C --> D[任务6: 验证和测试]
```
## 原子任务清单
### 任务4: 实现客户端WebSocket支持
**输入契约:**
- 现有客户端EmployeesSyncTask.java文件13行基础实现
- WebSocketClientTasker接口规范client/src/main/java/com/ecep/contract/WebSocketClientTasker.java
- 项目现有的客户端Tasker实现参考
- UITools任务对话框工具类
**输出契约:**
- 升级后的客户端EmployeesSyncTask.java文件实现WebSocketClientTasker接口
- 支持远程任务调用和实时进度同步
- 完整的错误处理和UI反馈机制
**实现约束:**
- 严格遵循WebSocketClientTasker接口规范
- 保持与现有客户端Tasker实现的一致性
- 实现getTaskName()方法返回"EmployeesSyncTask"
- 集成项目现有的UI反馈机制
**依赖关系:**
- 前置依赖: 无
- 后置依赖: 任务6验证测试
**验收标准:**
- [ ] 客户端代码编译通过
- [ ] 实现WebSocketClientTasker接口所有必需方法
- [ ] getTaskName()返回正确的任务名称
- [ ] 能够通过WebSocket提交任务到服务器
- [ ] 能够接收和显示服务器端推送的进度和消息
- [ ] 异常处理机制完善
---
### 任务5: 实现服务器端WebSocket支持和注册
**输入契约:**
- 现有服务器端EmployeesSyncTask.java文件159行完整业务逻辑
- WebSocketServerTasker接口规范server/src/main/java/com/ecep/contract/service/tasker/WebSocketServerTasker.java
- tasker_mapper.json配置文件server/src/main/resources/
- 现有服务器端WebSocket Tasker实现参考
**输出契约:**
- 升级后的服务器端EmployeesSyncTask.java文件实现WebSocketServerTasker接口
- 更新后的tasker_mapper.json配置文件包含EmployeesSyncTask注册
- 支持WebSocket通信的服务器端任务执行能力
**实现约束:**
- 严格遵循WebSocketServerTasker接口规范
- 保持现有业务逻辑execute方法完全不变
- 在tasker_mapper.json中正确注册任务
- 确保任务名称与客户端调用名称一致
**依赖关系:**
- 前置依赖: 无
- 后置依赖: 任务6验证测试
**验收标准:**
- [ ] 服务器端代码编译通过
- [ ] 实现WebSocketServerTasker接口继承自Callable<Object>
- [ ] 现有业务逻辑保持不变
- [ ] 在tasker_mapper.json中正确注册
- [ ] 服务器启动时任务注册成功
- [ ] 能够接收客户端WebSocket调用并执行任务
---
### 任务6: 验证和测试结果
**输入契约:**
- 升级后的客户端EmployeesSyncTask.java
- 升级后的服务器端EmployeesSyncTask.java
- 更新后的tasker_mapper.json配置文件
- 项目现有的任务监控和测试工具
**输出契约:**
- 完整的集成测试报告
- 发现的问题和解决方案记录
- 最终的验收确认结果
**实现约束:**
- 测试完整的端到端任务执行流程
- 验证WebSocket通信的稳定性和可靠性
- 确保用户体验流畅自然
- 所有边界情况和异常情况都得到妥善处理
**依赖关系:**
- 前置依赖: 任务4和任务5都已完成
- 后置依赖: 无
**验收标准:**
- [ ] 客户端能够成功连接服务器
- [ ] 任务能够成功提交并执行
- [ ] 进度能够实时同步到客户端UI
- [ ] 日志消息能够实时显示在客户端界面
- [ ] 任务取消功能正常工作
- [ ] 网络异常处理机制正常
- [ ] 服务器端任务注册和调用正常
- [ ] 整体功能符合设计要求
---
## 任务执行顺序
### 顺序1: 并行执行准备任务
- **任务4**: 实现客户端WebSocket支持
- **任务5**: 实现服务器端WebSocket支持和注册
### 顺序2: 验证测试
- **任务6**: 验证和测试结果
## 质量门控检查点
### 客户端实现检查点
1. **接口合规性**: 检查WebSocketClientTasker接口方法实现完整性
2. **代码编译性**: 验证客户端代码能够成功编译
3. **集成兼容性**: 确保与现有客户端架构兼容
### 服务器端实现检查点
1. **接口合规性**: 检查WebSocketServerTasker接口方法实现完整性
2. **业务一致性**: 验证现有业务逻辑未受影响
3. **配置正确性**: 确认tasker_mapper.json配置正确
4. **注册成功性**: 验证服务器启动时任务注册成功
### 集成测试检查点
1. **通信连通性**: 验证WebSocket连接建立正常
2. **数据同步性**: 确认进度和消息能够实时同步
3. **异常处理性**: 验证各种异常情况处理正常
4. **用户体验性**: 确认整体用户体验符合预期
## 异常情况处理
### 技术异常
- **编译错误**: 立即停止,修复编译问题后继续
- **WebSocket连接失败**: 检查网络配置和服务器状态
- **任务执行异常**: 查看服务器端日志,定位问题根因
### 业务异常
- **U8系统连接问题**: 检查U8系统网络和凭据
- **数据库操作异常**: 检查数据库连接和权限
- **数据格式异常**: 检查U8系统数据格式兼容性
### 用户体验异常
- **UI响应异常**: 检查客户端UI更新逻辑
- **进度显示异常**: 验证进度计算和同步逻辑
- **消息显示异常**: 检查日志消息处理和显示逻辑
## 风险缓解策略
### 高风险项
1. **WebSocket通信稳定性**: 通过异常处理和重连机制缓解
2. **数据一致性**: 通过保持现有业务逻辑确保数据安全
3. **性能影响**: 通过最小化通信开销降低性能影响
### 中风险项
1. **配置部署复杂性**: 通过详细的配置指南降低部署风险
2. **调试复杂性**: 通过完善的日志输出降低调试难度
### 低风险项
1. **代码风格一致性**: 通过遵循项目规范确保一致性
2. **文档完整性**: 通过详细文档确保可维护性
## 交付物清单
### 代码交付物
- [ ] 升级后的客户端EmployeesSyncTask.java
- [ ] 升级后的服务器端EmployeesSyncTask.java
- [ ] 更新后的tasker_mapper.json配置文件
### 文档交付物
- [ ] EmployeesSyncTask_WebSocket_Design.md已完成
- [ ] EmployeesSyncTask_Tasks.md当前文档
- [ ] 最终验收报告
### 测试交付物
- [ ] 集成测试用例和结果
- [ ] 性能测试结果(如需要)
- [ ] 用户验收确认
这个任务分解确保了EmployeesSyncTask WebSocket集成工作的系统性、可控性和高质量交付。