wuzhen updat
This commit is contained in:
1 parent
3e4642c624
commit
e4e4679da9
173 files changed
+37924
-325
No files matched your search
@@ -0,0 +1,270 @@
|
||||
# 毕业生信息管理数据库设计
|
||||
|
||||
## 📋 文档信息
|
||||
|
||||
| 项目信息 | 详情 |
|
||||
|---------|------|
|
||||
| **模块名称** | 毕业生信息管理 |
|
||||
| **所属系统** | 招生就业管理系统 |
|
||||
| **设计日期** | 2025-01-26 |
|
||||
| **文档版本** | V1.0 |
|
||||
| **设计人员** | ruoyi |
|
||||
|
||||
## 🎯 设计概述
|
||||
|
||||
### 设计目标
|
||||
建立完整的毕业生信息管理数据库,支持毕业生基本信息、学籍信息、就业信息、联系信息的存储和管理,并提供完善的数据统计分析功能。
|
||||
|
||||
### 设计原则
|
||||
1. **数据完整性**: 确保毕业生信息的完整性和准确性
|
||||
2. **数据唯一性**: 学号和身份证号作为唯一标识
|
||||
3. **扩展性**: 支持后续功能扩展和字段增加
|
||||
4. **性能优化**: 合理设计索引提升查询性能
|
||||
5. **规范化**: 遵循项目数据库设计规范
|
||||
|
||||
## 📊 数据表设计
|
||||
|
||||
### 1. 毕业生信息表 (zsjy_graduate_info)
|
||||
|
||||
#### 表结构
|
||||
|
||||
```sql
|
||||
CREATE TABLE `zsjy_graduate_info`
|
||||
(
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`student_no` varchar(50) NOT NULL COMMENT '学号',
|
||||
`name` varchar(30) NOT NULL COMMENT '姓名',
|
||||
`gender` char(1) NOT NULL DEFAULT '0' COMMENT '性别 (0男 1女)',
|
||||
`id_card` varchar(18) NOT NULL COMMENT '身份证号',
|
||||
`nation` varchar(50) DEFAULT NULL COMMENT '民族',
|
||||
`political_status` varchar(50) DEFAULT NULL COMMENT '政治面貌',
|
||||
`birth_date` date DEFAULT NULL COMMENT '出生日期',
|
||||
`enrollment_year` int(4) NOT NULL COMMENT '入学年份',
|
||||
`graduation_year` int(4) NOT NULL COMMENT '毕业年份',
|
||||
`college_id` bigint(20) DEFAULT NULL COMMENT '学院ID',
|
||||
`college_name` varchar(100) DEFAULT NULL COMMENT '学院名称',
|
||||
`major_id` bigint(20) DEFAULT NULL COMMENT '专业ID',
|
||||
`major_name` varchar(100) DEFAULT NULL COMMENT '专业名称',
|
||||
`class_id` bigint(20) DEFAULT NULL COMMENT '班级ID',
|
||||
`class_name` varchar(100) DEFAULT NULL COMMENT '班级名称',
|
||||
`education_level` char(1) NOT NULL DEFAULT '2' COMMENT '学历层次 (1专科 2本科 3硕士 4博士)',
|
||||
`training_mode` varchar(50) DEFAULT NULL COMMENT '培养方式',
|
||||
`phone_number` varchar(11) NOT NULL COMMENT '手机号码',
|
||||
`email` varchar(100) DEFAULT NULL COMMENT '邮箱地址',
|
||||
`qq_number` varchar(20) DEFAULT NULL COMMENT 'QQ号码',
|
||||
`wechat_number` varchar(50) DEFAULT NULL COMMENT '微信号码',
|
||||
`province` varchar(50) DEFAULT NULL COMMENT '省份',
|
||||
`city` varchar(50) DEFAULT NULL COMMENT '城市',
|
||||
`district` varchar(50) DEFAULT NULL COMMENT '区县',
|
||||
`detail_address` varchar(255) DEFAULT NULL COMMENT '详细地址',
|
||||
`postal_code` varchar(6) DEFAULT NULL COMMENT '邮政编码',
|
||||
`employment_status` char(1) NOT NULL DEFAULT '7' COMMENT '就业状态 (1已就业-劳动合同 2已就业-就业协议 3自主创业 4升学-国内 5升学-国外 6应征入伍 7待就业 8暂不就业)',
|
||||
`employment_company` varchar(200) DEFAULT NULL COMMENT '就业单位名称',
|
||||
`company_type` char(1) DEFAULT NULL COMMENT '单位性质 (1国有企业 2私营企业 3外资企业 4机关事业单位 5其他)',
|
||||
`job_position` varchar(100) DEFAULT NULL COMMENT '工作职位',
|
||||
`work_province` varchar(50) DEFAULT NULL COMMENT '工作省份',
|
||||
`work_city` varchar(50) DEFAULT NULL COMMENT '工作城市',
|
||||
`salary_range` char(1) DEFAULT NULL COMMENT '月薪范围 (1-3000以下 2-3000-5000 3-5000-8000 4-8000-12000 5-12000以上)',
|
||||
`further_school` varchar(200) DEFAULT NULL COMMENT '升学院校',
|
||||
`further_major` varchar(100) DEFAULT NULL COMMENT '升学专业',
|
||||
`skills` text DEFAULT NULL COMMENT '特长技能',
|
||||
`awards` text DEFAULT NULL COMMENT '获奖情况',
|
||||
`job_intention` text DEFAULT NULL COMMENT '工作意向',
|
||||
`audit_status` char(1) NOT NULL DEFAULT '0' COMMENT '审核状态 (0待审核 1已审核 2审核拒绝)',
|
||||
`audit_time` datetime DEFAULT NULL COMMENT '审核时间',
|
||||
`audit_by` bigint(20) DEFAULT NULL COMMENT '审核人',
|
||||
`audit_remark` varchar(500) DEFAULT NULL COMMENT '审核意见',
|
||||
`status` char(1) NOT NULL DEFAULT '0' COMMENT '状态 (0正常 1停用)',
|
||||
`remark` varchar(500) DEFAULT NULL COMMENT '备注',
|
||||
`tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户ID',
|
||||
`create_by` bigint(20) DEFAULT NULL COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
|
||||
`update_by` bigint(20) DEFAULT NULL COMMENT '更新者',
|
||||
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
|
||||
`deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '逻辑删除',
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_student_no` (`student_no`) COMMENT '学号唯一',
|
||||
UNIQUE KEY `uk_id_card` (`id_card`) COMMENT '身份证号唯一',
|
||||
KEY `idx_name` (`name`) COMMENT '姓名索引',
|
||||
KEY `idx_college_major` (`college_id`, `major_id`) COMMENT '学院专业索引',
|
||||
KEY `idx_graduation_year` (`graduation_year`) COMMENT '毕业年份索引',
|
||||
KEY `idx_employment_status` (`employment_status`) COMMENT '就业状态索引',
|
||||
KEY `idx_audit_status` (`audit_status`) COMMENT '审核状态索引'
|
||||
) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COMMENT = '毕业生信息表';
|
||||
```
|
||||
|
||||
#### 字段说明
|
||||
|
||||
| 字段名 | 类型 | 长度 | 是否必填 | 默认值 | 说明 |
|
||||
|--------|------|------|----------|--------|------|
|
||||
| id | bigint | 20 | 是 | - | 主键ID,雪花ID |
|
||||
| student_no | varchar | 50 | 是 | - | 学号,唯一标识 |
|
||||
| name | varchar | 30 | 是 | - | 姓名 |
|
||||
| gender | char | 1 | 是 | 0 | 性别:0男,1女 |
|
||||
| id_card | varchar | 18 | 是 | - | 身份证号,唯一标识 |
|
||||
| nation | varchar | 50 | 否 | - | 民族 |
|
||||
| political_status | varchar | 50 | 否 | - | 政治面貌 |
|
||||
| birth_date | date | - | 否 | - | 出生日期 |
|
||||
| enrollment_year | int | 4 | 是 | - | 入学年份 |
|
||||
| graduation_year | int | 4 | 是 | - | 毕业年份 |
|
||||
| college_id | bigint | 20 | 否 | - | 学院ID |
|
||||
| college_name | varchar | 100 | 否 | - | 学院名称 |
|
||||
| major_id | bigint | 20 | 否 | - | 专业ID |
|
||||
| major_name | varchar | 100 | 否 | - | 专业名称 |
|
||||
| class_id | bigint | 20 | 否 | - | 班级ID |
|
||||
| class_name | varchar | 100 | 否 | - | 班级名称 |
|
||||
| education_level | char | 1 | 是 | 2 | 学历层次:1专科,2本科,3硕士,4博士 |
|
||||
| training_mode | varchar | 50 | 否 | - | 培养方式 |
|
||||
| phone_number | varchar | 11 | 是 | - | 手机号码 |
|
||||
| email | varchar | 100 | 否 | - | 邮箱地址 |
|
||||
| qq_number | varchar | 20 | 否 | - | QQ号码 |
|
||||
| wechat_number | varchar | 50 | 否 | - | 微信号码 |
|
||||
| province | varchar | 50 | 否 | - | 省份 |
|
||||
| city | varchar | 50 | 否 | - | 城市 |
|
||||
| district | varchar | 50 | 否 | - | 区县 |
|
||||
| detail_address | varchar | 255 | 否 | - | 详细地址 |
|
||||
| postal_code | varchar | 6 | 否 | - | 邮政编码 |
|
||||
| employment_status | char | 1 | 是 | 7 | 就业状态:1-8对应不同状态 |
|
||||
| employment_company | varchar | 200 | 否 | - | 就业单位名称 |
|
||||
| company_type | char | 1 | 否 | - | 单位性质:1-5对应不同性质 |
|
||||
| job_position | varchar | 100 | 否 | - | 工作职位 |
|
||||
| work_province | varchar | 50 | 否 | - | 工作省份 |
|
||||
| work_city | varchar | 50 | 否 | - | 工作城市 |
|
||||
| salary_range | char | 1 | 否 | - | 月薪范围:1-5对应不同档位 |
|
||||
| further_school | varchar | 200 | 否 | - | 升学院校 |
|
||||
| further_major | varchar | 100 | 否 | - | 升学专业 |
|
||||
| skills | text | - | 否 | - | 特长技能 |
|
||||
| awards | text | - | 否 | - | 获奖情况 |
|
||||
| job_intention | text | - | 否 | - | 工作意向 |
|
||||
| audit_status | char | 1 | 是 | 0 | 审核状态:0待审核,1已审核,2审核拒绝 |
|
||||
| audit_time | datetime | - | 否 | - | 审核时间 |
|
||||
| audit_by | bigint | 20 | 否 | - | 审核人 |
|
||||
| audit_remark | varchar | 500 | 否 | - | 审核意见 |
|
||||
| status | char | 1 | 是 | 0 | 状态:0正常,1停用 |
|
||||
| remark | varchar | 500 | 否 | - | 备注 |
|
||||
|
||||
#### 索引设计
|
||||
|
||||
| 索引名 | 类型 | 字段 | 说明 |
|
||||
|--------|------|------|------|
|
||||
| PRIMARY | 主键 | id | 主键索引 |
|
||||
| uk_student_no | 唯一 | student_no | 学号唯一索引 |
|
||||
| uk_id_card | 唯一 | id_card | 身份证号唯一索引 |
|
||||
| idx_name | 普通 | name | 姓名索引,支持姓名查询 |
|
||||
| idx_college_major | 复合 | college_id, major_id | 学院专业索引,支持按学院专业统计 |
|
||||
| idx_graduation_year | 普通 | graduation_year | 毕业年份索引,支持按年份统计 |
|
||||
| idx_employment_status | 普通 | employment_status | 就业状态索引,支持就业状态统计 |
|
||||
| idx_audit_status | 普通 | audit_status | 审核状态索引,支持审核管理 |
|
||||
|
||||
## 📚 字典数据设计
|
||||
|
||||
### 1. 性别字典 (sys_user_sex)
|
||||
- 0: 男
|
||||
- 1: 女
|
||||
|
||||
### 2. 学历层次字典 (zsjy_education_level)
|
||||
- 1: 专科
|
||||
- 2: 本科
|
||||
- 3: 硕士
|
||||
- 4: 博士
|
||||
|
||||
### 3. 就业状态字典 (zsjy_employment_status)
|
||||
- 1: 已就业(劳动合同)
|
||||
- 2: 已就业(就业协议)
|
||||
- 3: 自主创业
|
||||
- 4: 升学(国内)
|
||||
- 5: 升学(国外)
|
||||
- 6: 应征入伍
|
||||
- 7: 待就业
|
||||
- 8: 暂不就业
|
||||
|
||||
### 4. 单位性质字典 (zsjy_company_type)
|
||||
- 1: 国有企业
|
||||
- 2: 私营企业
|
||||
- 3: 外资企业
|
||||
- 4: 机关事业单位
|
||||
- 5: 其他
|
||||
|
||||
### 5. 月薪范围字典 (zsjy_salary_range)
|
||||
- 1: 3000以下
|
||||
- 2: 3000-5000
|
||||
- 3: 5000-8000
|
||||
- 4: 8000-12000
|
||||
- 5: 12000以上
|
||||
|
||||
### 6. 审核状态字典 (zsjy_audit_status)
|
||||
- 0: 待审核
|
||||
- 1: 已审核
|
||||
- 2: 审核拒绝
|
||||
|
||||
## 🔗 表关系设计
|
||||
|
||||
### 数据关系说明
|
||||
1. **学院 → 专业 → 班级 → 毕业生**: 层级关系,支持按层级统计
|
||||
2. **字典表关联**: 通过字典值关联,显示名称
|
||||
3. **用户关联**: 创建者、更新者、审核人关联用户表
|
||||
|
||||
### 业务约束
|
||||
1. **唯一性约束**: 学号和身份证号必须唯一
|
||||
2. **数据完整性**: 基本信息字段必填
|
||||
3. **逻辑校验**: 入学年份不能大于毕业年份
|
||||
4. **状态约束**: 就业状态决定相关字段是否必填
|
||||
|
||||
## 📊 统计查询设计
|
||||
|
||||
### 1. 基础统计查询
|
||||
- 总体统计:毕业生总数、就业人数、就业率
|
||||
- 按年份统计:历年毕业生数量和就业情况
|
||||
- 按学院统计:各学院毕业生分布
|
||||
- 按专业统计:各专业毕业生分布
|
||||
|
||||
### 2. 就业统计查询
|
||||
- 就业状态分布:各种就业状态的人数
|
||||
- 单位性质分布:就业单位性质统计
|
||||
- 地域分布:就业地区分布统计
|
||||
- 薪资分布:月薪范围分布统计
|
||||
|
||||
### 3. 升学统计查询
|
||||
- 升学率统计:升学人数和比例
|
||||
- 升学院校统计:升学院校分布
|
||||
- 升学专业统计:升学专业分布
|
||||
|
||||
## 🚀 性能优化
|
||||
|
||||
### 1. 索引优化
|
||||
- 主要查询字段建立索引
|
||||
- 复合索引支持多字段查询
|
||||
- 唯一索引确保数据唯一性
|
||||
|
||||
### 2. 查询优化
|
||||
- 分页查询减少数据传输
|
||||
- 统计查询使用聚合函数
|
||||
- 避免全表扫描
|
||||
|
||||
### 3. 存储优化
|
||||
- 合理选择字段类型和长度
|
||||
- 文本字段使用TEXT类型
|
||||
- 枚举值使用CHAR(1)类型
|
||||
|
||||
## 📝 维护说明
|
||||
|
||||
### 1. 数据维护
|
||||
- 定期清理测试数据
|
||||
- 备份重要统计数据
|
||||
- 监控表增长情况
|
||||
|
||||
### 2. 索引维护
|
||||
- 定期分析索引使用情况
|
||||
- 根据查询模式调整索引
|
||||
- 删除无用索引
|
||||
|
||||
### 3. 扩展性
|
||||
- 预留扩展字段空间
|
||||
- 支持新增字典类型
|
||||
- 考虑历史数据迁移
|
||||
|
||||
---
|
||||
|
||||
**文档创建时间**: 2025-01-26
|
||||
**文档版本**: V1.0
|
||||
**下次更新**: 根据开发进展和需求变更及时更新
|
||||
@@ -0,0 +1,670 @@
|
||||
# 财务项目预算审批系统数据模型设计
|
||||
|
||||
**文档版本**: 1.0
|
||||
**创建时间**: 2025-01-26
|
||||
**创建人员**: 数据库设计师
|
||||
**项目模块**: 财务管理 - 项目预算审批
|
||||
**设计基于**: 项目预算审批产品需求分析书.md
|
||||
**表名前缀**: cw_ (财务模块)
|
||||
|
||||
---
|
||||
|
||||
## 📋 目录
|
||||
|
||||
- [1. 设计概述](#1-设计概述)
|
||||
- [2. 核心数据表设计](#2-核心数据表设计)
|
||||
- [3. 字典数据设计](#3-字典数据设计)
|
||||
- [4. 数据关系图](#4-数据关系图)
|
||||
- [5. 索引设计](#5-索引设计)
|
||||
- [6. 数据库初始化脚本](#6-数据库初始化脚本)
|
||||
|
||||
---
|
||||
|
||||
## 1. 设计概述
|
||||
|
||||
### 1.1 设计原则
|
||||
|
||||
#### **🎯 简化优先**
|
||||
- 基于简化后的产品需求,去掉复杂的工作流引擎
|
||||
- 采用固定3节点审批流程设计
|
||||
- 重点支持审批人的灵活配置和变更
|
||||
|
||||
#### **📊 数据完整性**
|
||||
- 支持完整的预算申报表单(基于用户详细申请表内容)
|
||||
- 包含4维度资金来源和8维度绩效指标
|
||||
- 完整的审批记录和状态跟踪
|
||||
|
||||
#### **🔧 扩展性考虑**
|
||||
- 预留后续功能扩展空间
|
||||
- 采用标准的雪花ID和软删除设计
|
||||
- 支持多租户架构
|
||||
|
||||
### 1.2 核心表概览
|
||||
|
||||
| 序号 | 表名 | 中文名称 | 主要功能 | 优先级 |
|
||||
|------|------|----------|----------|--------|
|
||||
| 1 | `cw_project_application` | 项目预算申报表 | 核心申报数据 | P0 |
|
||||
| 2 | `cw_approver_config` | 审批人配置表 | 审批人灵活配置 | P0 |
|
||||
| 3 | `cw_approval_record` | 审批记录表 | 审批流程记录 | P0 |
|
||||
| 4 | `cw_expenditure_detail` | 项目支出明细表 | 支出明细和测算 | P1 |
|
||||
| 5 | `cw_performance_indicator` | 绩效指标表 | 8维度绩效指标 | P1 |
|
||||
| 6 | `cw_application_attachment` | 申报附件表 | 支撑材料管理 | P1 |
|
||||
|
||||
---
|
||||
|
||||
## 2. 核心数据表设计
|
||||
|
||||
### 2.1 项目预算申报表
|
||||
|
||||
```sql
|
||||
-- 项目预算申报表(基于详细申请表填报内容设计)
|
||||
CREATE TABLE `cw_project_application` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID(雪花ID)',
|
||||
`application_no` varchar(50) NOT NULL COMMENT '申报编号(自动生成,格式:CW-YYYY-MMDD-XXXX)',
|
||||
|
||||
-- =================== 项目基本信息 ===================
|
||||
`project_name` varchar(200) NOT NULL COMMENT '项目名称',
|
||||
`principal` varchar(50) NOT NULL COMMENT '项目负责人',
|
||||
`contact_phone` varchar(20) COMMENT '联系电话',
|
||||
`start_date` date COMMENT '项目实施开始时间',
|
||||
`end_date` date COMMENT '项目实施结束时间',
|
||||
|
||||
-- =================== 项目特性 ===================
|
||||
`target_sme` tinyint(1) DEFAULT 0 COMMENT '是否面向中小企业(0-否 1-是)',
|
||||
`target_micro_sme` tinyint(1) DEFAULT 0 COMMENT '是否面向小微企业(0-否 1-是)',
|
||||
`import_equipment` tinyint(1) DEFAULT 0 COMMENT '是否采购进口设备(0-否 1-是)',
|
||||
|
||||
-- =================== 项目详细内容 ===================
|
||||
`application_reason` text COMMENT '项目申请原因(包括设立依据、可行性及必要性)',
|
||||
`construction_content` text COMMENT '项目建设内容',
|
||||
`total_performance_goal` text COMMENT '绩效总目标',
|
||||
`current_year_goal` text COMMENT '当年绩效目标',
|
||||
|
||||
-- =================== 资金来源汇总(万元)===================
|
||||
-- 项目总投资
|
||||
`total_investment` decimal(15,2) DEFAULT 0.00 COMMENT '项目总投资-合计(万元)',
|
||||
`total_municipal_fiscal` decimal(15,2) DEFAULT 0.00 COMMENT '项目总投资-市财政资金(万元)',
|
||||
`total_self_funding` decimal(15,2) DEFAULT 0.00 COMMENT '项目总投资-单位自筹(万元)',
|
||||
`total_other_funding` decimal(15,2) DEFAULT 0.00 COMMENT '项目总投资-其他(万元)',
|
||||
|
||||
-- 年度预计执行数
|
||||
`current_year_total` decimal(15,2) DEFAULT 0.00 COMMENT '年度预计执行数-合计(万元)',
|
||||
`current_year_municipal` decimal(15,2) DEFAULT 0.00 COMMENT '年度预计执行数-市财政资金(万元)',
|
||||
`current_year_self` decimal(15,2) DEFAULT 0.00 COMMENT '年度预计执行数-单位自筹(万元)',
|
||||
`current_year_other` decimal(15,2) DEFAULT 0.00 COMMENT '年度预计执行数-其他(万元)',
|
||||
|
||||
-- 下年度申请资金
|
||||
`next_year_total` decimal(15,2) DEFAULT 0.00 COMMENT '下年度申请资金-合计(万元)',
|
||||
`next_year_municipal` decimal(15,2) DEFAULT 0.00 COMMENT '下年度申请资金-市财政资金(万元)',
|
||||
`next_year_self` decimal(15,2) DEFAULT 0.00 COMMENT '下年度申请资金-单位自筹(万元)',
|
||||
`next_year_other` decimal(15,2) DEFAULT 0.00 COMMENT '下年度申请资金-其他(万元)',
|
||||
|
||||
-- 以后年度安排
|
||||
`future_year_total` decimal(15,2) DEFAULT 0.00 COMMENT '以后年度安排-合计(万元)',
|
||||
`future_year_municipal` decimal(15,2) DEFAULT 0.00 COMMENT '以后年度安排-市财政资金(万元)',
|
||||
`future_year_self` decimal(15,2) DEFAULT 0.00 COMMENT '以后年度安排-单位自筹(万元)',
|
||||
`future_year_other` decimal(15,2) DEFAULT 0.00 COMMENT '以后年度安排-其他(万元)',
|
||||
|
||||
-- =================== 申请人信息 ===================
|
||||
`applicant_id` bigint(20) NOT NULL COMMENT '申请人ID',
|
||||
`applicant_name` varchar(50) NOT NULL COMMENT '申请人姓名',
|
||||
`department_id` bigint(20) NOT NULL COMMENT '所属部门ID',
|
||||
`department_name` varchar(100) NOT NULL COMMENT '所属部门名称',
|
||||
|
||||
-- =================== 审批相关 ===================
|
||||
`approval_status` varchar(20) DEFAULT 'draft' COMMENT '审批状态(draft-草稿 submitted-已提交 approving-审批中 approved-已通过 rejected-已拒绝 returned-已退回 cancelled-已取消)',
|
||||
`submit_time` datetime COMMENT '提交时间',
|
||||
`approve_time` datetime COMMENT '审批完成时间',
|
||||
`year` int(11) NOT NULL COMMENT '预算年度',
|
||||
|
||||
-- =================== 系统字段 ===================
|
||||
`remark` varchar(500) COMMENT '备注',
|
||||
`create_by` bigint(20) COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`update_by` bigint(20) COMMENT '更新者',
|
||||
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
`create_dept` bigint(20) COMMENT '创建部门',
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0-正常 1-删除)',
|
||||
`tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户ID',
|
||||
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uk_application_no` (`application_no`, `tenant_id`, `deleted`),
|
||||
KEY `idx_applicant_id` (`applicant_id`),
|
||||
KEY `idx_department_id` (`department_id`),
|
||||
KEY `idx_status_year` (`approval_status`, `year`),
|
||||
KEY `idx_create_time` (`create_time`),
|
||||
KEY `idx_submit_time` (`submit_time`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='项目预算申报表';
|
||||
```
|
||||
|
||||
### 2.2 审批人配置表(核心表)
|
||||
|
||||
```sql
|
||||
-- 审批人配置表(支持3种配置方式:全局、按部门、按金额)
|
||||
CREATE TABLE `cw_approver_config` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`config_name` varchar(100) NOT NULL COMMENT '配置名称',
|
||||
`config_type` varchar(20) NOT NULL COMMENT '配置类型(global-全局配置 dept-按部门配置 amount-按金额配置)',
|
||||
|
||||
-- =================== 配置条件 ===================
|
||||
`dept_id` bigint(20) COMMENT '部门ID(按部门配置时使用)',
|
||||
`dept_name` varchar(100) COMMENT '部门名称(按部门配置时使用)',
|
||||
`min_amount` decimal(15,2) COMMENT '最小金额(按金额配置时使用,万元)',
|
||||
`max_amount` decimal(15,2) COMMENT '最大金额(按金额配置时使用,万元)',
|
||||
|
||||
-- =================== 3个固定审批节点的审批人 ===================
|
||||
-- 部门审批(第1节点)
|
||||
`dept_approver_id` bigint(20) COMMENT '部门审批人ID',
|
||||
`dept_approver_name` varchar(50) COMMENT '部门审批人姓名',
|
||||
`dept_delegate_id` bigint(20) COMMENT '部门代理审批人ID',
|
||||
`dept_delegate_name` varchar(50) COMMENT '部门代理审批人姓名',
|
||||
`dept_delegate_start_time` datetime COMMENT '部门代理开始时间',
|
||||
`dept_delegate_end_time` datetime COMMENT '部门代理结束时间',
|
||||
|
||||
-- 财务审批(第2节点)
|
||||
`finance_approver_id` bigint(20) COMMENT '财务审批人ID',
|
||||
`finance_approver_name` varchar(50) COMMENT '财务审批人姓名',
|
||||
`finance_delegate_id` bigint(20) COMMENT '财务代理审批人ID',
|
||||
`finance_delegate_name` varchar(50) COMMENT '财务代理审批人姓名',
|
||||
`finance_delegate_start_time` datetime COMMENT '财务代理开始时间',
|
||||
`finance_delegate_end_time` datetime COMMENT '财务代理结束时间',
|
||||
|
||||
-- 领导审批(第3节点)
|
||||
`leader_approver_id` bigint(20) COMMENT '领导审批人ID',
|
||||
`leader_approver_name` varchar(50) COMMENT '领导审批人姓名',
|
||||
`leader_delegate_id` bigint(20) COMMENT '领导代理审批人ID',
|
||||
`leader_delegate_name` varchar(50) COMMENT '领导代理审批人姓名',
|
||||
`leader_delegate_start_time` datetime COMMENT '领导代理开始时间',
|
||||
`leader_delegate_end_time` datetime COMMENT '领导代理结束时间',
|
||||
|
||||
-- =================== 配置状态 ===================
|
||||
`priority` int(11) DEFAULT 0 COMMENT '优先级(数字越大优先级越高,用于多个配置冲突时的选择)',
|
||||
`status` char(1) DEFAULT '1' COMMENT '状态(0-禁用 1-启用)',
|
||||
`effective_start_time` datetime COMMENT '生效开始时间',
|
||||
`effective_end_time` datetime COMMENT '生效结束时间',
|
||||
|
||||
-- =================== 系统字段 ===================
|
||||
`remark` varchar(500) COMMENT '备注',
|
||||
`create_by` bigint(20) COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`update_by` bigint(20) COMMENT '更新者',
|
||||
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
`create_dept` bigint(20) COMMENT '创建部门',
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0-正常 1-删除)',
|
||||
`tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户ID',
|
||||
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_config_type` (`config_type`),
|
||||
KEY `idx_dept_id` (`dept_id`),
|
||||
KEY `idx_amount_range` (`min_amount`, `max_amount`),
|
||||
KEY `idx_status_priority` (`status`, `priority`),
|
||||
KEY `idx_effective_time` (`effective_start_time`, `effective_end_time`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='审批人配置表';
|
||||
```
|
||||
|
||||
### 2.3 审批记录表
|
||||
|
||||
```sql
|
||||
-- 审批记录表(固定3节点流程记录)
|
||||
CREATE TABLE `cw_approval_record` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`application_id` bigint(20) NOT NULL COMMENT '申报ID',
|
||||
`application_no` varchar(50) NOT NULL COMMENT '申报编号',
|
||||
|
||||
-- =================== 节点信息 ===================
|
||||
`node_code` varchar(20) NOT NULL COMMENT '节点编码(dept_approve-部门审批 finance_approve-财务审批 leader_approve-领导审批)',
|
||||
`node_name` varchar(50) NOT NULL COMMENT '节点名称',
|
||||
`node_order` int(11) NOT NULL COMMENT '节点顺序(1-部门审批 2-财务审批 3-领导审批)',
|
||||
|
||||
-- =================== 审批人信息 ===================
|
||||
`approver_id` bigint(20) NOT NULL COMMENT '审批人ID',
|
||||
`approver_name` varchar(50) NOT NULL COMMENT '审批人姓名',
|
||||
`is_delegate` tinyint(1) DEFAULT 0 COMMENT '是否代理审批(0-否 1-是)',
|
||||
`original_approver_id` bigint(20) COMMENT '原审批人ID(代理时使用)',
|
||||
`original_approver_name` varchar(50) COMMENT '原审批人姓名(代理时使用)',
|
||||
|
||||
-- =================== 审批状态和结果 ===================
|
||||
`node_status` varchar(20) NOT NULL COMMENT '节点状态(waiting-等待审批 approving-审批中 approved-已通过 rejected-已拒绝 returned-已退回)',
|
||||
`approve_action` varchar(20) COMMENT '审批动作(approve-通过 reject-拒绝 return-退回)',
|
||||
`approve_opinion` text COMMENT '审批意见',
|
||||
|
||||
-- =================== 时间记录 ===================
|
||||
`start_time` datetime NOT NULL COMMENT '节点开始时间',
|
||||
`end_time` datetime COMMENT '节点结束时间',
|
||||
`expect_finish_time` datetime COMMENT '期望完成时间',
|
||||
`is_overtime` tinyint(1) DEFAULT 0 COMMENT '是否超时(0-否 1-是)',
|
||||
|
||||
-- =================== 审批配置记录 ===================
|
||||
`config_id` bigint(20) COMMENT '使用的审批配置ID',
|
||||
`config_snapshot` json COMMENT '审批配置快照(JSON格式,记录当时的配置)',
|
||||
|
||||
-- =================== 系统字段 ===================
|
||||
`create_by` bigint(20) COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`update_by` bigint(20) COMMENT '更新者',
|
||||
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
`create_dept` bigint(20) COMMENT '创建部门',
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0-正常 1-删除)',
|
||||
`tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户ID',
|
||||
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_application_id` (`application_id`),
|
||||
KEY `idx_application_no` (`application_no`),
|
||||
KEY `idx_approver_id` (`approver_id`),
|
||||
KEY `idx_node_status` (`node_status`),
|
||||
KEY `idx_node_order` (`node_order`),
|
||||
KEY `idx_start_time` (`start_time`),
|
||||
KEY `idx_expect_finish_time` (`expect_finish_time`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='审批记录表';
|
||||
```
|
||||
|
||||
### 2.4 项目支出明细表
|
||||
|
||||
```sql
|
||||
-- 项目支出明细表(预算资金测算)
|
||||
CREATE TABLE `cw_expenditure_detail` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`application_id` bigint(20) NOT NULL COMMENT '申报ID',
|
||||
`application_no` varchar(50) NOT NULL COMMENT '申报编号',
|
||||
|
||||
-- =================== 支出明细信息 ===================
|
||||
`category_code` varchar(50) COMMENT '支出科目编码(关联字典)',
|
||||
`category` varchar(100) NOT NULL COMMENT '支出科目名称',
|
||||
`amount` decimal(15,2) NOT NULL COMMENT '金额(万元)',
|
||||
`calculation` text COMMENT '测算依据',
|
||||
`description` varchar(500) COMMENT '详细说明',
|
||||
|
||||
-- =================== 时间分配 ===================
|
||||
`current_year_amount` decimal(15,2) DEFAULT 0.00 COMMENT '当年执行金额(万元)',
|
||||
`next_year_amount` decimal(15,2) DEFAULT 0.00 COMMENT '下年度金额(万元)',
|
||||
`future_year_amount` decimal(15,2) DEFAULT 0.00 COMMENT '以后年度金额(万元)',
|
||||
|
||||
-- =================== 资金来源分配 ===================
|
||||
`municipal_fiscal_amount` decimal(15,2) DEFAULT 0.00 COMMENT '市财政资金(万元)',
|
||||
`self_funding_amount` decimal(15,2) DEFAULT 0.00 COMMENT '单位自筹(万元)',
|
||||
`other_funding_amount` decimal(15,2) DEFAULT 0.00 COMMENT '其他资金(万元)',
|
||||
|
||||
-- =================== 排序和状态 ===================
|
||||
`sort_order` int(11) DEFAULT 0 COMMENT '排序',
|
||||
`status` char(1) DEFAULT '1' COMMENT '状态(0-删除 1-正常)',
|
||||
|
||||
-- =================== 系统字段 ===================
|
||||
`create_by` bigint(20) COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`update_by` bigint(20) COMMENT '更新者',
|
||||
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
`create_dept` bigint(20) COMMENT '创建部门',
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0-正常 1-删除)',
|
||||
`tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户ID',
|
||||
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_application_id` (`application_id`),
|
||||
KEY `idx_application_no` (`application_no`),
|
||||
KEY `idx_category_code` (`category_code`),
|
||||
KEY `idx_sort_order` (`sort_order`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='项目支出明细表';
|
||||
```
|
||||
|
||||
### 2.5 绩效指标表
|
||||
|
||||
```sql
|
||||
-- 绩效指标表(8大指标维度)
|
||||
CREATE TABLE `cw_performance_indicator` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`application_id` bigint(20) NOT NULL COMMENT '申报ID',
|
||||
`application_no` varchar(50) NOT NULL COMMENT '申报编号',
|
||||
|
||||
-- =================== 指标信息 ===================
|
||||
`indicator_type` varchar(20) NOT NULL COMMENT '指标类型(quantity-数量指标 quality-质量指标 timeliness-时效指标 cost-成本指标 economic-经济效益指标 social-社会效益指标 environmental-环境效益指标 satisfaction-满意度指标)',
|
||||
`indicator_type_name` varchar(50) NOT NULL COMMENT '指标类型名称',
|
||||
`goal_name` varchar(200) NOT NULL COMMENT '绩效目标名称',
|
||||
`target_value` varchar(100) NOT NULL COMMENT '目标值',
|
||||
`weight_percentage` decimal(5,2) NOT NULL COMMENT '分值占比(%)',
|
||||
`description` varchar(500) COMMENT '详细说明',
|
||||
|
||||
-- =================== 指标属性 ===================
|
||||
`unit` varchar(20) COMMENT '计量单位',
|
||||
`measurement_method` varchar(200) COMMENT '测量方法',
|
||||
`data_source` varchar(200) COMMENT '数据来源',
|
||||
`is_quantitative` tinyint(1) DEFAULT 1 COMMENT '是否定量指标(0-定性 1-定量)',
|
||||
|
||||
-- =================== 排序和状态 ===================
|
||||
`sort_order` int(11) DEFAULT 0 COMMENT '排序',
|
||||
`status` char(1) DEFAULT '1' COMMENT '状态(0-删除 1-正常)',
|
||||
|
||||
-- =================== 系统字段 ===================
|
||||
`create_by` bigint(20) COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`update_by` bigint(20) COMMENT '更新者',
|
||||
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
`create_dept` bigint(20) COMMENT '创建部门',
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0-正常 1-删除)',
|
||||
`tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户ID',
|
||||
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_application_id` (`application_id`),
|
||||
KEY `idx_application_no` (`application_no`),
|
||||
KEY `idx_indicator_type` (`indicator_type`),
|
||||
KEY `idx_sort_order` (`sort_order`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='绩效指标表';
|
||||
```
|
||||
|
||||
### 2.6 申报附件表
|
||||
|
||||
```sql
|
||||
-- 申报附件表(支撑材料管理)
|
||||
CREATE TABLE `cw_application_attachment` (
|
||||
`id` bigint(20) NOT NULL COMMENT '主键ID',
|
||||
`application_id` bigint(20) NOT NULL COMMENT '申报ID',
|
||||
`application_no` varchar(50) NOT NULL COMMENT '申报编号',
|
||||
|
||||
-- =================== 文件信息 ===================
|
||||
`file_name` varchar(255) NOT NULL COMMENT '文件名称',
|
||||
`file_original_name` varchar(255) NOT NULL COMMENT '原始文件名',
|
||||
`file_type` varchar(20) COMMENT '文件类型(pdf,doc,docx,xls,xlsx,jpg,png等)',
|
||||
`file_size` bigint(20) COMMENT '文件大小(字节)',
|
||||
`file_path` varchar(500) COMMENT '文件存储路径',
|
||||
`file_url` varchar(500) COMMENT '文件访问URL',
|
||||
|
||||
-- =================== 附件分类 ===================
|
||||
`attachment_type` varchar(50) COMMENT '附件类型(feasibility_report-可行性研究报告 implementation_plan-项目实施方案 budget_calculation-资金测算明细表 other_materials-其他相关证明材料)',
|
||||
`attachment_type_name` varchar(100) COMMENT '附件类型名称',
|
||||
`description` varchar(500) COMMENT '文件说明',
|
||||
|
||||
-- =================== 上传信息 ===================
|
||||
`upload_user_id` bigint(20) NOT NULL COMMENT '上传人ID',
|
||||
`upload_user_name` varchar(50) NOT NULL COMMENT '上传人姓名',
|
||||
`upload_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '上传时间',
|
||||
|
||||
-- =================== 排序和状态 ===================
|
||||
`sort_order` int(11) DEFAULT 0 COMMENT '排序',
|
||||
`status` char(1) DEFAULT '1' COMMENT '状态(0-删除 1-正常)',
|
||||
|
||||
-- =================== 系统字段 ===================
|
||||
`create_by` bigint(20) COMMENT '创建者',
|
||||
`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||||
`update_by` bigint(20) COMMENT '更新者',
|
||||
`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
|
||||
`create_dept` bigint(20) COMMENT '创建部门',
|
||||
`deleted` tinyint(1) DEFAULT 0 COMMENT '删除标志(0-正常 1-删除)',
|
||||
`tenant_id` varchar(20) DEFAULT '000000' COMMENT '租户ID',
|
||||
|
||||
PRIMARY KEY (`id`),
|
||||
KEY `idx_application_id` (`application_id`),
|
||||
KEY `idx_application_no` (`application_no`),
|
||||
KEY `idx_attachment_type` (`attachment_type`),
|
||||
KEY `idx_upload_time` (`upload_time`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='申报附件表';
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. 字典数据设计
|
||||
|
||||
### 3.1 字典类型定义
|
||||
|
||||
```sql
|
||||
-- 插入项目预算相关字典类型
|
||||
INSERT INTO `sys_dict_type` VALUES
|
||||
(3000001, '项目特性选项', 'cw_project_feature', '0', NULL, '财务预算-项目特性选项', now(), NULL, NULL, '项目特性相关选项'),
|
||||
(3000002, '绩效指标类型', 'cw_performance_type', '0', NULL, '财务预算-绩效指标类型', now(), NULL, NULL, '8大绩效指标类型'),
|
||||
(3000003, '审批状态', 'cw_approval_status', '0', NULL, '财务预算-审批状态', now(), NULL, NULL, '审批状态分类'),
|
||||
(3000004, '审批人配置类型', 'cw_approver_config_type', '0', NULL, '财务预算-审批人配置类型', now(), NULL, NULL, '审批人配置类型分类'),
|
||||
(3000005, '审批节点', 'cw_approval_node', '0', NULL, '财务预算-审批节点', now(), NULL, NULL, '固定3节点审批流程'),
|
||||
(3000006, '资金来源类型', 'cw_funding_source', '0', NULL, '财务预算-资金来源类型', now(), NULL, NULL, '资金来源分类'),
|
||||
(3000007, '支出科目', 'cw_expenditure_category', '0', NULL, '财务预算-支出科目', now(), NULL, NULL, '项目支出科目分类'),
|
||||
(3000008, '附件类型', 'cw_attachment_type', '0', NULL, '财务预算-附件类型', now(), NULL, NULL, '申报附件类型分类');
|
||||
```
|
||||
|
||||
### 3.2 字典数据定义
|
||||
|
||||
```sql
|
||||
-- 插入字典数据
|
||||
INSERT INTO `sys_dict_data` VALUES
|
||||
-- 项目特性选项
|
||||
(3000011, 0, '是', '1', 'cw_project_feature', '', '', 'N', '0', '0', '', '是', now(), NULL, NULL, NULL),
|
||||
(3000012, 1, '否', '0', 'cw_project_feature', '', '', 'N', '0', '0', '', '否', now(), NULL, NULL, NULL),
|
||||
|
||||
-- 绩效指标类型(8大维度)
|
||||
(3000021, 0, '数量指标', 'quantity', 'cw_performance_type', '', '', 'N', '0', '0', '', '数量指标', now(), NULL, NULL, NULL),
|
||||
(3000022, 1, '质量指标', 'quality', 'cw_performance_type', '', '', 'N', '0', '0', '', '质量指标', now(), NULL, NULL, NULL),
|
||||
(3000023, 2, '时效指标', 'timeliness', 'cw_performance_type', '', '', 'N', '0', '0', '', '时效指标', now(), NULL, NULL, NULL),
|
||||
(3000024, 3, '成本指标', 'cost', 'cw_performance_type', '', '', 'N', '0', '0', '', '成本指标', now(), NULL, NULL, NULL),
|
||||
(3000025, 4, '经济效益指标', 'economic', 'cw_performance_type', '', '', 'N', '0', '0', '', '经济效益指标', now(), NULL, NULL, NULL),
|
||||
(3000026, 5, '社会效益指标', 'social', 'cw_performance_type', '', '', 'N', '0', '0', '', '社会效益指标', now(), NULL, NULL, NULL),
|
||||
(3000027, 6, '环境效益指标', 'environmental', 'cw_performance_type', '', '', 'N', '0', '0', '', '环境效益指标', now(), NULL, NULL, NULL),
|
||||
(3000028, 7, '满意度指标', 'satisfaction', 'cw_performance_type', '', '', 'N', '0', '0', '', '满意度指标', now(), NULL, NULL, NULL),
|
||||
|
||||
-- 审批状态
|
||||
(3000031, 0, '草稿', 'draft', 'cw_approval_status', '', '', 'N', '0', '0', '', '草稿状态', now(), NULL, NULL, NULL),
|
||||
(3000032, 1, '已提交', 'submitted', 'cw_approval_status', '', '', 'N', '0', '0', '', '已提交审批', now(), NULL, NULL, NULL),
|
||||
(3000033, 2, '审批中', 'approving', 'cw_approval_status', '', 'blue', 'N', '0', '0', '', '审批中', now(), NULL, NULL, NULL),
|
||||
(3000034, 3, '已通过', 'approved', 'cw_approval_status', '', 'green', 'N', '0', '0', '', '审批通过', now(), NULL, NULL, NULL),
|
||||
(3000035, 4, '已拒绝', 'rejected', 'cw_approval_status', '', 'red', 'N', '0', '0', '', '审批拒绝', now(), NULL, NULL, NULL),
|
||||
(3000036, 5, '已退回', 'returned', 'cw_approval_status', '', 'orange', 'N', '0', '0', '', '退回修改', now(), NULL, NULL, NULL),
|
||||
(3000037, 6, '已取消', 'cancelled', 'cw_approval_status', '', 'gray', 'N', '0', '0', '', '取消申报', now(), NULL, NULL, NULL),
|
||||
|
||||
-- 审批人配置类型
|
||||
(3000041, 0, '全局配置', 'global', 'cw_approver_config_type', '', '', 'N', '0', '0', '', '全局统一配置', now(), NULL, NULL, NULL),
|
||||
(3000042, 1, '部门配置', 'dept', 'cw_approver_config_type', '', '', 'N', '0', '0', '', '按部门配置', now(), NULL, NULL, NULL),
|
||||
(3000043, 2, '金额配置', 'amount', 'cw_approver_config_type', '', '', 'N', '0', '0', '', '按金额阈值配置', now(), NULL, NULL, NULL),
|
||||
|
||||
-- 审批节点(固定3节点)
|
||||
(3000051, 1, '部门审批', 'dept_approve', 'cw_approval_node', '', '', 'N', '0', '0', '', '部门负责人审批', now(), NULL, NULL, NULL),
|
||||
(3000052, 2, '财务审批', 'finance_approve', 'cw_approval_node', '', '', 'N', '0', '0', '', '财务部门审批', now(), NULL, NULL, NULL),
|
||||
(3000053, 3, '领导审批', 'leader_approve', 'cw_approval_node', '', '', 'N', '0', '0', '', '校领导审批', now(), NULL, NULL, NULL),
|
||||
|
||||
-- 资金来源类型
|
||||
(3000061, 0, '市财政资金', 'municipal_fiscal', 'cw_funding_source', '', '', 'N', '0', '0', '', '市财政资金', now(), NULL, NULL, NULL),
|
||||
(3000062, 1, '单位自筹', 'self_funding', 'cw_funding_source', '', '', 'N', '0', '0', '', '单位自筹资金', now(), NULL, NULL, NULL),
|
||||
(3000063, 2, '其他资金', 'other_funding', 'cw_funding_source', '', '', 'N', '0', '0', '', '其他来源资金', now(), NULL, NULL, NULL),
|
||||
|
||||
-- 支出科目
|
||||
(3000071, 0, '人员经费', 'personnel_expense', 'cw_expenditure_category', '', '', 'N', '0', '0', '', '人员相关费用', now(), NULL, NULL, NULL),
|
||||
(3000072, 1, '设备费', 'equipment_expense', 'cw_expenditure_category', '', '', 'N', '0', '0', '', '设备采购费用', now(), NULL, NULL, NULL),
|
||||
(3000073, 2, '材料费', 'material_expense', 'cw_expenditure_category', '', '', 'N', '0', '0', '', '材料采购费用', now(), NULL, NULL, NULL),
|
||||
(3000074, 3, '差旅费', 'travel_expense', 'cw_expenditure_category', '', '', 'N', '0', '0', '', '差旅相关费用', now(), NULL, NULL, NULL),
|
||||
(3000075, 4, '培训费', 'training_expense', 'cw_expenditure_category', '', '', 'N', '0', '0', '', '培训相关费用', now(), NULL, NULL, NULL),
|
||||
(3000076, 5, '咨询费', 'consulting_expense', 'cw_expenditure_category', '', '', 'N', '0', '0', '', '咨询服务费用', now(), NULL, NULL, NULL),
|
||||
(3000077, 6, '运行维护费', 'maintenance_expense', 'cw_expenditure_category', '', '', 'N', '0', '0', '', '运行维护费用', now(), NULL, NULL, NULL),
|
||||
(3000078, 7, '其他费用', 'other_expense', 'cw_expenditure_category', '', '', 'N', '0', '0', '', '其他类型费用', now(), NULL, NULL, NULL),
|
||||
|
||||
-- 附件类型
|
||||
(3000081, 0, '可行性研究报告', 'feasibility_report', 'cw_attachment_type', '', '', 'N', '0', '0', '', '项目可行性研究报告', now(), NULL, NULL, NULL),
|
||||
(3000082, 1, '项目实施方案', 'implementation_plan', 'cw_attachment_type', '', '', 'N', '0', '0', '', '项目实施方案文档', now(), NULL, NULL, NULL),
|
||||
(3000083, 2, '资金测算明细表', 'budget_calculation', 'cw_attachment_type', '', '', 'N', '0', '0', '', '资金测算明细表', now(), NULL, NULL, NULL),
|
||||
(3000084, 3, '其他相关证明材料', 'other_materials', 'cw_attachment_type', '', '', 'N', '0', '0', '', '其他相关证明材料', now(), NULL, NULL, NULL);
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 4. 数据关系图
|
||||
|
||||
```mermaid
|
||||
erDiagram
|
||||
cw_project_application {
|
||||
bigint id PK
|
||||
varchar application_no UK
|
||||
varchar project_name
|
||||
varchar principal
|
||||
varchar contact_phone
|
||||
decimal total_investment
|
||||
varchar approval_status
|
||||
bigint applicant_id
|
||||
bigint department_id
|
||||
}
|
||||
|
||||
cw_approver_config {
|
||||
bigint id PK
|
||||
varchar config_type
|
||||
bigint dept_id
|
||||
decimal min_amount
|
||||
decimal max_amount
|
||||
bigint dept_approver_id
|
||||
bigint finance_approver_id
|
||||
bigint leader_approver_id
|
||||
}
|
||||
|
||||
cw_approval_record {
|
||||
bigint id PK
|
||||
bigint application_id FK
|
||||
varchar node_code
|
||||
int node_order
|
||||
bigint approver_id
|
||||
varchar node_status
|
||||
varchar approve_action
|
||||
}
|
||||
|
||||
cw_expenditure_detail {
|
||||
bigint id PK
|
||||
bigint application_id FK
|
||||
varchar category
|
||||
decimal amount
|
||||
text calculation
|
||||
}
|
||||
|
||||
cw_performance_indicator {
|
||||
bigint id PK
|
||||
bigint application_id FK
|
||||
varchar indicator_type
|
||||
varchar goal_name
|
||||
varchar target_value
|
||||
decimal weight_percentage
|
||||
}
|
||||
|
||||
cw_application_attachment {
|
||||
bigint id PK
|
||||
bigint application_id FK
|
||||
varchar file_name
|
||||
varchar attachment_type
|
||||
bigint upload_user_id
|
||||
}
|
||||
|
||||
cw_project_application ||--o{ cw_approval_record : "has many"
|
||||
cw_project_application ||--o{ cw_expenditure_detail : "has many"
|
||||
cw_project_application ||--o{ cw_performance_indicator : "has many"
|
||||
cw_project_application ||--o{ cw_application_attachment : "has many"
|
||||
cw_approver_config ||--o{ cw_approval_record : "referenced by"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. 索引设计
|
||||
|
||||
### 5.1 主要查询场景
|
||||
|
||||
| 查询场景 | 频率 | 索引设计 |
|
||||
|---------|------|----------|
|
||||
| **按申请人查询申报** | 高 | `idx_applicant_id` |
|
||||
| **按部门查询申报** | 高 | `idx_department_id` |
|
||||
| **按状态和年度查询** | 高 | `idx_status_year` |
|
||||
| **审批人待办任务** | 高 | `idx_approver_id` + `idx_node_status` |
|
||||
| **申报编号查询** | 高 | `uk_application_no` |
|
||||
| **时间范围查询** | 中 | `idx_create_time`, `idx_submit_time` |
|
||||
|
||||
### 5.2 复合索引优化
|
||||
|
||||
```sql
|
||||
-- 针对常用查询的复合索引
|
||||
ALTER TABLE `cw_project_application`
|
||||
ADD INDEX `idx_dept_status_year` (`department_id`, `approval_status`, `year`);
|
||||
|
||||
ALTER TABLE `cw_approval_record`
|
||||
ADD INDEX `idx_approver_status_order` (`approver_id`, `node_status`, `node_order`);
|
||||
|
||||
ALTER TABLE `cw_approval_record`
|
||||
ADD INDEX `idx_app_node_status` (`application_id`, `node_code`, `node_status`);
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 6. 数据库初始化脚本
|
||||
|
||||
### 6.1 表结构创建脚本
|
||||
|
||||
```sql
|
||||
-- ==========================================
|
||||
-- 财务项目预算审批系统 - 数据库初始化脚本
|
||||
-- 版本: 1.0
|
||||
-- 创建时间: 2025-01-26
|
||||
-- 表名前缀: cw_ (财务模块)
|
||||
-- ==========================================
|
||||
|
||||
-- 设置字符集
|
||||
SET NAMES utf8mb4;
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
-- 1. 创建核心数据表
|
||||
source 2.1-cw_project_application.sql;
|
||||
source 2.2-cw_approver_config.sql;
|
||||
source 2.3-cw_approval_record.sql;
|
||||
source 2.4-cw_expenditure_detail.sql;
|
||||
source 2.5-cw_performance_indicator.sql;
|
||||
source 2.6-cw_application_attachment.sql;
|
||||
|
||||
-- 2. 插入字典数据
|
||||
source 3.1-dict_type.sql;
|
||||
source 3.2-dict_data.sql;
|
||||
|
||||
-- 3. 创建优化索引
|
||||
source 5.2-indexes.sql;
|
||||
|
||||
-- 4. 插入初始化数据
|
||||
source 6.2-init_data.sql;
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
```
|
||||
|
||||
### 6.2 初始化数据脚本
|
||||
|
||||
```sql
|
||||
-- ==========================================
|
||||
-- 初始化数据脚本
|
||||
-- ==========================================
|
||||
|
||||
-- 插入默认全局审批人配置
|
||||
INSERT INTO `cw_approver_config` (
|
||||
`id`, `config_name`, `config_type`, `dept_approver_id`, `dept_approver_name`,
|
||||
`finance_approver_id`, `finance_approver_name`, `leader_approver_id`, `leader_approver_name`,
|
||||
`priority`, `status`, `create_by`, `create_time`, `tenant_id`
|
||||
) VALUES (
|
||||
1, '默认全局审批配置', 'global', 1, '系统管理员',
|
||||
1, '系统管理员', 1, '系统管理员',
|
||||
100, '1', 1, now(), '000000'
|
||||
);
|
||||
|
||||
-- 创建申报编号序列(用于自动生成申报编号)
|
||||
-- 申报编号格式:CW-YYYY-MMDD-XXXX
|
||||
-- 示例:CW-2025-0126-0001
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📝 总结
|
||||
|
||||
### ✅ 设计特点
|
||||
|
||||
1. **简化优先**: 基于产品需求简化方案,采用固定3节点审批流程
|
||||
2. **灵活配置**: 支持3种审批人配置方式(全局、部门、金额)
|
||||
3. **数据完整**: 完整支持申请表的所有填报内容和8维度绩效指标
|
||||
4. **扩展性好**: 预留扩展字段,支持后续功能增强
|
||||
5. **性能优化**: 合理的索引设计,支持高频查询场景
|
||||
6. **规范命名**: 所有表名统一使用cw_前缀,符合财务模块规范
|
||||
|
||||
### 🎯 核心表关系
|
||||
|
||||
- **申报表** (`cw_project_application`) 是核心,包含完整的申报信息
|
||||
- **审批配置表** (`cw_approver_config`) 支持灵活的审批人配置
|
||||
- **审批记录表** (`cw_approval_record`) 记录完整的审批流程
|
||||
- **明细表们** 支持结构化的详细数据
|
||||
|
||||
### 📊 数据量预估
|
||||
|
||||
| 表名 | 年数据量 | 增长趋势 | 存储预估 |
|
||||
|------|---------|----------|----------|
|
||||
| 申报表 | 1000条 | 稳定增长 | 50MB |
|
||||
| 审批记录 | 3000条 | 线性增长 | 30MB |
|
||||
| 支出明细 | 5000条 | 线性增长 | 25MB |
|
||||
| 绩效指标 | 8000条 | 线性增长 | 40MB |
|
||||
|
||||
**请您确认这个数据模型设计是否满足需求,如有需要调整的地方请告诉我!**
|
||||
Reference in new issue
Block a user