Browse Source

元数据系统代码改成系统id存储

master
xueyinfei 3 weeks ago
parent
commit
fa6c0deb84
  1. 174
      vue-fastapi-backend/module_admin/dao/meta_dao.py
  2. 20
      vue-fastapi-backend/module_admin/entity/do/meta_do.py
  3. 45
      vue-fastapi-backend/module_admin/entity/do/metadata_config_do.py
  4. 10
      vue-fastapi-backend/module_admin/entity/vo/meta_vo.py
  5. 132
      vue-fastapi-backend/module_admin/service/meta_service.py
  6. 6
      vue-fastapi-frontend/src/views/meta/metaInfo/bloodRelation.vue
  7. 49
      vue-fastapi-frontend/src/views/meta/metaInfo/index.vue
  8. 163
      vue-fastapi-frontend/src/views/metadataConfig/metaclas/index.vue

174
vue-fastapi-backend/module_admin/dao/meta_dao.py

@ -14,29 +14,28 @@ from datetime import datetime
class MetaDao:
@classmethod
async def get_meta_tab_clas(cls, db: AsyncSession, sysCode: str, mdlName: str, tabName: str):
async def get_meta_tab_clas(cls, db: AsyncSession, sysId: int, mdlName: str, tabName: str):
query_result = (
(
await db.execute(
select(
MetaBatchTabClas.onum,
MetaBatchTabClas.ssys_cd,
MetaBatchTabClas.ssys_id,
MetaBatchTabClas.data_whs_name,
MetaBatchTabClas.mdl_name,
MetaBatchTabClas.tab_no,
MetaBatchTabClas.tab_eng_name,
MetaBatchTabClas.clas_onum,
MetaBatchTabClas.clas_value,
MetadataClas.clas_pri_clas,
MetadataClas.clas_scd_clas,
MetadataClas.clas_thre_clas,
MetadataClas.clas_tmpl,
MetadataClas.clas_eff_flag,
MetadataClas.rec_subm_prsn,
MetadataClas.clas_name
MetadataClas.clas_name,
MetadataClas.belt_batch_content,
).join(
MetadataClas, MetaBatchTabClas.clas_onum == MetadataClas.clas_onum
)
.where(MetaBatchTabClas.ssys_cd == sysCode,
.where(MetaBatchTabClas.ssys_id == sysId,
MetaBatchTabClas.mdl_name == mdlName,
MetaBatchTabClas.tab_eng_name == tabName).distinct()
)
@ -45,13 +44,13 @@ class MetaDao:
return query_result
@classmethod
async def get_meta_fld_clas(cls, db: AsyncSession, sysCode: str, mdlName: str, tabName: str, fldName: str):
async def get_meta_fld_clas(cls, db: AsyncSession, sysId: int, mdlName: str, tabName: str, fldName: str):
query_result = (
(
await db.execute(
select(
MetaBatchFldClas.onum,
MetaBatchFldClas.ssys_cd,
MetaBatchFldClas.ssys_id,
MetaBatchFldClas.data_whs_name,
MetaBatchFldClas.mdl_name,
MetaBatchFldClas.tab_no,
@ -59,16 +58,15 @@ class MetaDao:
MetaBatchFldClas.fld_eng_name,
MetaBatchFldClas.clas_onum,
MetaBatchFldClas.clas_value,
MetadataClas.clas_pri_clas,
MetadataClas.clas_scd_clas,
MetadataClas.clas_thre_clas,
MetadataClas.clas_tmpl,
MetadataClas.clas_eff_flag,
MetadataClas.rec_subm_prsn,
MetadataClas.belt_batch_content,
MetadataClas.clas_name
).join(
MetadataClas, MetaBatchFldClas.clas_onum == MetadataClas.clas_onum
)
.where(MetaBatchFldClas.ssys_cd == sysCode,
.where(MetaBatchFldClas.ssys_id == sysId,
MetaBatchFldClas.mdl_name == mdlName,
MetaBatchFldClas.tab_eng_name == tabName,
MetaBatchFldClas.fld_eng_name == fldName).distinct()
@ -88,7 +86,7 @@ class MetaDao:
MetadataExtractInfo.onum.label('extract_onum'),
MetadataExtractInfo.extract_ver_num,
MetadataExtractInfo.ver_desc.label('extract_ver_desc'),
MetadataExtractInfo.ssys_cd,
MetadataExtractInfo.ssys_id,
MetadataExtractInfo.data_whs_name,
MetadataExtractInfo.mdl_name,
MetadataExtractInfo.tab_no,
@ -109,26 +107,26 @@ class MetaDao:
MetadataSuppInfo.upd_time.label('supp_upd_time'),
).join(MetadataSuppInfo,
and_(
MetadataExtractInfo.ssys_cd == MetadataSuppInfo.ssys_cd,
MetadataExtractInfo.ssys_id == MetadataSuppInfo.ssys_id,
MetadataExtractInfo.mdl_name == MetadataSuppInfo.mdl_name,
MetadataExtractInfo.tab_eng_name == MetadataSuppInfo.tab_eng_name
), isouter=True)
.join(
MetadataFldTabExtractInfo,
and_(
MetadataExtractInfo.ssys_cd == MetadataFldTabExtractInfo.ssys_cd,
MetadataExtractInfo.ssys_id == MetadataFldTabExtractInfo.ssys_id,
MetadataExtractInfo.mdl_name == MetadataFldTabExtractInfo.mdl_name,
MetadataExtractInfo.tab_eng_name == MetadataFldTabExtractInfo.tab_eng_name
), isouter=True)
.join(
MetadataFldSuppInfo,
and_(
MetadataExtractInfo.ssys_cd == MetadataFldSuppInfo.ssys_cd,
MetadataExtractInfo.ssys_id == MetadataFldSuppInfo.ssys_id,
MetadataExtractInfo.mdl_name == MetadataFldSuppInfo.mdl_name,
MetadataExtractInfo.tab_eng_name == MetadataFldSuppInfo.tab_eng_name
), isouter=True)
.where(
MetadataExtractInfo.ssys_cd == query_object.ssys_cd if query_object.ssys_cd else True,
MetadataExtractInfo.ssys_id == query_object.ssys_id if query_object.ssys_id else True,
MetadataExtractInfo.mdl_name == query_object.mdl_name if query_object.mdl_name else True,
or_(MetadataExtractInfo.tab_eng_name.like(f'%{query_object.tab_name}%'),
MetadataExtractInfo.tab_cn_name.like(f'%{query_object.tab_name}%'),
@ -156,7 +154,7 @@ class MetaDao:
select(
MetadataFldTabExtractInfo.onum.label('extract_onum'),
MetadataFldTabExtractInfo.extract_ver_num,
MetadataFldTabExtractInfo.ssys_cd,
MetadataFldTabExtractInfo.ssys_id,
MetadataFldTabExtractInfo.data_whs_name,
MetadataFldTabExtractInfo.mdl_name,
MetadataFldTabExtractInfo.tab_no,
@ -186,7 +184,7 @@ class MetaDao:
.join(
MetadataFldSuppInfo,
and_(
MetadataFldTabExtractInfo.ssys_cd == MetadataFldSuppInfo.ssys_cd,
MetadataFldTabExtractInfo.ssys_id == MetadataFldSuppInfo.ssys_id,
MetadataFldTabExtractInfo.mdl_name == MetadataFldSuppInfo.mdl_name,
MetadataFldTabExtractInfo.tab_eng_name == MetadataFldSuppInfo.tab_eng_name,
MetadataFldTabExtractInfo.fld_eng_name == MetadataFldSuppInfo.fld_eng_name
@ -197,7 +195,7 @@ class MetaDao:
DataStdDict.onum == MetadataFldSuppInfo.data_dict_id
), isouter=True
).where(
MetadataFldTabExtractInfo.ssys_cd == query_object.ssys_cd,
MetadataFldTabExtractInfo.ssys_id == query_object.ssys_id,
MetadataFldTabExtractInfo.mdl_name == query_object.mdl_name,
MetadataFldTabExtractInfo.tab_eng_name == query_object.tab_name
).distinct().order_by(MetadataFldTabExtractInfo.fld_no)
@ -218,11 +216,11 @@ class MetaDao:
return query_result
@classmethod
async def get_lastest_meta_data_supp_vett(cls, db: AsyncSession, ssys_cd: str, mdl_name: str, tab_eng_name: str):
async def get_lastest_meta_data_supp_vett(cls, db: AsyncSession, ssys_id: int, mdl_name: str, tab_eng_name: str):
query_result = (
(
await db.execute(
select(MetadataSuppInfoVett).where(MetadataSuppInfoVett.ssys_cd == ssys_cd,
select(MetadataSuppInfoVett).where(MetadataSuppInfoVett.ssys_id == ssys_id,
MetadataSuppInfoVett.mdl_name == mdl_name,
MetadataSuppInfoVett.tab_eng_name == tab_eng_name)
.order_by(desc(MetadataSuppInfoVett.apply_time))
@ -251,7 +249,7 @@ class MetaDao:
async def insertMetadataSuppInfo(cls, table: MetadataSuppInfoVett, db: AsyncSession):
suppTable = MetadataSuppInfo()
suppTable.onum = uuid.uuid4()
suppTable.ssys_cd = table.ssys_cd
suppTable.ssys_id = table.ssys_id
suppTable.mdl_name = table.mdl_name
suppTable.tab_eng_name = table.tab_eng_name
suppTable.tab_crrct_name = table.tab_crrct_name
@ -304,7 +302,7 @@ class MetaDao:
MetadataFldSuppInfoVett.data_dict_id == DataStdDict.onum, # 假设关联条件
isouter=True, # 可选,是否左连接
).where(
MetadataFldSuppInfoVett.ssys_cd == tableInfo.ssys_cd,
MetadataFldSuppInfoVett.ssys_id == tableInfo.ssys_id,
MetadataFldSuppInfoVett.mdl_name == tableInfo.mdl_name,
MetadataFldSuppInfoVett.tab_eng_name == tableInfo.tab_eng_name,
MetadataFldSuppInfoVett.apply_time == tableInfo.apply_time
@ -319,7 +317,7 @@ class MetaDao:
result.append({
"onum": vett_info.onum,
"crrct_ver_num": vett_info.crrct_ver_num,
"ssys_cd": vett_info.ssys_cd,
"ssys_id": vett_info.ssys_id,
"mdl_name": vett_info.mdl_name,
"tab_eng_name": vett_info.tab_eng_name,
"fld_eng_name": vett_info.fld_eng_name,
@ -342,11 +340,11 @@ class MetaDao:
return result
@classmethod
async def get_supp_table_by_vett(cls, sysCode: str, mdlName: str, tableName: str, db: AsyncSession):
async def get_supp_table_by_vett(cls, ssys_id: int, mdlName: str, tableName: str, db: AsyncSession):
query_result = (
(
await db.execute(
select(MetadataSuppInfo).where(MetadataSuppInfo.ssys_cd == sysCode,
select(MetadataSuppInfo).where(MetadataSuppInfo.ssys_id == ssys_id,
MetadataSuppInfo.mdl_name == mdlName,
MetadataSuppInfo.tab_eng_name == tableName).distinct()
)
@ -355,11 +353,11 @@ class MetaDao:
return query_result
@classmethod
async def get_meta_table(cls, sysCode: str, mdlName: str, tableName: str, db: AsyncSession):
async def get_meta_table(cls, ssys_id: int, mdlName: str, tableName: str, db: AsyncSession):
query_result = (
(
await db.execute(
select(MetadataExtractInfo).where(MetadataExtractInfo.ssys_cd == sysCode,
select(MetadataExtractInfo).where(MetadataExtractInfo.ssys_id == ssys_id,
MetadataExtractInfo.mdl_name == mdlName,
MetadataExtractInfo.tab_eng_name == tableName).distinct()
)
@ -401,7 +399,7 @@ class MetaDao:
async def insertMetadataFldSuppInfo(cls, column: MetadataFldSuppInfoVett, db: AsyncSession):
suppColumn = MetadataFldSuppInfo()
suppColumn.onum = uuid.uuid4()
suppColumn.ssys_cd = column.ssys_cd
suppColumn.ssys_id = column.ssys_id
suppColumn.mdl_name = column.mdl_name
suppColumn.tab_eng_name = column.tab_eng_name
suppColumn.fld_eng_name = column.fld_eng_name
@ -421,7 +419,7 @@ class MetaDao:
@classmethod
async def get_meta_col_supp_vett(cls, table: MetadataSuppInfoVett, db: AsyncSession):
sql_query = text("select max(apply_time) from t_metadata_fld_supp_info_vett where ssys_cd ='" + table.ssys_cd +
sql_query = text("select max(apply_time) from t_metadata_fld_supp_info_vett where ssys_id ='" + table.ssys_id +
"' and mdl_name = '" + table.mdl_name + "' and tab_eng_name = '" + table.tab_eng_name +
"'")
maxTime = (await db.execute(sql_query)).scalar()
@ -430,7 +428,7 @@ class MetaDao:
(
await db.execute(
select(MetadataFldSuppInfoVett)
.where(MetadataFldSuppInfoVett.ssys_cd == table.ssys_cd,
.where(MetadataFldSuppInfoVett.ssys_id == table.ssys_id,
MetadataFldSuppInfoVett.mdl_name == table.mdl_name,
MetadataFldSuppInfoVett.tab_eng_name == table.tab_eng_name,
MetadataFldSuppInfoVett.apply_time == maxTime).distinct()
@ -445,7 +443,7 @@ class MetaDao:
(
await db.execute(
select(MetadataFldSuppInfo)
.where(MetadataFldSuppInfo.ssys_cd == column.ssys_cd,
.where(MetadataFldSuppInfo.ssys_id == column.ssys_id,
MetadataFldSuppInfo.mdl_name == column.mdl_name,
MetadataFldSuppInfo.tab_eng_name == column.tab_eng_name,
MetadataFldSuppInfo.fld_eng_name == column.fld_eng_name).distinct()
@ -455,12 +453,12 @@ class MetaDao:
return query_result
@classmethod
async def get_supp_column_by_columnInfo(cls, sysCode, mdlName, tabEngName, fldEngName, db: AsyncSession):
async def get_supp_column_by_columnInfo(cls, ssys_id: int, mdlName: str, tabEngName: str, fldEngName: str, db: AsyncSession):
query_result = (
(
await db.execute(
select(MetadataFldSuppInfo)
.where(MetadataFldSuppInfo.ssys_cd == sysCode,
.where(MetadataFldSuppInfo.ssys_id == ssys_id,
MetadataFldSuppInfo.mdl_name == mdlName,
MetadataFldSuppInfo.tab_eng_name == tabEngName,
MetadataFldSuppInfo.fld_eng_name == fldEngName).distinct()
@ -471,12 +469,12 @@ class MetaDao:
return query_result
@classmethod
async def get_meta_column(cls, sysCode, mdlName, tabEngName, fldEngName, db: AsyncSession):
async def get_meta_column(cls, ssys_id: int, mdlName: str, tabEngName: str, fldEngName: str, db: AsyncSession):
query_result = (
(
await db.execute(
select(MetadataFldTabExtractInfo)
.where(MetadataFldTabExtractInfo.ssys_cd == sysCode,
.where(MetadataFldTabExtractInfo.ssys_id == ssys_id,
MetadataFldTabExtractInfo.mdl_name == mdlName,
MetadataFldTabExtractInfo.tab_eng_name == tabEngName,
MetadataFldTabExtractInfo.fld_eng_name == fldEngName).distinct()
@ -498,7 +496,7 @@ class MetaDao:
MetadataExtractInfo.onum.label('extract_onum'),
MetadataExtractInfo.extract_ver_num,
MetadataExtractInfo.ver_desc.label('extract_ver_desc'),
MetadataExtractInfo.ssys_cd,
MetadataExtractInfo.ssys_id,
MetadataExtractInfo.data_whs_name,
MetadataExtractInfo.mdl_name,
MetadataExtractInfo.tab_no,
@ -519,21 +517,21 @@ class MetaDao:
MetadataSuppInfo.upd_time.label('supp_upd_time'),
).join(MetadataSuppInfo,
and_(
MetadataExtractInfo.ssys_cd == MetadataSuppInfo.ssys_cd,
MetadataExtractInfo.ssys_id == MetadataSuppInfo.ssys_id,
MetadataExtractInfo.mdl_name == MetadataSuppInfo.mdl_name,
MetadataExtractInfo.tab_eng_name == MetadataSuppInfo.tab_eng_name
), isouter=True)
.join(
MetadataFldTabExtractInfo,
and_(
MetadataExtractInfo.ssys_cd == MetadataFldTabExtractInfo.ssys_cd,
MetadataExtractInfo.ssys_id == MetadataFldTabExtractInfo.ssys_id,
MetadataExtractInfo.mdl_name == MetadataFldTabExtractInfo.mdl_name,
MetadataExtractInfo.tab_eng_name == MetadataFldTabExtractInfo.tab_eng_name
), isouter=True)
.join(
MetadataFldSuppInfo,
and_(
MetadataExtractInfo.ssys_cd == MetadataFldSuppInfo.ssys_cd,
MetadataExtractInfo.ssys_id == MetadataFldSuppInfo.ssys_id,
MetadataExtractInfo.mdl_name == MetadataFldSuppInfo.mdl_name,
MetadataExtractInfo.tab_eng_name == MetadataFldSuppInfo.tab_eng_name
), isouter=True)
@ -544,14 +542,14 @@ class MetaDao:
return CamelCaseUtil.transform_result(result)
@classmethod
async def get_meta_table_cn_name(cls, db: AsyncSession, sysCode, mdlName, tabEngName):
async def get_meta_table_cn_name(cls, db: AsyncSession, ssys_id: int, mdlName: str, tabEngName: str):
sql = text("select case when a.tab_cn_name is null then b.tab_crrct_name"
" when a.tab_cn_name is not null then a.tab_cn_name end as tab_cn_name"
" from t_metadata_extract_info a "
"left join t_metadata_supp_info b "
"on a.ssys_cd = b.ssys_cd and a.mdl_name=b.mdl_name and a.tab_eng_name=b.tab_crrct_name "
"where a.ssys_cd = :sysCode and a.mdl_name = :mdlName and a.tab_eng_name = :tabEngName")
result = (await db.execute(sql, {"sysCode": sysCode, "mdlName": mdlName, "tabEngName": tabEngName}))
"on a.ssys_id = b.ssys_id and a.mdl_name=b.mdl_name and a.tab_eng_name=b.tab_crrct_name "
"where a.ssys_id = :ssys_id and a.mdl_name = :mdlName and a.tab_eng_name = :tabEngName")
result = (await db.execute(sql, {"ssys_id": ssys_id, "mdlName": mdlName, "tabEngName": tabEngName}))
return result.first().tab_cn_name
@ -561,7 +559,7 @@ class MetaDao:
(
await db.execute(
select(
MetadataFldTabExtractInfo.ssys_cd,
MetadataFldTabExtractInfo.ssys_id,
MetadataFldTabExtractInfo.mdl_name,
MetadataFldTabExtractInfo.tab_eng_name,
MetadataFldTabExtractInfo.fld_eng_name,
@ -570,7 +568,7 @@ class MetaDao:
MetadataFldTabExtractInfo.pk_flag,
MetadataFldTabExtractInfo.fld_no
).where(
MetadataFldTabExtractInfo.ssys_cd == query_object.ssys_cd,
MetadataFldTabExtractInfo.ssys_id == query_object.ssys_id,
MetadataFldTabExtractInfo.mdl_name == query_object.mdl_name,
MetadataFldTabExtractInfo.tab_eng_name == query_object.tab_name
).distinct().order_by(MetadataFldTabExtractInfo.fld_no)
@ -580,18 +578,18 @@ class MetaDao:
return [row._asdict() for row in query_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("with tmp as (select a1.*,row_number()over(partition by b_ssys_cd,b_mdl_name,b_tab_eng_name,"
async def get_er_relation_by_table(cls, result_db: AsyncSession, ssys_id: int, mdl_name: str, tab_eng_name: str):
sql = text("with tmp as (select a1.*,row_number()over(partition by b_ssys_id,b_mdl_name,b_tab_eng_name,"
"b_fld_eng_name order by concat(op_relation,',',jd_relation) desc) as rn "
"from t_batch_er_relation_step1 a1)select a1.*,'A' AS father from tmp a1 where a1.rn = 1 "
" and a1.a_ssys_cd = :sysCode and a1.a_mdl_name = :mdlName and a1.a_tab_eng_name = :tabName")
sql2 = text("with tmp as (select a1.*,row_number()over(partition by b_ssys_cd,b_mdl_name,b_tab_eng_name,"
" and a1.a_ssys_id = :ssys_id and a1.a_mdl_name = :mdlName and a1.a_tab_eng_name = :tabName")
sql2 = text("with tmp as (select a1.*,row_number()over(partition by b_ssys_id,b_mdl_name,b_tab_eng_name,"
"b_fld_eng_name order by concat(op_relation,',',jd_relation) desc) as rn "
"from t_batch_er_relation_step1 a1)select a1.*,'A' AS father from tmp a1 where a1.rn = 1 "
" and 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,
" and a1.b_ssys_id = :ssys_id and a1.b_mdl_name = :mdlName and a1.b_tab_eng_name = :tabName")
result = (await result_db.execute(sql, {"ssys_id": ssys_id,
"mdlName": mdl_name, "tabName": tab_eng_name}))
result2 = (await result_db.execute(sql2, {"sysCode": ssys_cd,
result2 = (await result_db.execute(sql2, {"ssys_id": ssys_id,
"mdlName": mdl_name, "tabName": tab_eng_name}))
# 获取列名
columns = result.keys() # 返回列名列表
@ -604,28 +602,28 @@ class MetaDao:
return result3
@classmethod
async def get_op_relation_by_table(cls, result_db: AsyncSession, ssys_cd: str, mdl_name: str, tab_eng_name: str):
async def get_op_relation_by_table(cls, result_db: AsyncSession, ssys_id: int, 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 distinct 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 ( 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 "
" from (select distinct a_ssys_id ,a_mdl_name ,a_tab_eng_name ,a_fld_eng_name ,b_ssys_id,b_mdl_name,"
"b_tab_eng_name ,b_fld_eng_name from ( select a_ssys_id ,a_mdl_name ,a_tab_eng_name ,a_fld_eng_name,"
"b_ssys_id,b_mdl_name ,b_tab_eng_name ,b_fld_eng_name from t_batch_fld_relation "
"where rela_type in ('jd_relation','op_relation') and rela_value not in ('0') union all "
"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,"
"SELECT a_ssys_id ,a_mdl_name ,a_tab_eng_name ,a_fld_eng_name ,b_ssys_id ,b_mdl_name,b_tab_eng_name,"
"b_fld_eng_name FROM t_batch_fld_relation t ,JSON_TABLE(replace(t.rela_value,'''','\"'),'$[*]' "
"COLUMNS (value_num DOUBLE PATH '$.value')) AS j group by 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 "
"COLUMNS (value_num DOUBLE PATH '$.value')) AS j group by a_ssys_id ,a_mdl_name ,a_tab_eng_name ,"
"a_fld_eng_name ,b_ssys_id ,b_mdl_name ,b_tab_eng_name ,b_fld_eng_name "
"having max(j.value_num) > 0.1) b1 ) 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 "
"on a1.a_ssys_id = a2.a_ssys_id 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_ssys_id = a2.b_ssys_id 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' left join t_batch_fld_clas a4 on a1.a_ssys_cd = a4.ssys_cd "
"and a2.rela_type = 'set_flag' left join t_batch_fld_clas a4 on a1.a_ssys_id = a4.ssys_id "
"and a1.a_mdl_name = a4.mdl_name and a1.a_tab_eng_name = a4.tab_eng_name "
"and a1.a_fld_eng_name = a4.fld_eng_name and a4.clas_onum = '2001001002' "
"where coalesce(a4.clas_value,' ') <> '日期时间类'"
" 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,
" and ((a1.a_ssys_id = :ssys_id and a1.a_mdl_name = :mdlName and a1.a_tab_eng_name = :tabName) "
" or (a1.b_ssys_id = :ssys_id and a1.b_mdl_name = :mdlName and a1.b_tab_eng_name = :tabName))")
result = (await result_db.execute(sql, {"ssys_id": ssys_id,
"mdlName": mdl_name, "tabName": tab_eng_name}))
# 获取列名
columns = result.keys() # 返回列名列表
@ -637,18 +635,18 @@ class MetaDao:
@classmethod
async def get_er_relation_by_column(cls, result_db: AsyncSession, column: {}, module: str):
if module == 'pre':
sql = text("with tmp as (select a1.*,row_number()over(partition by b_ssys_cd,b_mdl_name,b_tab_eng_name,"
sql = text("with tmp as (select a1.*,row_number()over(partition by b_ssys_id,b_mdl_name,b_tab_eng_name,"
"b_fld_eng_name order by concat(op_relation,',',jd_relation) desc) as rn "
"from t_batch_er_relation_step1 a1)select a1.*,'A' AS father from tmp a1 where a1.rn = 1 "
"and a1.b_ssys_cd = :sysCode and a1.b_mdl_name = :mdlName "
"and a1.b_ssys_id = :ssys_id and a1.b_mdl_name = :mdlName "
"and a1.b_tab_eng_name = :tabName and a1.b_fld_eng_name = :fldName ")
else:
sql = text("with tmp as (select a1.*,row_number()over(partition by b_ssys_cd,b_mdl_name,b_tab_eng_name,"
sql = text("with tmp as (select a1.*,row_number()over(partition by b_ssys_id,b_mdl_name,b_tab_eng_name,"
"b_fld_eng_name order by concat(op_relation,',',jd_relation) desc) as rn "
"from t_batch_er_relation_step1 a1)select a1.*,'A' AS father from tmp a1 where a1.rn = 1 "
"and a1.a_ssys_cd = :sysCode and a1.a_mdl_name = :mdlName "
"and a1.a_ssys_id = :ssys_id and a1.a_mdl_name = :mdlName "
"and a1.a_tab_eng_name = :tabName and a1.a_fld_eng_name = :fldName ")
result = (await result_db.execute(sql, {"sysCode": column['ssys_cd'],
result = (await result_db.execute(sql, {"ssys_id": column['ssys_id'],
"mdlName": column['mdl_name'], "tabName": column['tab_eng_name'],
"fldName": column['fld_eng_name']
}))
@ -661,28 +659,28 @@ class MetaDao:
@classmethod
async def get_op_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 distinct 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 ( 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 "
" from (select distinct a_ssys_id ,a_mdl_name ,a_tab_eng_name ,a_fld_eng_name ,b_ssys_id,b_mdl_name,"
"b_tab_eng_name ,b_fld_eng_name from ( select a_ssys_id ,a_mdl_name ,a_tab_eng_name ,a_fld_eng_name,"
"b_ssys_id,b_mdl_name ,b_tab_eng_name ,b_fld_eng_name from t_batch_fld_relation "
"where rela_type in ('jd_relation','op_relation') and rela_value not in ('0') union all "
"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,"
"SELECT a_ssys_id ,a_mdl_name ,a_tab_eng_name ,a_fld_eng_name ,b_ssys_id ,b_mdl_name,b_tab_eng_name,"
"b_fld_eng_name FROM t_batch_fld_relation t ,JSON_TABLE(replace(t.rela_value,'''','\"'),'$[*]' "
"COLUMNS (value_num DOUBLE PATH '$.value')) AS j group by 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 "
"COLUMNS (value_num DOUBLE PATH '$.value')) AS j group by a_ssys_id ,a_mdl_name ,a_tab_eng_name ,"
"a_fld_eng_name ,b_ssys_id ,b_mdl_name ,b_tab_eng_name ,b_fld_eng_name "
"having max(j.value_num) > 0.1) b1 ) 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 "
"on a1.a_ssys_id = a2.a_ssys_id 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_ssys_id = a2.b_ssys_id 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' left join t_batch_fld_clas a4 on a1.a_ssys_cd = a4.ssys_cd "
"and a2.rela_type = 'set_flag' left join t_batch_fld_clas a4 on a1.a_ssys_id = a4.ssys_id "
"and a1.a_mdl_name = a4.mdl_name and a1.a_tab_eng_name = a4.tab_eng_name "
"and a1.a_fld_eng_name = a4.fld_eng_name and a4.clas_onum = '2001001002' "
"where coalesce(a4.clas_value,' ') <> '日期时间类'"
"and ((a1.a_ssys_cd = :sysCode and a1.a_mdl_name = :mdlName and a1.a_tab_eng_name = :tabName "
"and ((a1.a_ssys_id = :ssys_id 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 "
" or (a1.b_ssys_id = :ssys_id 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'],
result = (await result_db.execute(sql, {"ssys_id": column['ssys_id'],
"mdlName": column['mdl_name'], "tabName": column['tab_eng_name'],
"fldName": column['fld_eng_name'],
"rela_value": '2' if module == 'pre' else '1',
@ -696,12 +694,12 @@ class MetaDao:
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):
async def get_proc_by_table(cls, result_db: AsyncSession, ssys_id: int, 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}))
"where targetSysId = :ssys_id and targetMdlName = :mdlName and targetTableName= :tableName)")
result = (await result_db.execute(sql, {"ssys_id": ssys_id, "mdlName": mdl_name, "tableName": tab_eng_name}))
# 获取列名
columns = result.keys() # 返回列名列表
# 将结果转换为字典列表

20
vue-fastapi-backend/module_admin/entity/do/meta_do.py

@ -13,7 +13,7 @@ class MetadataExtractInfo(Base):
onum = Column(Integer, primary_key=True, comment='唯一编号')
extract_ver_num = Column(String(50, collation='utf8_general_ci'), comment='采集版本号')
ver_desc = Column(String(250, collation='utf8_general_ci'), comment='版本描述')
ssys_cd = Column(String(50, collation='utf8_general_ci'), comment='系统代码')
ssys_id = Column(Integer, comment='系统代码')
data_whs_name = Column(String(50, collation='utf8_general_ci'), comment='数据仓库名称')
mdl_name = Column(String(50, collation='utf8_general_ci'), comment='模式名称')
tab_no = Column(Integer, comment='表编号')
@ -33,7 +33,7 @@ class MetadataSuppInfo(Base):
# onum = Column(Integer, primary_key=True, comment='唯一编号')
onum = Column(String(36, collation='utf8mb4_unicode_ci'), primary_key=True, comment='唯一编号')
crrct_ver_num = Column(String(50, collation='utf8_general_ci'), comment='补录版本号')
ssys_cd = Column(String(50, collation='utf8_general_ci'), comment='系统代码')
ssys_id = Column(Integer, comment='系统代码')
mdl_name = Column(String(50, collation='utf8_general_ci'), comment='模型名称')
tab_eng_name = Column(String(250, collation='utf8_general_ci'), comment='表英文名称')
tab_crrct_name = Column(String(250, collation='utf8_general_ci'), comment='表补录名称')
@ -55,7 +55,7 @@ class MetadataSuppInfoVett(Base):
# onum = Column(Integer, primary_key=True, comment='唯一编号')
onum = Column(String(36, collation='utf8mb4_unicode_ci'), primary_key=True, comment='唯一编号')
crrct_ver_num = Column(String(50, collation='utf8_general_ci'), comment='补录版本号')
ssys_cd = Column(String(50, collation='utf8_general_ci'), comment='系统代码')
ssys_id = Column(Integer, comment='系统代码')
mdl_name = Column(String(50, collation='utf8_general_ci'), comment='模型名称')
tab_eng_name = Column(String(250, collation='utf8_general_ci'), comment='表英文名称')
tab_crrct_name = Column(String(250, collation='utf8_general_ci'), comment='表补录名称')
@ -97,7 +97,7 @@ class MetadataFldTabExtractInfo(Base):
onum = Column(Integer, primary_key=True, comment='唯一编号')
extract_ver_num = Column(String(50, collation='utf8_general_ci'), comment='采集版本号')
ssys_cd = Column(String(50, collation='utf8_general_ci'), comment='系统代码')
ssys_id = Column(Integer, comment='系统代码')
data_whs_name = Column(String(255, collation='utf8_general_ci'), comment='数据仓库名称')
mdl_name = Column(String(255, collation='utf8_general_ci'), comment='模块名称')
tab_no = Column(String(50, collation='utf8_general_ci'), comment='表编号')
@ -120,7 +120,7 @@ class MetadataFldSuppInfo(Base):
onum = Column(String(50, collation='utf8_general_ci'), primary_key=True, comment='唯一编号')
crrct_ver_num = Column(String(50, collation='utf8_general_ci'), comment='补充版本号')
ssys_cd = Column(String(50, collation='utf8_general_ci'), comment='系统代码')
ssys_id = Column(Integer, comment='系统代码')
mdl_name = Column(String(255, collation='utf8_general_ci'), comment='模块名称')
tab_eng_name = Column(String(250, collation='utf8_general_ci'), comment='表英文名称')
fld_eng_name = Column(String(255, collation='utf8_general_ci'), comment='字段英文名称')
@ -144,7 +144,7 @@ class MetadataFldSuppInfoVett(Base):
onum = Column(String(50, collation='utf8_general_ci'), primary_key=True, comment='唯一编号')
crrct_ver_num = Column(String(50, collation='utf8_general_ci'), comment='补充版本号')
ssys_cd = Column(String(50, collation='utf8_general_ci'), comment='系统代码')
ssys_id = Column(Integer, comment='系统代码')
mdl_name = Column(String(255, collation='utf8_general_ci'), comment='模块名称')
tab_eng_name = Column(String(250, collation='utf8_general_ci'), comment='表英文名称')
fld_eng_name = Column(String(255, collation='utf8_general_ci'), comment='字段英文名称')
@ -169,7 +169,7 @@ class MetaBatchTabClas(Base):
__tablename__ = 't_batch_tab_clas'
onum = Column(Integer, primary_key=True, comment='序号(主键自增)')
ssys_cd = Column(String(50, collation='utf8_general_ci'), comment='源系统代码')
ssys_id = Column(Integer, comment='源系统id')
data_whs_name = Column(String(50, collation='utf8_general_ci'), comment='数据库名称')
mdl_name = Column(String(50, collation='utf8_general_ci'), comment='模式名称')
tab_no = Column(Integer, comment='表编号')
@ -183,7 +183,7 @@ class MetaBatchFldClas(Base):
__tablename__ = 't_batch_fld_clas'
onum = Column(Integer, primary_key=True, comment='序号(主键自增)')
ssys_cd = Column(String(50, collation='utf8_general_ci'), comment='源系统代码')
ssys_id = Column(Integer, comment='源系统代码')
data_whs_name = Column(String(50, collation='utf8_general_ci'), comment='数据库名称')
mdl_name = Column(String(50, collation='utf8_general_ci'), comment='模式名称')
tab_no = Column(Integer, comment='表编号')
@ -200,14 +200,14 @@ class MetaBloodAnalysis(Base):
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='目标系统')
targetSysId = 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='源系统代码')
sourceSysId = 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='源系统表中文名')

45
vue-fastapi-backend/module_admin/entity/do/metadata_config_do.py

@ -1,5 +1,5 @@
from datetime import datetime
from sqlalchemy import Column,Text,Date, String, Integer, DateTime, TIMESTAMP,Boolean, func,DECIMAL
from sqlalchemy import Column, String, Integer, DateTime, TIMESTAMP, Boolean, func, DECIMAL, Text, Date
from config.database import Base
@ -15,7 +15,7 @@ from config.database import Base
# # clas_thre_clas = Column(String(50), default=None, comment='标签三级分类')
# clas_name = Column(String(200), default=None, comment='标签名称')
# clas_tmpl = Column(String(200), default=None, comment='标签模版')
# belt_batch_content = Column(Integer, default=None, comment='分类')
# belt_batch_content = Column(Integer, default=None, comment='分类')
# clas_eff_flag = Column(String(1), default=None, comment='标签有效标志')
# rec_subm_prsn = Column(String(64), default=None, comment='记录提交人')
# upd_time = Column(TIMESTAMP, default=func.now(), onupdate=func.now(), nullable=True, comment='更新时间')
@ -32,7 +32,8 @@ class MetadataSec(Base):
sec_level_name = Column(String(50), default=None, comment='等级名称')
sec_level_desc = Column(String(200), default=None, comment='等级说明')
sec_level_summary = Column(String(200), comment='等级简介')
class SecuBizConfigRela(Base):
"""
业务域配置关联表 ORM 映射类对应表 t_secu_biz_config_rela
@ -43,7 +44,9 @@ class SecuBizConfigRela(Base):
biz_onum = Column(Integer, nullable=True, comment="业务域id")
tab_onum = Column(Integer, nullable=True, comment="表id")
create_by = Column(String(20), nullable=True, comment="创建者")
create_time = Column(DateTime, nullable=True, comment="创建时间")
create_time = Column(DateTime, nullable=True, comment="创建时间")
class TaskBizConfigRela(Base):
"""
业务域调度配置关联表 ORM 映射类对应表 t_task_biz_config_rela
@ -54,7 +57,8 @@ class TaskBizConfigRela(Base):
biz_onum = Column(Integer, nullable=True, comment="业务域id")
tab_onum = Column(Integer, nullable=True, comment="表id")
create_by = Column(String(20), nullable=True, comment="创建者")
create_time = Column(DateTime, nullable=True, comment="创建时间")
create_time = Column(DateTime, nullable=True, comment="创建时间")
class SecuBizPermiConfig(Base):
__tablename__ = "t_secu_biz_permi_config"
@ -69,7 +73,8 @@ class SecuBizPermiConfig(Base):
create_time = Column(DateTime, nullable=True, comment="创建时间")
update_by = Column(String(20), nullable=True, comment="更新者")
update_time = Column(DateTime, nullable=True, comment="更新时间")
class SecuBizConfig(Base):
__tablename__ = "t_secu_biz_config"
@ -81,6 +86,8 @@ class SecuBizConfig(Base):
create_time = Column(DateTime, nullable=True, comment="创建时间")
update_by = Column(String(20), nullable=True, comment="更新者")
update_time = Column(DateTime, nullable=True, comment="更新时间")
class TaskBizConfig(Base):
__tablename__ = "t_task_biz_config"
@ -91,11 +98,13 @@ class TaskBizConfig(Base):
create_by = Column(String(20), nullable=True, comment="创建者")
create_time = Column(DateTime, nullable=True, comment="创建时间")
update_by = Column(String(20), nullable=True, comment="更新者")
update_time = Column(DateTime, nullable=True, comment="更新时间")
update_time = Column(DateTime, nullable=True, comment="更新时间")
status = Column(String(10), nullable=False, default="OFFLINE", comment="状态")
ds_time = Column(DateTime, nullable=True, comment="调度时间")
ds_ids = Column(String(50), nullable=True, comment="任务ID")
schId = Column(String(50), nullable=True, comment="调度id")
schId = Column(String(50), nullable=True, comment="调度id")
class BatchBusiLabelConfig(Base):
"""
批处理业务标签配置表 ORM 映射类对应表 t_batch_busi_label_config
@ -107,9 +116,11 @@ class BatchBusiLabelConfig(Base):
regex_pattern = Column(String(255), nullable=True, comment="正则表达式")
ssys_cd = Column(String(50), nullable=True)
mdl_name = Column(String(50), nullable=True)
ratio = Column(DECIMAL(10, 4), nullable=True)
upd_by = Column(String(50), nullable=True)
upd_time = Column(DateTime, nullable=True, comment='更新时间')
ratio = Column(DECIMAL(10, 4), nullable=True)
upd_by = Column(String(50), nullable=True)
upd_time = Column(DateTime, nullable=True, comment='更新时间')
class BatchDataopLabelConfig(Base):
"""
批处理数据操作标签配置表 ORM 映射类对应表 t_batch_dataop_label_config
@ -127,8 +138,10 @@ class BatchDataopLabelConfig(Base):
config7 = Column(DECIMAL(10, 4), nullable=True, comment="参数7")
ssys_cd = Column(String(50), nullable=True)
mdl_name = Column(String(50), nullable=True)
upd_by = Column(String(50), nullable=True)
upd_by = Column(String(50), nullable=True)
upd_time = Column(DateTime, nullable=True, comment='更新时间')
class BatchDatatypeLabelConfig(Base):
"""
批处理字段类型标签配置表 ORM 映射类对应表 t_batch_datatype_label_config
@ -139,9 +152,11 @@ class BatchDatatypeLabelConfig(Base):
datatype = Column(String(100), nullable=True, comment="字段类型")
ratio = Column(DECIMAL(10, 4), nullable=True, comment="比率")
ssys_cd = Column(String(50), nullable=True)
mdl_name = Column(String(50), nullable=True)
upd_by = Column(String(50), nullable=True)
mdl_name = Column(String(50), nullable=True)
upd_by = Column(String(50), nullable=True)
upd_time = Column(DateTime, nullable=True, comment='更新时间')
class DatasecConfig(Base):
"""
数据安全参数配置 ORM 映射类对应表 t_datasec_config
@ -185,4 +200,4 @@ class DataAstContentRela(Base):
rela_eff_begn_date = Column(Date, nullable=True, comment='关系生效开始日期')
rela_eff_end_date = Column(Date, nullable=True, comment='关系生效结束日期')
upd_prsn = Column(String(255), nullable=False, comment='更新人员')
rela_status = Column(String(18), nullable=True, comment='关系状态')
rela_status = Column(String(18), nullable=True, comment='关系状态')

10
vue-fastapi-backend/module_admin/entity/vo/meta_vo.py

@ -7,7 +7,7 @@ from pydantic.alias_generators import to_camel
class MetaModel(BaseModel):
model_config = ConfigDict(alias_generator=to_camel, from_attributes=True)
ssys_cd: Optional[str] = Field(default=None, description='系统名称')
ssys_id: Optional[int] = Field(default=None, description='系统名称')
mdl_name: Optional[str] = Field(default=None, description='模式名称')
tab_name: Optional[str] = Field(default=None, description='表名')
tab_type: Optional[str] = Field(default=None, description='表类型')
@ -25,7 +25,7 @@ class MetaPageObject(MetaModel):
@as_query
class MetaColObject(BaseModel):
model_config = ConfigDict(alias_generator=to_camel, from_attributes=True)
ssys_cd: Optional[str] = Field(default=None, description='系统名称')
ssys_id: Optional[int] = Field(default=None, description='系统名称')
mdl_name: Optional[str] = Field(default=None, description='模式名称')
tab_name: Optional[str] = Field(default=None, description='表名')
@ -46,7 +46,7 @@ class ColumnSuppleModel(BaseModel):
class SuppleModel(BaseModel):
model_config = ConfigDict(alias_generator=to_camel, from_attributes=True)
ssys_cd: Optional[str] = None
ssys_id: Optional[int] = None
mdl_name: Optional[str] = None
tab_eng_name: Optional[str] = None
tab_crrct_name: Optional[str] = None
@ -61,7 +61,7 @@ class SuppleModel(BaseModel):
@as_query
class MetaBusinessRelShipObject(BaseModel):
model_config = ConfigDict(alias_generator=to_camel, from_attributes=True)
ssys_cd: Optional[str]
ssys_id: Optional[int]
mdl_name: Optional[str]
tab_eng_name: Optional[str]
type: Optional[str]
@ -70,6 +70,6 @@ class MetaBusinessRelShipObject(BaseModel):
@as_query
class MetaProcQueryObject(BaseModel):
model_config = ConfigDict(alias_generator=to_camel, from_attributes=True)
ssys_cd: Optional[str]
ssys_id: Optional[int]
mdl_name: Optional[str]
tab_eng_name: Optional[str]

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

@ -41,7 +41,7 @@ class MetaService:
meta_rel_list = await MetaDao.get_meta_rel_list(result_db, query_object)
if meta_rel_list and len(meta_rel_list.rows) > 0:
for table in meta_rel_list.rows:
tab_list = await MetaDao.get_meta_tab_clas(result_db, table['ssysCd'], table['mdlName'],
tab_list = await MetaDao.get_meta_tab_clas(result_db, table['ssysId'], table['mdlName'],
table['tabEngName'])
table['batchTabClas'] = CamelCaseUtil.transform_result(tab_list)
return meta_rel_list
@ -49,7 +49,7 @@ class MetaService:
meta_rel_list = await MetaDao.get_meta_rel_list(result_db, query_object)
if meta_rel_list and len(meta_rel_list.rows) > 0:
for table in meta_rel_list.rows:
tab_list = await MetaDao.get_meta_tab_clas(result_db, table['ssysCd'], table['mdlName'],
tab_list = await MetaDao.get_meta_tab_clas(result_db, table['ssysId'], table['mdlName'],
table['tabEngName'])
table['batchTabClas'] = CamelCaseUtil.transform_result(tab_list)
return meta_rel_list
@ -59,7 +59,7 @@ class MetaService:
meta_result = await MetaDao.get_meta_col_list(result_db, query_object)
result = CamelCaseUtil.transform_result(meta_result)
for column in result:
fld_list = await MetaDao.get_meta_fld_clas(result_db, column['ssysCd'], column['mdlName'],
fld_list = await MetaDao.get_meta_fld_clas(result_db, column['ssysId'], column['mdlName'],
column['tabEngName'], column['fldEngName'])
column['batchFldClas'] = CamelCaseUtil.transform_result(fld_list)
if column['dataSecLvl'] is None and column['dataDictId'] is not None:
@ -76,10 +76,10 @@ class MetaService:
@classmethod
async def meta_supp(cls, result_db: AsyncSession, supple: SuppleModel, current_user: CurrentUserModel):
# 0,暂存 waiting,申请中,pending审核中,succeed,rejected已审核,canceled已取消
hasTable = await MetaDao.get_lastest_meta_data_supp_vett(result_db, supple.ssys_cd, supple.mdl_name,
hasTable = await MetaDao.get_lastest_meta_data_supp_vett(result_db, supple.ssys_id, supple.mdl_name,
supple.tab_eng_name)
oldTable = await MetaDao.get_supp_table_by_vett(supple.ssys_cd, supple.mdl_name, supple.tab_eng_name, result_db)
tableInfo = await MetaDao.get_meta_table(supple.ssys_cd, supple.mdl_name, supple.tab_eng_name, result_db)
oldTable = await MetaDao.get_supp_table_by_vett(supple.ssys_id, supple.mdl_name, supple.tab_eng_name, result_db)
tableInfo = await MetaDao.get_meta_table(supple.ssys_id, supple.mdl_name, supple.tab_eng_name, result_db)
tableOnum = uuid.uuid4()
if hasTable is not None:
if hasTable.apply_status == 'waiting':
@ -89,7 +89,7 @@ class MetaService:
applyTime = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
suppTableInfo = MetadataSuppInfoVett()
suppTableInfo.onum = tableOnum
suppTableInfo.ssys_cd = supple.ssys_cd
suppTableInfo.ssys_id = supple.ssys_id
suppTableInfo.mdl_name = supple.mdl_name
suppTableInfo.tab_eng_name = supple.tab_eng_name
suppTableInfo.tab_crrct_name = supple.tab_crrct_name
@ -104,18 +104,18 @@ class MetaService:
await MetaDao.insertMetadataSuppInfoVett(suppTableInfo, result_db)
if supple.columnInfo is not None and len(supple.columnInfo) > 0:
for column in supple.columnInfo:
oldColumn = await MetaDao.get_supp_column_by_columnInfo(supple.ssys_cd, supple.mdl_name,
oldColumn = await MetaDao.get_supp_column_by_columnInfo(supple.ssys_id, supple.mdl_name,
supple.tab_eng_name,
column.fld_eng_name, result_db)
data_dict_name = ''
if oldColumn and oldColumn.data_dict_id and oldColumn.data_dict_id != '':
oldDict = await DataStdDao.get_data_dict_by_id(result_db, oldColumn.data_dict_id)
data_dict_name = oldDict.data_dict_cn_name if oldDict else ''
columnInfo = await MetaDao.get_meta_column(supple.ssys_cd, supple.mdl_name, supple.tab_eng_name,
columnInfo = await MetaDao.get_meta_column(supple.ssys_id, supple.mdl_name, supple.tab_eng_name,
column.fld_eng_name, result_db)
suppColumnInfo = MetadataFldSuppInfoVett()
suppColumnInfo.onum = uuid.uuid4()
suppColumnInfo.ssys_cd = supple.ssys_cd
suppColumnInfo.ssys_id = supple.ssys_id
suppColumnInfo.mdl_name = supple.mdl_name
suppColumnInfo.tab_eng_name = supple.tab_eng_name
suppColumnInfo.fld_eng_name = column.fld_eng_name
@ -146,7 +146,7 @@ class MetaService:
tableDict = dict(
onum=tableInfo.onum,
crrctVerNum=table.crrct_ver_num if table else None,
ssysCd=tableInfo.ssys_cd,
ssysId=tableInfo.ssys_id,
mdlName=tableInfo.mdl_name,
tabEngName=tableInfo.tab_eng_name,
tabCnName=tableInfo.tab_cn_name,
@ -168,7 +168,7 @@ class MetaService:
columnDict = dict(
onum=columnInfo.onum,
crrctVerNum=column.crrct_ver_num if column and column.crrct_ver_num else None,
ssysCd=columnInfo.ssys_cd,
ssysId=columnInfo.ssys_id,
mdlName=columnInfo.mdl_name,
tabEngName=columnInfo.tab_eng_name,
fldEngName=columnInfo.fld_eng_name,
@ -195,13 +195,13 @@ class MetaService:
async def get_meta_apply_detail_services(cls, result_db: AsyncSession, businessId: str):
tableData = await MetaDao.get_supp_table_vett_by_id(businessId, result_db)
table = CamelCaseUtil.transform_result(tableData)
clas_list = await MetaDao.get_meta_tab_clas(result_db, tableData.ssys_cd, tableData.mdl_name,
clas_list = await MetaDao.get_meta_tab_clas(result_db, tableData.ssys_id, tableData.mdl_name,
tableData.tab_eng_name)
table['batchTabClas'] = CamelCaseUtil.transform_result(clas_list)
columnData = await MetaDao.get_supp_column_vett_by_tableInfo(result_db, tableData)
column_list = CamelCaseUtil.transform_result(columnData)
for column in column_list:
col_list = await MetaDao.get_meta_fld_clas(result_db, column['ssysCd'], column['mdlName'],
col_list = await MetaDao.get_meta_fld_clas(result_db, column['ssysId'], column['mdlName'],
column['tabEngName'], column['fldEngName'])
column['batchColClas'] = CamelCaseUtil.transform_result(col_list)
result = dict(
@ -213,16 +213,16 @@ class MetaService:
@classmethod
async def get_table_by_id(cls, result_db: AsyncSession, tableId: int):
table = await MetaDao.get_meta_table_by_id(tableId, result_db)
tab_list = await MetaDao.get_meta_tab_clas(result_db, table['ssysCd'], table['mdlName'],
tab_list = await MetaDao.get_meta_tab_clas(result_db, table['ssysId'], table['mdlName'],
table['tabEngName'])
table['batchTabClas'] = CamelCaseUtil.transform_result(tab_list)
colQuery = MetaColObject()
colQuery.ssys_cd = table['ssysCd']
colQuery.ssys_id = table['ssysId']
colQuery.mdl_name = table['mdlName']
colQuery.tab_name = table['tabEngName']
columnList = await MetaDao.get_meta_col_list(result_db, colQuery)
for column in columnList:
col_list = await MetaDao.get_meta_fld_clas(result_db, column['ssys_cd'], column['mdl_name'],
col_list = await MetaDao.get_meta_fld_clas(result_db, column['ssys_id'], column['mdl_name'],
column['tab_eng_name'], column['fld_eng_name'])
column['batchColClas'] = CamelCaseUtil.transform_result(col_list)
table['columnList'] = CamelCaseUtil.transform_result(columnList)
@ -230,37 +230,37 @@ class MetaService:
@classmethod
async def getBusinessRelationShip(cls, result_db: AsyncSession, meta_query: MetaBusinessRelShipObject):
currentNodeList = await cls.getRelationByTable(result_db, meta_query.ssys_cd, meta_query.mdl_name,
currentNodeList = await cls.getRelationByTable(result_db, meta_query.ssys_id, meta_query.mdl_name,
meta_query.tab_eng_name, meta_query.type)
relationList = []
if currentNodeList is not None and len(currentNodeList) > 0:
for currentNode in currentNodeList:
if currentNode['father'] is None:
relation = {"source": {"ssys_cd": currentNode['a_ssys_cd'],
relation = {"source": {"ssys_id": currentNode['a_ssys_id'],
"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'],
"target": {'ssys_id': currentNode['b_ssys_id'],
'mdl_name': currentNode['b_mdl_name'],
'tab_eng_name': currentNode['b_tab_eng_name'],
'fld_eng_name': currentNode['b_fld_eng_name']},
"endArrow": False}
else:
relation = {"source": {"ssys_cd": currentNode['a_ssys_cd'],
relation = {"source": {"ssys_id": currentNode['a_ssys_id'],
"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'],
"target": {'ssys_id': currentNode['b_ssys_id'],
'mdl_name': currentNode['b_mdl_name'],
'tab_eng_name': currentNode['b_tab_eng_name'],
'fld_eng_name': currentNode['b_fld_eng_name']},
"endArrow": True} if \
currentNode['father'] == 'A' else {
"source": {'ssys_cd': currentNode['b_ssys_cd'],
"source": {'ssys_id': currentNode['b_ssys_id'],
'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'],
"target": {"ssys_id": currentNode['a_ssys_id'],
"mdl_name": currentNode['a_mdl_name'],
"tab_eng_name": currentNode['a_tab_eng_name'],
"fld_eng_name": currentNode['a_fld_eng_name']},
@ -270,7 +270,7 @@ class MetaService:
if currentNode['a_tab_eng_name'] == meta_query.tab_eng_name:
if currentNode['father'] == 'A':
# b为下游,取b字段的下下游
nextNodeList = (await cls.getRelationByColumn(result_db, currentNode['b_ssys_cd'],
nextNodeList = (await cls.getRelationByColumn(result_db, currentNode['b_ssys_id'],
currentNode['b_mdl_name'],
currentNode['b_tab_eng_name'],
currentNode['b_fld_eng_name'],
@ -278,20 +278,20 @@ class MetaService:
'next'))
if nextNodeList and len(nextNodeList) > 0:
for nextNode in nextNodeList:
relation = {"source": {"ssys_cd": nextNode['a_ssys_cd'],
relation = {"source": {"ssys_id": nextNode['a_ssys_id'],
"mdl_name": nextNode['a_mdl_name'],
"tab_eng_name": nextNode['a_tab_eng_name'],
"fld_eng_name": nextNode['a_fld_eng_name']},
"target": {'ssys_cd': nextNode['b_ssys_cd'],
"target": {'ssys_id': nextNode['b_ssys_id'],
'mdl_name': nextNode['b_mdl_name'],
'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'],
{"source": {'ssys_id': nextNode['b_ssys_id'],
'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'],
"target": {"ssys_id": nextNode['a_ssys_id'],
"mdl_name": nextNode['a_mdl_name'],
"tab_eng_name": nextNode['a_tab_eng_name'],
"fld_eng_name": nextNode['a_fld_eng_name']},
@ -300,7 +300,7 @@ class MetaService:
relationList.append(relation)
if currentNode['father'] == 'B':
# b为上游, 取b字段的上上游
preNodeList = await cls.getRelationByColumn(result_db, currentNode['b_ssys_cd'],
preNodeList = await cls.getRelationByColumn(result_db, currentNode['b_ssys_id'],
currentNode['b_mdl_name'],
currentNode['b_tab_eng_name'],
currentNode['b_fld_eng_name'],
@ -308,20 +308,20 @@ class MetaService:
'pre')
if preNodeList and len(preNodeList) > 0:
for preNode in preNodeList:
relation = {"source": {"ssys_cd": preNode['a_ssys_cd'],
relation = {"source": {"ssys_id": preNode['a_ssys_id'],
"mdl_name": preNode['a_mdl_name'],
"tab_eng_name": preNode['a_tab_eng_name'],
"fld_eng_name": preNode['a_fld_eng_name']},
"target": {'ssys_cd': preNode['b_ssys_cd'],
"target": {'ssys_id': preNode['b_ssys_id'],
'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'],
{"source": {'ssys_id': preNode['b_ssys_id'],
'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'],
"target": {"ssys_id": preNode['a_ssys_id'], "mdl_name": preNode['a_mdl_name'],
"tab_eng_name": preNode['a_tab_eng_name'],
"fld_eng_name": preNode['a_fld_eng_name']},
"endArrow": True}
@ -329,7 +329,7 @@ class MetaService:
if currentNode['b_tab_eng_name'] == meta_query.tab_eng_name:
if currentNode['father'] == 'A':
# a 为上游,取a字段的上上游
preNodeList = await cls.getRelationByColumn(result_db, currentNode['a_ssys_cd'],
preNodeList = await cls.getRelationByColumn(result_db, currentNode['a_ssys_id'],
currentNode['a_mdl_name'],
currentNode['a_tab_eng_name'],
currentNode['a_fld_eng_name'],
@ -337,49 +337,49 @@ class MetaService:
'pre')
if preNodeList and len(preNodeList) > 0:
for preNode in preNodeList:
relation = {"source": {"ssys_cd": preNode['a_ssys_cd'],
relation = {"source": {"ssys_id": preNode['a_ssys_id'],
"mdl_name": preNode['a_mdl_name'],
"tab_eng_name": preNode['a_tab_eng_name'],
"fld_eng_name": preNode['a_fld_eng_name']},
"target": {'ssys_cd': preNode['b_ssys_cd'],
"target": {'ssys_id': preNode['b_ssys_id'],
'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'],
"source": {'ssys_id': preNode['b_ssys_id'],
'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'],
"target": {"ssys_id": preNode['a_ssys_id'], "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['father'] == 'B':
# a 为下游,取a字段的下下游
nextNodeList = await cls.getRelationByColumn(result_db, currentNode['a_ssys_cd'],
nextNodeList = await cls.getRelationByColumn(result_db, currentNode['a_ssys_id'],
currentNode['a_mdl_name'],
currentNode['a_tab_eng_name'],
currentNode['a_fld_eng_name'],
meta_query.type,
'next')
for nextNode in nextNodeList:
relation = {"source": {"ssys_cd": nextNode['a_ssys_cd'],
relation = {"source": {"ssys_id": nextNode['a_ssys_id'],
"mdl_name": nextNode['a_mdl_name'],
"tab_eng_name": nextNode['a_tab_eng_name'],
"fld_eng_name": nextNode['a_fld_eng_name']},
"target": {'ssys_cd': nextNode['b_ssys_cd'],
"target": {'ssys_id': nextNode['b_ssys_id'],
'mdl_name': nextNode['b_mdl_name'],
'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'],
"source": {'ssys_id': nextNode['b_ssys_id'],
'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'],
"target": {"ssys_id": nextNode['a_ssys_id'], "mdl_name": nextNode['a_mdl_name'],
"tab_eng_name": nextNode['a_tab_eng_name'],
"fld_eng_name": nextNode['a_fld_eng_name']},
"endArrow": True}
@ -391,38 +391,38 @@ class MetaService:
hasSourceTable = False
hasTargetTable = False
for tab in tableList:
if tab['ssys_cd'] == relation['source']['ssys_cd'] and tab['mdl_name'] == \
if tab['ssys_id'] == relation['source']['ssys_id'] and tab['mdl_name'] == \
relation['source']['mdl_name'] and tab['tab_eng_name'] == \
relation['source']['tab_eng_name']:
hasSourceTable = True
if tab['ssys_cd'] == relation['target']['ssys_cd'] and tab['mdl_name'] == \
if tab['ssys_id'] == relation['target']['ssys_id'] and tab['mdl_name'] == \
relation['target']['mdl_name'] and tab['tab_eng_name'] == \
relation['target']['tab_eng_name']:
hasTargetTable = True
if not hasSourceTable:
tableList.append({"ssys_cd": relation['source']['ssys_cd'],
tableList.append({"ssys_id": relation['source']['ssys_id'],
"mdl_name": relation['source']['mdl_name'],
"tab_eng_name": relation['source']['tab_eng_name']})
if not hasTargetTable:
tableList.append({"ssys_cd": relation['target']['ssys_cd'],
tableList.append({"ssys_id": relation['target']['ssys_id'],
"mdl_name": relation['target']['mdl_name'],
"tab_eng_name": relation['target']['tab_eng_name']})
else:
tableList.append({"ssys_cd": relation['source']['ssys_cd'],
tableList.append({"ssys_id": relation['source']['ssys_id'],
"mdl_name": relation['source']['mdl_name'],
"tab_eng_name": relation['source']['tab_eng_name']})
tableList.append({"ssys_cd": relation['target']['ssys_cd'],
tableList.append({"ssys_id": relation['target']['ssys_id'],
"mdl_name": relation['target']['mdl_name'],
"tab_eng_name": relation['target']['tab_eng_name']})
if len(tableList) > 0:
for table in tableList:
query_object = MetaColObject()
query_object.ssys_cd = table['ssys_cd']
query_object.ssys_id = table['ssys_id']
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)
tableCnName = await MetaDao.get_meta_table_cn_name(result_db, table['ssys_cd'], table['mdl_name'],
tableCnName = await MetaDao.get_meta_table_cn_name(result_db, table['ssys_id'], table['mdl_name'],
table['tab_eng_name'])
table['tab_cn_name'] = tableCnName
table['column'] = result
@ -433,21 +433,21 @@ class MetaService:
return result
@classmethod
async def getRelationByTable(cls, result_db: AsyncSession, ssys_cd: str, mdl_name: str,
async def getRelationByTable(cls, result_db: AsyncSession, ssys_id: int, mdl_name: str,
tab_eng_name: str, rel_type: str):
if rel_type == 'op':
currentNodeList = await MetaDao.get_op_relation_by_table(result_db, ssys_cd, mdl_name, tab_eng_name)
currentNodeList = await MetaDao.get_op_relation_by_table(result_db, ssys_id, mdl_name, tab_eng_name)
return currentNodeList
if rel_type == 'er':
currentNodeList = await MetaDao.get_er_relation_by_table(result_db, ssys_cd, mdl_name, tab_eng_name)
currentNodeList = await MetaDao.get_er_relation_by_table(result_db, ssys_id, mdl_name, tab_eng_name)
return currentNodeList
return None
@classmethod
async def getRelationByColumn(cls, result_db: AsyncSession, ssys_cd: str, mdl_name: str,
async def getRelationByColumn(cls, result_db: AsyncSession, ssys_id: int, mdl_name: str,
tab_eng_name: str, fld_eng_name: str, rel_type: str, module: str):
col = {
'ssys_cd': ssys_cd,
'ssys_id': ssys_id,
'mdl_name': mdl_name,
'tab_eng_name': tab_eng_name,
'fld_eng_name': fld_eng_name
@ -462,7 +462,7 @@ class MetaService:
@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,
result = await MetaDao.get_proc_by_table(result_db, meta_query.ssys_id, meta_query.mdl_name,
meta_query.tab_eng_name)
return result
@ -473,38 +473,38 @@ class MetaService:
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()
exists1 = any(item["ssys_id"] == blood.targetSysId
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(),
tableList.append({"ssys_id": blood.targetSysId,
"mdl_name": blood.targetMdlName.lower(),
"tab_eng_name": blood.targetTableName.lower()})
exists2 = any(item["ssys_cd"].lower() == blood.sourceSysCd.lower()
exists2 = any(item["ssys_id"] == blood.sourceSysId
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(),
tableList.append({"ssys_id": blood.sourceSysId,
"mdl_name": blood.sourceMdlName.lower(),
"tab_eng_name": blood.sourceTableName.lower()})
else:
tableList.append({"ssys_cd": blood.targetSysCd.lower(),
tableList.append({"ssys_id": blood.targetSysId,
"mdl_name": blood.targetMdlName.lower(),
"tab_eng_name": blood.targetTableName.lower()})
tableList.append({"ssys_cd": blood.sourceSysCd.lower(),
tableList.append({"ssys_id": blood.sourceSysId,
"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.ssys_id = table['ssys_id']
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'],
tableCnName = await MetaDao.get_meta_table_cn_name(result_db, table['ssys_id'], table['mdl_name'],
table['tab_eng_name'])
table['tab_cn_name'] = tableCnName
table['column'] = result1

6
vue-fastapi-frontend/src/views/meta/metaInfo/bloodRelation.vue

@ -653,7 +653,7 @@ watch(
for (let i = 0; i < props.data.tableList.length; i++) {
let table = props.data.tableList[i]
let g6Tab = {
id: table.ssys_cd+"-"+table.mdl_name+"-"+table.tab_eng_name,
id: table.ssys_id+"-"+table.mdl_name+"-"+table.tab_eng_name,
label: table.tab_eng_name + ((table.tab_cn_name && table.tab_cn_name.length>0)?"("+table.tab_cn_name+")":""),
attrs:[],
collapsed:true
@ -670,8 +670,8 @@ watch(
for (let i = 0; i < props.data.relation.length; i++) {
let relation = props.data.relation[i]
let key = relation.targetColName.toLowerCase()
let tableKey = relation.sourceSysCd.toLowerCase()+"-"+relation.sourceMdlName.toLowerCase()+"-"+relation.sourceTableName.toLowerCase()
let nodeId = relation.targetSysCd.toLowerCase()+"-"+relation.targetMdlName.toLowerCase()+"-"+relation.targetTableName.toLowerCase()
let tableKey = relation.sourceSysId+"-"+relation.sourceMdlName.toLowerCase()+"-"+relation.sourceTableName.toLowerCase()
let nodeId = relation.targetSysId+"-"+relation.targetMdlName.toLowerCase()+"-"+relation.targetTableName.toLowerCase()
if (g6data.value.length > 0){
for (let j = 0; j < g6data.value.length; j++) {
if (g6data.value[j].id === tableKey){

49
vue-fastapi-frontend/src/views/meta/metaInfo/index.vue

@ -758,7 +758,7 @@
const data = reactive({
queryParams:{
ssysCd:'',
ssysId:'',
mdlName:'',
tabName:'',
colName:'',
@ -772,6 +772,7 @@
tabEngName:'',
tabCnName:'',
ssysCd:'',
ssysId:-1,
mdlName:'',
tabCrrctName:'',
tabDesc:'',
@ -863,18 +864,10 @@
}
}
function remoteStddict(){
let param = {ssysCd:""}
let dbList = databaseList.value[0].children;
for (let i = 0; i < dbList.length; i++) {
if (currentMetaData.value.ssysCd.toUpperCase() === dbList[i].name.toUpperCase()){
param.ssysCd = dbList[i].id + ""
}
}
if (param.ssysCd !== ""){
listStdDictNoPage(param).then(res=>{
stddictOptions.value = res.data
})
}
let param = {ssysCd:currentMetaData.value.ssysId + ""}
listStdDictNoPage(param).then(res=>{
stddictOptions.value = res.data
})
}
function remoteSecLvl(){
listMetadataSecOptions().then(res=>{
@ -883,7 +876,7 @@
}
function generateDemoData(){
let param ={
dataAstSrc: currentMetaData.value.ssysCd,
dataAstSrc: currentMetaData.value.ssysId,
dataAstEngName:currentMetaData.value.mdlName+"."+currentMetaData.value.tabEngName
}
getMetaSecurityData(param).then(res=>{
@ -894,7 +887,7 @@
function changeBusinessOption(){
loadingBusiness.value = true;
let data = {
ssysCd: currentMetaData.value.ssysCd,
ssysId: currentMetaData.value.ssysId,
mdlName: currentMetaData.value.mdlName,
tabEngName: currentMetaData.value.tabEngName,
type: businessOptionSelect.value
@ -1236,6 +1229,7 @@
tabEngName: tableData.tabEngName,
tabCnName: tableData.tabCnName,
ssysCd: tableData.ssysCd,
ssysId: tableData.ssysId,
mdlName:tableData.mdlName,
tabCrrctName:tableData.tabCrrctName,
tabDesc:tableData.tabDesc,
@ -1245,7 +1239,7 @@
}
let columnData = {
tabName: row.tabEngName,
ssysCd: row.ssysCd,
ssysId: row.ssysId,
mdlName: row.mdlName
}
getColumnList(columnData).then(res=>{
@ -1305,7 +1299,7 @@
drawer.value = true
changedColumns.value = []
let param = {
ssysCd: currentMetaData.value.ssysCd,
ssysId: currentMetaData.value.ssysId,
mdlName: currentMetaData.value.mdlName,
tabEngName: currentMetaData.value.tabEngName
}
@ -1313,7 +1307,7 @@
if(res.data.length >0){
let dbList = databaseList.value[0].children;
for (let i = 0; i < dbList.length; i++) {
if (currentMetaData.value.ssysCd.toUpperCase() === dbList[i].name.toUpperCase()){
if (currentMetaData.value.ssysId === dbList[i].id){
dbType.value = dbList[i].type
}
}
@ -1341,7 +1335,7 @@
}
function resetQuery(){
queryParams.value ={
ssysCd:'',
ssysId:'',
mdlName:'',
tabName:'',
colName:'',
@ -1386,8 +1380,15 @@
function getList(){
getMetaDataList(queryParams.value).then(res=>{
dataList.value = res.data.rows
let dbList = databaseList.value[0].children
console.log(dataList.value[0].ssysId)
if (dataList.value.length>0){
for (let i = 0; i < dataList.value.length; i++) {
for (let j = 0; j < dbList.length; j++) {
if (dataList.value[i].ssysId === dbList[j].id){
dataList.value[i].ssysCd = dbList[j].name
}
}
let batchTabClas = dataList.value[i].batchTabClas
let tabClas =[]
if (dataList.value[i].tabClas && dataList.value[i].tabClas !== '[]'){
@ -1496,7 +1497,7 @@
dataAstType: row.tabType,
dataAstStat: '1',
dataAstDesc:'',
dataAstSrc: row.ssysCd,
dataAstSrc: row.ssysId,
astNo: row.extractOnum,
dataAstClas: JSON.stringify(row.batchTabClas),
showTabClas: row.showTabClas,
@ -1512,7 +1513,7 @@
return data.name.indexOf(value) !== -1;
};
function handleNodeClick(data) {
queryParams.value.ssysCd = data.name;
queryParams.value.ssysId = data.id;
handleQuery();
}
watch(database, val => {
@ -1520,7 +1521,7 @@
});
function submit(){
let data = {
ssysCd: currentMetaData.value.ssysCd,
ssysId: currentMetaData.value.ssysId,
mdlName: currentMetaData.value.mdlName,
tabEngName: currentMetaData.value.tabEngName,
tabCrrctName: currentMetaData.value.tabCrrctName,
@ -1556,8 +1557,8 @@
function cancel(){
drawer.value = false
}
onMounted(()=>{
getDatabaseList()
onMounted(async () => {
await getDatabaseList()
handleQuery()
})

163
vue-fastapi-frontend/src/views/metadataConfig/metaclas/index.vue

@ -16,106 +16,82 @@
</el-form-item>
</el-form>
</el-row>
<el-tabs v-model="activeTab" type="border-card" class="full-height-tabs">
<el-tab-pane label="值类型参数调整" name="valueType">
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="Plus" @click="openAddDialog1">新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="success" plain icon="Edit" :disabled="selectedRows1.length !== 1" @click="openEditDialog1(selectedRows1[0])">修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="Delete" :disabled="selectedRows1.length === 0" @click="deleteSelected1">删除</el-button>
</el-col>
</el-row>
<el-table v-loading="loading" :data="configList1" @selection-change="handleSelectionChange1" style="width: 100%" height="400" border stripe>
<el-table-column type="selection" width="55" />
<el-table-column prop="datatype" label="值类型" />
<el-table-column prop="ratio" label="阈值" />
<el-table-column prop="updBy" label="更新人" />
<el-table-column prop="updTime" label="更新时间" />
</el-table>
</el-tab-pane>
<el-tab-pane label="业务类型参数调整" name="businessType">
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="Plus" @click="openAddDialog2">新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="success" plain icon="Edit" :disabled="selectedRows2.length !== 1" @click="openEditDialog2(selectedRows2[0])">修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="Delete" :disabled="selectedRows2.length === 0" @click="deleteSelected2">删除</el-button>
</el-col>
</el-row>
<el-table v-loading="loading" :data="configList2" @selection-change="handleSelectionChange2" style="width: 100%" height="400" border stripe>
<el-table-column type="selection" width="55" />
<el-table-column prop="regexName" label="业务类型" />
<el-table-column prop="regexPattern" label="正则表达式" />
<el-table-column prop="ratio" label="阈值" />
<el-table-column prop="updBy" label="更新人" />
<el-table-column prop="updTime" label="更新时间" />
</el-table>
</el-tab-pane>
<el-tab-pane label="字段处理类型参数调整" name="columnType">
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="Plus" @click="openAddDialog2">新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="success" plain icon="Edit" :disabled="selectedRows2.length !== 1" @click="openEditDialog2(selectedRows2[0])">修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="Delete" :disabled="selectedRows2.length === 0" @click="deleteSelected2">删除</el-button>
</el-col>
</el-row>
<el-table v-loading="loading" :data="configList3" @selection-change="handleSelectionChange3" style="width: 100%" height="400" border stripe>
<el-table-column type="selection" width="55" />
<el-table-column prop="opType" label="处理类型" />
<el-table-column prop="colType" label="字段类型" />
<el-table-column prop="colAttr" label="字段属性" />
<el-table-column prop="ratio" label="阈值" />
<el-table-column prop="updBy" label="更新人" />
<el-table-column prop="updTime" label="更新时间" />
</el-table>
</el-tab-pane>
</el-tabs>
<el-divider content-position="center" ><span style=" font-size: 18px; font-weight: bold; ">值类型参数调整</span></el-divider>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="Plus" @click="openAddDialog1">新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="success" plain icon="Edit" :disabled="selectedRows1.length !== 1" @click="openEditDialog1(selectedRows1[0])">修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="Delete" :disabled="selectedRows1.length === 0" @click="deleteSelected1">删除</el-button>
</el-col>
</el-row>
<el-table v-loading="loading" :data="configList1" @selection-change="handleSelectionChange1" style="width: 100%" height="400" border stripe>
<el-table-column type="selection" width="55" />
<el-table-column prop="datatype" label="值类型" />
<el-table-column prop="ratio" label="阈值" />
<el-table-column prop="updBy" label="更新人" />
<el-table-column prop="updTime" label="更新时间" />
</el-table>
<el-divider content-position="center" ><span style=" font-size: 18px; font-weight: bold; ">业务类型参数调整</span></el-divider>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="Plus" @click="openAddDialog2">新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="success" plain icon="Edit" :disabled="selectedRows2.length !== 1" @click="openEditDialog2(selectedRows2[0])">修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="danger" plain icon="Delete" :disabled="selectedRows2.length === 0" @click="deleteSelected2">删除</el-button>
</el-col>
</el-row>
<el-table v-loading="loading" :data="configList2" @selection-change="handleSelectionChange2" style="width: 100%" height="400" border stripe>
<el-table-column type="selection" width="55" />
<el-table-column prop="regexName" label="业务类型" />
<el-table-column prop="regexPattern" label="正则表达式" />
<el-table-column prop="ratio" label="阈值" />
<el-table-column prop="updBy" label="更新人" />
<el-table-column prop="updTime" label="更新时间" />
</el-table>
<el-divider content-position="center" ><span style=" font-size: 18px; font-weight: bold; ">字段处理类型参数调整</span></el-divider>
<div style="margin-bottom: 10px">
<span style="display: inline-block; font-size: 14px; font-weight: bold; margin-bottom: 4px">唯一类型数值类判定条件</span>
<el-form :inline="true" :model="form3" size="medium">
<el-form-item label="空值率小于">
<el-input v-model="form3.config1" style="width: 100px" />
</el-form-item>
<el-form-item label="值长度方差小于">
<el-input v-model.number="form3.config2" style="width: 100px" />
</el-form-item>
<el-form-item label="重复率大于">
<el-input v-model.number="form3.config3" style="width: 100px" />
</el-form-item>
</el-form>
</div>
<div style="margin-bottom: 10px">
<span style="display: inline-block; font-size: 14px; font-weight: bold; margin-bottom: 4px">唯一类型非数值类判定条件</span>
<el-form :inline="true" :model="form3" size="medium">
<el-form-item label="重复率大于">
<el-input v-model.number="form3.config4" style="width: 100px" />
</el-form-item>
</el-form>
</div>
<div style="border-top: 1px dashed #999; margin: 10px 0;"></div>
<div style="margin-bottom: 10px">
<span style="display: inline-block; font-size: 14px; font-weight: bold; margin-bottom: 4px">忽略类型数值类判断条件</span>
<el-form :inline="true" :model="form3" size="medium">
<el-form-item label="空值率大于">
<el-input v-model.number="form3.config5" style="width: 100px" />
</el-form-item>
</el-form>
</div>
<div style="margin-bottom: 10px">
<span style="display: inline-block; font-size: 14px; font-weight: bold; margin-bottom: 4px">忽略类型其他判断条件</span>
<el-form :inline="true" :model="form3" size="medium">
<el-form-item label="平均值长大于">
<el-input v-model.number="form3.config6" style="width: 100px" />
</el-form-item>
<el-form-item >
<el-button type="primary" @click="submitForm3">保存</el-button>
</el-form-item>
</el-form>
</div>
<el-dialog :title="title" v-model="open1" width="500px" append-to-body :before-close="handleClose1">
<el-form ref="clasFormRef1" :model="form1" :rules="rules1" label-width="120px" size="medium">
<el-form ref="clasFormRef1" :model="form1" :rules="rules1" label-width="120px" >
<el-form-item label="值类型" prop="datatype">
<el-input v-model="form1.datatype" autocomplete="off" />
</el-form-item>
@ -173,9 +149,10 @@ const queryForm = reactive({
ssysCd: "*",
mdlName: "*",
});
const activeTab = ref('valueType');
const configList1 = ref([]); //
const configList2 = ref([]); //
const configList3 = ref([]); //
const loading = ref(false);
const open1 = ref(false); //
@ -216,6 +193,7 @@ const rules2 = {
const selectedRows1 = ref([]);
const selectedRows2 = ref([]);
const selectedRows3 = ref([]);
function handleSelectionChange1(val) {
selectedRows1.value = val;
@ -223,6 +201,9 @@ function handleSelectionChange1(val) {
function handleSelectionChange2(val) {
selectedRows2.value = val;
}
function handleSelectionChange3(val) {
selectedRows3.value = val;
}
async function getList1() {
loading.value = true;

Loading…
Cancel
Save