|
|
@ -174,7 +174,7 @@ class MetaDao: |
|
|
|
MetadataFldSuppInfo.fld_desc, |
|
|
|
MetadataFldSuppInfo.pic, |
|
|
|
MetadataFldSuppInfo.fld_clas, |
|
|
|
MetadataFldSuppInfo.fld_null_rate, |
|
|
|
# MetadataFldSuppInfo.fld_null_rate, |
|
|
|
MetadataFldSuppInfo.data_dict_id, |
|
|
|
MetadataFldSuppInfo.data_sec_lvl, |
|
|
|
DataStdDict.data_dict_cn_name.label('data_dict_name'), |
|
|
@ -344,7 +344,7 @@ class MetaDao: |
|
|
|
"fld_desc": vett_info.fld_desc, |
|
|
|
"pic": vett_info.pic, |
|
|
|
"fld_clas": vett_info.fld_clas, |
|
|
|
"fld_null_rate": vett_info.fld_null_rate, |
|
|
|
# "fld_null_rate": vett_info.fld_null_rate, |
|
|
|
"data_dict_id": vett_info.data_dict_id, |
|
|
|
"data_sec_lvl": vett_info.data_sec_lvl, |
|
|
|
"rec_stat": vett_info.rec_stat, |
|
|
@ -405,7 +405,7 @@ class MetaDao: |
|
|
|
fld_desc=column.fld_desc, |
|
|
|
pic=column.pic, |
|
|
|
fld_clas=column.fld_clas, |
|
|
|
fld_null_rate=column.fld_null_rate, |
|
|
|
# fld_null_rate=column.fld_null_rate, |
|
|
|
data_dict_id=column.data_dict_id, |
|
|
|
data_sec_lvl=column.data_sec_lvl, |
|
|
|
rec_stat=column.rec_stat, |
|
|
@ -426,7 +426,7 @@ class MetaDao: |
|
|
|
suppColumn.fld_desc = column.fld_desc |
|
|
|
suppColumn.pic = column.pic |
|
|
|
suppColumn.fld_clas = column.fld_clas |
|
|
|
suppColumn.fld_null_rate = column.fld_null_rate |
|
|
|
# suppColumn.fld_null_rate = column.fld_null_rate |
|
|
|
suppColumn.data_dict_id = column.data_dict_id |
|
|
|
suppColumn.data_sec_lvl = column.data_sec_lvl |
|
|
|
suppColumn.rec_stat = column.rec_stat |
|
|
@ -567,7 +567,7 @@ class MetaDao: |
|
|
|
" 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_id = b.ssys_id and a.mdl_name=b.mdl_name and a.tab_eng_name=b.tab_crrct_name " |
|
|
|
"on a.ssys_id = b.ssys_id and a.mdl_name=b.mdl_name and a.tab_eng_name=b.tab_eng_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})) |
|
|
|
|
|
|
@ -600,12 +600,14 @@ class MetaDao: |
|
|
|
@classmethod |
|
|
|
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 " |
|
|
|
"b_fld_eng_name order by op_relation desc, jd_relation) as rn" |
|
|
|
" from t_batch_er_relation a1)" |
|
|
|
"select a1.*,'A' AS father from tmp a1 where a1.rn = 1" |
|
|
|
" 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 " |
|
|
|
"b_fld_eng_name order by op_relation desc, jd_relation) as rn" |
|
|
|
" from t_batch_er_relation a1)" |
|
|
|
"select a1.*,'A' AS father from tmp a1 where a1.rn = 1" |
|
|
|
" 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})) |
|
|
@ -617,32 +619,15 @@ class MetaDao: |
|
|
|
|
|
|
|
# 将结果转换为字典列表 |
|
|
|
result_as_dict = [dict(zip(columns, row)) for row in result.fetchall()] |
|
|
|
result_as_dict2 = [dict(zip(columns, row)) for row in result2.fetchall()] |
|
|
|
result_as_dict2 = [dict(zip(columns2, row)) for row in result2.fetchall()] |
|
|
|
result3 = result_as_dict + result_as_dict2 |
|
|
|
return result3 |
|
|
|
|
|
|
|
@classmethod |
|
|
|
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_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_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_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_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_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_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_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))") |
|
|
|
sql = text("select * from t_batch_col_relation a1 where " |
|
|
|
" (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})) |
|
|
|
# 获取列名 |
|
|
@ -656,15 +641,17 @@ class MetaDao: |
|
|
|
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_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_id = :ssys_id and a1.b_mdl_name = :mdlName " |
|
|
|
"b_fld_eng_name order by op_relation desc, jd_relation) as rn" |
|
|
|
" from t_batch_er_relation a1)" |
|
|
|
"select a1.*,'A' AS father from tmp a1 where a1.rn = 1" |
|
|
|
" 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_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_id = :ssys_id and a1.a_mdl_name = :mdlName " |
|
|
|
"b_fld_eng_name order by op_relation desc, jd_relation) as rn" |
|
|
|
" from t_batch_er_relation a1)" |
|
|
|
"select a1.*,'A' AS father from tmp a1 where a1.rn = 1" |
|
|
|
" 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, {"ssys_id": column['ssys_id'], |
|
|
|
"mdlName": column['mdl_name'], "tabName": column['tab_eng_name'], |
|
|
@ -678,33 +665,16 @@ 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_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_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_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_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_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_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_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) " |
|
|
|
sql = text("select * from t_batch_col_relation a1 where " |
|
|
|
"(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 a1.father = :rela_value) " |
|
|
|
" 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))") |
|
|
|
" and a1.b_fld_eng_name = :fldName and a1.father = :rela_value2)") |
|
|
|
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', |
|
|
|
"rela_value2": '1' if module == 'pre' else '2' |
|
|
|
"rela_value": 'B' if module == 'pre' else 'A', |
|
|
|
"rela_value2": 'A' if module == 'pre' else 'B' |
|
|
|
})) |
|
|
|
# 获取列名 |
|
|
|
columns = result.keys() # 返回列名列表 |
|
|
|