diff --git a/vue-fastapi-backend/module_admin/dao/datastd_dao.py b/vue-fastapi-backend/module_admin/dao/datastd_dao.py index 75e591c..9fc0659 100644 --- a/vue-fastapi-backend/module_admin/dao/datastd_dao.py +++ b/vue-fastapi-backend/module_admin/dao/datastd_dao.py @@ -83,9 +83,11 @@ class DataStdDao: .select_from(c1) .outerjoin(c2, c1.code_map_id == c2.onum) .where(*filters) - .order_by(desc(c1.create_time)) ) - + if query_object.parent_id: + query = query.order_by(c1.cd_no) + else: + query = query.order_by(desc(c1.create_time)) # 分页处理 result = await PageUtil.paginate( db, query, query_object.page_num, query_object.page_size, is_page diff --git a/vue-fastapi-backend/module_admin/dao/metadata_config_dao.py b/vue-fastapi-backend/module_admin/dao/metadata_config_dao.py index bffd2c2..d27b2f3 100644 --- a/vue-fastapi-backend/module_admin/dao/metadata_config_dao.py +++ b/vue-fastapi-backend/module_admin/dao/metadata_config_dao.py @@ -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): """ 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 714cb93..fd86cde 100644 --- a/vue-fastapi-backend/module_admin/entity/do/meta_do.py +++ b/vue-fastapi-backend/module_admin/entity/do/meta_do.py @@ -1,4 +1,4 @@ -from sqlalchemy import Column, Float, Integer, String, Text, DateTime, Boolean, ForeignKey, UniqueConstraint, Index, \ +from sqlalchemy import Column, Float, Integer,BigInteger, String, Text, DateTime, Boolean, ForeignKey, UniqueConstraint, Index, \ text from config.database import Base from datetime import datetime @@ -78,7 +78,7 @@ class MetadataClas(Base): """ __tablename__ = 't_metadata_clas' - clas_onum = Column(Integer, primary_key=True, comment='分类编号') + clas_onum = Column(BigInteger, primary_key=True, comment='分类编号') # clas_pri_clas = Column(String(50, collation='utf8_general_ci'), comment='一级分类') # clas_scd_clas = Column(String(50, collation='utf8_general_ci'), comment='二级分类') clas_tmpl = Column(String(200, collation='utf8_general_ci'), comment='标签模板') diff --git a/vue-fastapi-backend/module_admin/service/metadata_config_service.py b/vue-fastapi-backend/module_admin/service/metadata_config_service.py index e7cdbdd..0cebff8 100644 --- a/vue-fastapi-backend/module_admin/service/metadata_config_service.py +++ b/vue-fastapi-backend/module_admin/service/metadata_config_service.py @@ -1053,7 +1053,7 @@ class MetadataConfigService: child["rela_eff_end_date"] = datetime(year=2999, month=12, day=31, hour=0, minute=0, second=0).strftime("%Y-%m-%d %H:%M:%S"), # 设置默认值,2999-12-31 child["upd_prsn"] = request.upd_prsn, child["rela_status"] = "1" - + # 校验contentName在同一个节点下不重复 new_catalog = await MetadataConfigDao.add_catalog_dao(query_db, catalog_data1, catalog_data2) await query_db.commit() return CrudResponseModel(is_success=True, message='新增成功', data=new_catalog) diff --git a/vue-fastapi-frontend/src/views/metadataConfig/sec/index.vue b/vue-fastapi-frontend/src/views/metadataConfig/sec/index.vue index 9b3bbb8..88e370c 100644 --- a/vue-fastapi-frontend/src/views/metadataConfig/sec/index.vue +++ b/vue-fastapi-frontend/src/views/metadataConfig/sec/index.vue @@ -2,8 +2,8 @@