Browse Source

数据标准图谱

master
si@aidatagov.com 1 month ago
parent
commit
48baf0ee1c
  1. 2
      vue-fastapi-backend/module_admin/controller/datastd_controller.py
  2. 14
      vue-fastapi-backend/module_admin/dao/datastd_dao.py
  3. 132
      vue-fastapi-backend/module_admin/service/datastd_service.py

2
vue-fastapi-backend/module_admin/controller/datastd_controller.py

@ -801,7 +801,7 @@ async def get_code_map_list2(
id: str,
query_db: AsyncSession = Depends(get_db),
):
code_page_query_result = await DataStdService.get_code_map_list2(query_db, id)
code_page_query_result = await DataStdService.get_code_map_list2(request,query_db, id)
logger.info('获取列配置列表成功')
return ResponseUtil.success(data=code_page_query_result)
# -----------------------------------------------------导入----------------------------------------------------------------------

14
vue-fastapi-backend/module_admin/dao/datastd_dao.py

@ -9,7 +9,7 @@ from sqlalchemy.orm import aliased
from module_admin.entity.vo.data_ast_content_vo import DataCatalogPageQueryModel, DeleteDataCatalogModel,DataCatalogChild
from datetime import datetime
from module_admin.entity.do.approval_do import FlowApproval, FlowConfig
from module_admin.entity.do.meta_do import MetadataFldSuppInfo
class DataStdDao:
@ -470,6 +470,18 @@ class DataStdDao:
).scalars().all()
return List
@classmethod
async def get_meta_field_list_by_onum(cls, db: AsyncSession, onum: str):
List = (
await db.execute(
select(MetadataFldSuppInfo)
.where(
MetadataFldSuppInfo.data_dict_id == onum if onum else False
)
)
).scalars().all()
return List
@classmethod
async def update_std_dict(cls, db: AsyncSession, update_data: DataStdDictModel):
await db.execute(update(DataStdDict), [update_data])

132
vue-fastapi-backend/module_admin/service/datastd_service.py

@ -22,6 +22,8 @@ from module_admin.service.config_service import ConfigService
import requests
import pandas as pd
from config.env import AppConfig
from config.enums import RedisInitKeyConfig
class DataStdService:
"""
数据源标准服务层
@ -1551,42 +1553,114 @@ class DataStdService:
"tableData": table_data,
"children": children
}
# @classmethod
# async def get_code_map_list2(cls, request: Request, query_db: AsyncSession, id: str):
# check_model = DataStdDictModel()
# dataStdNo=await DataStdDao.get_std_main_by_id(query_db, id)
# cd_type=dataStdNo.src_sys
# check_model.data_std_no=dataStdNo.onum
# hasDict = await request.app.state.redis.get(f'{RedisInitKeyConfig.SYS_CONFIG.key}:sys.std.dict')
# # 字典
# main_list = await DataStdDao.get_data_dict_list_by_info(query_db, check_model)
# # 元数据
# meta_list = await DataStdDao.get_meta_field_list_by_onum(query_db, dataStdNo.onum)
# if not main_list:
# return { "children": []} # 如果 A 表没有数据,返回空结构
# table_data = [] # 存储表格数据
# children = [] # 存储图谱数据
# for main in main_list:
# # 组织图谱数据(A 表作为父节点)
# node = {
# "id": f"node_{main.onum}", # 使用 get() 方法访问字段
# "name": main.data_dict_cn_name, # 使用 get() 方法访问字段
# "label": main.data_dict_eng_name, # 使用 get() 方法访问字段
# "rate": 1.0,
# "status": "B",
# # "currency": main.get('dataStdNo'), # 使用 get() 方法访问字段
# "variableValue": "数据字典",
# "variableUp": True,
# "children": [],
# }
# children.append(node)
# return {
# "tableData": table_data,
# "children": children
# }
@classmethod
async def get_code_map_list2(cls, query_db: AsyncSession, id: str):
async def get_code_map_list2(cls, request: Request, query_db: AsyncSession, id: str):
check_model = DataStdDictModel()
dataStdNo=await DataStdDao.get_std_main_by_id(query_db, id)
cd_type=dataStdNo.src_sys
check_model.data_std_no=dataStdNo.onum
main_list = await DataStdDao.get_data_dict_list_by_info(query_db, check_model)
if not main_list:
return { "children": []} # 如果 A 表没有数据,返回空结构
dataStdNo = await DataStdDao.get_std_main_by_id(query_db, id)
cd_type = dataStdNo.src_sys
check_model.data_std_no = dataStdNo.onum
# Redis 判断是否有字典层
hasDict = await request.app.state.redis.get(f'{RedisInitKeyConfig.SYS_CONFIG.key}:sys.std.dict')
hasDict = hasDict.decode() if isinstance(hasDict, bytes) else hasDict
table_data = [] # 存储表格数据
children = [] # 存储图谱数据
for main in main_list:
# 组织图谱数据(A 表作为父节点)
node = {
"id": f"node_{main.onum}", # 使用 get() 方法访问字段
"name": main.data_dict_cn_name, # 使用 get() 方法访问字段
"label": main.data_dict_eng_name, # 使用 get() 方法访问字段
"rate": 1.0,
"status": "B",
# "currency": main.get('dataStdNo'), # 使用 get() 方法访问字段
"variableValue": "数据字典",
"variableUp": True,
"children": [],
}
children.append(node)
children = [] # 存储图谱数据
if hasDict == "":
# 获取字典列表
main_list = await DataStdDao.get_data_dict_list_by_info(query_db, check_model)
if not main_list:
return {"children": []}
for main in main_list:
dict_node = {
"id": f"dict_{main.onum}",
"name": main.data_dict_cn_name,
"label": main.data_dict_eng_name,
"rate": 1.0,
"status": "B",
"variableValue": "数据字典",
"variableUp": True,
"children": [],
}
# 获取该字典的元数据列表
meta_list = await DataStdDao.get_meta_field_list_by_onum(query_db, main.onum)
for meta in meta_list:
meta_node = {
"id": f"meta_{meta.onum}",
"name": meta.fld_desc,
"label": meta.fld_eng_name+""+meta.tab_eng_name+"",
"rate": 1.0,
"status": "Y",
"variableValue": "元数据",
"variableUp": False,
}
dict_node["children"].append(meta_node)
children.append(dict_node)
else:
# 获取标准直接挂载的元数据列表
meta_list = await DataStdDao.get_meta_field_list_by_onum(query_db, dataStdNo.onum)
for meta in meta_list:
meta_node = {
"id": f"meta_{meta.onum}",
"name": meta.fld_desc,
"label": meta.fld_eng_name+""+meta.tab_eng_name+"",
"rate": 1.0,
"status": "Y",
"variableValue": "元数据",
"variableUp": False,
}
children.append(meta_node)
return {
"tableData": table_data,
"children": children
}
@staticmethod
async def get_main_import_template_services():
"""

Loading…
Cancel
Save