From fa6c0deb84dbc813c46c81ad4c0d391c302c24ec Mon Sep 17 00:00:00 2001 From: xueyinfei <1207092115@qq.com> Date: Fri, 22 Aug 2025 11:49:11 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=85=83=E6=95=B0=E6=8D=AE=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E4=BB=A3=E7=A0=81=E6=94=B9=E6=88=90=E7=B3=BB=E7=BB=9F?= =?UTF-8?q?id=E5=AD=98=E5=82=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module_admin/dao/meta_dao.py | 174 +++++++++--------- .../module_admin/entity/do/meta_do.py | 20 +- .../entity/do/metadata_config_do.py | 45 +++-- .../module_admin/entity/vo/meta_vo.py | 10 +- .../module_admin/service/meta_service.py | 132 ++++++------- .../src/views/meta/metaInfo/bloodRelation.vue | 6 +- .../src/views/meta/metaInfo/index.vue | 49 ++--- .../views/metadataConfig/metaclas/index.vue | 163 ++++++++-------- 8 files changed, 297 insertions(+), 302 deletions(-) diff --git a/vue-fastapi-backend/module_admin/dao/meta_dao.py b/vue-fastapi-backend/module_admin/dao/meta_dao.py index e186802..649111a 100644 --- a/vue-fastapi-backend/module_admin/dao/meta_dao.py +++ b/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() # 返回列名列表 # 将结果转换为字典列表 diff --git a/vue-fastapi-backend/module_admin/entity/do/meta_do.py b/vue-fastapi-backend/module_admin/entity/do/meta_do.py index 0bb3e64..d867c37 100644 --- a/vue-fastapi-backend/module_admin/entity/do/meta_do.py +++ b/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='源系统表中文名') diff --git a/vue-fastapi-backend/module_admin/entity/do/metadata_config_do.py b/vue-fastapi-backend/module_admin/entity/do/metadata_config_do.py index da309ba..5fc0a53 100644 --- a/vue-fastapi-backend/module_admin/entity/do/metadata_config_do.py +++ b/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='关系状态') \ No newline at end of file + rela_status = Column(String(18), nullable=True, comment='关系状态') \ No newline at end of file diff --git a/vue-fastapi-backend/module_admin/entity/vo/meta_vo.py b/vue-fastapi-backend/module_admin/entity/vo/meta_vo.py index 8558146..e600787 100644 --- a/vue-fastapi-backend/module_admin/entity/vo/meta_vo.py +++ b/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] diff --git a/vue-fastapi-backend/module_admin/service/meta_service.py b/vue-fastapi-backend/module_admin/service/meta_service.py index 1307742..5c02006 100644 --- a/vue-fastapi-backend/module_admin/service/meta_service.py +++ b/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 diff --git a/vue-fastapi-frontend/src/views/meta/metaInfo/bloodRelation.vue b/vue-fastapi-frontend/src/views/meta/metaInfo/bloodRelation.vue index b3006ec..494824d 100644 --- a/vue-fastapi-frontend/src/views/meta/metaInfo/bloodRelation.vue +++ b/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){ diff --git a/vue-fastapi-frontend/src/views/meta/metaInfo/index.vue b/vue-fastapi-frontend/src/views/meta/metaInfo/index.vue index f9afc99..cc901be 100644 --- a/vue-fastapi-frontend/src/views/meta/metaInfo/index.vue +++ b/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() }) diff --git a/vue-fastapi-frontend/src/views/metadataConfig/metaclas/index.vue b/vue-fastapi-frontend/src/views/metadataConfig/metaclas/index.vue index d874cd9..764da91 100644 --- a/vue-fastapi-frontend/src/views/metadataConfig/metaclas/index.vue +++ b/vue-fastapi-frontend/src/views/metadataConfig/metaclas/index.vue @@ -16,106 +16,82 @@ + + + + + 新增 + + + 修改 + + + 删除 + + + + + + + + + + + + + + 新增 + + + 修改 + + + 删除 + + + + + + + + + + + + + + + 新增 + + + 修改 + + + 删除 + + + + + + + + + + + + + -值类型参数调整 - - - 新增 - - - 修改 - - - 删除 - - - - - - - - - - -业务类型参数调整 - - - 新增 - - - 修改 - - - 删除 - - - - - - - - - - -字段处理类型参数调整 - -
- 唯一类型数值类判定条件 - - - - - - - - - - - -
- -
- 唯一类型非数值类判定条件 - - - - - -
-
- -
- 忽略类型数值类判断条件 - - - - - -
- -
- 忽略类型其他判断条件 - - - - - - - 保存 - - - -
- + @@ -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; From e64e14a5af1c03f9679f23d5591fd8ac911e45e3 Mon Sep 17 00:00:00 2001 From: xueyinfei <1207092115@qq.com> Date: Sat, 23 Aug 2025 16:28:32 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=85=83=E6=95=B0=E6=8D=AE=E6=A0=87?= =?UTF-8?q?=E7=AD=BE=E8=AE=A1=E7=AE=97=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/metadata_config_controller.py | 66 +++---- .../dao/batch_label_config_dao.py | 48 +++-- .../entity/do/metadata_config_do.py | 20 +- .../entity/vo/metadata_config_vo.py | 127 +++++++------ .../service/batch_label_config_service.py | 132 ++++--------- .../src/api/metadataConfig/metadataConfig.js | 17 +- .../views/metadataConfig/metaclas/index.vue | 179 +++++++++++++----- 7 files changed, 317 insertions(+), 272 deletions(-) diff --git a/vue-fastapi-backend/module_admin/controller/metadata_config_controller.py b/vue-fastapi-backend/module_admin/controller/metadata_config_controller.py index a95a041..eaab5d6 100644 --- a/vue-fastapi-backend/module_admin/controller/metadata_config_controller.py +++ b/vue-fastapi-backend/module_admin/controller/metadata_config_controller.py @@ -21,11 +21,10 @@ from module_admin.entity.vo.metadata_config_vo import ( SecuBizPermiConfigBatchModel, SecuBizPermiConfigPageQueryModel, BatchBusiLabelConfigModel, - BatchDataopLabelConfigModel, BatchDatatypeLabelConfigModel, - BatchBusiLabelConfigPageQueryModel, + ColOpTypeLabelPageQueryModel, BatchDataopLabelConfigModelVo, - BatchDataopLabelModelPageQueryModel, + BatchBusiLabelConfigPageQueryModel, BatchDatatypeLabelConfigPageQueryModel, DatasecConfigPageQueryModel, DatasecConfigModel, @@ -325,6 +324,17 @@ async def get_busi_label_list( return ResponseUtil.success(data=result) +@metadataConfigController.get('/colOpTypeLabel/list', response_model=PageResponseModel) +async def get_col_optype_label_list( + request: Request, + query: ColOpTypeLabelPageQueryModel = Depends(ColOpTypeLabelPageQueryModel.as_query), + query_db: AsyncSession = Depends(get_db), +): + result = await BatchLabelConfigService.get_col_optype_list_services(query_db, query, False) + logger.info('获取业务标签配置列表成功') + return ResponseUtil.success(data=result) + + @metadataConfigController.post('/busiLabel') @ValidateFields(validate_model='add_busi_label') async def add_busi_label( @@ -379,17 +389,6 @@ async def get_busi_label_detail( return ResponseUtil.success(data=result) -@metadataConfigController.get('/dataopLabel/list', response_model=PageResponseModel) -async def get_dataop_label_list( - request: Request, - query: BatchDataopLabelConfigModel = Depends(BatchDataopLabelModelPageQueryModel.as_query), - query_db: AsyncSession = Depends(get_db), -): - result = await BatchLabelConfigService.get_dataop_vo_services(query_db, query, is_page=True) - logger.info('获取操作标签配置列表成功') - return ResponseUtil.success(data=result) - - @metadataConfigController.post('/dataopLabel') @ValidateFields(validate_model='add_dataop_label') async def add_dataop_label( @@ -397,7 +396,6 @@ async def add_dataop_label( model: BatchDataopLabelConfigModelVo, query_db: AsyncSession = Depends(get_db), current_user: CurrentUserModel = Depends(LoginService.get_current_user), - ): model.upd_by = current_user.user.user_name model.upd_time = datetime.now() @@ -410,7 +408,7 @@ async def add_dataop_label( @ValidateFields(validate_model='edit_dataop_label') async def edit_dataop_label( request: Request, - model: BatchDataopLabelConfigModel, + model: BatchDataopLabelConfigModelVo, query_db: AsyncSession = Depends(get_db), current_user: CurrentUserModel = Depends(LoginService.get_current_user), @@ -433,17 +431,6 @@ async def delete_dataop_label( return ResponseUtil.success(msg=result.message) -@metadataConfigController.get('/dataopLabel/{onum}', response_model=BatchDataopLabelConfigModel) -async def get_dataop_label_detail( - request: Request, - onum: str, - query_db: AsyncSession = Depends(get_db), -): - result = await BatchLabelConfigService.get_dataop_detail_services(query_db, onum) - logger.info(f'获取操作标签配置 onum={onum} 详情成功') - return ResponseUtil.success(data=result) - - @metadataConfigController.get('/datatypeLabel/list', response_model=PageResponseModel) async def get_datatype_label_list( request: Request, @@ -751,6 +738,8 @@ async def task_biz_DS_meta_metatask_delete( edit_config_result = await MetadataConfigService.ds_metatask_delete(request, query_db, process, current_user) return ResponseUtil.success(msg=edit_config_result) + + # --------------------------------------------------------------------------------标签树--------------------------------------------------- @metadataConfigController.get( '/cata/list', response_model=PageResponseModel) @@ -763,23 +752,28 @@ async def get_data_catalog_list( # 设置字段 user_id = current_user.user.user_id # 获取分页数据 - catalog_page_query_result = await MetadataConfigService.get_catalog_list_services(query_db, catalog_page_query, user_id, - is_page=True) + catalog_page_query_result = await MetadataConfigService.get_catalog_list_services(query_db, catalog_page_query, + user_id, + is_page=True) logger.info('获取成功') return ResponseUtil.success(model_content=catalog_page_query_result) + + @metadataConfigController.delete('/cata/{content_onums}', - ) + ) @Log(title='标准分类管理', business_type=BusinessType.DELETE) async def delete_data_catalog(request: Request, content_onums: str, query_db: AsyncSession = Depends(get_db), current_user: CurrentUserModel = Depends(LoginService.get_current_user), ): delete_catalog = DeleteDataCatalogModel(content_onums=content_onums) delete_catalog_result = await MetadataConfigService.delete_catalog_services(query_db, delete_catalog, - user_id=current_user.user.user_id) + user_id=current_user.user.user_id) logger.info(delete_catalog_result.message) return ResponseUtil.success(msg=delete_catalog_result.message) + + @metadataConfigController.put('/cata/removerel') @ValidateFields(validate_model='removerel_data_ast_catalog') @Log(title='标准分类管理', business_type=BusinessType.UPDATE) @@ -795,6 +789,8 @@ async def removerel_data_ast_catalog( # 返回标准化响应 return ResponseUtil.success() + + @metadataConfigController.put('/cata/moved') @ValidateFields(validate_model='moved_data_catalog') @Log(title='标准分类管理', business_type=BusinessType.UPDATE) @@ -831,6 +827,8 @@ async def moved_data_catalog( return ResponseUtil.success( msg=merge_result.message ) + + @metadataConfigController.put('/cata/moverel') @ValidateFields(validate_model='moverel_data_ast_catalog') @Log(title='标准分类管理', business_type=BusinessType.UPDATE) @@ -846,6 +844,8 @@ async def moverel_data_ast_catalog( # 返回标准化响应 return ResponseUtil.success() + + @metadataConfigController.put('/cata/edit') @ValidateFields(validate_model='edit_data_catalog') @Log(title='标准分类管理', business_type=BusinessType.UPDATE) @@ -866,6 +866,8 @@ async def edit_data_catalog( return ResponseUtil.success( msg=edit_result.message ) + + @metadataConfigController.post('/cata') @ValidateFields(validate_model='add_data_catalog') @Log(title='标准分类管理', business_type=BusinessType.INSERT) @@ -892,4 +894,4 @@ async def add_data_catalog( # 返回标准化响应 return ResponseUtil.success( msg=add_result.message - ) \ No newline at end of file + ) diff --git a/vue-fastapi-backend/module_admin/dao/batch_label_config_dao.py b/vue-fastapi-backend/module_admin/dao/batch_label_config_dao.py index 8ea6cc4..478b6c9 100644 --- a/vue-fastapi-backend/module_admin/dao/batch_label_config_dao.py +++ b/vue-fastapi-backend/module_admin/dao/batch_label_config_dao.py @@ -1,9 +1,11 @@ -from sqlalchemy import delete, select, update,and_ +from sqlalchemy import delete, select, update, and_ from sqlalchemy.ext.asyncio import AsyncSession -from module_admin.entity.do.metadata_config_do import BatchBusiLabelConfig,BatchDataopLabelConfig,BatchDatatypeLabelConfig +from module_admin.entity.do.metadata_config_do import BatchBusiLabelConfig, BatchDataopLabelConfig, \ + BatchDatatypeLabelConfig from utils.page_util import PageUtil + class BatchLabelConfigDAO: # region === BatchBusiLabelConfig === @@ -17,11 +19,20 @@ class BatchLabelConfigDAO: async def get_busi_list(cls, db: AsyncSession, query_object, is_page: bool = False): query = select(BatchBusiLabelConfig).where( BatchBusiLabelConfig.mdl_name == query_object.mdl_name if query_object.mdl_name else True, - BatchBusiLabelConfig.ssys_cd == query_object.ssys_cd if query_object.ssys_cd else True, + BatchBusiLabelConfig.ssys_id == query_object.ssys_id if query_object.ssys_id else True, ).order_by(BatchBusiLabelConfig.upd_time.desc()) return await PageUtil.paginate(db, query, query_object.page_num, query_object.page_size, is_page) + @classmethod + async def get_col_optype_list(cls, db: AsyncSession, query_object, is_page: bool = False): + query = select(BatchDataopLabelConfig).where( + BatchDataopLabelConfig.mdl_name.like(f'%{query_object.mdl_name}%') if query_object.mdl_name else True, + BatchDataopLabelConfig.ssys_id == query_object.ssys_id if query_object.ssys_id else True, + ).order_by(BatchDataopLabelConfig.upd_time.desc()) + + return await PageUtil.paginate(db, query, query_object.page_num, query_object.page_size, is_page) + @classmethod async def add_busi(cls, db: AsyncSession, obj): db_obj = BatchBusiLabelConfig(**obj.model_dump()) @@ -50,35 +61,21 @@ class BatchLabelConfigDAO: async def get_dataop_list(cls, db: AsyncSession, query_object, is_page: bool = False): query = select(BatchDataopLabelConfig).where( BatchDataopLabelConfig.mdl_name == query_object.mdl_name if query_object.mdl_name else True, - BatchDataopLabelConfig.ssys_cd == query_object.ssys_cd if query_object.ssys_cd else True, + BatchDataopLabelConfig.ssys_id == query_object.ssys_id if query_object.ssys_id else True, ) - + return await PageUtil.paginate(db, query, query_object.page_num, query_object.page_size, is_page) - @classmethod - async def get_dataop_list_all(cls, db: AsyncSession, query_object): - conditions = [] - - if query_object.mdl_name: - conditions.append(BatchDataopLabelConfig.mdl_name == query_object.mdl_name) - - if query_object.ssys_cd: - conditions.append(BatchDataopLabelConfig.ssys_cd == query_object.ssys_cd) - - stmt = select(BatchDataopLabelConfig).where(*conditions) - - result = await db.execute(stmt) - return result.scalars().all() @classmethod async def add_dataop(cls, db: AsyncSession, obj): - db_obj = BatchDataopLabelConfig(**obj.model_dump()) - db.add(db_obj) + db.add(obj) await db.flush() - return db_obj + return obj @classmethod async def edit_dataop(cls, db: AsyncSession, onum: int, update_data: dict): - await db.execute(update(BatchDataopLabelConfig).where(BatchDataopLabelConfig.onum == onum).values(**update_data)) + await db.execute( + update(BatchDataopLabelConfig).where(BatchDataopLabelConfig.onum == onum).values(**update_data)) @classmethod async def delete_dataop(cls, db: AsyncSession, onum_list: list[int]): @@ -97,7 +94,7 @@ class BatchLabelConfigDAO: async def get_datatype_list(cls, db: AsyncSession, query_object, is_page: bool = False): query = select(BatchDatatypeLabelConfig).where( BatchDatatypeLabelConfig.mdl_name == query_object.mdl_name if query_object.mdl_name else True, - BatchDatatypeLabelConfig.ssys_cd == query_object.ssys_cd if query_object.ssys_cd else True, + BatchDatatypeLabelConfig.ssys_id == query_object.ssys_id if query_object.ssys_id else True, ).order_by(BatchDatatypeLabelConfig.upd_time.desc()) return await PageUtil.paginate(db, query, query_object.page_num, query_object.page_size, is_page) @@ -111,7 +108,8 @@ class BatchLabelConfigDAO: @classmethod async def edit_datatype(cls, db: AsyncSession, onum: int, update_data: dict): - await db.execute(update(BatchDatatypeLabelConfig).where(BatchDatatypeLabelConfig.onum == onum).values(**update_data)) + await db.execute( + update(BatchDatatypeLabelConfig).where(BatchDatatypeLabelConfig.onum == onum).values(**update_data)) @classmethod async def delete_datatype(cls, db: AsyncSession, onum_list: list[int]): diff --git a/vue-fastapi-backend/module_admin/entity/do/metadata_config_do.py b/vue-fastapi-backend/module_admin/entity/do/metadata_config_do.py index 5fc0a53..46994ce 100644 --- a/vue-fastapi-backend/module_admin/entity/do/metadata_config_do.py +++ b/vue-fastapi-backend/module_admin/entity/do/metadata_config_do.py @@ -114,7 +114,7 @@ class BatchBusiLabelConfig(Base): onum = Column(Integer, primary_key=True, autoincrement=True, comment="唯一编号") regex_name = Column(String(255), nullable=True, comment="正则表达式名称") regex_pattern = Column(String(255), nullable=True, comment="正则表达式") - ssys_cd = Column(String(50), nullable=True) + ssys_id = Column(Integer, nullable=True) mdl_name = Column(String(50), nullable=True) ratio = Column(DECIMAL(10, 4), nullable=True) upd_by = Column(String(50), nullable=True) @@ -125,18 +125,14 @@ class BatchDataopLabelConfig(Base): """ 批处理数据操作标签配置表 ORM 映射类,对应表 t_batch_dataop_label_config """ - __tablename__ = "t_batch_dataop_label_config" + __tablename__ = "t_batch_dataoptype_label_config" onum = Column(Integer, primary_key=True, autoincrement=True, comment="唯一编号") - optype = Column(String(50), nullable=True, comment="唯一类型,忽略类型") - config1 = Column(DECIMAL(10, 4), nullable=True, comment="参数1") - config2 = Column(DECIMAL(10, 4), nullable=True, comment="参数2") - config3 = Column(DECIMAL(10, 4), nullable=True, comment="参数3") - config4 = Column(DECIMAL(10, 4), nullable=True, comment="参数4") - config5 = Column(DECIMAL(10, 4), nullable=True, comment="参数5") - config6 = Column(DECIMAL(10, 4), nullable=True, comment="参数6") - config7 = Column(DECIMAL(10, 4), nullable=True, comment="参数7") - ssys_cd = Column(String(50), nullable=True) + op_type = Column(String(50), nullable=True, comment="唯一类型,忽略类型") + col_type = Column(String(50), nullable=True, comment="字段类型") + col_attr = Column(String(50), nullable=True, comment="字段属性") + ratio = Column(DECIMAL(10, 4), nullable=True, comment="阈值") + ssys_id = Column(Integer, nullable=True) mdl_name = Column(String(50), nullable=True) upd_by = Column(String(50), nullable=True) upd_time = Column(DateTime, nullable=True, comment='更新时间') @@ -151,7 +147,7 @@ class BatchDatatypeLabelConfig(Base): onum = Column(Integer, primary_key=True, autoincrement=True, comment="唯一编号") datatype = Column(String(100), nullable=True, comment="字段类型") ratio = Column(DECIMAL(10, 4), nullable=True, comment="比率") - ssys_cd = Column(String(50), nullable=True) + ssys_id = Column(Integer, nullable=True) mdl_name = Column(String(50), nullable=True) upd_by = Column(String(50), nullable=True) upd_time = Column(DateTime, nullable=True, comment='更新时间') diff --git a/vue-fastapi-backend/module_admin/entity/vo/metadata_config_vo.py b/vue-fastapi-backend/module_admin/entity/vo/metadata_config_vo.py index 15a178c..96300c9 100644 --- a/vue-fastapi-backend/module_admin/entity/vo/metadata_config_vo.py +++ b/vue-fastapi-backend/module_admin/entity/vo/metadata_config_vo.py @@ -2,7 +2,7 @@ from datetime import datetime from pydantic import BaseModel, ConfigDict, Field from pydantic.alias_generators import to_camel from pydantic_validation_decorator import NotBlank, Size -from typing import Literal, Optional,List +from typing import Literal, Optional, List from module_admin.annotation.pydantic_annotation import as_query @@ -39,7 +39,6 @@ class MetadataClasQueryModel(MetadataClasModel): end_time: Optional[str] = Field(default=None, description='结束时间') - @as_query class MetadataClasPageQueryModel(MetadataClasQueryModel): """ @@ -58,6 +57,7 @@ class DeleteMetadataClasModel(BaseModel): clas_onums: str = Field(description='需要删除的标签主键(多个用逗号分隔)') + class MetadataSecModel(BaseModel): """ 数据安全配置表对应 Pydantic 模型 @@ -80,6 +80,8 @@ class MetadataSecModel(BaseModel): def validate_fields(self): self.get_sec_level_name() + + class DeleteMetadataSecModel(BaseModel): """ 删除数据安全配置模型 @@ -88,13 +90,16 @@ class DeleteMetadataSecModel(BaseModel): model_config = ConfigDict(alias_generator=to_camel) onums: str = Field(description='需要删除的唯一编号(多个用逗号分隔)') + + class MetadataSecQueryModel(MetadataSecModel): """ 数据安全配置不分页查询模型 """ begin_time: Optional[str] = Field(default=None, description='开始时间') end_time: Optional[str] = Field(default=None, description='结束时间') - + + @as_query class MetadataSecPageQueryModel(MetadataSecQueryModel): """ @@ -102,8 +107,8 @@ class MetadataSecPageQueryModel(MetadataSecQueryModel): """ page_num: int = Field(default=1, description='当前页码') page_size: int = Field(default=10, description='每页记录数') - - + + # ----------- t_secu_biz_config 表对应模型 -------------- class SecuBizConfigRelaModel(BaseModel): @@ -116,6 +121,8 @@ class SecuBizConfigRelaModel(BaseModel): tab_onum: Optional[int] = Field(default=None, description="表ID") create_by: Optional[str] = Field(default=None, description="创建者") create_time: Optional[datetime] = Field(default=None, description="创建时间") + + class TaskBizConfigRelaModel(BaseModel): """ 业务域配置关联表对应 Pydantic 模型 @@ -125,7 +132,8 @@ class TaskBizConfigRelaModel(BaseModel): biz_onum: Optional[int] = Field(default=None, description="业务域ID") tab_onum: Optional[int] = Field(default=None, description="表ID") create_by: Optional[str] = Field(default=None, description="创建者") - create_time: Optional[datetime] = Field(default=None, description="创建时间") + create_time: Optional[datetime] = Field(default=None, description="创建时间") + class SecuBizConfigAddModel(BaseModel): """ @@ -141,7 +149,9 @@ class SecuBizConfigAddModel(BaseModel): create_time: Optional[datetime] = Field(default=None, description='创建时间') update_by: Optional[str] = Field(default=None, description='更新者') update_time: Optional[datetime] = Field(default=None, description='更新时间') - tab_onum_list: List[int] = Field(default=None, description='表id列表') + tab_onum_list: List[int] = Field(default=None, description='表id列表') + + class SecuBizConfigModel(BaseModel): """ 业务域配置对应 Pydantic 模型 @@ -165,6 +175,7 @@ class SecuBizConfigModel(BaseModel): def validate_fields(self): self.get_risk_lvl() + class DeleteSecuBizConfigModel(BaseModel): """ 删除业务域配置模型 @@ -172,6 +183,7 @@ class DeleteSecuBizConfigModel(BaseModel): model_config = ConfigDict(alias_generator=to_camel) onums: str = Field(..., description='需要删除的唯一编号(多个用逗号分隔)') + class SecuBizConfigQueryModel(SecuBizConfigModel): """ 业务域配置不分页查询模型 @@ -179,6 +191,7 @@ class SecuBizConfigQueryModel(SecuBizConfigModel): begin_time: Optional[str] = Field(default=None, description='开始时间') end_time: Optional[str] = Field(default=None, description='结束时间') + @as_query class SecuBizConfigPageQueryModel(SecuBizConfigQueryModel): """ @@ -206,6 +219,8 @@ class SecuBizPermiConfigModel(BaseModel): create_time: Optional[datetime] = Field(default=None, description='创建时间') update_by: Optional[str] = Field(default=None, description='更新者') update_time: Optional[datetime] = Field(default=None, description='更新时间') + + class SecuBizPermiConfigBatchModel(BaseModel): model_config = ConfigDict(alias_generator=to_camel, from_attributes=True) @@ -215,8 +230,6 @@ class SecuBizPermiConfigBatchModel(BaseModel): obj_name: str = Field(..., description='角色名称') isStop: Optional[bool] = Field(default=False, description='是否停用(false:运行 true:停用)') - - @NotBlank(field_name='obj_name', message='角色名称不能为空') @Size(field_name='obj_name', max_length=50, message='角色名称长度不能超过50个字符') def get_obj_name(self): @@ -225,6 +238,7 @@ class SecuBizPermiConfigBatchModel(BaseModel): def validate_fields(self): self.get_obj_name() + class DeleteSecuBizPermiConfigModel(BaseModel): """ 删除业务域权限配置模型 @@ -232,6 +246,7 @@ class DeleteSecuBizPermiConfigModel(BaseModel): model_config = ConfigDict(alias_generator=to_camel) onums: str = Field(..., description='需要删除的唯一编号(多个用逗号分隔)') + class SecuBizPermiConfigQueryModel(SecuBizPermiConfigModel): """ 业务域权限配置不分页查询模型 @@ -239,6 +254,7 @@ class SecuBizPermiConfigQueryModel(SecuBizPermiConfigModel): begin_time: Optional[str] = Field(default=None, description='开始时间') end_time: Optional[str] = Field(default=None, description='结束时间') + @as_query class SecuBizPermiConfigPageQueryModel(SecuBizPermiConfigQueryModel): """ @@ -246,56 +262,40 @@ class SecuBizPermiConfigPageQueryModel(SecuBizPermiConfigQueryModel): """ page_num: int = Field(default=1, description='当前页码') page_size: int = Field(default=10, description='每页记录数') -class BatchDataopLabelConfigModel(BaseModel): + + +class BatchDatatypeLabelConfigModel(BaseModel): """ - 批处理数据操作标签配置 Pydantic 模型 + 批处理字段类型标签配置 Pydantic 模型 """ model_config = ConfigDict(alias_generator=to_camel, from_attributes=True) onum: Optional[int] = Field(default=None, description='唯一编号') - optype: Optional[str] = Field(default=None, description='唯一类型,忽略类型') - config1: Optional[float] = Field(default=None, description='参数1') - config2: Optional[float] = Field(default=None, description='参数2') - config3: Optional[float] = Field(default=None, description='参数3') - config4: Optional[float] = Field(default=None, description='参数4') - config5: Optional[float] = Field(default=None, description='参数5') - config6: Optional[float] = Field(default=None, description='参数6') - config7: Optional[float] = Field(default=None, description='参数7') - ssys_cd: Optional[str] = Field(default=None, description='系统代码') + datatype: Optional[str] = Field(default=None, description='字段类型') + ratio: Optional[float] = Field(default=None, description='比率') + ssys_id: Optional[int] = Field(default=None, description='系统代码') mdl_name: Optional[str] = Field(default=None, description='模块名称') upd_by: Optional[str] = Field(default=None, description='更新人员') upd_time: Optional[datetime] = Field(default=None, description='更新时间') + class BatchDataopLabelConfigModelVo(BaseModel): - """ - 批处理数据操作标签配置 Pydantic 模型 - """ - model_config = ConfigDict(alias_generator=to_camel, from_attributes=True) - config1: Optional[float] = Field(default=None, description='参数1') - config2: Optional[float] = Field(default=None, description='参数2') - config3: Optional[float] = Field(default=None, description='参数3') - config4: Optional[float] = Field(default=None, description='参数4') - config5: Optional[float] = Field(default=None, description='参数5') - config6: Optional[float] = Field(default=None, description='参数6') - config7: Optional[float] = Field(default=None, description='参数7') - ssys_cd: Optional[str] = Field(default=None, description='系统代码') - mdl_name: Optional[str] = Field(default=None, description='模块名称') - upd_by: Optional[str] = Field(default=None, description='更新人员') - upd_time: Optional[datetime] = Field(default=None, description='更新时间') -class BatchDatatypeLabelConfigModel(BaseModel): """ 批处理字段类型标签配置 Pydantic 模型 """ model_config = ConfigDict(alias_generator=to_camel, from_attributes=True) onum: Optional[int] = Field(default=None, description='唯一编号') - datatype: Optional[str] = Field(default=None, description='字段类型') - ratio: Optional[float] = Field(default=None, description='比率') - ssys_cd: Optional[str] = Field(default=None, description='系统代码') + op_type: Optional[str] = Field(default=None, description='处理类型') + col_type: Optional[str] = Field(default=None, description='字段类型') + col_attr: Optional[str] = Field(default=None, description='字段属性') + ratio: Optional[float] = Field(default=None, description='阈值') + ssys_id: Optional[int] = Field(default=None, description='系统代码') mdl_name: Optional[str] = Field(default=None, description='模块名称') upd_by: Optional[str] = Field(default=None, description='更新人员') upd_time: Optional[datetime] = Field(default=None, description='更新时间') + class BatchBusiLabelConfigModel(BaseModel): """ 批处理业务标签配置 Pydantic 模型 @@ -305,24 +305,34 @@ class BatchBusiLabelConfigModel(BaseModel): onum: Optional[int] = Field(default=None, description='唯一编号') regex_name: Optional[str] = Field(default=None, description='正则表达式名称') regex_pattern: Optional[str] = Field(default=None, description='正则表达式') - ssys_cd: Optional[str] = Field(default=None, description='系统代码') + ssys_id: Optional[int] = Field(default=None, description='系统代码') mdl_name: Optional[str] = Field(default=None, description='模块名称') ratio: Optional[float] = Field(default=None, description='比率') upd_by: Optional[str] = Field(default=None, description='更新人员') - upd_time: Optional[datetime] = Field(default=None, description='更新时间') + upd_time: Optional[datetime] = Field(default=None, description='更新时间') + + @as_query -class BatchDataopLabelModelPageQueryModel(BatchDataopLabelConfigModel): +class ColOpTypeLabelPageQueryModel(BaseModel): + model_config = ConfigDict(alias_generator=to_camel, from_attributes=True) + ssys_id: Optional[int] = Field(default=None, description='系统名称') + mdl_name: Optional[str] = Field(default=None, description='模式名称') + page_num: Optional[int] = Field(default=None, description='当前页码') + page_size: Optional[int] = Field(default=None, description='每页记录数') + - page_num: int = Field(default=1, description='当前页码') - page_size: int = Field(default=10, description='每页记录数') @as_query class BatchDatatypeLabelConfigPageQueryModel(BatchDatatypeLabelConfigModel): page_num: int = Field(default=1, description='当前页码') - page_size: int = Field(default=10, description='每页记录数') + page_size: int = Field(default=10, description='每页记录数') + + @as_query class BatchBusiLabelConfigPageQueryModel(BatchBusiLabelConfigModel): page_num: int = Field(default=1, description='当前页码') - page_size: int = Field(default=10, description='每页记录数') + page_size: int = Field(default=10, description='每页记录数') + + class DatasecConfigModel(BaseModel): """ 数据安全任务配置 Pydantic 模型(对应表 t_datasec_config) @@ -339,13 +349,16 @@ class DatasecConfigModel(BaseModel): status: Optional[str] = Field(default=None, description="状态") ds_time: Optional[datetime] = Field(default=None, description="调度时间") ds_ids: Optional[str] = Field(default=None, description="任务ID") - schId: Optional[str] = Field(default=None, description="调度id") + schId: Optional[str] = Field(default=None, description="调度id") + + @as_query class DatasecConfigPageQueryModel(DatasecConfigModel): page_num: int = Field(default=1, description='当前页码') - page_size: int = Field(default=10, description='每页记录数') - begin_time: Optional[str]= Field(default=None, description='开始时间') - end_time: Optional[str]= Field(default=None, description='结束时间') + page_size: int = Field(default=10, description='每页记录数') + begin_time: Optional[str] = Field(default=None, description='开始时间') + end_time: Optional[str] = Field(default=None, description='结束时间') + class TaskBizConfigAddModel(BaseModel): """ @@ -364,8 +377,10 @@ class TaskBizConfigAddModel(BaseModel): status: Optional[str] = Field(default="OFFLINE", description="状态") ds_time: Optional[datetime] = Field(default=None, description="调度时间") ds_ids: Optional[str] = Field(default=None, description="任务ID") - schId: Optional[str] = Field(default=None, description="调度id") - tab_onum_list: List[int] = Field(default=None, description='表id列表') + schId: Optional[str] = Field(default=None, description="调度id") + tab_onum_list: List[int] = Field(default=None, description='表id列表') + + class TaskBizConfigModel(BaseModel): """ 标签任务配置对应 Pydantic 模型 @@ -383,7 +398,8 @@ class TaskBizConfigModel(BaseModel): status: Optional[str] = Field(default="OFFLINE", description="状态") ds_time: Optional[datetime] = Field(default=None, description="调度时间") ds_ids: Optional[str] = Field(default=None, description="任务ID") - schId: Optional[str] = Field(default=None, description="调度id") + schId: Optional[str] = Field(default=None, description="调度id") + @NotBlank(field_name='risk_lvl', message='安全等级不能为空') @Size(field_name='risk_lvl', max_length=50, message='安全等级长度不能超过50') def get_risk_lvl(self): @@ -392,6 +408,7 @@ class TaskBizConfigModel(BaseModel): def validate_fields(self): self.get_risk_lvl() + class DeleteTaskBizConfigModel(BaseModel): """ 删除业务域配置模型 @@ -399,6 +416,7 @@ class DeleteTaskBizConfigModel(BaseModel): model_config = ConfigDict(alias_generator=to_camel) onums: str = Field(..., description='需要删除的唯一编号(多个用逗号分隔)') + class TaskBizConfigQueryModel(TaskBizConfigModel): """ 业务域配置不分页查询模型 @@ -406,10 +424,11 @@ class TaskBizConfigQueryModel(TaskBizConfigModel): begin_time: Optional[str] = Field(default=None, description='开始时间') end_time: Optional[str] = Field(default=None, description='结束时间') + @as_query class TaskBizConfigPageQueryModel(TaskBizConfigQueryModel): """ 业务域配置分页查询模型 """ page_num: int = Field(default=1, description='当前页码') - page_size: int = Field(default=10, description='每页记录数') \ No newline at end of file + page_size: int = Field(default=10, description='每页记录数') diff --git a/vue-fastapi-backend/module_admin/service/batch_label_config_service.py b/vue-fastapi-backend/module_admin/service/batch_label_config_service.py index ab75c45..322afb5 100644 --- a/vue-fastapi-backend/module_admin/service/batch_label_config_service.py +++ b/vue-fastapi-backend/module_admin/service/batch_label_config_service.py @@ -1,7 +1,8 @@ from sqlalchemy.ext.asyncio import AsyncSession from module_admin.dao.batch_label_config_dao import BatchLabelConfigDAO from module_admin.entity.vo.common_vo import CrudResponseModel -from module_admin.entity.vo.metadata_config_vo import BatchBusiLabelConfigModel,BatchDataopLabelConfigModel,BatchDatatypeLabelConfigModel,BatchDataopLabelConfigModelVo +from module_admin.entity.vo.metadata_config_vo import BatchBusiLabelConfigModel, BatchDatatypeLabelConfigModel +from module_admin.entity.do.metadata_config_do import BatchDataopLabelConfig from exceptions.exception import ServiceException import uuid from utils.common_util import CamelCaseUtil @@ -17,6 +18,10 @@ class BatchLabelConfigService: async def get_busi_list_services(cls, db: AsyncSession, query_object, is_page: bool = False): return await BatchLabelConfigDAO.get_busi_list(db, query_object, is_page) + @classmethod + async def get_col_optype_list_services(cls, db: AsyncSession, query_object, is_page: bool = False): + return await BatchLabelConfigDAO.get_col_optype_list(db, query_object, is_page) + @classmethod async def add_busi_services(cls, db: AsyncSession, page_object): try: @@ -44,7 +49,7 @@ class BatchLabelConfigService: @classmethod async def delete_busi_services(cls, db: AsyncSession, onum_list: str): - id_list = [x.strip() for x in onum_list.split(",") if x.strip()] + id_list = [int(x.strip()) for x in onum_list.split(",") if x.strip()] if not id_list: raise ServiceException(message="无效的编号列表") @@ -70,95 +75,37 @@ class BatchLabelConfigService: @classmethod async def get_dataop_list_services(cls, db: AsyncSession, query_object, is_page: bool = False): return await BatchLabelConfigDAO.get_dataop_list(db, query_object, is_page) - @classmethod - async def get_dataop_vo_services(cls, db: AsyncSession, query_object, is_page: bool = False): - result = BatchDataopLabelConfigModelVo() # 自定义返回 VO 对象 - resultList = await BatchLabelConfigDAO.get_dataop_list_all(db, query_object) - if resultList: - for item in resultList: - if item.optype == "唯一类型": - result.config1 = item.config1 - result.config2 = item.config2 - result.config3 = item.config3 - result.config4 = item.config4 - result.ssys_cd = item.ssys_cd - result.mdl_name = item.mdl_name - result.upd_by = item.upd_by - result.upd_time = item.upd_time - - elif item.optype == "忽略类型": - result.config5 = item.config1 # 注意:忽略类型只有 config1, config2 - result.config6 = item.config2 - # 其他公共字段,如果你也想覆盖可再写一次: - result.ssys_cd = item.ssys_cd - result.mdl_name = item.mdl_name - result.upd_by = item.upd_by - result.upd_time = item.upd_time - - return result - @classmethod async def add_dataop_services(cls, db: AsyncSession, page_object): try: - - resultList = await BatchLabelConfigDAO.get_dataop_list_all(db, page_object) - - # 唯一类型对象 - onopLabel = BatchDataopLabelConfigModel( - optype="唯一类型", - config1=page_object.config1, - config2=page_object.config2, - config3=page_object.config3, - config4=page_object.config4, - ssysCd=page_object.ssys_cd, - mdlName=page_object.mdl_name, - updBy=page_object.upd_by, - updTime=page_object.upd_time - ) - - # 忽略类型对象 - inopLabel = BatchDataopLabelConfigModel( - optype="忽略类型", - config1=page_object.config5, - config2=page_object.config6, - ssysCd=page_object.ssys_cd, - mdlName=page_object.mdl_name, - updBy=page_object.upd_by, - updTime=page_object.upd_time - ) - - if resultList: - for item in resultList: - if item.optype == "唯一类型": - update_data = { - "config1": onopLabel.config1, - "config2": onopLabel.config2, - "config3": onopLabel.config3, - "config4": onopLabel.config4, - "ssys_cd": onopLabel.ssys_cd, - "mdl_name": onopLabel.mdl_name, - "upd_by": onopLabel.upd_by, - "upd_time": onopLabel.upd_time - } - elif item.optype == "忽略类型": - update_data = { - "config1": inopLabel.config1, - "config2": inopLabel.config2, - "ssys_cd": inopLabel.ssys_cd, - "mdl_name": inopLabel.mdl_name, - "upd_by": inopLabel.upd_by, - "upd_time": inopLabel.upd_time - } - else: - continue # 忽略未知类型 - await BatchLabelConfigDAO.edit_dataop(db, item.onum, update_data) + if page_object.onum: + # edit + conf = BatchDataopLabelConfig() + conf.op_type = page_object.op_type + conf.col_type = page_object.col_type + conf.col_attr = page_object.col_attr + conf.ratio = page_object.ratio + conf.ssys_id = page_object.ssys_id + conf.mdl_name = page_object.mdl_name + conf.upd_by = page_object.upd_by + conf.upd_time = page_object.upd_time + dic = conf.model_dump(exclude_unset=True) + await BatchLabelConfigDAO.edit_dataop(db, page_object.onum, dic) else: - await BatchLabelConfigDAO.add_dataop(db, onopLabel) - await BatchLabelConfigDAO.add_dataop(db, inopLabel) - + # add + conf = BatchDataopLabelConfig() + conf.op_type = page_object.op_type + conf.col_type = page_object.col_type + conf.col_attr = page_object.col_attr + conf.ratio = page_object.ratio + conf.ssys_id = page_object.ssys_id + conf.mdl_name = page_object.mdl_name + conf.upd_by = page_object.upd_by + conf.upd_time = page_object.upd_time + await BatchLabelConfigDAO.add_dataop(db, conf) await db.commit() - return CrudResponseModel(is_success=True, message="新增或更新成功") + return CrudResponseModel(is_success=True, message="操作成功") except Exception as e: await db.rollback() raise e @@ -166,8 +113,8 @@ class BatchLabelConfigService: @classmethod async def edit_dataop_services(cls, db: AsyncSession, page_object): edit_data = page_object.model_dump(exclude_unset=True) - info = await cls.get_dataop_detail_services(db, page_object.onum) - if info.onum: + result = await BatchLabelConfigDAO.get_dataop_detail_by_id(db, page_object.onum) + if result.onum: try: await BatchLabelConfigDAO.edit_dataop(db, page_object.onum, edit_data) await db.commit() @@ -180,7 +127,7 @@ class BatchLabelConfigService: @classmethod async def delete_dataop_services(cls, db: AsyncSession, onum_list: str): - id_list = [x.strip() for x in onum_list.split(",") if x.strip()] + id_list = [int(x.strip()) for x in onum_list.split(",") if x.strip()] if not id_list: raise ServiceException(message="无效的编号列表") @@ -192,13 +139,6 @@ class BatchLabelConfigService: await db.rollback() raise e - @classmethod - async def get_dataop_detail_services(cls, db: AsyncSession, onum: str): - result = await BatchLabelConfigDAO.get_dataop_detail_by_id(db, onum) - if result: - return BatchDataopLabelConfigModel(**CamelCaseUtil.transform_result(result)) - return BatchDataopLabelConfigModel(**dict()) - # endregion # region === BatchDatatypeLabelConfig === @@ -234,7 +174,7 @@ class BatchLabelConfigService: @classmethod async def delete_datatype_services(cls, db: AsyncSession, onum_list: str): - id_list = [x.strip() for x in onum_list.split(",") if x.strip()] + id_list = [int(x.strip()) for x in onum_list.split(",") if x.strip()] if not id_list: raise ServiceException(message="无效的编号列表") diff --git a/vue-fastapi-frontend/src/api/metadataConfig/metadataConfig.js b/vue-fastapi-frontend/src/api/metadataConfig/metadataConfig.js index 7f51f3a..f2771ab 100644 --- a/vue-fastapi-frontend/src/api/metadataConfig/metadataConfig.js +++ b/vue-fastapi-frontend/src/api/metadataConfig/metadataConfig.js @@ -206,6 +206,15 @@ export function getBusiLabelList(data) { }) } +// 获取业务标签列表(分页) +export function getColOpTypeLabelList(data) { + return request({ + url: '/default-api/metadataConfig/colOpTypeLabel/list', + method: 'get', + params: data + }) +} + // 新增业务标签 export function addBusiLabel(data) { return request({ @@ -239,14 +248,6 @@ export function getBusiLabelDetail(onum) { method: 'get' }) } -// 获取操作标签列表(分页) -export function getDataopLabelList(data) { - return request({ - url: '/default-api/metadataConfig/dataopLabel/list', - method: 'get', - params: data - }) -} // 新增操作标签 export function addDataopLabel(data) { diff --git a/vue-fastapi-frontend/src/views/metadataConfig/metaclas/index.vue b/vue-fastapi-frontend/src/views/metadataConfig/metaclas/index.vue index 764da91..3c77d6e 100644 --- a/vue-fastapi-frontend/src/views/metadataConfig/metaclas/index.vue +++ b/vue-fastapi-frontend/src/views/metadataConfig/metaclas/index.vue @@ -3,8 +3,8 @@ - - + + @@ -61,13 +61,13 @@ - 新增 + 新增 - 修改 + 修改 - 删除 + 删除 @@ -81,15 +81,6 @@ - - - - - - - - - @@ -122,6 +113,34 @@ 保存 + + + + + + + + + + + + + + + + + + + + + + + + + @@ -137,17 +156,19 @@ import { deleteBusiLabel, editBusiLabel, addBusiLabel, + getBusiLabelList, + deleteDataopLabel, + editDataopLabel, addDataopLabel, - getDataopLabelList, - getBusiLabelList + getColOpTypeLabelList, } from "@/api/metadataConfig/metadataConfig"; import useUserStore from '@/store/modules/user'; // 注意路径是否正确 const userStore = useUserStore(); // 正确调用 const dsSysList = userStore.dsSysList; // 访问属性 const queryForm = reactive({ - ssysCd: "*", - mdlName: "*", + ssysId: undefined, + mdlName: "", }); const activeTab = ref('valueType'); const configList1 = ref([]); // 值类型参数数据 @@ -157,10 +178,12 @@ const loading = ref(false); const open1 = ref(false); // 值类型弹窗开关 const open2 = ref(false); // 业务类型弹窗开关 +const open3 = ref(false); // 字段处理类型弹窗开关 const title = ref(""); const clasFormRef1 = ref(null); // 值类型 formRef const clasFormRef2 = ref(null); // 业务类型 formRef +const clasFormRef3 = ref(null); // 字段处理类型 formRef const form1 = reactive({ datatype: "", @@ -172,13 +195,12 @@ const form2 = reactive({ ratio: null, }); const form3 = reactive({ - config1: null, - config2: null, - config3: null, - config4: null, - config5: null, - config6: null, - config7: null, + opType: "", + colType: "", + colAttr: "", + ssysId: undefined, + mdlName: "", + ratio: null, }); const rules1 = { @@ -190,6 +212,12 @@ const rules2 = { regexPattern: [{ required: true, message: "请输入正则表达式", trigger: "blur" }], ratio: [{ required: true, message: "请输入阈值", trigger: "blur" }], }; +const rules3 = { + opType: [{ required: true, message: "请输入处理类型", trigger: "blur" }], + colType: [{ required: true, message: "请输入字段类型", trigger: "blur" }], + colAttr: [{ required: true, message: "请输入字段属", trigger: "blur" }], + ratio: [{ required: true, message: "请输入阈值", trigger: "blur" }], +}; const selectedRows1 = ref([]); const selectedRows2 = ref([]); @@ -229,16 +257,20 @@ async function getList2() { } } async function getList3() { - - const res = await getDataopLabelList(queryForm); - Object.assign(form3, res.data); - - + loading.value = true; + try { + const res = await getColOpTypeLabelList(queryForm); + configList3.value = res.data || []; + } catch (error) { + ElMessage.error("获取字段处理类型列表失败"); + } finally { + loading.value = false; + } } function resetQuery() { - queryForm.ssysCd = "*"; - queryForm.mdlName = "*"; + queryForm.ssysId = undefined; + queryForm.mdlName = ""; getList1(); getList2(); getList3(); @@ -270,7 +302,7 @@ function openEditDialog1(row) { function submitForm1() { clasFormRef1.value.validate(async (valid) => { if (!valid) return; - const submitData = { ...form1,ssysCd:queryForm.ssysCd,mdlName:queryForm.mdlName }; + const submitData = { ...form1,ssysId:queryForm.ssysId,mdlName:queryForm.mdlName }; try { if (title.value.includes("新增")) { await addDatatypeLabel(submitData); @@ -286,17 +318,6 @@ function submitForm1() { } }); } -async function submitForm3() { - - const submitData = { ...form3,ssysCd:queryForm.ssysCd,mdlName:queryForm.mdlName }; - try { - await addDataopLabel(submitData); - ElMessage.success("编辑成功"); - - } catch (error) { - ElMessage.error("操作失败,请重试"); - } -} function deleteSelected1() { if (selectedRows1.value.length === 0) { ElMessage.warning("请至少选择一条记录删除"); @@ -334,6 +355,18 @@ function openAddDialog2() { }); open2.value = true; } +function openAddDialog3() { + title.value = "新增字段处理类型参数"; + Object.assign(form3, { + opType: "", + colType: "", + colAttr: "", + ssysId: queryForm.ssysId, + mdlName: queryForm.mdlName, + ratio: null, + }); + open3.value = true; +} function openEditDialog2(row) { if (!row) { @@ -345,10 +378,20 @@ function openEditDialog2(row) { open2.value = true; } +function openEditDialog3(row) { + if (!row) { + ElMessage.warning("请选择一条记录进行编辑"); + return; + } + title.value = "编辑字段处理类型参数"; + Object.assign(form3, row); + open3.value = true; +} + function submitForm2() { clasFormRef2.value.validate(async (valid) => { if (!valid) return; - const submitData = { ...form2,ssysCd:queryForm.ssysCd,mdlName:queryForm.mdlName}; + const submitData = { ...form2,ssysId:queryForm.ssysId,mdlName:queryForm.mdlName}; try { if (title.value.includes("新增")) { await addBusiLabel(submitData); @@ -364,6 +407,25 @@ function submitForm2() { } }); } +function submitForm3() { + clasFormRef3.value.validate(async (valid) => { + if (!valid) return; + const submitData = { ...form3}; + try { + if (title.value.includes("新增")) { + await addDataopLabel(submitData); + ElMessage.success("新增成功"); + } else { + await editDataopLabel(submitData); + ElMessage.success("编辑成功"); + } + open3.value = false; + await getList3(); + } catch { + ElMessage.error("操作失败,请重试"); + } + }); +} function deleteSelected2() { if (selectedRows2.value.length === 0) { @@ -387,11 +449,38 @@ function deleteSelected2() { }); } +function deleteSelected3() { + if (selectedRows3.value.length === 0) { + ElMessage.warning("请至少选择一条记录删除"); + return; + } + ElMessageBox.confirm( + `确定删除选中的 ${selectedRows3.value.length} 条字段处理类型参数吗?`, + "提示", + { type: "warning" } + ).then(async () => { + try { + for (const row of selectedRows3.value) { + await deleteDataopLabel(row.onum); + } + ElMessage.success("删除成功"); + getList3(); + } catch { + ElMessage.error("删除失败,请重试"); + } + }); +} + function handleClose2(done) { clasFormRef2.value.resetFields(); done(); } +function handleClose3(done) { + clasFormRef3.value.resetFields(); + done(); +} + onMounted(() => { getList1(); getList2();