# GxtUserScoreController 功能描述和接口描述

## 一、功能概述

GxtUserScoreController 是一个用于处理用户月度评分统计的 RESTful 控制器。它提供了完整的月度评分管理功能，包括查询、新增、修改、删除用户月度评分信息，以及处理复杂的月度工分汇总和评分提交功能。

该控制器主要涉及以下几个核心业务场景：
1. 用户月度评分列表的查询和管理
2. 人员评分页面数据的获取和展示
3. 月度工分汇总数据的计算和展示
4. 统一提交人员评分页面的所有数据
5. 月度评分数据的导出功能

## 二、核心功能详解

### 1. 人员评分管理
- 提供用户月度评分的增删改查功能
- 支持按条件查询用户月度评分列表
- 支持分页查询和数据导出

### 2. 人员评分页面数据获取
- 根据类型(rtType)和月份周期(monthPeriod)获取相关人员评分数据
- 整合多个评分维度的数据，包括：
  - 系数与定检台数统计数据
  - 安全运行工单列表数据
  - 维保机组类型评分数据
  - 检修员得分列表数据
  - 维修员最终得分列表数据
  - 场站负责人评分列表数据

### 3. 月度工分汇总
- 根据类型、月份周期和部门ID获取月度工分汇总数据
- 支持根据ID获取特定的月度工分汇总信息
- 提供月度工分汇总列表数据获取功能

### 4. 评分数据提交
- 提供统一提交人员评分页面所有数据的功能
- 支持批量处理多种类型的评分数据
- 具备数据去重和更新机制

### 5. 辅助功能
- 获取汇总月份列表
- 数据导出功能

## 三、接口详细描述

### 1. 查询用户月度评分统计表列表
- **接口地址**: `/gxt/userscore/list`
- **请求方法**: GET
- **功能描述**: 查询用户月度评分统计表列表，支持分页
- **请求参数**: 
  - GxtUserScore 对象（包含查询条件）
- **返回结果**: TableDataInfo（分页数据）

### 2. 人员评分页面数据获取
- **接口地址**: `/gxt/userscore/getUserScoreInfo`
- **请求方法**: GET
- **功能描述**: 获取人员评分页面数据，整合多个评分维度的数据
- **请求参数**: 
  - rtType (Integer): 类型
  - monthPeriod (String): 月份周期
- **返回结果**: AjaxResult（包含各类评分数据列表）

### 3. 月度工分汇总页面数据获取
- **接口地址**: `/gxt/userscore/getScoreSummary`
- **请求方法**: GET
- **功能描述**: 获取月度工分汇总页面数据
- **请求参数**: 
  - rtType (Integer): 类型
  - monthPeriod (String): 月份周期
  - deptId (Long): 部门ID
- **返回结果**: AjaxResult（包含月度工分汇总数据）

### 4. 根据ID获取月度工分汇总
- **接口地址**: `/gxt/userscore/getScoreSummaryById`
- **请求方法**: GET
- **功能描述**: 根据ID获取月度工分汇总信息
- **请求参数**: 
  - rtType (Integer): 类型
  - id (Long): ID
- **返回结果**: AjaxResult（包含月度工分汇总数据）

### 5. 月度工分汇总列表数据获取
- **接口地址**: `/gxt/userscore/getMonthScoreList`
- **请求方法**: GET
- **功能描述**: 获取月度工分汇总列表数据
- **请求参数**: 
  - SysDept 对象（包含查询条件）
- **返回结果**: TableDataInfo（分页数据）

### 6. 统一提交月度工分汇总
- **接口地址**: `/gxt/userscore/submitMonthScore`
- **请求方法**: POST
- **功能描述**: 提交月度工分汇总数据
- **请求参数**: 
  - GxtMonthScore 对象（包含月度工分汇总数据）
- **返回结果**: AjaxResult（提交结果）

### 7. 获取汇总月份列表
- **接口地址**: `/gxt/userscore/getSummaryMonths`
- **请求方法**: GET
- **功能描述**: 获取可汇总的月份列表
- **请求参数**: 
  - deptId (Long): 部门ID
- **返回结果**: AjaxResult（包含月份字典列表）

### 8. 导出用户月度评分统计表列表
- **接口地址**: `/gxt/userscore/export`
- **请求方法**: POST
- **功能描述**: 导出用户月度评分统计表数据到Excel
- **请求参数**: 
  - GxtUserScore 对象（包含导出条件）
- **返回结果**: HttpServletResponse（Excel文件流）

### 9. 获取用户月度评分统计表详细信息
- **接口地址**: `/gxt/userscore/{id}`
- **请求方法**: GET
- **功能描述**: 根据ID获取用户月度评分统计表详细信息
- **请求参数**: 
  - id (Long): 主键ID（路径参数）
- **返回结果**: AjaxResult（包含GxtUserScore对象）

### 10. 新增用户月度评分统计表
- **接口地址**: `/gxt/userscore`
- **请求方法**: POST
- **功能描述**: 新增用户月度评分统计表记录
- **请求参数**: 
  - GxtUserScore 对象（包含新增数据）
- **返回结果**: AjaxResult（新增结果）

### 11. 修改用户月度评分统计表
- **接口地址**: `/gxt/userscore`
- **请求方法**: PUT
- **功能描述**: 修改用户月度评分统计表记录
- **请求参数**: 
  - GxtUserScore 对象（包含修改数据）
- **返回结果**: AjaxResult（修改结果）

### 12. 删除用户月度评分统计表
- **接口地址**: `/gxt/userscore/{ids}`
- **请求方法**: DELETE
- **功能描述**: 删除用户月度评分统计表记录
- **请求参数**: 
  - ids (Long[]): 主键ID数组（路径参数）
- **返回结果**: AjaxResult（删除结果）

### 13. 统一提交人员评分页面的所有数据
- **接口地址**: `/gxt/userscore/submitAllScores`
- **请求方法**: POST
- **功能描述**: 统一提交人员评分页面的所有列表数据
- **请求参数**: 
  - GxtUserScoreSubmissionDTO 对象（包含所有评分数据）
- **返回结果**: AjaxResult（提交结果）

## 四、数据处理逻辑

### 1. 数据提交处理逻辑
当提交评分数据时，系统会根据monthPeriod和userName查询是否存在记录：
- 如果存在记录，则更新第一条记录
- 如果不存在记录，则新增记录

### 2. 权限控制
系统通过configService获取"gxt.user.scorePage"配置来控制数据访问权限。

### 3. 数据完整性保障
在处理各类评分数据时，系统会确保数据的完整性和一致性，避免重复数据的产生。

## 五、异常处理

所有接口都具备完善的异常处理机制：
- 对于业务异常，返回相应的错误信息
- 对于系统异常，记录日志并返回通用错误提示
- 确保系统的稳定性和用户体验
