|
|
@ -13,7 +13,7 @@ from sqlalchemy.sql import true |
|
|
|
from utils.page_util import PageUtil |
|
|
|
from module_admin.entity.vo.data_ast_content_vo import DataCatalogPageQueryModel, DeleteDataCatalogModel, \ |
|
|
|
DataCatalogChild |
|
|
|
from sqlalchemy import delete, select, update, desc, or_, not_, and_ |
|
|
|
from sqlalchemy import delete, select, update, desc, or_, not_, and_,func |
|
|
|
from exceptions.exception import ServiceException,ServiceWarning |
|
|
|
|
|
|
|
class MetadataConfigDao: |
|
|
@ -159,18 +159,55 @@ class MetadataConfigDao: |
|
|
|
result = await db.execute(select(SecuBizConfig).where(SecuBizConfig.onum == onum)) |
|
|
|
return result.scalars().first() |
|
|
|
|
|
|
|
# @classmethod |
|
|
|
# async def get_biz_config_list(cls, db: AsyncSession, query_object, is_page: bool = False): |
|
|
|
# query = select(SecuBizConfig).where( |
|
|
|
# SecuBizConfig.risk_lvl.like(f"%{query_object.risk_lvl}%") if query_object.risk_lvl else True, |
|
|
|
# SecuBizConfig.isStop == query_object.isStop if query_object.isStop is not None else True, |
|
|
|
# SecuBizConfig.create_time.between( |
|
|
|
# datetime.combine(datetime.strptime(query_object.begin_time, '%Y-%m-%d'), time.min), |
|
|
|
# datetime.combine(datetime.strptime(query_object.end_time, '%Y-%m-%d'), time.max), |
|
|
|
# ) if query_object.begin_time and query_object.end_time else True, |
|
|
|
# ).order_by(SecuBizConfig.create_time.desc()) |
|
|
|
|
|
|
|
# from utils.page_util import PageUtil |
|
|
|
# return await PageUtil.paginate(db, query, query_object.page_num, query_object.page_size, is_page) |
|
|
|
@classmethod |
|
|
|
async def get_biz_config_list(cls, db: AsyncSession, query_object, is_page: bool = False): |
|
|
|
query = select(SecuBizConfig).where( |
|
|
|
SecuBizConfig.risk_lvl.like(f"%{query_object.risk_lvl}%") if query_object.risk_lvl else True, |
|
|
|
SecuBizConfig.isStop == query_object.isStop if query_object.isStop is not None else True, |
|
|
|
SecuBizConfig.create_time.between( |
|
|
|
datetime.combine(datetime.strptime(query_object.begin_time, '%Y-%m-%d'), time.min), |
|
|
|
datetime.combine(datetime.strptime(query_object.end_time, '%Y-%m-%d'), time.max), |
|
|
|
) if query_object.begin_time and query_object.end_time else True, |
|
|
|
).order_by(SecuBizConfig.create_time.desc()) |
|
|
|
# === 副表数量子查询 === |
|
|
|
subquery = ( |
|
|
|
select( |
|
|
|
SecuBizConfigRela.biz_onum.label("biz_onum"), |
|
|
|
func.count(SecuBizConfigRela.onum).label("rela_count") |
|
|
|
) |
|
|
|
.group_by(SecuBizConfigRela.biz_onum) |
|
|
|
.subquery() |
|
|
|
) |
|
|
|
|
|
|
|
from utils.page_util import PageUtil |
|
|
|
# === 主查询,LEFT JOIN 子查询 === |
|
|
|
query = ( |
|
|
|
select( |
|
|
|
SecuBizConfig.biz_name, |
|
|
|
SecuBizConfig.onum, |
|
|
|
SecuBizConfig.risk_lvl, |
|
|
|
SecuBizConfig.update_by, |
|
|
|
SecuBizConfig.update_time, |
|
|
|
SecuBizConfig.isStop, |
|
|
|
SecuBizConfig.create_by, |
|
|
|
SecuBizConfig.create_time, |
|
|
|
func.coalesce(subquery.c.rela_count, 0).label("rela_count") # 无关联时为 0 |
|
|
|
) |
|
|
|
.outerjoin(subquery, SecuBizConfig.onum == subquery.c.biz_onum) |
|
|
|
.where( |
|
|
|
SecuBizConfig.risk_lvl.like(f"%{query_object.risk_lvl}%") if query_object.risk_lvl else True, |
|
|
|
SecuBizConfig.isStop == query_object.isStop if query_object.isStop is not None else True, |
|
|
|
SecuBizConfig.create_time.between( |
|
|
|
datetime.combine(datetime.strptime(query_object.begin_time, '%Y-%m-%d'), time.min), |
|
|
|
datetime.combine(datetime.strptime(query_object.end_time, '%Y-%m-%d'), time.max), |
|
|
|
) if query_object.begin_time and query_object.end_time else True, |
|
|
|
) |
|
|
|
.order_by(SecuBizConfig.create_time.desc()) |
|
|
|
) |
|
|
|
return await PageUtil.paginate(db, query, query_object.page_num, query_object.page_size, is_page) |
|
|
|
|
|
|
|
@classmethod |
|
|
|