wuzhen 信息采集和统计分析完成

This commit is contained in:
wuzhen committed 2025-07-18 11:48:34 +08:00
1 parent 27fcea613c
commit 2f56204113
122 files changed
+29130 -101

No files matched your search

+283
View File
@@ -0,0 +1,283 @@
import request from '@/utils/request';
import { AxiosPromise } from 'axios';
import { CollectionBatchVO, CollectionBatchForm, CollectionBatchQuery } from './types';
/**
* 查询信息采集批次列表
*/
export const listCollectionBatch = (query?: CollectionBatchQuery): AxiosPromise<CollectionBatchVO[]> => {
return request({
url: '/xg/collectionBatch/list',
method: 'get',
params: query
});
};
/**
* 查询信息采集批次详细
*/
export const getCollectionBatch = (id: string | number): AxiosPromise<CollectionBatchVO> => {
return request({
url: `/xg/collectionBatch/${id}`,
method: 'get'
});
};
/**
* 根据批次编码查询批次信息
*/
export const getCollectionBatchByCode = (batchCode: string): AxiosPromise<CollectionBatchVO> => {
return request({
url: `/xg/collectionBatch/code/${batchCode}`,
method: 'get'
});
};
/**
* 新增信息采集批次
*/
export const addCollectionBatch = (data: CollectionBatchForm) => {
return request({
url: '/xg/collectionBatch',
method: 'post',
data: data
});
};
/**
* 修改信息采集批次
*/
export const updateCollectionBatch = (data: CollectionBatchForm) => {
return request({
url: '/xg/collectionBatch',
method: 'put',
data: data
});
};
/**
* 删除信息采集批次
*/
export const delCollectionBatch = (ids: string | number | Array<string | number>) => {
return request({
url: `/xg/collectionBatch/${ids}`,
method: 'delete'
});
};
/**
* 导出信息采集批次
*/
export const exportCollectionBatch = (query?: CollectionBatchQuery) => {
return request({
url: '/xg/collectionBatch/export',
method: 'post',
data: query
});
};
/**
* 查询用户权限内的批次列表
*/
export const getUserPermissionBatches = (): AxiosPromise<CollectionBatchVO[]> => {
return request({
url: '/xg/collectionBatch/userPermission',
method: 'get'
});
};
/**
* 查询活跃的批次列表
*/
export const getActiveBatches = (): AxiosPromise<CollectionBatchVO[]> => {
return request({
url: '/xg/collectionBatch/active',
method: 'get'
});
};
/**
* 查询即将开始的批次列表
*/
export const getUpcomingBatches = (): AxiosPromise<CollectionBatchVO[]> => {
return request({
url: '/xg/collectionBatch/upcoming',
method: 'get'
});
};
/**
* 查询即将结束的批次列表
*/
export const getEndingSoonBatches = (): AxiosPromise<CollectionBatchVO[]> => {
return request({
url: '/xg/collectionBatch/endingSoon',
method: 'get'
});
};
/**
* 开始批次
*/
export const startBatch = (batchId: string | number) => {
return request({
url: `/xg/collectionBatch/start/${batchId}`,
method: 'post'
});
};
/**
* 暂停批次
*/
export const pauseBatch = (batchId: string | number) => {
return request({
url: `/xg/collectionBatch/pause/${batchId}`,
method: 'post'
});
};
/**
* 恢复批次
*/
export const resumeBatch = (batchId: string | number) => {
return request({
url: `/xg/collectionBatch/resume/${batchId}`,
method: 'post'
});
};
/**
* 结束批次
*/
export const endBatch = (batchId: string | number) => {
return request({
url: `/xg/collectionBatch/end/${batchId}`,
method: 'post'
});
};
/**
* 复制批次
*/
export const copyBatch = (batchId: string | number, newBatchCode: string, newBatchName: string) => {
return request({
url: `/xg/collectionBatch/copy/${batchId}`,
method: 'post',
data: {
newBatchCode,
newBatchName
}
});
};
/**
* 获取批次统计信息
*/
export const getBatchStatistics = (batchId: string | number) => {
return request({
url: `/xg/collectionBatch/statistics/${batchId}`,
method: 'get'
});
};
/**
* 获取整体统计信息
*/
export const getOverallStatistics = () => {
return request({
url: '/xg/collectionBatch/statistics/overall',
method: 'get'
});
};
/**
* 获取批次完成度统计
*/
export const getBatchCompletionStatistics = (batchId: string | number) => {
return request({
url: `/xg/collectionBatch/statistics/completion/${batchId}`,
method: 'get'
});
};
/**
* 获取批次多维度统计
*/
export const getBatchDimensionStatistics = (batchId: string | number, dimension: string) => {
return request({
url: `/xg/collectionBatch/statistics/dimension/${batchId}`,
method: 'get',
params: { dimension }
});
};
/**
* 批量更新批次状态
*/
export const batchUpdateStatus = (batchIds: Array<string | number>, status: string) => {
return request({
url: '/xg/collectionBatch/batchUpdateStatus',
method: 'post',
data: {
batchIds,
status
}
});
};
/**
* 检查批次是否可编辑
*/
export const checkBatchEditable = (batchId: string | number) => {
return request({
url: `/xg/collectionBatch/checkEditable/${batchId}`,
method: 'get'
});
};
/**
* 检查批次是否可删除
*/
export const checkBatchDeletable = (batchId: string | number) => {
return request({
url: `/xg/collectionBatch/checkDeletable/${batchId}`,
method: 'get'
});
};
/**
* 获取可用批次选项
*/
export const getAvailableBatches = () => {
return request({
url: '/xg/collectionBatch/available',
method: 'get'
});
};
/**
* 导入批次数据
*/
export const importBatchData = (file: File) => {
const formData = new FormData();
formData.append('file', file);
return request({
url: '/xg/collectionBatch/import',
method: 'post',
data: formData,
headers: {
'Content-Type': 'multipart/form-data'
}
});
};
/**
* 下载批次数据导入模板
*/
export const downloadBatchTemplate = () => {
return request({
url: '/xg/collectionBatch/importTemplate',
method: 'post',
responseType: 'blob'
});
};
+501
View File
@@ -0,0 +1,501 @@
import request from '@/utils/request'
import { AxiosPromise } from 'axios'
// ========== 统计分析相关类型定义 ==========
// 统计查询参数
export interface StatisticsQuery {
pageNum?: number
pageSize?: number
configName?: string
configType?: string
dimensionType?: string
isEnabled?: boolean
createTime?: string[]
}
// 统计分析查询参数
export interface StatisticsAnalysisQuery {
statisticsType?: string
dimension?: string
field?: string
groupBy?: string
conditions?: Record<string, any>
startTime?: string
endTime?: string
collegeIds?: number[]
majorIds?: number[]
classIds?: number[]
grades?: string[]
genders?: string[]
politicalStatuses?: string[]
nationalities?: string[]
studentStatuses?: string[]
trainingTypes?: string[]
useCache?: boolean
}
// 统计配置视图对象
export interface StatisticsConfigVo {
id?: number
configName?: string
configType?: string
dimensionType?: string
queryConditions?: string
displaySettings?: string
chartType?: string
isEnabled?: boolean
sortOrder?: number
remark?: string
createBy?: number
createTime?: string
updateBy?: number
updateTime?: string
}
// 统计配置业务对象
export interface StatisticsConfigBo {
id?: number
configName?: string
configType?: string
dimensionType?: string
queryConditions?: string
displaySettings?: string
chartType?: string
isEnabled?: boolean
sortOrder?: number
remark?: string
}
// 统计结果视图对象
export interface StatisticsResultVo {
title?: string
type?: string
dimension?: string
data?: Array<Record<string, any>>
total?: number
statisticsTime?: string
fromCache?: boolean
cacheKey?: string
extra?: Record<string, any>
chartConfig?: Record<string, any>
groupData?: Record<string, Array<Record<string, any>>>
summary?: Record<string, any>
}
// 统计报表视图对象
export interface StatisticsReportVo {
reportType?: string
title?: string
description?: string
data?: Array<Record<string, any>>
summary?: Record<string, any>
generateTime?: string
metadata?: {
total: number
conditions: Record<string, any>
}
}
// 统计缓存信息
export interface StatisticsCacheInfo {
key?: string
hitCount?: number
missCount?: number
hitRate?: number
size?: number
lastAccessTime?: string
createTime?: string
expireTime?: string
}
// 导出参数
export interface StatisticsExportQuery {
dimension?: string
format?: 'excel' | 'csv'
includeChart?: boolean
conditions?: Record<string, any>
reportType?: string
}
// ========== 统计配置管理API ==========
// 查询统计配置列表
export function listStatisticsConfig(query: StatisticsQuery): AxiosPromise<any> {
return request({
url: '/xg/statisticsConfig/list',
method: 'get',
params: query
})
}
// 获取统计配置详情
export function getStatisticsConfig(id: number): AxiosPromise<StatisticsConfigVo> {
return request({
url: `/xg/statisticsConfig/${id}`,
method: 'get'
})
}
// 新增统计配置
export function addStatisticsConfig(data: StatisticsConfigBo): AxiosPromise<any> {
return request({
url: '/xg/statisticsConfig',
method: 'post',
data: data
})
}
// 修改统计配置
export function updateStatisticsConfig(data: StatisticsConfigBo): AxiosPromise<any> {
return request({
url: '/xg/statisticsConfig',
method: 'put',
data: data
})
}
// 删除统计配置
export function delStatisticsConfig(ids: number[]): AxiosPromise<any> {
return request({
url: `/xg/statisticsConfig/${ids}`,
method: 'delete'
})
}
// 导出统计配置
export function exportStatisticsConfig(query: StatisticsQuery): AxiosPromise<any> {
return request({
url: '/xg/statisticsConfig/export',
method: 'post',
data: query
})
}
// 启用/禁用统计配置
export function changeStatisticsConfigStatus(id: number, status: boolean): AxiosPromise<any> {
return request({
url: `/xg/statisticsConfig/changeStatus`,
method: 'put',
data: { id, isEnabled: status }
})
}
// ========== 统计分析API ==========
// 获取统计概览
export function getStatisticsOverview(): AxiosPromise<any> {
return request({
url: '/xg/statisticsAnalysis/overview',
method: 'get'
})
}
// 按维度统计 - 学院统计
export function getCollegeStatistics(query: StatisticsAnalysisQuery): AxiosPromise<StatisticsResultVo> {
return request({
url: '/xg/statisticsAnalysis/college',
method: 'get',
params: query
})
}
// 按维度统计 - 专业统计
export function getMajorStatistics(query: StatisticsAnalysisQuery): AxiosPromise<StatisticsResultVo> {
return request({
url: '/xg/statisticsAnalysis/major',
method: 'get',
params: query
})
}
// 按维度统计 - 班级统计
export function getClassStatistics(query: StatisticsAnalysisQuery): AxiosPromise<StatisticsResultVo> {
return request({
url: '/xg/statisticsAnalysis/class',
method: 'get',
params: query
})
}
// 按维度统计 - 年级统计
export function getGradeStatistics(query: StatisticsAnalysisQuery): AxiosPromise<StatisticsResultVo> {
return request({
url: '/xg/statisticsAnalysis/grade',
method: 'get',
params: query
})
}
// 按维度统计 - 性别统计
export function getGenderStatistics(query: StatisticsAnalysisQuery): AxiosPromise<StatisticsResultVo> {
return request({
url: '/xg/statisticsAnalysis/gender',
method: 'get',
params: query
})
}
// 按维度统计 - 年龄统计
export function getAgeStatistics(query: StatisticsAnalysisQuery): AxiosPromise<StatisticsResultVo> {
return request({
url: '/xg/statisticsAnalysis/age',
method: 'get',
params: query
})
}
// 按维度统计 - 政治面貌统计
export function getPoliticalStatusStatistics(query: StatisticsAnalysisQuery): AxiosPromise<StatisticsResultVo> {
return request({
url: '/xg/statisticsAnalysis/political',
method: 'get',
params: query
})
}
// 按维度统计 - 民族统计
export function getNationStatistics(query: StatisticsAnalysisQuery): AxiosPromise<StatisticsResultVo> {
return request({
url: '/xg/statisticsAnalysis/nation',
method: 'get',
params: query
})
}
// 按维度统计 - 生源地统计
export function getSourceRegionStatistics(query: StatisticsAnalysisQuery): AxiosPromise<StatisticsResultVo> {
return request({
url: '/xg/statisticsAnalysis/sourceRegion',
method: 'get',
params: query
})
}
// 按维度统计 - 血型统计
export function getBloodTypeStatistics(query: StatisticsAnalysisQuery): AxiosPromise<StatisticsResultVo> {
return request({
url: '/xg/statisticsAnalysis/bloodType',
method: 'get',
params: query
})
}
// 按维度统计 - 宗教信仰统计
export function getReligionStatistics(query: StatisticsAnalysisQuery): AxiosPromise<StatisticsResultVo> {
return request({
url: '/xg/statisticsAnalysis/religion',
method: 'get',
params: query
})
}
// 按维度统计 - 学籍状态统计
export function getStudentStatusStatistics(query: StatisticsAnalysisQuery): AxiosPromise<StatisticsResultVo> {
return request({
url: '/xg/statisticsAnalysis/studentStatus',
method: 'get',
params: query
})
}
// 按维度统计 - 培养方式统计
export function getTrainingTypeStatistics(query: StatisticsAnalysisQuery): AxiosPromise<StatisticsResultVo> {
return request({
url: '/xg/statisticsAnalysis/trainingType',
method: 'get',
params: query
})
}
// 高级统计 - 身高统计
export function getHeightStatistics(query: StatisticsAnalysisQuery): AxiosPromise<StatisticsResultVo> {
return request({
url: '/xg/statisticsAnalysis/height',
method: 'get',
params: query
})
}
// 高级统计 - 体重统计
export function getWeightStatistics(query: StatisticsAnalysisQuery): AxiosPromise<StatisticsResultVo> {
return request({
url: '/xg/statisticsAnalysis/weight',
method: 'get',
params: query
})
}
// 多维度组合统计
export function getMultiDimensionStatistics(query: StatisticsAnalysisQuery): AxiosPromise<StatisticsResultVo> {
return request({
url: '/xg/statisticsAnalysis/multiDimension',
method: 'post',
data: query
})
}
// 时间趋势统计
export function getTimeTrendStatistics(query: StatisticsAnalysisQuery): AxiosPromise<StatisticsResultVo> {
return request({
url: '/xg/statisticsAnalysis/timeTrend',
method: 'get',
params: query
})
}
// ========== 统计报表API ==========
// 生成学生信息汇总报表
export function generateStudentSummaryReport(query: StatisticsAnalysisQuery): AxiosPromise<StatisticsReportVo> {
return request({
url: '/xg/statisticsAnalysis/report/studentSummary',
method: 'post',
data: query
})
}
// 生成班级统计报表
export function generateClassStatisticsReport(query: StatisticsAnalysisQuery): AxiosPromise<StatisticsReportVo> {
return request({
url: '/xg/statisticsAnalysis/report/classStatistics',
method: 'post',
data: query
})
}
// 生成学院统计报表
export function generateCollegeStatisticsReport(query: StatisticsAnalysisQuery): AxiosPromise<StatisticsReportVo> {
return request({
url: '/xg/statisticsAnalysis/report/collegeStatistics',
method: 'post',
data: query
})
}
// 生成困难学生统计报表
export function generateDifficultStudentReport(query: StatisticsAnalysisQuery): AxiosPromise<StatisticsReportVo> {
return request({
url: '/xg/statisticsAnalysis/report/difficultStudent',
method: 'post',
data: query
})
}
// 生成特殊群体统计报表
export function generateSpecialGroupReport(query: StatisticsAnalysisQuery): AxiosPromise<StatisticsReportVo> {
return request({
url: '/xg/statisticsAnalysis/report/specialGroup',
method: 'post',
data: query
})
}
// ========== 统计导出API ==========
// 导出统计结果
export function exportStatisticsResult(query: StatisticsExportQuery): AxiosPromise<any> {
return request({
url: '/xg/statisticsAnalysis/export',
method: 'post',
data: query,
responseType: 'blob'
})
}
// 导出统计报表
export function exportStatisticsReport(query: StatisticsExportQuery): AxiosPromise<any> {
return request({
url: '/xg/statisticsAnalysis/exportReport',
method: 'post',
data: query,
responseType: 'blob'
})
}
// ========== 统计缓存API ==========
// 获取缓存统计信息
export function getCacheStatistics(): AxiosPromise<StatisticsCacheInfo> {
return request({
url: '/xg/statisticsAnalysis/cache/info',
method: 'get'
})
}
// 清空统计缓存
export function clearStatisticsCache(): AxiosPromise<any> {
return request({
url: '/xg/statisticsAnalysis/cache/clear',
method: 'delete'
})
}
// 预热统计缓存
export function warmupStatisticsCache(): AxiosPromise<any> {
return request({
url: '/xg/statisticsAnalysis/cache/warmup',
method: 'post'
})
}
// ========== 辅助API ==========
// 获取统计维度选项
export function getStatisticsDimensionOptions(): AxiosPromise<any> {
return request({
url: '/xg/statisticsAnalysis/dimensionOptions',
method: 'get'
})
}
// 获取图表类型选项
export function getChartTypeOptions(): AxiosPromise<any> {
return request({
url: '/xg/statisticsAnalysis/chartTypeOptions',
method: 'get'
})
}
// 获取学院选项
export function getCollegeOptions(): AxiosPromise<any> {
return request({
url: '/xg/statisticsAnalysis/collegeOptions',
method: 'get'
})
}
// 获取专业选项
export function getMajorOptions(collegeCode?: string): AxiosPromise<any> {
return request({
url: '/xg/statisticsAnalysis/majorOptions',
method: 'get',
params: { collegeCode }
})
}
// 获取班级选项
export function getClassOptions(majorCode?: string): AxiosPromise<any> {
return request({
url: '/xg/statisticsAnalysis/classOptions',
method: 'get',
params: { majorCode }
})
}
// 获取年级选项
export function getGradeOptions(): AxiosPromise<any> {
return request({
url: '/xg/statisticsAnalysis/gradeOptions',
method: 'get'
})
}
// 执行统计配置
export function executeStatisticsConfig(configId: number, query: StatisticsAnalysisQuery): AxiosPromise<StatisticsResultVo> {
return request({
url: `/xg/statisticsAnalysis/executeConfig/${configId}`,
method: 'post',
data: query
})
}
+152
View File
@@ -1,5 +1,157 @@
// 学生信息管理模块类型定义
// ========== 信息采集批次管理相关类型 ==========
// 信息采集批次VO
export interface CollectionBatchVO {
id?: number
batchCode?: string
batchName?: string
batchType?: string
academicYear?: string
semester?: string
batchStatus?: string
publishTime?: string
startTime?: string
endTime?: string
archiveTime?: string
targetColleges?: string
targetGrades?: string
targetMajors?: string
requiredFields?: string
optionalFields?: string
auditLevels?: string
totalStudents?: number
submittedCount?: number
approvedCount?: number
rejectedCount?: number
completionRate?: number
// 新增统计字段
studentCount?: number // 兼容性字段,映射到 totalStudents
pendingCount?: number // 待提交数量
description?: string
editPermissions?: string
auditPermissions?: string
viewPermissions?: string
autoReminder?: number
reminderFrequency?: number
allowModifyAfterSubmit?: number
createTime?: string
updateTime?: string
createBy?: number
updateBy?: number
}
// 信息采集批次表单
export interface CollectionBatchForm {
id?: number
batchCode?: string
batchName?: string
batchType?: string
academicYear?: string
semester?: string
batchStatus?: string
publishTime?: string
startTime?: string
endTime?: string
archiveTime?: string
targetColleges?: string
targetGrades?: string
targetMajors?: string
requiredFields?: string
optionalFields?: string
auditLevels?: string
description?: string
editPermissions?: string
auditPermissions?: string
viewPermissions?: string
autoReminder?: number
reminderFrequency?: number
allowModifyAfterSubmit?: number
}
// 信息采集批次查询参数
export interface CollectionBatchQuery {
pageNum?: number
pageSize?: number
batchCode?: string
batchName?: string
batchType?: string
academicYear?: string
semester?: string
batchStatus?: string
targetColleges?: string
targetGrades?: string
targetMajors?: string
publishTimeStart?: string
publishTimeEnd?: string
startTimeStart?: string
startTimeEnd?: string
endTimeStart?: string
endTimeEnd?: string
description?: string
}
// 批次统计信息
export interface BatchStatistics {
totalBatches?: number
activeBatches?: number
completedBatches?: number
draftBatches?: number
totalStudents?: number
submittedCount?: number
approvedCount?: number
rejectedCount?: number
completionRate?: number
averageCompletionTime?: number
}
// 批次完成度统计
export interface BatchCompletionStatistics {
batchId?: number
batchName?: string
totalStudents?: number
submittedCount?: number
approvedCount?: number
rejectedCount?: number
pendingCount?: number
completionRate?: number
submitRate?: number
approvalRate?: number
collegeStatistics?: CollegeCompletionStatistics[]
}
// 学院完成度统计
export interface CollegeCompletionStatistics {
collegeId?: number
collegeName?: string
totalStudents?: number
submittedCount?: number
approvedCount?: number
rejectedCount?: number
pendingCount?: number
completionRate?: number
submitRate?: number
approvalRate?: number
}
// 批次多维度统计
export interface BatchDimensionStatistics {
dimension?: string
dimensionName?: string
items?: DimensionStatisticsItem[]
}
// 维度统计项
export interface DimensionStatisticsItem {
key?: string
label?: string
count?: number
percentage?: number
}
// ========== 学生信息相关类型 ==========
// 学生信息完整数据结构
export interface StudentInfoVo {
id?: number