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.
646 lines
33 KiB
646 lines
33 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)
|
|
|
|
@classmethod
|
|
async def get_meta_col_name_list(cls, db: AsyncSession, query_object: MetaColObject):
|
|
query_result = (
|
|
(
|
|
await db.execute(
|
|
select(
|
|
MetadataFldTabExtractInfo.ssys_cd,
|
|
MetadataFldTabExtractInfo.mdl_name,
|
|
MetadataFldTabExtractInfo.tab_eng_name,
|
|
MetadataFldTabExtractInfo.fld_eng_name,
|
|
MetadataFldTabExtractInfo.fld_cn_name,
|
|
MetadataFldTabExtractInfo.fld_type,
|
|
MetadataFldTabExtractInfo.pk_flag,
|
|
).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_er_relation_by_table(cls, result_db: AsyncSession, ssys_cd: str, 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 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 "
|
|
"where rela_type = 'sub_flag' and rela_value ='1') 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 "
|
|
"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_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' "
|
|
"where ((a1.a_ssys_cd,a1.a_mdl_name,a1.a_tab_eng_name,a1.a_fld_eng_name) in "
|
|
"(select ssys_cd,mdl_name,tab_eng_name,clas_value from t_batch_tab_clas)"
|
|
"or (a1.b_ssys_cd,a1.b_mdl_name,a1.b_tab_eng_name,a1.b_fld_eng_name) in "
|
|
"(select ssys_cd,mdl_name,tab_eng_name,clas_value from t_batch_tab_clas))"
|
|
"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,
|
|
"mdlName": mdl_name, "tabName": tab_eng_name}))
|
|
# 获取列名
|
|
columns = result.keys() # 返回列名列表
|
|
|
|
# 将结果转换为字典列表
|
|
result_as_dict = [dict(zip(columns, row)) for row in result.fetchall()]
|
|
return result_as_dict
|
|
|
|
@classmethod
|
|
async def get_op_relation_by_table(cls, result_db: AsyncSession, ssys_cd: str, mdl_name: str, tab_eng_name: str):
|
|
sql = text("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,case when max(case when rela_type = 'sub_flag' then rela_value end) = '1' and "
|
|
"max(case when rela_type = 'set_flag' then rela_value end) = '1' then 'A' "
|
|
"when max(case when rela_type = 'sub_flag' then rela_value end) = '1' and "
|
|
"max(case when rela_type = 'set_flag' then rela_value end) = '2' then 'B' "
|
|
"when max(case when rela_type = 'op2_relation' then rela_value end) <> '[]' AND "
|
|
"max(case when rela_type = 'op_relation' then rela_value end) <> 0 and "
|
|
"max(case when rela_type = 'set_flag' then rela_value end) = '1' then 'A' "
|
|
"when max(case when rela_type = 'op2_relation' then rela_value end) <> '[]' AND "
|
|
"max(case when rela_type = 'op_relation' then rela_value end) <> 0 and "
|
|
"max(case when rela_type = 'set_flag' then rela_value end) = '2' then 'B' END as father "
|
|
"from t_batch_fld_relation "
|
|
"where ((a_ssys_cd = :sysCode and a_mdl_name = :mdlName and a_tab_eng_name = :tabName) "
|
|
" or (b_ssys_cd = :sysCode and b_mdl_name = :mdlName and b_tab_eng_name = :tabName))"
|
|
"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 "
|
|
"having max(case when rela_type = 'op2_relation' then rela_value end) <> '[]'"
|
|
" or max(case when rela_type = 'sub_flag' then rela_value end) = '1'")
|
|
result = (await result_db.execute(sql, {"sysCode": ssys_cd,
|
|
"mdlName": mdl_name, "tabName": tab_eng_name}))
|
|
# 获取列名
|
|
columns = result.keys() # 返回列名列表
|
|
|
|
# 将结果转换为字典列表
|
|
result_as_dict = [dict(zip(columns, row)) for row in result.fetchall()]
|
|
return result_as_dict
|
|
|
|
@classmethod
|
|
async def get_er_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 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 "
|
|
"where rela_type = 'sub_flag' and rela_value ='1') 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 "
|
|
"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_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' "
|
|
"where ((a1.a_ssys_cd,a1.a_mdl_name,a1.a_tab_eng_name,a1.a_fld_eng_name) "
|
|
"in (select ssys_cd,mdl_name,tab_eng_name,clas_value from t_batch_tab_clas)"
|
|
"or (a1.b_ssys_cd,a1.b_mdl_name,a1.b_tab_eng_name,a1.b_fld_eng_name) "
|
|
"in (select ssys_cd,mdl_name,tab_eng_name,clas_value from t_batch_tab_clas))"
|
|
"and ((a1.a_ssys_cd = :sysCode 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 and a1.b_fld_eng_name = :fldName "
|
|
"and a2.rela_value = :rela_value2))")
|
|
result = (await result_db.execute(sql, {"sysCode": column['ssys_cd'],
|
|
"mdlName": column['mdl_name'], "tabName": column['tab_eng_name'],
|
|
"fldName": column['fld_eng_name'],
|
|
"rela_value": '2' if module == 'pre' else '1',
|
|
"rela_value2": '1' if module == 'pre' else '2'
|
|
}))
|
|
# 获取列名
|
|
columns = result.keys() # 返回列名列表
|
|
|
|
# 将结果转换为字典列表
|
|
result_as_dict = [dict(zip(columns, row)) for row in result.fetchall()]
|
|
return result_as_dict
|
|
|
|
@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 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 where rela_type = 'op2_relation' "
|
|
"and rela_value <> '[]') 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 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_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' and a2.rela_value <> 0 "
|
|
" where ((a1.a_ssys_cd,a1.a_mdl_name,a1.a_tab_eng_name,a1.a_fld_eng_name) in "
|
|
"(select ssys_cd,mdl_name,tab_eng_name,clas_value from t_batch_tab_clas) "
|
|
"or (a1.b_ssys_cd,a1.b_mdl_name,a1.b_tab_eng_name,a1.b_fld_eng_name) in "
|
|
"(select ssys_cd,mdl_name,tab_eng_name,clas_value from t_batch_tab_clas)) "
|
|
"and ((a1.a_ssys_cd = :sysCode 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 "
|
|
" and a1.b_fld_eng_name = :fldName and a2.rela_value = :rela_value2))")
|
|
result = (await result_db.execute(sql, {"sysCode": column['ssys_cd'],
|
|
"mdlName": column['mdl_name'], "tabName": column['tab_eng_name'],
|
|
"fldName": column['fld_eng_name'],
|
|
"rela_value": '2' if module == 'pre' else '1',
|
|
"rela_value2": '1' if module == 'pre' else '2'
|
|
}))
|
|
# 获取列名
|
|
columns = result.keys() # 返回列名列表
|
|
|
|
# 将结果转换为字典列表
|
|
result_as_dict = [dict(zip(columns, row)) for row in result.fetchall()]
|
|
return result_as_dict
|
|
|