增加报表配置管理

This commit is contained in:
2026-06-25 13:32:52 +08:00
parent 9fbe2c6d64
commit a6fdba912d
10 changed files with 1665 additions and 0 deletions
+181
View File
@@ -0,0 +1,181 @@
import request from '/@/utils/request';
/** 字段定义 */
export interface FieldDefine {
id?: number | string;
fieldCode: string;
fieldName: string;
fieldType: 'STRING' | 'INT' | 'FLOAT' | 'BIGINT' | 'DECIMAL' | 'DATE' | 'DATETIME' | 'BOOLEAN';
dataType?: string;
fieldRole: 'DIMENSION' | 'INDICATOR';
isAggregatable?: boolean;
isFilterable?: boolean;
isQueryable?: boolean;
isSortable?: boolean;
defaultAggregate?: string;
groupName?: string;
sortOrder: number;
unit?: string;
expression?: string;
status?: string;
validAggregates?: string[];
}
/** 报表+字段保存请求参数 */
export interface ReportWithFieldsData {
businessCode: string;
reportCode: string;
reportName: string;
description?: string;
status?: string;
statTableName: string;
statTableComment?: string;
dateField?: string;
primaryKeys?: string[];
conflictKeys?: string[];
fields: FieldDefine[];
}
export interface ExtractConfigSaveData {
id?: number;
businessCode: string;
reportCode: string;
extractCode: string;
extractName: string;
sourceTableName: string;
sourceTableAlias?: string;
targetTableName: string;
isEnabled: boolean;
extractType: string;
extractMode: string;
extractKeyField?: string;
batchSize?: number;
status?: string;
groupByFields?: string[];
filterExpression?: string;
operator?: string;
}
// --- 业务 Business ---
export function listBusinesses() {
return request({
url: '/data-engine/report/businesses',
method: 'get',
});
}
export function getBusiness(id: number) {
return request({
url: '/data-engine/report/business',
method: 'get',
params: { id },
});
}
export function saveBusiness(data: { id?: number; businessCode: string; businessName: string }) {
return request({
url: '/data-engine/report/business/save',
method: 'post',
data,
});
}
export function deleteBusiness(id: number) {
return request({
url: '/data-engine/report/business',
method: 'delete',
params: { id },
});
}
// --- 报表 Report ---
export function listReports(businessCode: string, pageNum: number, pageSize: number, reportName?: string) {
const params: any = { businessCode, pageNum, pageSize };
if (reportName) params.reportName = reportName;
return request({
url: '/data-engine/report/reports',
method: 'get',
params,
});
}
export function getReport(id: number) {
return request({
url: '/data-engine/report/report',
method: 'get',
params: { id },
});
}
export function saveReport(data: {
businessCode: string;
reportCode: string;
reportName: string;
description?: string;
status?: string;
statTableName: string;
statTableComment?: string;
dateField?: string;
primaryKeys?: string[];
conflictKeys?: string[];
}) {
return request({
url: '/data-engine/report/report/save',
method: 'post',
data,
});
}
/** 保存报表及字段(新建 / 编辑统一入口,全量替换字段) */
export function saveReportWithFields(data: ReportWithFieldsData) {
return request({
url: '/data-engine/report/report/saveWithFields',
method: 'post',
data,
});
}
export function deleteReport(id: number) {
return request({
url: '/data-engine/report/report',
method: 'delete',
params: { id },
});
}
/** 按天回刷(支持单天或日期范围) */
export function execDailyBackfill(data: { businessCode: string; reportCode: string; startDate: string; endDate: string }) {
return request({
url: '/data-engine/report/backfill',
method: 'post',
data,
});
}
// --- 抽取配置 ExtractConfig ---
export function getExtractConfig(id: number) {
return request({
url: '/data-engine/report/extractConfig',
method: 'get',
params: { id },
});
}
export function saveExtractConfig(data: Record<string, any>) {
return request({
url: '/data-engine/report/extractConfig/save',
method: 'post',
data,
});
}
export function deleteExtractConfig(id: number) {
return request({
url: '/data-engine/report/extractConfig',
method: 'delete',
params: { id },
});
}