|
|
@ -14,6 +14,7 @@ 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 exceptions.exception import ServiceException,ServiceWarning |
|
|
|
|
|
|
|
class MetadataConfigDao: |
|
|
|
""" |
|
|
@ -106,6 +107,8 @@ class MetadataConfigDao: |
|
|
|
@classmethod |
|
|
|
async def get_metadata_sec_list(cls, db: AsyncSession, query_object, is_page: bool = False): |
|
|
|
query = select(MetadataSec).where( |
|
|
|
MetadataSec.sec_level_summary.like( |
|
|
|
f"%{query_object.sec_level_summary}%") if query_object.sec_level_summary else True, |
|
|
|
MetadataSec.sec_level_name.like( |
|
|
|
f"%{query_object.sec_level_name}%") if query_object.sec_level_name else True, |
|
|
|
MetadataSec.sec_eff_flag == query_object.sec_eff_flag if query_object.sec_eff_flag else True, |
|
|
@ -502,35 +505,43 @@ class MetadataConfigDao: |
|
|
|
async def add_catalog_dao(cls, db: AsyncSession, catalog1: dict, catalog2: dict): |
|
|
|
""" |
|
|
|
新增目录数据库操作 |
|
|
|
|
|
|
|
:param db: orm对象 |
|
|
|
:param catalog: 目录对象 |
|
|
|
:return: |
|
|
|
""" |
|
|
|
# === 先校验是否重名 === |
|
|
|
stmt = ( |
|
|
|
select(DataAstContent) |
|
|
|
.where( |
|
|
|
DataAstContent.supr_content_onum == catalog1.get("supr_content_onum"), |
|
|
|
DataAstContent.content_name == catalog1.get("content_name") |
|
|
|
) |
|
|
|
) |
|
|
|
result = await db.execute(stmt) |
|
|
|
exists = result.scalars().first() # 只取第一条,不管有几条 |
|
|
|
if exists: |
|
|
|
raise ServiceException(f"同一父节点下已存在名称为 {catalog1.get('content_name')} 的目录") |
|
|
|
# === 新增父目录 === |
|
|
|
db_catalog = DataAstContent(**catalog1) |
|
|
|
db.add(db_catalog) |
|
|
|
await db.flush() |
|
|
|
|
|
|
|
# 处理子关系(统一转换为 ORM 模型) |
|
|
|
|
|
|
|
# === 处理子关系 === |
|
|
|
for child in catalog2.get('children', []): |
|
|
|
# 如果是 Pydantic 模型实例,先转换为字典 |
|
|
|
if isinstance(child, DataCatalogChild): |
|
|
|
child_dict = child.model_dump() |
|
|
|
elif isinstance(child, dict): |
|
|
|
child_dict = child |
|
|
|
else: |
|
|
|
raise TypeError("不支持的子关系数据类型") |
|
|
|
|
|
|
|
# 创建 ORM 模型实例 |
|
|
|
|
|
|
|
processed_child = dict(child_dict) |
|
|
|
processed_child['content_onum'] = db_catalog.content_onum |
|
|
|
db_child = DataAstContentRela(**processed_child) |
|
|
|
|
|
|
|
|
|
|
|
db.add(db_child) |
|
|
|
await db.flush() |
|
|
|
|
|
|
|
|
|
|
|
return db_catalog |
|
|
|
|
|
|
|
|
|
|
|
@classmethod |
|
|
|
async def edit_catalog_leaf_dao(cls, db: AsyncSession, catalog: dict): |
|
|
|
""" |
|
|
|