You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
496 lines
22 KiB
496 lines
22 KiB
from sqlalchemy.ext.asyncio import AsyncSession
|
|
from sqlalchemy import select, text, cast, Integer, and_, or_, outerjoin, func, join, update, desc
|
|
from module_admin.entity.vo.meta_vo import MetaPageObject, MetaColObject
|
|
from module_admin.entity.do.meta_do import MetadataExtractInfo, MetadataSuppInfo, MetadataFldTabExtractInfo, \
|
|
MetadataFldSuppInfo, MetadataClas, MetadataSuppInfoVett, MetadataFldSuppInfoVett, MetaBatchTabClas, MetaBatchFldClas
|
|
from utils.common_util import CamelCaseUtil
|
|
import uuid
|
|
from utils.page_util import PageUtil
|
|
|
|
|
|
class MetaDao:
|
|
|
|
@classmethod
|
|
async def get_meta_tab_clas(cls, db: AsyncSession, sysCode: str, mdlName: str, tabName: str):
|
|
query_result = (
|
|
(
|
|
await db.execute(
|
|
select(
|
|
MetaBatchTabClas.onum,
|
|
MetaBatchTabClas.ssys_cd,
|
|
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_eff_flag,
|
|
MetadataClas.rec_subm_prsn,
|
|
MetadataClas.clas_name
|
|
).join(
|
|
MetadataClas, MetaBatchTabClas.clas_onum == MetadataClas.clas_onum
|
|
)
|
|
.where(MetaBatchTabClas.ssys_cd == sysCode,
|
|
MetaBatchTabClas.mdl_name == mdlName,
|
|
MetaBatchTabClas.tab_eng_name == tabName).distinct()
|
|
)
|
|
).fetchall()
|
|
)
|
|
return query_result
|
|
|
|
@classmethod
|
|
async def get_meta_fld_clas(cls, db: AsyncSession, sysCode: str, mdlName: str, tabName: str, fldName: str):
|
|
query_result = (
|
|
(
|
|
await db.execute(
|
|
select(
|
|
MetaBatchFldClas.onum,
|
|
MetaBatchFldClas.ssys_cd,
|
|
MetaBatchFldClas.data_whs_name,
|
|
MetaBatchFldClas.mdl_name,
|
|
MetaBatchFldClas.tab_no,
|
|
MetaBatchFldClas.tab_eng_name,
|
|
MetaBatchFldClas.fld_eng_name,
|
|
MetaBatchFldClas.clas_onum,
|
|
MetaBatchFldClas.clas_value,
|
|
MetadataClas.clas_pri_clas,
|
|
MetadataClas.clas_scd_clas,
|
|
MetadataClas.clas_thre_clas,
|
|
MetadataClas.clas_eff_flag,
|
|
MetadataClas.rec_subm_prsn,
|
|
MetadataClas.clas_name
|
|
).join(
|
|
MetadataClas, MetaBatchFldClas.clas_onum == MetadataClas.clas_onum
|
|
)
|
|
.where(MetaBatchFldClas.ssys_cd == sysCode,
|
|
MetaBatchFldClas.mdl_name == mdlName,
|
|
MetaBatchFldClas.tab_eng_name == tabName,
|
|
MetaBatchFldClas.fld_eng_name == fldName).distinct()
|
|
)
|
|
).fetchall()
|
|
)
|
|
return query_result
|
|
|
|
@classmethod
|
|
async def get_meta_rel_list(cls, db: AsyncSession, query_object: MetaPageObject):
|
|
"""
|
|
根据查询参数获取用户列表信息
|
|
"""
|
|
# 主查询
|
|
query = (
|
|
select(
|
|
MetadataExtractInfo.onum.label('extract_onum'),
|
|
MetadataExtractInfo.extract_ver_num,
|
|
MetadataExtractInfo.ver_desc.label('extract_ver_desc'),
|
|
MetadataExtractInfo.ssys_cd,
|
|
MetadataExtractInfo.data_whs_name,
|
|
MetadataExtractInfo.mdl_name,
|
|
MetadataExtractInfo.tab_no,
|
|
MetadataExtractInfo.tab_type,
|
|
MetadataExtractInfo.tab_eng_name,
|
|
MetadataExtractInfo.tab_cn_name,
|
|
MetadataExtractInfo.tab_rec_num,
|
|
MetadataExtractInfo.upd_time.label('extract_upd_time'),
|
|
MetadataSuppInfo.onum.label('supp_onum'),
|
|
MetadataSuppInfo.crrct_ver_num.label('supp_crrct_ver_num'),
|
|
MetadataSuppInfo.tab_crrct_name,
|
|
MetadataSuppInfo.tab_desc,
|
|
MetadataSuppInfo.pic,
|
|
MetadataSuppInfo.gov_flag,
|
|
MetadataSuppInfo.rec_stat.label('supp_rec_stat'),
|
|
MetadataSuppInfo.tab_clas,
|
|
MetadataSuppInfo.rec_subm_prsn,
|
|
MetadataSuppInfo.upd_time.label('supp_upd_time'),
|
|
).join(MetadataSuppInfo,
|
|
and_(
|
|
MetadataExtractInfo.ssys_cd == MetadataSuppInfo.ssys_cd,
|
|
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.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.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.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}%'),
|
|
MetadataSuppInfo.tab_eng_name.like(f'%{query_object.tab_name}%'),
|
|
MetadataSuppInfo.tab_crrct_name.like(f'%{query_object.tab_name}%'),
|
|
) if query_object.tab_name else True,
|
|
or_(
|
|
MetadataFldTabExtractInfo.fld_eng_name.like(f'%{query_object.col_name}%'),
|
|
MetadataFldTabExtractInfo.fld_cn_name.like(f'%{query_object.col_name}%'),
|
|
MetadataFldSuppInfo.fld_eng_name.like(f'%{query_object.col_name}%'),
|
|
MetadataFldSuppInfo.fld_crrct_name.like(f'%{query_object.col_name}%'),
|
|
) if query_object.col_name else True,
|
|
MetadataExtractInfo.tab_type == query_object.tab_type if query_object.tab_type else True,
|
|
MetadataExtractInfo.rec_stat == query_object.rec_stat if query_object.rec_stat else True,
|
|
).distinct()
|
|
)
|
|
result = await PageUtil.paginate(db, query, query_object.page_num, query_object.page_size, True)
|
|
return result
|
|
|
|
@classmethod
|
|
async def get_meta_col_list(cls, db: AsyncSession, query_object: MetaColObject):
|
|
query_result = (
|
|
(
|
|
await db.execute(
|
|
select(
|
|
MetadataFldTabExtractInfo.onum.label('extract_onum'),
|
|
MetadataFldTabExtractInfo.extract_ver_num,
|
|
MetadataFldTabExtractInfo.ssys_cd,
|
|
MetadataFldTabExtractInfo.data_whs_name,
|
|
MetadataFldTabExtractInfo.mdl_name,
|
|
MetadataFldTabExtractInfo.tab_no,
|
|
MetadataFldTabExtractInfo.tab_eng_name,
|
|
MetadataFldTabExtractInfo.fld_no,
|
|
MetadataFldTabExtractInfo.fld_eng_name,
|
|
MetadataFldTabExtractInfo.fld_cn_name,
|
|
MetadataFldTabExtractInfo.fld_type,
|
|
MetadataFldTabExtractInfo.pk_flag,
|
|
MetadataFldTabExtractInfo.require_flag,
|
|
MetadataFldTabExtractInfo.idx_flag,
|
|
MetadataFldTabExtractInfo.upd_time.label('extract_upd_time'),
|
|
MetadataFldSuppInfo.onum.label('supp_onum'),
|
|
MetadataFldSuppInfo.crrct_ver_num,
|
|
MetadataFldSuppInfo.fld_crrct_name,
|
|
MetadataFldSuppInfo.crrct_pk_flag,
|
|
MetadataFldSuppInfo.fld_desc,
|
|
MetadataFldSuppInfo.pic,
|
|
MetadataFldSuppInfo.fld_clas,
|
|
MetadataFldSuppInfo.fld_null_rate,
|
|
MetadataFldSuppInfo.rec_stat.label('supp_rec_stat'),
|
|
MetadataFldSuppInfo.upd_time.label('supp_upd_time')
|
|
).select_from(
|
|
join(
|
|
MetadataFldTabExtractInfo,
|
|
MetadataFldSuppInfo,
|
|
and_(
|
|
MetadataFldTabExtractInfo.ssys_cd == MetadataFldSuppInfo.ssys_cd,
|
|
MetadataFldTabExtractInfo.mdl_name == MetadataFldSuppInfo.mdl_name,
|
|
MetadataFldTabExtractInfo.tab_eng_name == MetadataFldSuppInfo.tab_eng_name,
|
|
MetadataFldTabExtractInfo.fld_eng_name == MetadataFldSuppInfo.fld_eng_name
|
|
), isouter=True
|
|
)
|
|
).where(
|
|
MetadataFldTabExtractInfo.ssys_cd == query_object.ssys_cd,
|
|
MetadataFldTabExtractInfo.mdl_name == query_object.mdl_name,
|
|
MetadataFldTabExtractInfo.tab_eng_name == query_object.tab_name
|
|
).distinct()
|
|
)
|
|
).all()
|
|
)
|
|
return [row._asdict() for row in query_result]
|
|
|
|
@classmethod
|
|
async def get_meta_clas_list(cls, db: AsyncSession):
|
|
query_result = (
|
|
(
|
|
await db.execute(
|
|
select(MetadataClas).where(MetadataClas.clas_eff_flag == 1).distinct()
|
|
)
|
|
).scalars().all()
|
|
)
|
|
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):
|
|
query_result = (
|
|
(
|
|
await db.execute(
|
|
select(MetadataSuppInfoVett).where(MetadataSuppInfoVett.ssys_cd == ssys_cd,
|
|
MetadataSuppInfoVett.mdl_name == mdl_name,
|
|
MetadataSuppInfoVett.tab_eng_name == tab_eng_name)
|
|
.order_by(desc(MetadataSuppInfoVett.apply_time))
|
|
.distinct().limit(1)
|
|
)
|
|
).scalars().first()
|
|
)
|
|
return query_result
|
|
|
|
@classmethod
|
|
async def insertMetadataSuppInfoVett(cls, table: MetadataSuppInfoVett, db: AsyncSession):
|
|
db.add(table)
|
|
await db.flush()
|
|
return table
|
|
|
|
@classmethod
|
|
async def updateMetadataSuppInfoVett(cls, onum: str, operateType: str, db: AsyncSession):
|
|
table = dict(
|
|
onum=onum,
|
|
apply_status=operateType
|
|
)
|
|
await db.execute(update(MetadataSuppInfoVett), [table])
|
|
|
|
@classmethod
|
|
async def insertMetadataSuppInfo(cls, table: MetadataSuppInfoVett, db: AsyncSession):
|
|
suppTable = MetadataSuppInfo()
|
|
suppTable.onum = uuid.uuid4()
|
|
suppTable.ssys_cd = table.ssys_cd
|
|
suppTable.mdl_name = table.mdl_name
|
|
suppTable.tab_eng_name = table.tab_eng_name
|
|
suppTable.tab_crrct_name = table.tab_crrct_name
|
|
suppTable.tab_desc = table.tab_desc
|
|
suppTable.pic = table.pic
|
|
suppTable.gov_flag = table.gov_flag
|
|
suppTable.rec_stat = table.rec_stat
|
|
suppTable.tab_clas = table.tab_clas
|
|
suppTable.rec_subm_prsn = table.rec_subm_prsn
|
|
suppTable.upd_time = table.upd_time
|
|
db.add(suppTable)
|
|
await db.flush()
|
|
return suppTable
|
|
|
|
@classmethod
|
|
async def updateMetadataSuppInfo(cls, onum: str, table: MetadataSuppInfoVett, db: AsyncSession):
|
|
suppTable = dict(
|
|
onum=onum,
|
|
tab_crrct_name=table.tab_crrct_name,
|
|
tab_desc=table.tab_desc,
|
|
pic=table.pic,
|
|
gov_flag=table.gov_flag,
|
|
rec_stat=table.rec_stat,
|
|
tab_clas=table.tab_clas,
|
|
rec_subm_prsn=table.rec_subm_prsn,
|
|
upd_time=table.upd_time
|
|
)
|
|
await db.execute(update(MetadataSuppInfo), [suppTable])
|
|
|
|
@classmethod
|
|
async def get_supp_table_vett_by_id(cls, suppId: str, db: AsyncSession):
|
|
query_result = (
|
|
(
|
|
await db.execute(
|
|
select(MetadataSuppInfoVett).where(MetadataSuppInfoVett.onum == suppId).distinct()
|
|
)
|
|
).scalars().first()
|
|
)
|
|
return query_result
|
|
|
|
@classmethod
|
|
async def get_supp_column_vett_by_tableInfo(cls, db: AsyncSession, tableInfo: MetadataSuppInfoVett):
|
|
query_result = (
|
|
(
|
|
await db.execute(
|
|
select(MetadataFldSuppInfoVett).where(
|
|
MetadataFldSuppInfoVett.ssys_cd == tableInfo.ssys_cd,
|
|
MetadataFldSuppInfoVett.mdl_name == tableInfo.mdl_name,
|
|
MetadataFldSuppInfoVett.tab_eng_name == tableInfo.tab_eng_name,
|
|
MetadataFldSuppInfoVett.apply_time == tableInfo.apply_time
|
|
)
|
|
)
|
|
).scalars().all()
|
|
)
|
|
return query_result
|
|
|
|
@classmethod
|
|
async def get_supp_table_by_vett(cls, sysCode: str, mdlName: str, tableName: str, db: AsyncSession):
|
|
query_result = (
|
|
(
|
|
await db.execute(
|
|
select(MetadataSuppInfo).where(MetadataSuppInfo.ssys_cd == sysCode,
|
|
MetadataSuppInfo.mdl_name == mdlName,
|
|
MetadataSuppInfo.tab_eng_name == tableName).distinct()
|
|
)
|
|
).scalars().first()
|
|
)
|
|
return query_result
|
|
|
|
@classmethod
|
|
async def get_meta_table(cls, sysCode: str, mdlName: str, tableName: str, db: AsyncSession):
|
|
query_result = (
|
|
(
|
|
await db.execute(
|
|
select(MetadataExtractInfo).where(MetadataExtractInfo.ssys_cd == sysCode,
|
|
MetadataExtractInfo.mdl_name == mdlName,
|
|
MetadataExtractInfo.tab_eng_name == tableName).distinct()
|
|
)
|
|
).scalars().first()
|
|
)
|
|
return query_result
|
|
|
|
@classmethod
|
|
async def insertMetadataFldSuppInfoVett(cls, column: MetadataFldSuppInfoVett, db: AsyncSession):
|
|
db.add(column)
|
|
await db.flush()
|
|
return column
|
|
|
|
@classmethod
|
|
async def updateMetadataFldSuppInfoVett(cls, onum: str, operateType: str, db: AsyncSession):
|
|
updateColumn = dict(
|
|
onum=onum, apply_status=operateType
|
|
)
|
|
await db.execute(update(MetadataFldSuppInfoVett), [updateColumn])
|
|
|
|
@classmethod
|
|
async def updateMetadataFldSuppInfo(cls, onum: str, column: MetadataFldSuppInfoVett, db: AsyncSession):
|
|
updateColumn = dict(
|
|
onum=onum,
|
|
fld_crrct_name=column.fld_crrct_name,
|
|
crrct_pk_flag=column.crrct_pk_flag,
|
|
fld_desc=column.fld_desc,
|
|
pic=column.pic,
|
|
fld_clas=column.fld_clas,
|
|
fld_null_rate=column.fld_null_rate,
|
|
rec_stat=column.rec_stat,
|
|
upd_time=column.upd_time,
|
|
)
|
|
await db.execute(update(MetadataFldSuppInfo), [updateColumn])
|
|
|
|
@classmethod
|
|
async def insertMetadataFldSuppInfo(cls, column: MetadataFldSuppInfoVett, db: AsyncSession):
|
|
suppColumn = MetadataFldSuppInfo()
|
|
suppColumn.onum = uuid.uuid4()
|
|
suppColumn.ssys_cd = column.ssys_cd
|
|
suppColumn.mdl_name = column.mdl_name
|
|
suppColumn.tab_eng_name = column.tab_eng_name
|
|
suppColumn.fld_eng_name = column.fld_eng_name
|
|
suppColumn.fld_crrct_name = column.fld_crrct_name
|
|
suppColumn.crrct_pk_flag = column.crrct_pk_flag
|
|
suppColumn.fld_desc = column.fld_desc
|
|
suppColumn.pic = column.pic
|
|
suppColumn.fld_clas = column.fld_clas
|
|
suppColumn.fld_null_rate = column.fld_null_rate
|
|
suppColumn.rec_stat = column.rec_stat
|
|
suppColumn.upd_time = column.upd_time
|
|
db.add(suppColumn)
|
|
await db.flush()
|
|
return suppColumn
|
|
|
|
@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 +
|
|
"' and mdl_name = '" + table.mdl_name + "' and tab_eng_name = '" + table.tab_eng_name +
|
|
"'")
|
|
maxTime = (await db.execute(sql_query)).scalar()
|
|
|
|
query_result = (
|
|
(
|
|
await db.execute(
|
|
select(MetadataFldSuppInfoVett)
|
|
.where(MetadataFldSuppInfoVett.ssys_cd == table.ssys_cd,
|
|
MetadataFldSuppInfoVett.mdl_name == table.mdl_name,
|
|
MetadataFldSuppInfoVett.tab_eng_name == table.tab_eng_name,
|
|
MetadataFldSuppInfoVett.apply_time == maxTime).distinct()
|
|
)
|
|
).scalars().all()
|
|
)
|
|
return query_result
|
|
|
|
@classmethod
|
|
async def get_supp_column_by_vett(cls, column: MetadataFldSuppInfoVett, db: AsyncSession):
|
|
query_result = (
|
|
(
|
|
await db.execute(
|
|
select(MetadataFldSuppInfo)
|
|
.where(MetadataFldSuppInfo.ssys_cd == column.ssys_cd,
|
|
MetadataFldSuppInfo.mdl_name == column.mdl_name,
|
|
MetadataFldSuppInfo.tab_eng_name == column.tab_eng_name,
|
|
MetadataFldSuppInfo.fld_eng_name == column.fld_eng_name).distinct()
|
|
)
|
|
).scalars().first()
|
|
)
|
|
return query_result
|
|
|
|
@classmethod
|
|
async def get_supp_column_by_columnInfo(cls, sysCode, mdlName, tabEngName, fldEngName, db: AsyncSession):
|
|
query_result = (
|
|
(
|
|
await db.execute(
|
|
select(MetadataFldSuppInfo)
|
|
.where(MetadataFldSuppInfo.ssys_cd == sysCode,
|
|
MetadataFldSuppInfo.mdl_name == mdlName,
|
|
MetadataFldSuppInfo.tab_eng_name == tabEngName,
|
|
MetadataFldSuppInfo.fld_eng_name == fldEngName).distinct()
|
|
)
|
|
).scalars().first()
|
|
)
|
|
return query_result
|
|
|
|
@classmethod
|
|
async def get_meta_column(cls, sysCode, mdlName, tabEngName, fldEngName, db: AsyncSession):
|
|
query_result = (
|
|
(
|
|
await db.execute(
|
|
select(MetadataFldTabExtractInfo)
|
|
.where(MetadataFldTabExtractInfo.ssys_cd == sysCode,
|
|
MetadataFldTabExtractInfo.mdl_name == mdlName,
|
|
MetadataFldTabExtractInfo.tab_eng_name == tabEngName,
|
|
MetadataFldTabExtractInfo.fld_eng_name == fldEngName).distinct()
|
|
)
|
|
).scalars().first()
|
|
)
|
|
return query_result
|
|
|
|
@classmethod
|
|
async def get_meta_table_by_id(cls, tableId: int, db: AsyncSession):
|
|
"""
|
|
根据查询参数获取用户列表信息
|
|
"""
|
|
# 主查询
|
|
|
|
result = (await db.execute(
|
|
select(
|
|
MetadataExtractInfo.onum.label('extract_onum'),
|
|
MetadataExtractInfo.extract_ver_num,
|
|
MetadataExtractInfo.ver_desc.label('extract_ver_desc'),
|
|
MetadataExtractInfo.ssys_cd,
|
|
MetadataExtractInfo.data_whs_name,
|
|
MetadataExtractInfo.mdl_name,
|
|
MetadataExtractInfo.tab_no,
|
|
MetadataExtractInfo.tab_type,
|
|
MetadataExtractInfo.tab_eng_name,
|
|
MetadataExtractInfo.tab_cn_name,
|
|
MetadataExtractInfo.tab_rec_num,
|
|
MetadataExtractInfo.upd_time.label('extract_upd_time'),
|
|
MetadataSuppInfo.onum.label('supp_onum'),
|
|
MetadataSuppInfo.crrct_ver_num.label('supp_crrct_ver_num'),
|
|
MetadataSuppInfo.tab_crrct_name,
|
|
MetadataSuppInfo.tab_desc,
|
|
MetadataSuppInfo.pic,
|
|
MetadataSuppInfo.gov_flag,
|
|
MetadataSuppInfo.rec_stat.label('supp_rec_stat'),
|
|
MetadataSuppInfo.tab_clas,
|
|
MetadataSuppInfo.rec_subm_prsn,
|
|
MetadataSuppInfo.upd_time.label('supp_upd_time'),
|
|
).join(MetadataSuppInfo,
|
|
and_(
|
|
MetadataExtractInfo.ssys_cd == MetadataSuppInfo.ssys_cd,
|
|
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.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.mdl_name == MetadataFldSuppInfo.mdl_name,
|
|
MetadataExtractInfo.tab_eng_name == MetadataFldSuppInfo.tab_eng_name
|
|
), isouter=True)
|
|
.where(
|
|
MetadataExtractInfo.onum == tableId
|
|
).distinct()
|
|
)).first()
|
|
return CamelCaseUtil.transform_result(result)
|
|
|
|
|