diff --git a/vue-fastapi-backend/module_admin/controller/meta_controller.py b/vue-fastapi-backend/module_admin/controller/meta_controller.py
index 76709af..8538fa2 100644
--- a/vue-fastapi-backend/module_admin/controller/meta_controller.py
+++ b/vue-fastapi-backend/module_admin/controller/meta_controller.py
@@ -6,7 +6,7 @@ from module_admin.service.login_service import LoginService
from utils.response_util import ResponseUtil
from module_admin.service.meta_service import MetaService
-from module_admin.entity.vo.meta_vo import MetaPageObject, MetaColObject, SuppleModel
+from module_admin.entity.vo.meta_vo import MetaPageObject, MetaColObject, SuppleModel, MetaBusinessRelShipObject
metaController = APIRouter(prefix='/dasset', dependencies=[Depends(LoginService.get_current_user)])
@@ -55,3 +55,11 @@ async def getTableByTableId(request: Request,
query_db: AsyncSession = Depends(get_db)):
result = await MetaService.get_table_by_id(query_db, tableId)
return ResponseUtil.success(data=result)
+
+
+@metaController.get("/meta/business/relation")
+async def getBusinessRelationShip(request: Request,
+ meta_query: MetaBusinessRelShipObject = Depends(MetaBusinessRelShipObject.as_query),
+ query_db: AsyncSession = Depends(get_db)):
+ result = await MetaService.getBusinessRelationShip(query_db, meta_query)
+ return ResponseUtil.success(data=result)
diff --git a/vue-fastapi-backend/module_admin/dao/meta_dao.py b/vue-fastapi-backend/module_admin/dao/meta_dao.py
index 6bbf3e2..1a8d5dc 100644
--- a/vue-fastapi-backend/module_admin/dao/meta_dao.py
+++ b/vue-fastapi-backend/module_admin/dao/meta_dao.py
@@ -494,3 +494,95 @@ class MetaDao:
)).first()
return CamelCaseUtil.transform_result(result)
+ @classmethod
+ async def get_er_relation_by_table(cls, result_db: AsyncSession, ssys_cd: str, mdl_name: str, tab_eng_name: str):
+ sql = text("select a1.*,case when a2.rela_value = '1' then 'A' when a2.rela_value = '2' then 'B' end AS father "
+ "from ( select a_ssys_cd,a_mdl_name,a_tab_eng_name,a_fld_eng_name,b_ssys_cd,b_mdl_name,"
+ "b_tab_eng_name,b_fld_eng_name from t_batch_fld_relation "
+ "where rela_type = 'sub_flag' and rela_value ='1') a1 "
+ "left join t_batch_fld_relation a2 "
+ "on a1.a_ssys_cd = a2.a_ssys_cd and a1.a_mdl_name = a2.a_mdl_name "
+ "and a1.a_tab_eng_name = a2.a_tab_eng_name "
+ "and a1.a_fld_eng_name = a2.a_fld_eng_name "
+ "and a1.b_ssys_cd = a2.b_ssys_cd "
+ "and a1.b_mdl_name = a2.b_mdl_name "
+ "and a1.b_tab_eng_name = a2.b_tab_eng_name "
+ "and a1.b_fld_eng_name = a2.b_fld_eng_name "
+ "and a2.rela_type = 'set_flag' "
+ "where ((a1.a_ssys_cd,a1.a_mdl_name,a1.a_tab_eng_name,a1.a_fld_eng_name) in "
+ "(select ssys_cd,mdl_name,tab_eng_name,clas_value from t_batch_tab_clas)"
+ "or (a1.b_ssys_cd,a1.b_mdl_name,a1.b_tab_eng_name,a1.b_fld_eng_name) in "
+ "(select ssys_cd,mdl_name,tab_eng_name,clas_value from t_batch_tab_clas))"
+ "and ((a1.a_ssys_cd = :sysCode and a1.a_mdl_name = :mdlName and a1.a_tab_eng_name = :tabName)"
+ " or (a1.b_ssys_cd = :sysCode and a1.b_mdl_name = :mdlName and a1.b_tab_eng_name = :tabName))")
+ result = (await result_db.execute(sql, {"sysCode": ssys_cd,
+ "mdlName": mdl_name, "tabName": tab_eng_name}))
+ # 获取列名
+ columns = result.keys() # 返回列名列表
+
+ # 将结果转换为字典列表
+ result_as_dict = [dict(zip(columns, row)) for row in result.fetchall()]
+ return result_as_dict
+
+
+ @classmethod
+ async def get_meta_col_name_list(cls, db: AsyncSession, query_object: MetaColObject):
+ query_result = (
+ (
+ await db.execute(
+ select(
+ MetadataFldTabExtractInfo.ssys_cd,
+ MetadataFldTabExtractInfo.mdl_name,
+ MetadataFldTabExtractInfo.tab_eng_name,
+ MetadataFldTabExtractInfo.fld_eng_name,
+ MetadataFldTabExtractInfo.fld_cn_name,
+ MetadataFldTabExtractInfo.fld_type,
+ MetadataFldTabExtractInfo.pk_flag,
+ ).where(
+ MetadataFldTabExtractInfo.ssys_cd == query_object.ssys_cd,
+ MetadataFldTabExtractInfo.mdl_name == query_object.mdl_name,
+ MetadataFldTabExtractInfo.tab_eng_name == query_object.tab_name
+ ).distinct()
+ )
+ ).all()
+ )
+ return [row._asdict() for row in query_result]
+
+
+ @classmethod
+ async def get_er_relation_by_column(cls, result_db: AsyncSession, column: [], module: str):
+ sql = text("select a1.*,case when a2.rela_value = '1' then 'A' when a2.rela_value = '2' then 'B' end AS father "
+ "from ( select a_ssys_cd,a_mdl_name,a_tab_eng_name,a_fld_eng_name,b_ssys_cd,b_mdl_name,"
+ "b_tab_eng_name,b_fld_eng_name from t_batch_fld_relation "
+ "where rela_type = 'sub_flag' and rela_value ='1') a1 "
+ "left join t_batch_fld_relation a2 "
+ "on a1.a_ssys_cd = a2.a_ssys_cd and a1.a_mdl_name = a2.a_mdl_name "
+ "and a1.a_tab_eng_name = a2.a_tab_eng_name "
+ "and a1.a_fld_eng_name = a2.a_fld_eng_name "
+ "and a1.b_ssys_cd = a2.b_ssys_cd "
+ "and a1.b_mdl_name = a2.b_mdl_name "
+ "and a1.b_tab_eng_name = a2.b_tab_eng_name "
+ "and a1.b_fld_eng_name = a2.b_fld_eng_name "
+ "and a2.rela_type = 'set_flag' "
+ "where ((a1.a_ssys_cd,a1.a_mdl_name,a1.a_tab_eng_name,a1.a_fld_eng_name) "
+ "in (select ssys_cd,mdl_name,tab_eng_name,clas_value from t_batch_tab_clas)"
+ "or (a1.b_ssys_cd,a1.b_mdl_name,a1.b_tab_eng_name,a1.b_fld_eng_name) "
+ "in (select ssys_cd,mdl_name,tab_eng_name,clas_value from t_batch_tab_clas))"
+ "and ((a1.a_ssys_cd = :sysCode and a1.a_mdl_name = :mdlName "
+ "and a1.a_tab_eng_name = :tabName and a1.a_fld_eng_name = :fldName "
+ "and a2.rela_value = :rela_value)"
+ " or (a1.b_ssys_cd = :sysCode and a1.b_mdl_name = :mdlName "
+ "and a1.b_tab_eng_name = :tabName and a1.b_fld_eng_name = :fldName "
+ "and a2.rela_value = :rela_value2))")
+ result = (await result_db.execute(sql, {"sysCode": column['ssys_cd'],
+ "mdlName": column['mdl_name'], "tabName": column['tab_eng_name'],
+ "fldName": column['fld_eng_name'],
+ "rela_value": '2' if module == 'pre' else '1',
+ "rela_value2": '1' if module == 'pre' else '2'
+ }))
+ # 获取列名
+ columns = result.keys() # 返回列名列表
+
+ # 将结果转换为字典列表
+ result_as_dict = [dict(zip(columns, row)) for row in result.fetchall()]
+ return result_as_dict
\ No newline at end of file
diff --git a/vue-fastapi-backend/module_admin/entity/do/meta_do.py b/vue-fastapi-backend/module_admin/entity/do/meta_do.py
index a2b39a1..5c0658f 100644
--- a/vue-fastapi-backend/module_admin/entity/do/meta_do.py
+++ b/vue-fastapi-backend/module_admin/entity/do/meta_do.py
@@ -185,3 +185,21 @@ class MetaBatchFldClas(Base):
fld_eng_name = Column(String(200, collation='utf8_general_ci'), comment='字段英文名称')
clas_onum = Column(String(200, collation='utf8_general_ci'), comment='标签序号')
clas_value = Column(String(200, collation='utf8_general_ci'), comment='标签值')
+
+
+# class MetaBatchFldRelation(Base):
+# __tablename__ = 't_batch_fld_relation'
+# a_ssys_cd = Column(String(50, collation='utf8_general_ci'), comment='a系统代码')
+# a_data_whs_name = Column(String(50, collation='utf8_general_ci'), comment='a数据库名称')
+# a_mdl_name = Column(String(50, collation='utf8_general_ci'), comment='a模式名称')
+# a_tab_no = Column(Integer, comment='a表编号')
+# a_tab_eng_name = Column(String(200, collation='utf8_general_ci'), comment='a表英文名称')
+# a_fld_eng_name = Column(String(200, collation='utf8_general_ci'), comment='a字段英文名称')
+# b_ssys_cd = Column(String(50, collation='utf8_general_ci'), comment='b源系统代码')
+# b_data_whs_name = Column(String(50, collation='utf8_general_ci'), comment='b数据库名称')
+# b_mdl_name = Column(String(50, collation='utf8_general_ci'), comment='b数据库名称')
+# b_tab_no = Column(Integer, comment='b表编号')
+# b_tab_eng_name = Column(String(200, collation='utf8_general_ci'), comment='b表英文名称')
+# b_fld_eng_name = Column(String(200, collation='utf8_general_ci'), comment='b表英文名称')
+# rela_type = Column(String(200, collation='utf8_general_ci'), comment='关系类型')
+# rela_value = Column(String(200, collation='utf8_general_ci'), comment='关系值')
diff --git a/vue-fastapi-backend/module_admin/entity/vo/meta_vo.py b/vue-fastapi-backend/module_admin/entity/vo/meta_vo.py
index 88dfa5a..dfe312c 100644
--- a/vue-fastapi-backend/module_admin/entity/vo/meta_vo.py
+++ b/vue-fastapi-backend/module_admin/entity/vo/meta_vo.py
@@ -54,3 +54,12 @@ class SuppleModel(BaseModel):
rec_stat: Optional[str] = None
tab_clas: Optional[str] = None
columnInfo: Optional[List[ColumnSuppleModel]] = None
+
+
+@as_query
+class MetaBusinessRelShipObject(BaseModel):
+ model_config = ConfigDict(alias_generator=to_camel, from_attributes=True)
+ ssys_cd: Optional[str]
+ mdl_name: Optional[str]
+ tab_eng_name: Optional[str]
+ type: Optional[str]
diff --git a/vue-fastapi-backend/module_admin/service/meta_service.py b/vue-fastapi-backend/module_admin/service/meta_service.py
index 84b4162..5da8612 100644
--- a/vue-fastapi-backend/module_admin/service/meta_service.py
+++ b/vue-fastapi-backend/module_admin/service/meta_service.py
@@ -1,7 +1,7 @@
import json
import uuid
-from module_admin.entity.vo.meta_vo import MetaPageObject, MetaColObject, SuppleModel
+from module_admin.entity.vo.meta_vo import MetaPageObject, MetaColObject, SuppleModel, MetaBusinessRelShipObject
from module_admin.entity.do.meta_do import MetadataSuppInfo, MetadataFldSuppInfo, MetadataSuppInfoVett, \
MetadataFldSuppInfoVett, MetadataExtractInfo, MetadataFldTabExtractInfo
from module_admin.dao.meta_dao import MetaDao
@@ -207,3 +207,285 @@ class MetaService:
column['batchColClas'] = CamelCaseUtil.transform_result(col_list)
table['columnList'] = CamelCaseUtil.transform_result(columnList)
return table
+
+ @classmethod
+ async def getBusinessRelationShip(cls, result_db: AsyncSession, meta_query: MetaBusinessRelShipObject):
+ if meta_query.type == 'op':
+ # 传递关系
+ currentNodeList = None
+ if meta_query.type == 'er':
+ # er关系
+ currentNodeList = await MetaDao.get_er_relation_by_table(result_db, meta_query.ssys_cd, meta_query.mdl_name,
+ meta_query.tab_eng_name)
+ tableList = []
+ preTableList = []
+ nextTableList = []
+ relationList = []
+ if currentNodeList is not None and len(currentNodeList) > 0:
+ for currentNode in currentNodeList:
+ if len(tableList) > 0:
+ hasATable = False
+ hasBTable = False
+ for tab in tableList:
+ if tab['ssys_cd'] == currentNode['a_ssys_cd'] and tab['mdl_name'] == \
+ currentNode['a_mdl_name'] and tab['tab_eng_name'] == currentNode['a_tab_eng_name']:
+ hasATable = True
+ if tab['ssys_cd'] == currentNode['b_ssys_cd'] and tab['mdl_name'] == \
+ currentNode['b_mdl_name'] and tab['tab_eng_name'] == currentNode['b_tab_eng_name']:
+ hasBTable = True
+ if not hasATable:
+ tableList.append({"ssys_cd": currentNode['a_ssys_cd'],
+ "mdl_name": currentNode['a_mdl_name'],
+ "tab_eng_name": currentNode['a_tab_eng_name']})
+ if not hasBTable:
+ tableList.append({"ssys_cd": currentNode['b_ssys_cd'],
+ "mdl_name": currentNode['b_mdl_name'],
+ "tab_eng_name": currentNode['b_tab_eng_name']})
+ else:
+ tableList.append({"ssys_cd": currentNode['a_ssys_cd'],
+ "mdl_name": currentNode['a_mdl_name'],
+ "tab_eng_name": currentNode['a_tab_eng_name']})
+ tableList.append({"ssys_cd": currentNode['b_ssys_cd'],
+ "mdl_name": currentNode['b_mdl_name'],
+ "tab_eng_name": currentNode['b_tab_eng_name']})
+ if currentNode['a_tab_eng_name'] == meta_query.tab_eng_name:
+ if currentNode['father'] == 'A':
+ # b为下游
+ hasTable = False
+ for table in nextTableList:
+ if table['tab_eng_name'] == currentNode['b_tab_eng_name']:
+ table['column'].append({'ssys_cd': currentNode['b_ssys_cd'],
+ 'mdl_name': currentNode['b_mdl_name'],
+ 'tab_eng_name': currentNode['b_tab_eng_name'],
+ 'fld_eng_name': currentNode['b_fld_eng_name']})
+ relationList.append({"source": {"ssys_cd": currentNode['a_ssys_cd'],
+ "mdl_name": currentNode['a_mdl_name'],
+ "tab_eng_name": currentNode['a_tab_eng_name'],
+ "fld_eng_name": currentNode['a_fld_eng_name']},
+ "target": {'ssys_cd': currentNode['b_ssys_cd'],
+ 'mdl_name': currentNode['b_mdl_name'],
+ 'tab_eng_name': currentNode['b_tab_eng_name'],
+ 'fld_eng_name': currentNode['b_fld_eng_name']}})
+ hasTable = True
+ break
+ if not hasTable:
+ nextTableList.append({'ssys_cd': currentNode['b_ssys_cd'],
+ 'mdl_name': currentNode['b_mdl_name'],
+ 'tab_eng_name': currentNode['b_tab_eng_name'],
+ 'column': [{'ssys_cd': currentNode['b_ssys_cd'],
+ 'mdl_name': currentNode['b_mdl_name'],
+ 'tab_eng_name': currentNode['b_tab_eng_name'],
+ 'fld_eng_name': currentNode['b_fld_eng_name']}]})
+ relationList.append({"source": {"ssys_cd": currentNode['a_ssys_cd'],
+ "mdl_name": currentNode['a_mdl_name'],
+ "tab_eng_name": currentNode['a_tab_eng_name'],
+ "fld_eng_name": currentNode['a_fld_eng_name']},
+ "target": {'ssys_cd': currentNode['b_ssys_cd'],
+ 'mdl_name': currentNode['b_mdl_name'],
+ 'tab_eng_name': currentNode['b_tab_eng_name'],
+ 'fld_eng_name': currentNode['b_fld_eng_name']}})
+ if currentNode['father'] == 'B':
+ # b为上游
+ hasTable = False
+ for table in preTableList:
+ if table['tab_eng_name'] == currentNode['b_tab_eng_name']:
+ table['column'].append({'ssys_cd': currentNode['b_ssys_cd'],
+ 'mdl_name': currentNode['b_mdl_name'],
+ 'tab_eng_name': currentNode['b_tab_eng_name'],
+ 'fld_eng_name': currentNode['b_fld_eng_name']})
+ relationList.append({"source": {'ssys_cd': currentNode['b_ssys_cd'],
+ 'mdl_name': currentNode['b_mdl_name'],
+ 'tab_eng_name': currentNode['b_tab_eng_name'],
+ 'fld_eng_name': currentNode['b_fld_eng_name']},
+ "target": {"ssys_cd": currentNode['a_ssys_cd'],
+ "mdl_name": currentNode['a_mdl_name'],
+ "tab_eng_name": currentNode['a_tab_eng_name'],
+ "fld_eng_name": currentNode['a_fld_eng_name']}})
+ hasTable = True
+ break
+ if not hasTable:
+ preTableList.append({'ssys_cd': currentNode['b_ssys_cd'],
+ 'mdl_name': currentNode['b_mdl_name'],
+ 'tab_eng_name': currentNode['b_tab_eng_name'],
+ 'column': [{'ssys_cd': currentNode['b_ssys_cd'],
+ 'mdl_name': currentNode['b_mdl_name'],
+ 'tab_eng_name': currentNode['b_tab_eng_name'],
+ 'fld_eng_name': currentNode['b_fld_eng_name']}]})
+ relationList.append({"source": {'ssys_cd': currentNode['b_ssys_cd'],
+ 'mdl_name': currentNode['b_mdl_name'],
+ 'tab_eng_name': currentNode['b_tab_eng_name'],
+ 'fld_eng_name': currentNode['b_fld_eng_name']},
+ "target": {"ssys_cd": currentNode['a_ssys_cd'],
+ "mdl_name": currentNode['a_mdl_name'],
+ "tab_eng_name": currentNode['a_tab_eng_name'],
+ "fld_eng_name": currentNode['a_fld_eng_name']}})
+ if currentNode['b_tab_eng_name'] == meta_query.tab_eng_name:
+ if currentNode['father'] == 'A':
+ # a 为上游
+ hasTable = False
+ for table in preTableList:
+ if table['tab_eng_name'] == currentNode['a_tab_eng_name']:
+ table['column'].append({'ssys_cd': currentNode['a_ssys_cd'],
+ 'mdl_name': currentNode['a_mdl_name'],
+ 'tab_eng_name': currentNode['a_tab_eng_name'],
+ 'fld_eng_name': currentNode['a_fld_eng_name']})
+ relationList.append({"source": {"ssys_cd": currentNode['a_ssys_cd'],
+ "mdl_name": currentNode['a_mdl_name'],
+ "tab_eng_name": currentNode['a_tab_eng_name'],
+ "fld_eng_name": currentNode['a_fld_eng_name']},
+ "target": {'ssys_cd': currentNode['b_ssys_cd'],
+ 'mdl_name': currentNode['b_mdl_name'],
+ 'tab_eng_name': currentNode['b_tab_eng_name'],
+ 'fld_eng_name': currentNode['b_fld_eng_name']}})
+ hasTable = True
+ break
+ if not hasTable:
+ preTableList.append({'ssys_cd': currentNode['a_ssys_cd'],
+ 'mdl_name': currentNode['a_mdl_name'],
+ 'tab_eng_name': currentNode['a_tab_eng_name'],
+ 'column': [{'ssys_cd': currentNode['a_ssys_cd'],
+ 'mdl_name': currentNode['a_mdl_name'],
+ 'tab_eng_name': currentNode['a_tab_eng_name'],
+ 'fld_eng_name': currentNode['a_fld_eng_name']}]})
+ relationList.append({"source": {"ssys_cd": currentNode['a_ssys_cd'],
+ "mdl_name": currentNode['a_mdl_name'],
+ "tab_eng_name": currentNode['a_tab_eng_name'],
+ "fld_eng_name": currentNode['a_fld_eng_name']},
+ "target": {'ssys_cd': currentNode['b_ssys_cd'],
+ 'mdl_name': currentNode['b_mdl_name'],
+ 'tab_eng_name': currentNode['b_tab_eng_name'],
+ 'fld_eng_name': currentNode['b_fld_eng_name']}})
+ if currentNode['father'] == 'B':
+ # a 为下游
+ hasTable = False
+ for table in nextTableList:
+ if table['tab_eng_name'] == currentNode['a_tab_eng_name']:
+ table['column'].append({'ssys_cd': currentNode['a_ssys_cd'],
+ 'mdl_name': currentNode['a_mdl_name'],
+ 'tab_eng_name': currentNode['a_tab_eng_name'],
+ 'fld_eng_name': currentNode['a_fld_eng_name']})
+ relationList.append({"source": {'ssys_cd': currentNode['b_ssys_cd'],
+ 'mdl_name': currentNode['b_mdl_name'],
+ 'tab_eng_name': currentNode['b_tab_eng_name'],
+ 'fld_eng_name': currentNode['b_fld_eng_name']},
+ "target": {"ssys_cd": currentNode['a_ssys_cd'],
+ "mdl_name": currentNode['a_mdl_name'],
+ "tab_eng_name": currentNode['a_tab_eng_name'],
+ "fld_eng_name": currentNode['a_fld_eng_name']}})
+ hasTable = True
+ break
+ if not hasTable:
+ nextTableList.append({'ssys_cd': currentNode['a_ssys_cd'],
+ 'mdl_name': currentNode['a_mdl_name'],
+ 'tab_eng_name': currentNode['a_tab_eng_name'],
+ 'column': [{'ssys_cd': currentNode['a_ssys_cd'],
+ 'mdl_name': currentNode['a_mdl_name'],
+ 'tab_eng_name': currentNode['a_tab_eng_name'],
+ 'fld_eng_name': currentNode['a_fld_eng_name']}]})
+ relationList.append({"source": {'ssys_cd': currentNode['b_ssys_cd'],
+ 'mdl_name': currentNode['b_mdl_name'],
+ 'tab_eng_name': currentNode['b_tab_eng_name'],
+ 'fld_eng_name': currentNode['b_fld_eng_name']},
+ "target": {"ssys_cd": currentNode['a_ssys_cd'],
+ "mdl_name": currentNode['a_mdl_name'],
+ "tab_eng_name": currentNode['a_tab_eng_name'],
+ "fld_eng_name": currentNode['a_fld_eng_name']}})
+ if len(preTableList) > 0:
+ for preTable in preTableList:
+ for column in preTable['column']:
+ firstNodeList = await MetaDao.get_er_relation_by_column(result_db, column, "pre") # 取上游
+ for node in firstNodeList:
+ if node['a_fld_eng_name'] == column['fld_eng_name']:
+ # a为下游,取b上游
+ existTable = False
+ for tab in tableList:
+ if tab['ssys_cd'] == node['b_ssys_cd'] and tab['mdl_name'] == \
+ node['b_mdl_name'] and tab['tab_eng_name'] == node['b_tab_eng_name']:
+ existTable = True
+ if not existTable:
+ tableList.append({"ssys_cd": node['b_ssys_cd'],
+ "mdl_name": node['b_mdl_name'],
+ "tab_eng_name": node['b_tab_eng_name']})
+ relationList.append({"source": {'ssys_cd': node['b_ssys_cd'],
+ 'mdl_name': node['b_mdl_name'],
+ 'tab_eng_name': node['b_tab_eng_name'],
+ 'fld_eng_name': node['b_fld_eng_name']},
+ "target": {"ssys_cd": node['a_ssys_cd'],
+ "mdl_name": node['a_mdl_name'],
+ "tab_eng_name": node['a_tab_eng_name'],
+ "fld_eng_name": node['a_fld_eng_name']}})
+ if node['b_fld_eng_name'] == column['fld_eng_name']:
+ # b为下游,取a上游
+ existTable2 = False
+ for tab in tableList:
+ if tab['ssys_cd'] == node['a_ssys_cd'] and tab['mdl_name'] == \
+ node['a_mdl_name'] and tab['tab_eng_name'] == node['a_tab_eng_name']:
+ existTable2 = True
+ if not existTable2:
+ tableList.append({"ssys_cd": node['a_ssys_cd'],
+ "mdl_name": node['a_mdl_name'],
+ "tab_eng_name": node['a_tab_eng_name']})
+ relationList.append({"source": {"ssys_cd": node['a_ssys_cd'],
+ "mdl_name": node['a_mdl_name'],
+ "tab_eng_name": node['a_tab_eng_name'],
+ "fld_eng_name": node['a_fld_eng_name']},
+ "target": {'ssys_cd': node['b_ssys_cd'],
+ 'mdl_name': node['b_mdl_name'],
+ 'tab_eng_name': node['b_tab_eng_name'],
+ 'fld_eng_name': node['b_fld_eng_name']}})
+ if len(nextTableList) > 0:
+ for preTable in preTableList:
+ for column in preTable['column']:
+ lastNodeList = await MetaDao.get_er_relation_by_column(result_db, column, "next") # 取下游
+ for node in lastNodeList:
+ if node['a_fld_eng_name'] == column['fld_eng_name']:
+ existTable = False
+ for tab in tableList:
+ if tab['ssys_cd'] == node['b_ssys_cd'] and tab['mdl_name'] == \
+ node['b_mdl_name'] and tab['tab_eng_name'] == node['b_tab_eng_name']:
+ existTable = True
+ if not existTable:
+ tableList.append({"ssys_cd": node['b_ssys_cd'],
+ "mdl_name": node['b_mdl_name'],
+ "tab_eng_name": node['b_tab_eng_name']})
+ relationList.append({"source": {"ssys_cd": node['a_ssys_cd'],
+ "mdl_name": node['a_mdl_name'],
+ "tab_eng_name": node['a_tab_eng_name'],
+ "fld_eng_name": node['a_fld_eng_name']},
+ "target": {'ssys_cd': node['b_ssys_cd'],
+ 'mdl_name': node['b_mdl_name'],
+ 'tab_eng_name': node['b_tab_eng_name'],
+ 'fld_eng_name': node['b_fld_eng_name']}})
+ if node['b_fld_eng_name'] == column['fld_eng_name']:
+ existTable = False
+ for tab in tableList:
+ if tab['ssys_cd'] == node['a_ssys_cd'] and tab['mdl_name'] == \
+ node['a_mdl_name'] and tab['tab_eng_name'] == node['a_tab_eng_name']:
+ existTable = True
+ if not existTable:
+ tableList.append({"ssys_cd": node['a_ssys_cd'],
+ "mdl_name": node['a_mdl_name'],
+ "tab_eng_name": node['a_tab_eng_name']})
+ relationList.append({"source": {'ssys_cd': node['b_ssys_cd'],
+ 'mdl_name': node['b_mdl_name'],
+ 'tab_eng_name': node['b_tab_eng_name'],
+ 'fld_eng_name': node['b_fld_eng_name']},
+ "target": {"ssys_cd": node['a_ssys_cd'],
+ "mdl_name": node['a_mdl_name'],
+ "tab_eng_name": node['a_tab_eng_name'],
+ "fld_eng_name": node['a_fld_eng_name']}})
+ if len(tableList) > 0:
+ for table in tableList:
+ query_object = MetaColObject()
+ query_object.ssys_cd = table['ssys_cd']
+ query_object.mdl_name = table['mdl_name']
+ query_object.tab_name = table['tab_eng_name']
+ meta_result = await MetaDao.get_meta_col_name_list(result_db, query_object)
+ result = CamelCaseUtil.transform_result(meta_result)
+ table['column'] = result
+ result = {
+ "tableList": tableList,
+ "relation": relationList
+ }
+ return result
+ return None
diff --git a/vue-fastapi-frontend/src/api/meta/metaInfo.js b/vue-fastapi-frontend/src/api/meta/metaInfo.js
index 9019030..0e2eca6 100644
--- a/vue-fastapi-frontend/src/api/meta/metaInfo.js
+++ b/vue-fastapi-frontend/src/api/meta/metaInfo.js
@@ -47,6 +47,13 @@ export function postMetaSupp(data){
data: data
})
}
+export function getMetaDataRelship(data){
+ return request({
+ url:'/default-api/dasset/meta/business/relation',
+ method: 'get',
+ params: data
+ })
+}
diff --git a/vue-fastapi-frontend/src/views/dataAsset/assetDetail/index.vue b/vue-fastapi-frontend/src/views/dataAsset/assetDetail/index.vue
index 15ee86f..f26fe54 100644
--- a/vue-fastapi-frontend/src/views/dataAsset/assetDetail/index.vue
+++ b/vue-fastapi-frontend/src/views/dataAsset/assetDetail/index.vue
@@ -301,7 +301,7 @@ const handleDelete = (row) => {
}
const handleExport = () => {
- proxy.download("/system/dataAsset/export", {
+ proxy.download("/default-api/system/dataAsset/export", {
...queryParams.value,
}, `dataAsset_${new Date().getTime()}.xlsx`);
}
diff --git a/vue-fastapi-frontend/src/views/meta/metaInfo/businssRelation.vue b/vue-fastapi-frontend/src/views/meta/metaInfo/businssRelation.vue
new file mode 100644
index 0000000..0d168d1
--- /dev/null
+++ b/vue-fastapi-frontend/src/views/meta/metaInfo/businssRelation.vue
@@ -0,0 +1,691 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vue-fastapi-frontend/src/views/meta/metaInfo/index.vue b/vue-fastapi-frontend/src/views/meta/metaInfo/index.vue
index c32b63a..ef494ed 100644
--- a/vue-fastapi-frontend/src/views/meta/metaInfo/index.vue
+++ b/vue-fastapi-frontend/src/views/meta/metaInfo/index.vue
@@ -308,7 +308,23 @@
- 业务关系
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
血缘关系
@@ -540,10 +556,11 @@