diff --git a/vue-fastapi-backend/module_admin/controller/meta_controller.py b/vue-fastapi-backend/module_admin/controller/meta_controller.py
index 8538fa2..e6e27a5 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, MetaBusinessRelShipObject
+from module_admin.entity.vo.meta_vo import MetaPageObject, MetaColObject, SuppleModel, MetaBusinessRelShipObject, MetaProcQueryObject
metaController = APIRouter(prefix='/dasset', dependencies=[Depends(LoginService.get_current_user)])
@@ -63,3 +63,19 @@ async def getBusinessRelationShip(request: Request,
query_db: AsyncSession = Depends(get_db)):
result = await MetaService.getBusinessRelationShip(query_db, meta_query)
return ResponseUtil.success(data=result)
+
+
+@metaController.get("/meta/business/proc")
+async def getBusinessProc(request: Request,
+ meta_query: MetaProcQueryObject = Depends(MetaProcQueryObject.as_query),
+ query_db: AsyncSession = Depends(get_db)):
+ result = await MetaService.getMetaProc(query_db, meta_query)
+ return ResponseUtil.success(data=result)
+
+
+@metaController.get("/meta/blood/relation/{procId}")
+async def getBloodRelationShip(request: Request,
+ procId: int,
+ query_db: AsyncSession = Depends(get_db)):
+ result = await MetaService.getBloodRelationShip(query_db, procId)
+ 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 df65d24..88c0edc 100644
--- a/vue-fastapi-backend/module_admin/dao/meta_dao.py
+++ b/vue-fastapi-backend/module_admin/dao/meta_dao.py
@@ -2,7 +2,8 @@ from sqlalchemy.ext.asyncio import AsyncSession
from sqlalchemy import select, text, cast, Integer, and_, or_, outerjoin, func, join, update, desc
from module_admin.entity.vo.meta_vo import MetaPageObject, MetaColObject
from module_admin.entity.do.meta_do import MetadataExtractInfo, MetadataSuppInfo, MetadataFldTabExtractInfo, \
- MetadataFldSuppInfo, MetadataClas, MetadataSuppInfoVett, MetadataFldSuppInfoVett, MetaBatchTabClas, MetaBatchFldClas
+ MetadataFldSuppInfo, MetadataClas, MetadataSuppInfoVett, MetadataFldSuppInfoVett, MetaBatchTabClas,\
+ MetaBatchFldClas, MetaBloodAnalysis
from utils.common_util import CamelCaseUtil
import uuid
from utils.page_util import PageUtil
@@ -191,7 +192,7 @@ class MetaDao:
MetadataFldTabExtractInfo.ssys_cd == query_object.ssys_cd,
MetadataFldTabExtractInfo.mdl_name == query_object.mdl_name,
MetadataFldTabExtractInfo.tab_eng_name == query_object.tab_name
- ).distinct()
+ ).distinct().order_by(MetadataFldTabExtractInfo.fld_no)
)
).all()
)
@@ -432,6 +433,7 @@ class MetaDao:
MetadataFldTabExtractInfo.mdl_name == mdlName,
MetadataFldTabExtractInfo.tab_eng_name == tabEngName,
MetadataFldTabExtractInfo.fld_eng_name == fldEngName).distinct()
+ .order_by(MetadataFldTabExtractInfo.fld_no)
)
).scalars().first()
)
@@ -519,11 +521,12 @@ class MetaDao:
MetadataFldTabExtractInfo.fld_cn_name,
MetadataFldTabExtractInfo.fld_type,
MetadataFldTabExtractInfo.pk_flag,
+ MetadataFldTabExtractInfo.fld_no
).where(
MetadataFldTabExtractInfo.ssys_cd == query_object.ssys_cd,
MetadataFldTabExtractInfo.mdl_name == query_object.mdl_name,
MetadataFldTabExtractInfo.tab_eng_name == query_object.tab_name
- ).distinct()
+ ).distinct().order_by(MetadataFldTabExtractInfo.fld_no)
)
).all()
)
@@ -644,3 +647,28 @@ class MetaDao:
# 将结果转换为字典列表
result_as_dict = [dict(zip(columns, row)) for row in result.fetchall()]
return result_as_dict
+
+ @classmethod
+ async def get_proc_by_table(cls, result_db: AsyncSession, ssys_cd: str, mdl_name: str, tab_eng_name: str):
+ sql = text("select onum, proc_text from t_metadata_data_lineage_info"
+ " where onum in ("
+ "select proId from meta_blood_analysis "
+ "where targetSysCd = :ssysCd and targetMdlName = :mdlName and targetTableName= :tableName)")
+ result = (await result_db.execute(sql, {"ssysCd": ssys_cd, "mdlName": mdl_name, "tableName": 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_blood_by_procId(cls, result_db: AsyncSession, procId: int):
+ query_result = (
+ (
+ await result_db.execute(
+ select(MetaBloodAnalysis).where(MetaBloodAnalysis.proId == procId).distinct()
+ )
+ ).scalars().all()
+ )
+ return query_result
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 5a5f991..c85a5af 100644
--- a/vue-fastapi-backend/module_admin/entity/do/meta_do.py
+++ b/vue-fastapi-backend/module_admin/entity/do/meta_do.py
@@ -188,19 +188,25 @@ class MetaBatchFldClas(Base):
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='关系值')
+class MetaBloodAnalysis(Base):
+ """字段标签表"""
+ __tablename__ = 'meta_blood_analysis'
+
+ id = Column(String(50, collation='utf8_general_ci'), primary_key=True, comment='id')
+ proId = Column(Integer, comment='存储过程ID')
+ proName = Column(String(100, collation='utf8_general_ci'), comment='存储过程名称')
+ targetSysCd = Column(String(100, collation='utf8_general_ci'), comment='目标系统')
+ targetMdlName = Column(String(100, collation='utf8_general_ci'), comment='目标模式')
+ targetTableName = Column(String(100, collation='utf8_general_ci'), comment='目标表')
+ targetTableCnName = Column(String(100, collation='utf8_general_ci'), comment='目标表中文名')
+ targetColName = Column(String(100, collation='utf8_general_ci'), comment='目标字段名')
+ targetColCnName = Column(String(100, collation='utf8_general_ci'), comment='目标字段中文名')
+ targetColType = Column(String(100, collation='utf8_general_ci'), comment='目标字段类型')
+ sourceSysCd = Column(String(100, collation='utf8_general_ci'), comment='源系统代码')
+ sourceMdlName = Column(String(100, collation='utf8_general_ci'), comment='源系统模式')
+ sourceTableName = Column(String(100, collation='utf8_general_ci'), comment='源系统表名')
+ sourceTableCnName = Column(String(100, collation='utf8_general_ci'), comment='源系统表中文名')
+ sourceColName = Column(String(100, collation='utf8_general_ci'), comment='源系统字段名')
+ sourceColCnName = Column(String(100, collation='utf8_general_ci'), comment='源系统字段中文名')
+ sourceColType = Column(String(100, 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 dfe312c..f1faf66 100644
--- a/vue-fastapi-backend/module_admin/entity/vo/meta_vo.py
+++ b/vue-fastapi-backend/module_admin/entity/vo/meta_vo.py
@@ -63,3 +63,11 @@ class MetaBusinessRelShipObject(BaseModel):
mdl_name: Optional[str]
tab_eng_name: Optional[str]
type: Optional[str]
+
+
+@as_query
+class MetaProcQueryObject(BaseModel):
+ model_config = ConfigDict(alias_generator=to_camel, from_attributes=True)
+ ssys_cd: Optional[str]
+ mdl_name: Optional[str]
+ tab_eng_name: 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 0730c90..9306785 100644
--- a/vue-fastapi-backend/module_admin/service/meta_service.py
+++ b/vue-fastapi-backend/module_admin/service/meta_service.py
@@ -1,7 +1,8 @@
import json
import uuid
-from module_admin.entity.vo.meta_vo import MetaPageObject, MetaColObject, SuppleModel, MetaBusinessRelShipObject
+from module_admin.entity.vo.meta_vo import MetaPageObject, MetaColObject, SuppleModel, MetaBusinessRelShipObject, \
+ MetaProcQueryObject
from module_admin.entity.do.meta_do import MetadataSuppInfo, MetadataFldSuppInfo, MetadataSuppInfoVett, \
MetadataFldSuppInfoVett, MetadataExtractInfo, MetadataFldTabExtractInfo
from module_admin.dao.meta_dao import MetaDao
@@ -267,16 +268,16 @@ class MetaService:
'tab_eng_name': nextNode['b_tab_eng_name'],
'fld_eng_name': nextNode['b_fld_eng_name']},
"endArrow": True} if nextNode['father'] == 'A' else \
- {"source": {'ssys_cd': nextNode['b_ssys_cd'],
- 'mdl_name': nextNode['b_mdl_name'],
- 'tab_eng_name': nextNode['b_tab_eng_name'],
- 'fld_eng_name': nextNode['b_fld_eng_name']},
- "target": {"ssys_cd": nextNode['a_ssys_cd'],
- "mdl_name": nextNode['a_mdl_name'],
- "tab_eng_name": nextNode['a_tab_eng_name'],
- "fld_eng_name": nextNode['a_fld_eng_name']},
- "endArrow": True
- }
+ {"source": {'ssys_cd': nextNode['b_ssys_cd'],
+ 'mdl_name': nextNode['b_mdl_name'],
+ 'tab_eng_name': nextNode['b_tab_eng_name'],
+ 'fld_eng_name': nextNode['b_fld_eng_name']},
+ "target": {"ssys_cd": nextNode['a_ssys_cd'],
+ "mdl_name": nextNode['a_mdl_name'],
+ "tab_eng_name": nextNode['a_tab_eng_name'],
+ "fld_eng_name": nextNode['a_fld_eng_name']},
+ "endArrow": True
+ }
relationList.append(relation)
if currentNode['father'] == 'B':
# b为上游, 取b字段的上上游
@@ -296,15 +297,15 @@ class MetaService:
'mdl_name': preNode['b_mdl_name'],
'tab_eng_name': preNode['b_tab_eng_name'],
'fld_eng_name': preNode['b_fld_eng_name']},
- "endArrow": True} if preNode['father'] == 'A' else\
- { "source": {'ssys_cd': preNode['b_ssys_cd'],
- 'mdl_name': preNode['b_mdl_name'],
- 'tab_eng_name': preNode['b_tab_eng_name'],
- 'fld_eng_name': preNode['b_fld_eng_name']},
- "target": {"ssys_cd": preNode['a_ssys_cd'], "mdl_name": preNode['a_mdl_name'],
- "tab_eng_name": preNode['a_tab_eng_name'],
- "fld_eng_name": preNode['a_fld_eng_name']},
- "endArrow": True}
+ "endArrow": True} if preNode['father'] == 'A' else \
+ {"source": {'ssys_cd': preNode['b_ssys_cd'],
+ 'mdl_name': preNode['b_mdl_name'],
+ 'tab_eng_name': preNode['b_tab_eng_name'],
+ 'fld_eng_name': preNode['b_fld_eng_name']},
+ "target": {"ssys_cd": preNode['a_ssys_cd'], "mdl_name": preNode['a_mdl_name'],
+ "tab_eng_name": preNode['a_tab_eng_name'],
+ "fld_eng_name": preNode['a_fld_eng_name']},
+ "endArrow": True}
relationList.append(relation)
if currentNode['b_tab_eng_name'] == meta_query.tab_eng_name:
if currentNode['father'] == 'A':
@@ -439,3 +440,57 @@ class MetaService:
currentNodeList = await MetaDao.get_er_relation_by_column(result_db, col, module)
return currentNodeList
return None
+
+ @classmethod
+ async def getMetaProc(cls, result_db: AsyncSession, meta_query: MetaProcQueryObject):
+ result = await MetaDao.get_proc_by_table(result_db, meta_query.ssys_cd, meta_query.mdl_name,
+ meta_query.tab_eng_name)
+ return result
+
+ @classmethod
+ async def getBloodRelationShip(cls, result_db: AsyncSession, procId: int):
+ bloodRelations = await MetaDao.get_blood_by_procId(result_db, procId)
+ tableList = []
+ if bloodRelations is not None and len(bloodRelations) > 0:
+ for blood in bloodRelations:
+ if len(tableList) > 0:
+ exists1 = any(item["ssys_cd"].lower() == blood.targetSysCd.lower()
+ and item["mdl_name"].lower() == blood.targetMdlName.lower()
+ and item["tab_eng_name"].lower() == blood.targetTableName.lower()
+ for item in tableList)
+ if not exists1:
+ tableList.append({"ssys_cd": blood.targetSysCd.lower(),
+ "mdl_name": blood.targetMdlName.lower(),
+ "tab_eng_name": blood.targetTableName.lower()})
+ exists2 = any(item["ssys_cd"].lower() == blood.sourceSysCd.lower()
+ and item["mdl_name"].lower() == blood.sourceMdlName.lower()
+ and item["tab_eng_name"].lower() == blood.sourceTableName.lower()
+ for item in tableList)
+ if not exists2:
+ tableList.append({"ssys_cd": blood.sourceSysCd.lower(),
+ "mdl_name": blood.sourceMdlName.lower(),
+ "tab_eng_name": blood.sourceTableName.lower()})
+ else:
+ tableList.append({"ssys_cd": blood.targetSysCd.lower(),
+ "mdl_name": blood.targetMdlName.lower(),
+ "tab_eng_name": blood.targetTableName.lower()})
+ tableList.append({"ssys_cd": blood.sourceSysCd.lower(),
+ "mdl_name": blood.sourceMdlName.lower(),
+ "tab_eng_name": blood.sourceTableName.lower()})
+ 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)
+ result1 = CamelCaseUtil.transform_result(meta_result)
+ tableCnName = await MetaDao.get_meta_table_cn_name(result_db, table['ssys_cd'], table['mdl_name'],
+ table['tab_eng_name'])
+ table['tab_cn_name'] = tableCnName
+ table['column'] = result1
+ result = {
+ "relation": bloodRelations,
+ "tableList": tableList
+ }
+ return result
diff --git a/vue-fastapi-frontend/src/api/meta/metaInfo.js b/vue-fastapi-frontend/src/api/meta/metaInfo.js
index 0e2eca6..f389b78 100644
--- a/vue-fastapi-frontend/src/api/meta/metaInfo.js
+++ b/vue-fastapi-frontend/src/api/meta/metaInfo.js
@@ -54,6 +54,19 @@ export function getMetaDataRelship(data){
params: data
})
}
+export function getMetaDataBloodRelship(data){
+ return request({
+ url:'/default-api/dasset/meta/blood/relation/'+data,
+ method: 'get',
+ })
+}
+export function getProcData(param){
+ return request({
+ url:'/default-api/dasset/meta/business/proc',
+ method: 'get',
+ params: param
+ })
+}
diff --git a/vue-fastapi-frontend/src/components/codemirror/SQLCodeMirror.vue b/vue-fastapi-frontend/src/components/codemirror/SQLCodeMirror.vue
index 638bef5..51c9e38 100644
--- a/vue-fastapi-frontend/src/components/codemirror/SQLCodeMirror.vue
+++ b/vue-fastapi-frontend/src/components/codemirror/SQLCodeMirror.vue
@@ -1,5 +1,5 @@
-
+
+
+
\ 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 f5d59a1..a869e97 100644
--- a/vue-fastapi-frontend/src/views/meta/metaInfo/index.vue
+++ b/vue-fastapi-frontend/src/views/meta/metaInfo/index.vue
@@ -334,9 +334,13 @@
- 血缘关系
+
+
+
+
+
-
+
@@ -565,12 +569,13 @@