Browse Source

修复元数据信息页面bug

master
xueyinfei 4 weeks ago
parent
commit
8e8fc44351
  1. 88
      vue-fastapi-backend/module_admin/dao/meta_dao.py
  2. 4
      vue-fastapi-backend/module_admin/entity/do/meta_do.py
  3. 2
      vue-fastapi-backend/module_admin/entity/vo/meta_vo.py
  4. 6
      vue-fastapi-backend/module_admin/service/meta_service.py
  5. 2
      vue-fastapi-frontend/src/views/dataAsset/directory/index.vue
  6. 26
      vue-fastapi-frontend/src/views/meta/metaInfo/index.vue
  7. 26
      vue-fastapi-frontend/src/views/system/flow/index.vue

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

@ -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() # 返回列名列表

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

@ -130,7 +130,7 @@ class MetadataFldSuppInfo(Base):
fld_desc = Column(String(255, collation='utf8_general_ci'), comment='字段描述')
pic = Column(String(255, collation='utf8_general_ci'), comment='图片字段')
fld_clas = Column(Text, comment='字段分类')
fld_null_rate = Column(String(50, collation='utf8_general_ci'), comment='字段空值率')
# fld_null_rate = Column(String(50, collation='utf8_general_ci'), comment='字段空值率')
data_dict_id = Column(String(50, collation='utf8_general_ci'), comment='数据字典ID')
data_sec_lvl = Column(String(50, collation='utf8_general_ci'), comment='字段安全等级')
rec_stat = Column(String(50, collation='utf8_general_ci'), comment='记录状态')
@ -154,7 +154,7 @@ class MetadataFldSuppInfoVett(Base):
fld_desc = Column(String(255, collation='utf8_general_ci'), comment='字段描述')
pic = Column(String(255, collation='utf8_general_ci'), comment='图片字段')
fld_clas = Column(Text, comment='字段分类')
fld_null_rate = Column(String(50, collation='utf8_general_ci'), comment='字段空值率')
# fld_null_rate = Column(String(50, collation='utf8_general_ci'), comment='字段空值率')
data_dict_id = Column(String(50, collation='utf8_general_ci'), comment='数据字典ID')
data_sec_lvl = Column(String(50, collation='utf8_general_ci'), comment='字段安全等级')
rec_stat = Column(String(50, collation='utf8_general_ci'), comment='记录状态')

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

@ -38,7 +38,7 @@ class ColumnSuppleModel(BaseModel):
fld_desc: Optional[str] = None
pic: Optional[str] = None
fld_clas: Optional[str] = None
fld_null_rate: Optional[str] = None
# fld_null_rate: Optional[str] = None
rec_stat: Optional[str] = None
data_dict_id: Optional[str] = None
data_sec_lvl: Optional[str] = None

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

@ -131,7 +131,7 @@ class MetaService:
suppColumnInfo.fld_desc = column.fld_desc
suppColumnInfo.pic = column.pic
suppColumnInfo.fld_clas = column.fld_clas
suppColumnInfo.fld_null_rate = column.fld_null_rate
# suppColumnInfo.fld_null_rate = column.fld_null_rate
suppColumnInfo.data_dict_id = column.data_dict_id
suppColumnInfo.data_sec_lvl = column.data_sec_lvl
suppColumnInfo.rec_stat = column.rec_stat
@ -189,7 +189,7 @@ class MetaService:
fldDesc=column.fld_desc if column and column.fld_desc else None,
pic=column.pic if column and column.pic else None,
fldClas=column.fld_clas if column and column.fld_clas else None,
fldNullRate=column.fld_null_rate if column and column.fld_null_rate else None,
# fldNullRate=column.fld_null_rate if column and column.fld_null_rate else None,
dataDictId=column.data_dict_id if column and column.data_dict_id else None,
dataSecLvl=column.data_sec_lvl if column and column.data_sec_lvl else None,
dataDictName=dictName,
@ -769,7 +769,7 @@ class MetaService:
if oldColumn else None
suppColumnInfo.pic = oldColumn.pic if oldColumn else None
suppColumnInfo.fld_clas = oldColumn.fld_clas if oldColumn else None
suppColumnInfo.fld_null_rate = oldColumn.fld_null_rate if oldColumn else None
# suppColumnInfo.fld_null_rate = oldColumn.fld_null_rate if oldColumn else None
suppColumnInfo.rec_stat = oldColumn.rec_stat if oldColumn else None
suppColumnInfo.business_id = businessId
suppColumnInfo.apply_time = applyTime

2
vue-fastapi-frontend/src/views/dataAsset/directory/index.vue

@ -311,7 +311,7 @@
</el-popover>
</template>
</el-table-column>
<el-table-column prop="fldNullRate" label="有值率" />
<!-- <el-table-column prop="fldNullRate" label="有值率" />-->
<el-table-column prop="fldDesc" label="说明" />
</el-table>
</el-tab-pane>

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

@ -325,11 +325,11 @@
</el-popover>
</template>
</el-table-column>
<el-table-column label="字段空值率" align="center" prop="fldNullRate">
<template #default="scope">
<span>{{scope.row.fldNullRate}}</span>
</template>
</el-table-column>
<!-- <el-table-column label="字段空值率" align="center" prop="fldNullRate">-->
<!-- <template #default="scope">-->
<!-- <span>{{scope.row.fldNullRate}}</span>-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column label="引用字典/标准" align="center" prop="dataDictName"></el-table-column>
<el-table-column label="安全等级" align="center" prop="dataSecLvl"></el-table-column>
<el-table-column label="更新时间" align="center" prop="suppUpdTime" width="180">
@ -521,9 +521,9 @@
<!-- <el-form-item label="负责人">-->
<!-- <el-input v-model="currentColumnData.pic"/>-->
<!-- </el-form-item>-->
<el-form-item label="字段空值率">
<el-input v-model="currentColumnData.fldNullRate"/>
</el-form-item>
<!-- <el-form-item label="字段空值率">-->
<!-- <el-input v-model="currentColumnData.fldNullRate"/>-->
<!-- </el-form-item>-->
<el-form-item label="引用字典/标准">
<el-select
v-model="currentColumnData.dataDictId"
@ -1066,10 +1066,10 @@
// columnList.value[i].pic = currentColumnData.value.pic
// changed = true
// }
if (columnList.value[i].fldNullRate !== currentColumnData.value.fldNullRate){
columnList.value[i].fldNullRate = currentColumnData.value.fldNullRate
changed = true
}
// if (columnList.value[i].fldNullRate !== currentColumnData.value.fldNullRate){
// columnList.value[i].fldNullRate = currentColumnData.value.fldNullRate
// changed = true
// }
if (columnList.value[i].dataDictId !== currentColumnData.value.dataDictId){
columnList.value[i].dataDictId = currentColumnData.value.dataDictId
columnList.value[i].dataDictName = currentColumnData.value.dataDictName
@ -1669,7 +1669,7 @@
fldDesc: column.fldDesc,
pic: column.pic,
fldClas: JSON.stringify(column.showFldClas),
fldNullRate: column.fldNullRate,
// fldNullRate: column.fldNullRate,
dataDictId: column.dataDictId,
dataSecLvl: column.dataSecLvl,
recStat: column.recStat

26
vue-fastapi-frontend/src/views/system/flow/index.vue

@ -332,12 +332,12 @@
</template>
</template>
</el-table-column>
<el-table-column label="字段空值率" align="center" prop="fldNullRate">
<template #default="scope">
<span v-if="oldColumnList[scope.$index].fldNullRate === newColumnList[scope.$index].fldNullRate">{{scope.row.fldNullRate}}</span>
<span v-else style="color: red">{{scope.row.fldNullRate}}</span>
</template>
</el-table-column>
<!-- <el-table-column label="字段空值率" align="center" prop="fldNullRate">-->
<!-- <template #default="scope">-->
<!-- <span v-if="oldColumnList[scope.$index].fldNullRate === newColumnList[scope.$index].fldNullRate">{{scope.row.fldNullRate}}</span>-->
<!-- <span v-else style="color: red">{{scope.row.fldNullRate}}</span>-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column label="引用字典/标准" align="center" prop="dataDictName">
<template #default="scope">
<span v-if="oldColumnList[scope.$index].dataDictName === newColumnList[scope.$index].dataDictName">{{scope.row.dataDictName}}</span>
@ -518,12 +518,12 @@
</template>
</template>
</el-table-column>
<el-table-column label="字段空值率" align="center" prop="fldNullRate">
<template #default="scope">
<span v-if="oldColumnList[scope.$index].fldNullRate === newColumnList[scope.$index].fldNullRate">{{scope.row.fldNullRate}}</span>
<span v-else style="color: red">{{scope.row.fldNullRate}}</span>
</template>
</el-table-column>
<!-- <el-table-column label="字段空值率" align="center" prop="fldNullRate">-->
<!-- <template #default="scope">-->
<!-- <span v-if="oldColumnList[scope.$index].fldNullRate === newColumnList[scope.$index].fldNullRate">{{scope.row.fldNullRate}}</span>-->
<!-- <span v-else style="color: red">{{scope.row.fldNullRate}}</span>-->
<!-- </template>-->
<!-- </el-table-column>-->
<el-table-column label="引用字典/标准" align="center" prop="dataDictName">
<template #default="scope">
<span v-if="oldColumnList[scope.$index].dataDictName === newColumnList[scope.$index].dataDictName">{{scope.row.dataDictName}}</span>
@ -1059,7 +1059,7 @@ function transformMetaDetailData(data){
fldCrrctName:col.fldCrrctName,
fldDesc:col.fldDesc,
fldEngName:col.fldEngName,
fldNullRate:col.fldNullRate,
// fldNullRate:col.fldNullRate,
mdlName:col.mdlName,
onum:col.onum,
pic:col.pic,

Loading…
Cancel
Save