231 lines
9.6 KiB
Markdown
231 lines
9.6 KiB
Markdown
# 项目预算数据统计功能开发记录
|
|
|
|
**开发日期**: 2025-01-27
|
|
**开发人员**: Cursor AI
|
|
**需求来源**: 用户需求 - 项目预算数据统计功能
|
|
**状态**: ✅ 已完成
|
|
|
|
## 📋 为奖学金管理模块添加英文文件夹名称
|
|
**时间**: 2025-01-27 14:50:00
|
|
**修改人**: AI Assistant
|
|
**任务描述**: 为奖学金管理模块产品需求设计文档中的各个功能模块添加英文文件夹名称
|
|
|
|
### 📋 修改内容
|
|
**修改文件**: `docs/需求文档/奖惩补贴需求/奖学金管理模块产品需求设计.md`
|
|
|
|
**具体修改**:
|
|
1. **奖项管理模块** → **奖项管理模块 (scholarship-type)**
|
|
2. **规则引擎模块** → **规则引擎模块 (scholarship-rule)**
|
|
3. **批次管理模块** → **批次管理模块 (scholarship-batch)**
|
|
4. **名额分配模块** → **名额分配模块 (scholarship-quota)**
|
|
5. **申请管理模块** → **申请管理模块 (scholarship-application)**
|
|
6. **审核管理模块** → **审核管理模块 (scholarship-review)**
|
|
7. **数据导出模块** → **数据导出模块 (scholarship-export)**
|
|
8. **统计报表模块** → **统计报表模块 (scholarship-statistics)**(系统架构图中)
|
|
|
|
### ✅ 修改目的
|
|
- 🎯 **开发指导**: 为后续代码开发提供明确的模块文件夹命名规范
|
|
- 📁 **文件组织**: 统一英文命名规范,便于项目结构管理
|
|
- 🔧 **技术实施**: 与Spring Boot项目结构保持一致
|
|
- 📚 **文档完善**: 增强需求文档的技术可操作性
|
|
|
|
### 📋 命名规范
|
|
- **前缀**: 统一使用 `scholarship-` 作为奖学金模块前缀
|
|
- **格式**: 采用 kebab-case 命名风格(小写字母+连字符)
|
|
- **语义**: 英文名称与中文功能模块一一对应
|
|
- **扩展**: 为后续模块扩展预留命名空间
|
|
|
|
---
|
|
|
|
## 📋 创建奖学金管理模块产品需求设计文档
|
|
**时间**: 2025-01-27 14:45:00
|
|
**修改人**: AI Assistant
|
|
**任务描述**: 根据用户原始需求,创建奖学金管理模块的完整产品需求设计文档
|
|
|
|
### 📋 需求分析内容
|
|
**用户原始需求拆解**:
|
|
1. 自动评定规则设置和执行
|
|
2. 奖种兼得关系维护功能
|
|
3. 评定批次管理功能
|
|
4. 二级学院名额分配和二次分配
|
|
5. 学生在线申请和条件校验
|
|
6. 学生处奖项设立功能
|
|
7. 二级学院直接指定学生功能
|
|
8. 申请审核和进度跟踪
|
|
9. 评定结果导出功能
|
|
|
|
### 📋 文档创建内容
|
|
**创建文件**: `docs/业务模块/奖惩补贴管理/奖学金管理模块产品需求设计.md`
|
|
|
|
**文档结构**:
|
|
1. 需求概述(业务背景、目标用户、核心价值)
|
|
2. 核心需求分析(需求拆解、业务流程分析)
|
|
3. 功能模块设计(7个核心模块设计)
|
|
4. 用户角色与权限(4类角色权限矩阵)
|
|
5. 技术实现方案(技术架构、核心技术点、数据库设计)
|
|
6. 业务流程设计(完整流程图、关键业务规则)
|
|
7. 系统集成方案(学生信息系统集成)
|
|
8. 测试方案(功能、性能、安全测试)
|
|
9. 实施计划(8.5周开发计划)
|
|
10. 风险评估与应对(技术、业务、项目风险)
|
|
|
|
### ✅ 特殊处理
|
|
- ❌ **已移除财务系统对接相关内容**(按用户要求)
|
|
- ✅ 保留数据导出功能替代财务对接
|
|
- ✅ 完整的需求分析和功能设计
|
|
- ✅ 详细的技术实现方案和数据库设计
|
|
|
|
### 📋 文档特点
|
|
- 📊 **完整性**: 涵盖需求分析到实施的全流程
|
|
- 🎯 **针对性**: 基于用户原始需求精准设计
|
|
- 🔧 **可实施性**: 提供具体的技术方案和开发计划
|
|
- 📈 **可扩展性**: 预留后续功能扩展空间
|
|
|
|
---
|
|
|
|
## 📋 需求描述
|
|
|
|
开发项目预算数据统计功能,该模块需要具备以下功能:
|
|
|
|
1. **项目清单查看**: 查看所有申请项目的清单
|
|
2. **状态筛选查询**: 根据不同审批状态进行查询和统计
|
|
3. **年度预算汇总**: 根据预算年度进行各部门的预算汇总统计
|
|
4. **多维度统计**: 提供状态统计、部门汇总、年度汇总等多种统计视图
|
|
|
|
## 🔧 技术实现
|
|
|
|
### 后端开发
|
|
|
|
#### 1. 控制器新增接口 `CwProjectApplicationController.java`
|
|
- ✅ `GET /cw/application/statistics/list` - 获取项目清单
|
|
- ✅ `GET /cw/application/statistics/status` - 获取状态统计
|
|
- ✅ `GET /cw/application/statistics/department` - 获取部门预算汇总
|
|
- ✅ `GET /cw/application/statistics/yearly` - 获取年度汇总统计
|
|
|
|
#### 2. 服务接口扩展 `ICwProjectApplicationService.java`
|
|
- ✅ `getStatusStatistics(String budgetYear)` - 状态统计方法
|
|
- ✅ `getDepartmentStatistics(String budgetYear)` - 部门统计方法
|
|
- ✅ `getYearlyStatistics()` - 年度统计方法
|
|
|
|
#### 3. 服务实现 `CwProjectApplicationServiceImpl.java`
|
|
- ✅ **状态统计**: 按审批状态统计项目数量、预算金额
|
|
- ✅ **部门统计**: 按部门分组统计项目数量、预算金额、通过率
|
|
- ✅ **年度统计**: 按预算年度统计项目分布情况
|
|
|
|
### 前端开发
|
|
|
|
#### 1. API接口 `web/src/api/cw/statistics.ts`
|
|
- ✅ `getStatisticsList()` - 项目清单查询
|
|
- ✅ `getStatusStatistics()` - 状态统计查询
|
|
- ✅ `getDepartmentStatistics()` - 部门统计查询
|
|
- ✅ `getYearlyStatistics()` - 年度统计查询
|
|
|
|
#### 2. 统计页面 `web/src/views/cw/statistics/index.vue`
|
|
- ✅ **筛选条件**: 预算年度选择
|
|
- ✅ **统计概览**: 4个关键指标卡片展示
|
|
- ✅ **Tab切换**: 状态统计、部门汇总、年度汇总、项目清单
|
|
- ✅ **数据表格**: 各维度统计数据表格展示
|
|
|
|
#### 3. 菜单配置 `script/sql/cw-statistics-menu.sql`
|
|
- ✅ **主菜单**: 项目预算统计 (menu_id: 7100)
|
|
- ✅ **查询权限**: cw:statistics:list (menu_id: 7101)
|
|
- ✅ **导出权限**: cw:statistics:export (menu_id: 7102)
|
|
- ✅ **角色分配**: 财务管理员、系统管理员
|
|
|
|
## 📊 功能特性
|
|
|
|
### 1. 统计概览
|
|
- **项目总数**: 显示当前筛选条件下的项目总数
|
|
- **预算总额**: 显示总投资金额(万元)
|
|
- **已通过项目**: 显示审批通过的项目数量
|
|
- **涉及部门**: 显示参与项目申报的部门数量
|
|
|
|
### 2. 状态统计
|
|
- **状态详情**: 表格显示各状态的数量和占比
|
|
- **支持状态**: 草稿、已提交、审批中、已通过、已拒绝、已退回、已取消
|
|
|
|
### 3. 部门汇总
|
|
- **部门维度**: 按部门统计项目申报情况
|
|
- **统计指标**: 项目数量、预算总额、已通过数量、已通过金额、通过率
|
|
- **排序规则**: 按预算总额降序排列
|
|
|
|
### 4. 年度汇总
|
|
- **年度维度**: 按预算年度统计项目分布
|
|
- **统计指标**: 项目数量、预算总额、已通过数量、已通过金额、通过率
|
|
- **排序规则**: 按年度降序排列
|
|
|
|
### 5. 项目清单
|
|
- **完整清单**: 显示所有项目的详细信息
|
|
- **关键字段**: 申报编号、项目名称、申报部门、申报人、预算年度、总投资、审批状态、提交时间
|
|
|
|
## 🔐 权限配置
|
|
|
|
### 权限标识
|
|
- `cw:statistics:list` - 项目预算统计查询权限
|
|
- `cw:statistics:export` - 项目预算统计导出权限
|
|
|
|
### 角色分配
|
|
- **财务管理员 (cw_admin)**: 拥有完整的统计查询和导出权限
|
|
- **系统管理员 (admin)**: 拥有完整的统计查询和导出权限
|
|
|
|
## 📁 文件变更清单
|
|
|
|
### 后端文件
|
|
1. `backend/ruoyi-modules/ruoyi-cw/src/main/java/org/dromara/cw/controller/CwProjectApplicationController.java` - 新增统计接口
|
|
2. `backend/ruoyi-modules/ruoyi-cw/src/main/java/org/dromara/cw/service/ICwProjectApplicationService.java` - 新增服务接口
|
|
3. `backend/ruoyi-modules/ruoyi-cw/src/main/java/org/dromara/cw/service/impl/CwProjectApplicationServiceImpl.java` - 实现统计方法
|
|
|
|
### 前端文件
|
|
1. `web/src/api/cw/statistics.ts` - 新增API接口文件
|
|
2. `web/src/views/cw/statistics/index.vue` - 新增统计页面
|
|
|
|
### 配置文件
|
|
1. `script/sql/cw-statistics-menu.sql` - 菜单配置脚本
|
|
|
|
## 🔄 部署说明
|
|
|
|
### 部署步骤
|
|
1. **后端编译**: 重新编译后端服务
|
|
2. **服务重启**: 重启后端服务使新接口生效
|
|
3. **菜单配置**: 执行菜单配置脚本(已完成)
|
|
4. **权限分配**: 确认相关角色权限配置正确
|
|
5. **功能测试**: 验证统计功能正常工作
|
|
|
|
### 注意事项
|
|
- 首次访问页面可能需要重新登录以刷新权限
|
|
- 统计数据基于现有项目申报数据
|
|
|
|
---
|
|
|
|
**开发完成时间**: 2025-01-27 17:30:00
|
|
**功能状态**: ✅ 开发完成,可进行测试部署
|
|
|
|
## 🔧 修复统计页面项目详情缺少绩效指标问题
|
|
**时间**: 2025-01-27 14:30:00
|
|
**修改人**: AI Assistant
|
|
**问题描述**: 预算申报统计模块中项目清单的详情展示缺少绩效指标设置内容
|
|
|
|
### 🚨 问题根源
|
|
- **正常申报页面**: 使用 `/cw/application/{id}` 接口,会获取绩效指标数据
|
|
- **统计页面**: 使用 `/cw/application/statistics/list` 接口,缺少绩效指标数据获取步骤
|
|
|
|
### 🔧 修改内容
|
|
**修改文件**: `backend/ruoyi-modules/ruoyi-cw/src/main/java/org/dromara/cw/service/impl/CwProjectApplicationServiceImpl.java`
|
|
**修改方法**: `queryStatisticsPageList`(第84-102行)
|
|
|
|
**修改说明**:
|
|
1. 在查询结果返回前,为每个项目补充绩效指标数据
|
|
2. 添加异常处理,避免绩效指标获取失败影响整体查询
|
|
3. 增强日志输出,显示绩效指标数量信息
|
|
4. 参考 `queryById` 方法的处理方式,保持数据结构一致
|
|
|
|
### ✅ 修改效果
|
|
- ✅ 统计页面项目清单详情现在包含完整的绩效指标设置内容
|
|
- ✅ ApplicationSummary组件中的绩效指标卡片正常显示
|
|
- ✅ 保持前端代码不变,向下兼容
|
|
- ✅ 统一了正常页面和统计页面的数据结构
|
|
|
|
### 📋 需要操作
|
|
**⚠️ 需要重新编译后端服务才能生效**
|
|
|
|
--- |