feat: 重构数据中枢工作台与接入管理

- 新增统一的数据源、目录、纳管表与 Excel 处理后端能力

- 重建管理端数据中枢工作台并替换旧表管理页面

- 补充数据中枢迁移脚本、连接器底座与说明字段支持
This commit is contained in:
2026-04-02 18:55:31 +08:00
parent b6213d0933
commit 798effbd5b
117 changed files with 9739 additions and 1824 deletions

View File

@@ -0,0 +1,7 @@
package tech.easyflow.datacenter.integration;
import tech.easyflow.datacenter.execution.model.DatacenterQueryRequest;
public interface AssistantDatacenterBridge {
AssistantDatacenterResult queryPage(DatacenterQueryRequest request);
}

View File

@@ -0,0 +1,34 @@
package tech.easyflow.datacenter.integration;
import com.mybatisflex.core.row.Row;
import tech.easyflow.datacenter.entity.DatacenterTable;
import tech.easyflow.datacenter.meta.entity.DatacenterCatalog;
import tech.easyflow.datacenter.meta.entity.DatacenterDatasetVersion;
import tech.easyflow.datacenter.meta.entity.DatacenterSource;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
public class AssistantDatacenterResult {
private List<Row> rows = new ArrayList<>();
private DatacenterSource source;
private DatacenterCatalog catalog;
private DatacenterTable table;
private DatacenterDatasetVersion version;
private Map<String, Object> querySummary = new LinkedHashMap<>();
public List<Row> getRows() { return rows; }
public void setRows(List<Row> rows) { this.rows = rows; }
public DatacenterSource getSource() { return source; }
public void setSource(DatacenterSource source) { this.source = source; }
public DatacenterCatalog getCatalog() { return catalog; }
public void setCatalog(DatacenterCatalog catalog) { this.catalog = catalog; }
public DatacenterTable getTable() { return table; }
public void setTable(DatacenterTable table) { this.table = table; }
public DatacenterDatasetVersion getVersion() { return version; }
public void setVersion(DatacenterDatasetVersion version) { this.version = version; }
public Map<String, Object> getQuerySummary() { return querySummary; }
public void setQuerySummary(Map<String, Object> querySummary) { this.querySummary = querySummary; }
}

View File

@@ -0,0 +1,49 @@
package tech.easyflow.datacenter.integration;
import org.springframework.stereotype.Component;
import tech.easyflow.datacenter.execution.model.DatacenterQueryRequest;
import tech.easyflow.datacenter.execution.model.DatacenterSchemaResponse;
import tech.easyflow.datacenter.execution.service.DatacenterDatasetQueryService;
import tech.easyflow.datacenter.meta.entity.DatacenterDatasetVersion;
import javax.annotation.Resource;
import java.util.LinkedHashMap;
import java.util.List;
@Component
public class DefaultAssistantDatacenterBridge implements AssistantDatacenterBridge {
@Resource
private DatacenterDatasetQueryService queryService;
@Override
public AssistantDatacenterResult queryPage(DatacenterQueryRequest request) {
var page = queryService.queryPage(request);
DatacenterSchemaResponse schema = queryService.getSchema(request.getDatasetRef());
AssistantDatacenterResult result = new AssistantDatacenterResult();
result.setRows(page.getRecords());
result.setSource(schema.getSource());
result.setCatalog(schema.getCatalog());
result.setTable(schema.getTable());
result.setVersion(resolveVersion(schema.getVersions(), request == null || request.getDatasetRef() == null ? null : request.getDatasetRef().getVersionId()));
result.setQuerySummary(new LinkedHashMap<>() {{
put("pageNumber", page.getPageNumber());
put("pageSize", page.getPageSize());
put("totalRows", page.getTotalRow());
put("selectedColumns", request == null ? List.of() : request.getSelectedColumns());
put("filterCount", request == null || request.getFilters() == null ? 0 : request.getFilters().size());
put("sortCount", request == null || request.getSorts() == null ? 0 : request.getSorts().size());
}});
return result;
}
private DatacenterDatasetVersion resolveVersion(List<DatacenterDatasetVersion> versions, java.math.BigInteger versionId) {
if (versions == null || versions.isEmpty()) {
return null;
}
if (versionId == null) {
return versions.get(0);
}
return versions.stream().filter(version -> versionId.equals(version.getId())).findFirst().orElse(null);
}
}