From ec8ed5ba196cb3fa7d01e9e117e0687ba27df842 Mon Sep 17 00:00:00 2001 From: siyaqi Date: Wed, 11 Jun 2025 14:42:27 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=83=E6=95=B0=E6=8D=AE=E6=A0=87=E7=AD=BE?= =?UTF-8?q?=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/metadata_config_controller.py | 171 ++++++++++++++++- .../dao/batch_label_config_dao.py | 106 +++++++++++ .../entity/do/metadata_config_do.py | 46 ++++- .../entity/vo/metadata_config_vo.py | 47 ++++- .../service/batch_label_config_service.py | 177 ++++++++++++++++++ .../src/api/metadataConfig/metadataConfig.js | 130 ++++++++++++- 6 files changed, 672 insertions(+), 5 deletions(-) create mode 100644 vue-fastapi-backend/module_admin/dao/batch_label_config_dao.py create mode 100644 vue-fastapi-backend/module_admin/service/batch_label_config_service.py diff --git a/vue-fastapi-backend/module_admin/controller/metadata_config_controller.py b/vue-fastapi-backend/module_admin/controller/metadata_config_controller.py index fbfdf81..dbcb44d 100644 --- a/vue-fastapi-backend/module_admin/controller/metadata_config_controller.py +++ b/vue-fastapi-backend/module_admin/controller/metadata_config_controller.py @@ -14,9 +14,13 @@ from module_admin.entity.vo.metadata_config_vo import ( SecuBizPermiConfigBatchModel, SecuBizConfigAddModel, SecuBizPermiConfigPageQueryModel, + BatchBusiLabelConfigModel, + BatchDataopLabelConfigModel, + BatchDatatypeLabelConfigModel, SecuBizPermiConfigQueryModel ) from module_admin.service.metadata_config_service import MetadataConfigService +from module_admin.service.batch_label_config_service import BatchLabelConfigService from config.get_db import get_db from utils.response_util import ResponseUtil from utils.page_util import PageResponseModel @@ -261,4 +265,169 @@ async def get_biz_rela_config_list(bizOnum: int, query_db: AsyncSession = Depend ): ai_chat_list_result = await MetadataConfigService.get_biz_config_rela_list_services(query_db, bizOnum) logger.info('获取成功') - return ResponseUtil.success(data=ai_chat_list_result) \ No newline at end of file + return ResponseUtil.success(data=ai_chat_list_result) +@metadataConfigController.get("/busiLabel/list", response_model=PageResponseModel) +async def get_busi_label_list( + request: Request, + query: BatchBusiLabelConfigModel , + query_db: AsyncSession = Depends(get_db), +): + result = await BatchLabelConfigService.get_busi_list_services(query_db, query, is_page=True) + logger.info("获取业务标签配置列表成功") + return ResponseUtil.success(model_content=result) + + +@metadataConfigController.post("/busiLabel") +@ValidateFields(validate_model="add_busi_label") +async def add_busi_label( + request: Request, + model: BatchBusiLabelConfigModel, + query_db: AsyncSession = Depends(get_db), +): + result = await BatchLabelConfigService.add_busi_services(query_db, model) + logger.info(result.message) + return ResponseUtil.success(msg=result.message) + + +@metadataConfigController.put("/busiLabel") +@ValidateFields(validate_model="edit_busi_label") +async def edit_busi_label( + request: Request, + model: BatchBusiLabelConfigModel, + query_db: AsyncSession = Depends(get_db), +): + result = await BatchLabelConfigService.edit_busi_services(query_db, model) + logger.info(result.message) + return ResponseUtil.success(msg=result.message) + + +@metadataConfigController.delete("/busiLabel/{onum_list}") +async def delete_busi_label( + request: Request, + onum_list: str, + query_db: AsyncSession = Depends(get_db), +): + result = await BatchLabelConfigService.delete_busi_services(query_db, onum_list) + logger.info(result.message) + return ResponseUtil.success(msg=result.message) + + +@metadataConfigController.get("/busiLabel/{onum}", response_model=BatchBusiLabelConfigModel) +async def get_busi_label_detail( + request: Request, + onum: str, + query_db: AsyncSession = Depends(get_db), +): + result = await BatchLabelConfigService.get_busi_detail_services(query_db, onum) + logger.info(f"获取业务标签配置 onum={onum} 详情成功") + return ResponseUtil.success(data=result) +@metadataConfigController.get("/dataopLabel/list", response_model=PageResponseModel) +async def get_dataop_label_list( + request: Request, + query: BatchDataopLabelConfigModel , + query_db: AsyncSession = Depends(get_db), +): + result = await BatchLabelConfigService.get_dataop_list_services(query_db, query, is_page=True) + logger.info("获取操作标签配置列表成功") + return ResponseUtil.success(model_content=result) + + +@metadataConfigController.post("/dataopLabel") +@ValidateFields(validate_model="add_dataop_label") +async def add_dataop_label( + request: Request, + model: BatchDataopLabelConfigModel, + query_db: AsyncSession = Depends(get_db), +): + result = await BatchLabelConfigService.add_dataop_services(query_db, model) + logger.info(result.message) + return ResponseUtil.success(msg=result.message) + + +@metadataConfigController.put("/dataopLabel") +@ValidateFields(validate_model="edit_dataop_label") +async def edit_dataop_label( + request: Request, + model: BatchDataopLabelConfigModel, + query_db: AsyncSession = Depends(get_db), +): + result = await BatchLabelConfigService.edit_dataop_services(query_db, model) + logger.info(result.message) + return ResponseUtil.success(msg=result.message) + + +@metadataConfigController.delete("/dataopLabel/{onum_list}") +async def delete_dataop_label( + request: Request, + onum_list: str, + query_db: AsyncSession = Depends(get_db), +): + result = await BatchLabelConfigService.delete_dataop_services(query_db, onum_list) + logger.info(result.message) + return ResponseUtil.success(msg=result.message) + + +@metadataConfigController.get("/dataopLabel/{onum}", response_model=BatchDataopLabelConfigModel) +async def get_dataop_label_detail( + request: Request, + onum: str, + query_db: AsyncSession = Depends(get_db), +): + result = await BatchLabelConfigService.get_dataop_detail_services(query_db, onum) + logger.info(f"获取操作标签配置 onum={onum} 详情成功") + return ResponseUtil.success(data=result) +@metadataConfigController.get("/datatypeLabel/list", response_model=PageResponseModel) +async def get_datatype_label_list( + request: Request, + query: BatchDatatypeLabelConfigModel, + query_db: AsyncSession = Depends(get_db), +): + result = await BatchLabelConfigService.get_datatype_list_services(query_db, query, is_page=True) + logger.info("获取数据类型标签配置列表成功") + return ResponseUtil.success(model_content=result) + + +@metadataConfigController.post("/datatypeLabel") +@ValidateFields(validate_model="add_datatype_label") +async def add_datatype_label( + request: Request, + model: BatchDatatypeLabelConfigModel, + query_db: AsyncSession = Depends(get_db), +): + result = await BatchLabelConfigService.add_datatype_services(query_db, model) + logger.info(result.message) + return ResponseUtil.success(msg=result.message) + + +@metadataConfigController.put("/datatypeLabel") +@ValidateFields(validate_model="edit_datatype_label") +async def edit_datatype_label( + request: Request, + model: BatchDatatypeLabelConfigModel, + query_db: AsyncSession = Depends(get_db), +): + result = await BatchLabelConfigService.edit_datatype_services(query_db, model) + logger.info(result.message) + return ResponseUtil.success(msg=result.message) + + +@metadataConfigController.delete("/datatypeLabel/{onum_list}") +async def delete_datatype_label( + request: Request, + onum_list: str, + query_db: AsyncSession = Depends(get_db), +): + result = await BatchLabelConfigService.delete_datatype_services(query_db, onum_list) + logger.info(result.message) + return ResponseUtil.success(msg=result.message) + + +@metadataConfigController.get("/datatypeLabel/{onum}", response_model=BatchDatatypeLabelConfigModel) +async def get_datatype_label_detail( + request: Request, + onum: str, + query_db: AsyncSession = Depends(get_db), +): + result = await BatchLabelConfigService.get_datatype_detail_services(query_db, onum) + logger.info(f"获取数据类型标签配置 onum={onum} 详情成功") + return ResponseUtil.success(data=result) diff --git a/vue-fastapi-backend/module_admin/dao/batch_label_config_dao.py b/vue-fastapi-backend/module_admin/dao/batch_label_config_dao.py new file mode 100644 index 0000000..9b98847 --- /dev/null +++ b/vue-fastapi-backend/module_admin/dao/batch_label_config_dao.py @@ -0,0 +1,106 @@ +from sqlalchemy import delete, select, update,and_ +from sqlalchemy.ext.asyncio import AsyncSession +from module_admin.entity.do.metadata_config_do import BatchBusiLabelConfig,BatchDataopLabelConfig,BatchDatatypeLabelConfig + +from utils.page_util import PageUtil + +class BatchLabelConfigDAO: + + # region === BatchBusiLabelConfig === + + @classmethod + async def get_busi_detail_by_id(cls, db: AsyncSession, onum: int): + result = await db.execute(select(BatchBusiLabelConfig).where(BatchBusiLabelConfig.onum == onum)) + return result.scalars().first() + + @classmethod + async def get_busi_list(cls, db: AsyncSession, query_object, is_page: bool = False): + query = select(BatchBusiLabelConfig).where( + BatchBusiLabelConfig.regex_name.like(f"%{query_object.regex_name}%") if query_object.regex_name else True, + BatchBusiLabelConfig.mdl_name == query_object.mdl_name if query_object.mdl_name else True, + ).order_by(BatchBusiLabelConfig.upd_time.desc()) + + return await PageUtil.paginate(db, query, query_object.page_num, query_object.page_size, is_page) + + @classmethod + async def add_busi(cls, db: AsyncSession, obj): + db_obj = BatchBusiLabelConfig(**obj.model_dump()) + db.add(db_obj) + await db.flush() + return db_obj + + @classmethod + async def edit_busi(cls, db: AsyncSession, onum: int, update_data: dict): + await db.execute(update(BatchBusiLabelConfig).where(BatchBusiLabelConfig.onum == onum).values(**update_data)) + + @classmethod + async def delete_busi(cls, db: AsyncSession, onum_list: list[int]): + await db.execute(delete(BatchBusiLabelConfig).where(BatchBusiLabelConfig.onum.in_(onum_list))) + + # endregion + + # region === BatchDataopLabelConfig === + + @classmethod + async def get_dataop_detail_by_id(cls, db: AsyncSession, onum: int): + result = await db.execute(select(BatchDataopLabelConfig).where(BatchDataopLabelConfig.onum == onum)) + return result.scalars().first() + + @classmethod + async def get_dataop_list(cls, db: AsyncSession, query_object, is_page: bool = False): + query = select(BatchDataopLabelConfig).where( + BatchDataopLabelConfig.optype.like(f"%{query_object.optype}%") if query_object.optype else True, + BatchDataopLabelConfig.mdl_name == query_object.mdl_name if query_object.mdl_name else True, + ) + + return await PageUtil.paginate(db, query, query_object.page_num, query_object.page_size, is_page) + + @classmethod + async def add_dataop(cls, db: AsyncSession, obj): + db_obj = BatchDataopLabelConfig(**obj.model_dump()) + db.add(db_obj) + await db.flush() + return db_obj + + @classmethod + async def edit_dataop(cls, db: AsyncSession, onum: int, update_data: dict): + await db.execute(update(BatchDataopLabelConfig).where(BatchDataopLabelConfig.onum == onum).values(**update_data)) + + @classmethod + async def delete_dataop(cls, db: AsyncSession, onum_list: list[int]): + await db.execute(delete(BatchDataopLabelConfig).where(BatchDataopLabelConfig.onum.in_(onum_list))) + + # endregion + + # region === BatchDatatypeLabelConfig === + + @classmethod + async def get_datatype_detail_by_id(cls, db: AsyncSession, onum: int): + result = await db.execute(select(BatchDatatypeLabelConfig).where(BatchDatatypeLabelConfig.onum == onum)) + return result.scalars().first() + + @classmethod + async def get_datatype_list(cls, db: AsyncSession, query_object, is_page: bool = False): + query = select(BatchDatatypeLabelConfig).where( + BatchDatatypeLabelConfig.datatype.like(f"%{query_object.datatype}%") if query_object.datatype else True, + BatchDatatypeLabelConfig.mdl_name == query_object.mdl_name if query_object.mdl_name else True, + ).order_by(BatchDatatypeLabelConfig.upd_time.desc()) + + return await PageUtil.paginate(db, query, query_object.page_num, query_object.page_size, is_page) + + @classmethod + async def add_datatype(cls, db: AsyncSession, obj): + db_obj = BatchDatatypeLabelConfig(**obj.model_dump()) + db.add(db_obj) + await db.flush() + return db_obj + + @classmethod + async def edit_datatype(cls, db: AsyncSession, onum: int, update_data: dict): + await db.execute(update(BatchDatatypeLabelConfig).where(BatchDatatypeLabelConfig.onum == onum).values(**update_data)) + + @classmethod + async def delete_datatype(cls, db: AsyncSession, onum_list: list[int]): + await db.execute(delete(BatchDatatypeLabelConfig).where(BatchDatatypeLabelConfig.onum.in_(onum_list))) + + # endregion diff --git a/vue-fastapi-backend/module_admin/entity/do/metadata_config_do.py b/vue-fastapi-backend/module_admin/entity/do/metadata_config_do.py index 20b8300..bd6154b 100644 --- a/vue-fastapi-backend/module_admin/entity/do/metadata_config_do.py +++ b/vue-fastapi-backend/module_admin/entity/do/metadata_config_do.py @@ -1,5 +1,5 @@ from datetime import datetime -from sqlalchemy import Column, String, Integer, DateTime, TIMESTAMP,Boolean, func +from sqlalchemy import Column, String, Integer, DateTime, TIMESTAMP,Boolean, func,DECIMAL from config.database import Base @@ -67,4 +67,46 @@ class SecuBizConfig(Base): create_by = Column(String(20), nullable=True, comment="创建者") create_time = Column(DateTime, nullable=True, comment="创建时间") update_by = Column(String(20), nullable=True, comment="更新者") - update_time = Column(DateTime, nullable=True, comment="更新时间") \ No newline at end of file + update_time = Column(DateTime, nullable=True, comment="更新时间") +class BatchBusiLabelConfig(Base): + """ + 批处理业务标签配置表 ORM 映射类,对应表 t_batch_busi_label_config + """ + __tablename__ = "t_batch_busi_label_config" + + onum = Column(Integer, primary_key=True, autoincrement=True, comment="唯一编号") + regex_name = Column(String(255), nullable=True, comment="正则表达式名称") + regex_pattern = Column(String(255), nullable=True, comment="正则表达式") + upd_time = Column(DateTime, nullable=True, comment="更新时间") + ssys_cd = Column(String(50), nullable=True) + mdl_name = Column(String(50), nullable=True) + ratio = Column(DECIMAL(10, 4), nullable=True) +class BatchDataopLabelConfig(Base): + """ + 批处理数据操作标签配置表 ORM 映射类,对应表 t_batch_dataop_label_config + """ + __tablename__ = "t_batch_dataop_label_config" + + onum = Column(Integer, primary_key=True, autoincrement=True, comment="唯一编号") + optype = Column(String(50), nullable=True, comment="唯一类型,忽略类型") + config1 = Column(DECIMAL(10, 4), nullable=True, comment="参数1") + config2 = Column(DECIMAL(10, 4), nullable=True, comment="参数2") + config3 = Column(DECIMAL(10, 4), nullable=True, comment="参数3") + config4 = Column(DECIMAL(10, 4), nullable=True, comment="参数4") + config5 = Column(DECIMAL(10, 4), nullable=True, comment="参数5") + config6 = Column(DECIMAL(10, 4), nullable=True, comment="参数6") + config7 = Column(DECIMAL(10, 4), nullable=True, comment="参数7") + ssys_cd = Column(String(50), nullable=True) + mdl_name = Column(String(50), nullable=True) +class BatchDatatypeLabelConfig(Base): + """ + 批处理字段类型标签配置表 ORM 映射类,对应表 t_batch_datatype_label_config + """ + __tablename__ = "t_batch_datatype_label_config" + + onum = Column(Integer, primary_key=True, autoincrement=True, comment="唯一编号") + datatype = Column(String(100), nullable=True, comment="字段类型") + ratio = Column(DECIMAL(10, 4), nullable=True, comment="比率") + upd_time = Column(DateTime, nullable=True, comment="更新时间") + ssys_cd = Column(String(50), nullable=True) + mdl_name = Column(String(50), nullable=True) \ No newline at end of file diff --git a/vue-fastapi-backend/module_admin/entity/vo/metadata_config_vo.py b/vue-fastapi-backend/module_admin/entity/vo/metadata_config_vo.py index 5d9acf3..1c5af48 100644 --- a/vue-fastapi-backend/module_admin/entity/vo/metadata_config_vo.py +++ b/vue-fastapi-backend/module_admin/entity/vo/metadata_config_vo.py @@ -237,4 +237,49 @@ class SecuBizPermiConfigPageQueryModel(SecuBizPermiConfigQueryModel): 业务域权限配置分页查询模型 """ page_num: int = Field(default=1, description='当前页码') - page_size: int = Field(default=10, description='每页记录数') \ No newline at end of file + page_size: int = Field(default=10, description='每页记录数') +class BatchDataopLabelConfigModel(BaseModel): + """ + 批处理数据操作标签配置 Pydantic 模型 + """ + model_config = ConfigDict(alias_generator=to_camel, from_attributes=True) + + onum: Optional[int] = Field(default=None, description='唯一编号') + optype: Optional[str] = Field(default=None, description='唯一类型,忽略类型') + config1: Optional[float] = Field(default=None, description='参数1') + config2: Optional[float] = Field(default=None, description='参数2') + config3: Optional[float] = Field(default=None, description='参数3') + config4: Optional[float] = Field(default=None, description='参数4') + config5: Optional[float] = Field(default=None, description='参数5') + config6: Optional[float] = Field(default=None, description='参数6') + config7: Optional[float] = Field(default=None, description='参数7') + ssys_cd: Optional[str] = Field(default=None, description='系统代码') + mdl_name: Optional[str] = Field(default=None, description='模块名称') + +class BatchDatatypeLabelConfigModel(BaseModel): + """ + 批处理字段类型标签配置 Pydantic 模型 + """ + model_config = ConfigDict(alias_generator=to_camel, from_attributes=True) + + onum: Optional[int] = Field(default=None, description='唯一编号') + datatype: Optional[str] = Field(default=None, description='字段类型') + ratio: Optional[float] = Field(default=None, description='比率') + upd_time: Optional[datetime] = Field(default=None, description='更新时间') + ssys_cd: Optional[str] = Field(default=None, description='系统代码') + mdl_name: Optional[str] = Field(default=None, description='模块名称') + +class BatchBusiLabelConfigModel(BaseModel): + """ + 批处理业务标签配置 Pydantic 模型 + """ + model_config = ConfigDict(alias_generator=to_camel, from_attributes=True) + + onum: Optional[int] = Field(default=None, description='唯一编号') + regex_name: Optional[str] = Field(default=None, description='正则表达式名称') + regex_pattern: Optional[str] = Field(default=None, description='正则表达式') + upd_time: Optional[datetime] = Field(default=None, description='更新时间') + ssys_cd: Optional[str] = Field(default=None, description='系统代码') + mdl_name: Optional[str] = Field(default=None, description='模块名称') + ratio: Optional[float] = Field(default=None, description='比率') + \ No newline at end of file diff --git a/vue-fastapi-backend/module_admin/service/batch_label_config_service.py b/vue-fastapi-backend/module_admin/service/batch_label_config_service.py new file mode 100644 index 0000000..0d3e5c9 --- /dev/null +++ b/vue-fastapi-backend/module_admin/service/batch_label_config_service.py @@ -0,0 +1,177 @@ +from sqlalchemy.ext.asyncio import AsyncSession +from module_admin.dao.batch_label_config_dao import BatchLabelConfigDAO +from module_admin.entity.vo.common_vo import CrudResponseModel +from module_admin.entity.vo.metadata_config_vo import BatchBusiLabelConfigModel,BatchDataopLabelConfigModel,BatchDatatypeLabelConfigModel +from exceptions.exception import ServiceException +import uuid +from utils.common_util import CamelCaseUtil +from typing import List +from datetime import datetime + + +class BatchLabelConfigService: + + # region === BatchBusiLabelConfig === + + @classmethod + async def get_busi_list_services(cls, db: AsyncSession, query_object, is_page: bool = False): + return await BatchLabelConfigDAO.get_busi_list(db, query_object, is_page) + + @classmethod + async def add_busi_services(cls, db: AsyncSession, page_object): + try: + page_object.onum = str(uuid.uuid4()) + await BatchLabelConfigDAO.add_busi(db, page_object) + await db.commit() + return CrudResponseModel(is_success=True, message="新增成功") + except Exception as e: + await db.rollback() + raise e + + @classmethod + async def edit_busi_services(cls, db: AsyncSession, page_object): + edit_data = page_object.model_dump(exclude_unset=True) + info = await cls.get_busi_detail_services(db, page_object.onum) + if info.onum: + try: + await BatchLabelConfigDAO.edit_busi(db, page_object.onum, edit_data) + await db.commit() + return CrudResponseModel(is_success=True, message="更新成功") + except Exception as e: + await db.rollback() + raise e + else: + raise ServiceException(message="业务标签配置不存在") + + @classmethod + async def delete_busi_services(cls, db: AsyncSession, onum_list: str): + id_list = [x.strip() for x in onum_list.split(",") if x.strip()] + if not id_list: + raise ServiceException(message="无效的编号列表") + + try: + await BatchLabelConfigDAO.delete_busi(db, id_list) + await db.commit() + return CrudResponseModel(is_success=True, message="删除成功") + except Exception as e: + await db.rollback() + raise e + + @classmethod + async def get_busi_detail_services(cls, db: AsyncSession, onum: str): + result = await BatchLabelConfigDAO.get_busi_detail_by_id(db, onum) + if result: + return BatchBusiLabelConfigModel(**CamelCaseUtil.transform_result(result)) + return BatchBusiLabelConfigModel(**dict()) + + # endregion + + # region === BatchDataopLabelConfig === + + @classmethod + async def get_dataop_list_services(cls, db: AsyncSession, query_object, is_page: bool = False): + return await BatchLabelConfigDAO.get_dataop_list(db, query_object, is_page) + + @classmethod + async def add_dataop_services(cls, db: AsyncSession, page_object): + try: + page_object.onum = str(uuid.uuid4()) + await BatchLabelConfigDAO.add_dataop(db, page_object) + await db.commit() + return CrudResponseModel(is_success=True, message="新增成功") + except Exception as e: + await db.rollback() + raise e + + @classmethod + async def edit_dataop_services(cls, db: AsyncSession, page_object): + edit_data = page_object.model_dump(exclude_unset=True) + info = await cls.get_dataop_detail_services(db, page_object.onum) + if info.onum: + try: + await BatchLabelConfigDAO.edit_dataop(db, page_object.onum, edit_data) + await db.commit() + return CrudResponseModel(is_success=True, message="更新成功") + except Exception as e: + await db.rollback() + raise e + else: + raise ServiceException(message="操作标签配置不存在") + + @classmethod + async def delete_dataop_services(cls, db: AsyncSession, onum_list: str): + id_list = [x.strip() for x in onum_list.split(",") if x.strip()] + if not id_list: + raise ServiceException(message="无效的编号列表") + + try: + await BatchLabelConfigDAO.delete_dataop(db, id_list) + await db.commit() + return CrudResponseModel(is_success=True, message="删除成功") + except Exception as e: + await db.rollback() + raise e + + @classmethod + async def get_dataop_detail_services(cls, db: AsyncSession, onum: str): + result = await BatchLabelConfigDAO.get_dataop_detail_by_id(db, onum) + if result: + return BatchDataopLabelConfigModel(**CamelCaseUtil.transform_result(result)) + return BatchDataopLabelConfigModel(**dict()) + + # endregion + + # region === BatchDatatypeLabelConfig === + + @classmethod + async def get_datatype_list_services(cls, db: AsyncSession, query_object, is_page: bool = False): + return await BatchLabelConfigDAO.get_datatype_list(db, query_object, is_page) + + @classmethod + async def add_datatype_services(cls, db: AsyncSession, page_object): + try: + page_object.onum = str(uuid.uuid4()) + await BatchLabelConfigDAO.add_datatype(db, page_object) + await db.commit() + return CrudResponseModel(is_success=True, message="新增成功") + except Exception as e: + await db.rollback() + raise e + + @classmethod + async def edit_datatype_services(cls, db: AsyncSession, page_object): + edit_data = page_object.model_dump(exclude_unset=True) + info = await cls.get_datatype_detail_services(db, page_object.onum) + if info.onum: + try: + await BatchLabelConfigDAO.edit_datatype(db, page_object.onum, edit_data) + await db.commit() + return CrudResponseModel(is_success=True, message="更新成功") + except Exception as e: + await db.rollback() + raise e + else: + raise ServiceException(message="数据类型标签配置不存在") + + @classmethod + async def delete_datatype_services(cls, db: AsyncSession, onum_list: str): + id_list = [x.strip() for x in onum_list.split(",") if x.strip()] + if not id_list: + raise ServiceException(message="无效的编号列表") + + try: + await BatchLabelConfigDAO.delete_datatype(db, id_list) + await db.commit() + return CrudResponseModel(is_success=True, message="删除成功") + except Exception as e: + await db.rollback() + raise e + + @classmethod + async def get_datatype_detail_services(cls, db: AsyncSession, onum: str): + result = await BatchLabelConfigDAO.get_datatype_detail_by_id(db, onum) + if result: + return BatchDatatypeLabelConfigModel(**CamelCaseUtil.transform_result(result)) + return BatchDatatypeLabelConfigModel(**dict()) + + # endregion diff --git a/vue-fastapi-frontend/src/api/metadataConfig/metadataConfig.js b/vue-fastapi-frontend/src/api/metadataConfig/metadataConfig.js index ebf68b6..bc3f8ee 100644 --- a/vue-fastapi-frontend/src/api/metadataConfig/metadataConfig.js +++ b/vue-fastapi-frontend/src/api/metadataConfig/metadataConfig.js @@ -186,4 +186,132 @@ export function getBizRalaList(onum) { url: '/default-api/metadataConfig/bizConfigRela/list/' + onum, method: 'get' }) -} \ No newline at end of file +} + + +// 获取业务标签列表(分页) +export function getBusiLabelList(data) { + return request({ + url: '/default-api/metadataConfig/busiLabel/list', + method: 'get', + params: data + }) +} + +// 新增业务标签 +export function addBusiLabel(data) { + return request({ + url: '/default-api/metadataConfig/busiLabel', + method: 'post', + data + }) +} + +// 编辑业务标签 +export function editBusiLabel(data) { + return request({ + url: '/default-api/metadataConfig/busiLabel', + method: 'put', + data + }) +} + +// 删除业务标签 +export function deleteBusiLabel(onumList) { + return request({ + url: '/default-api/metadataConfig/busiLabel/' + onumList, + method: 'delete' + }) +} + +// 获取业务标签详情 +export function getBusiLabelDetail(onum) { + return request({ + url: '/default-api/metadataConfig/busiLabel/' + onum, + method: 'get' + }) +} +// 获取操作标签列表(分页) +export function getDataopLabelList(data) { + return request({ + url: '/default-api/metadataConfig/dataopLabel/list', + method: 'get', + params: data + }) +} + +// 新增操作标签 +export function addDataopLabel(data) { + return request({ + url: '/default-api/metadataConfig/dataopLabel', + method: 'post', + data + }) +} + +// 编辑操作标签 +export function editDataopLabel(data) { + return request({ + url: '/default-api/metadataConfig/dataopLabel', + method: 'put', + data + }) +} + +// 删除操作标签 +export function deleteDataopLabel(onumList) { + return request({ + url: '/default-api/metadataConfig/dataopLabel/' + onumList, + method: 'delete' + }) +} + +// 获取操作标签详情 +export function getDataopLabelDetail(onum) { + return request({ + url: '/default-api/metadataConfig/dataopLabel/' + onum, + method: 'get' + }) +} +// 获取数据类型标签列表(分页) +export function getDatatypeLabelList(data) { + return request({ + url: '/default-api/metadataConfig/datatypeLabel/list', + method: 'get', + params: data + }) +} + +// 新增数据类型标签 +export function addDatatypeLabel(data) { + return request({ + url: '/default-api/metadataConfig/datatypeLabel', + method: 'post', + data + }) +} + +// 编辑数据类型标签 +export function editDatatypeLabel(data) { + return request({ + url: '/default-api/metadataConfig/datatypeLabel', + method: 'put', + data + }) +} + +// 删除数据类型标签 +export function deleteDatatypeLabel(onumList) { + return request({ + url: '/default-api/metadataConfig/datatypeLabel/' + onumList, + method: 'delete' + }) +} + +// 获取数据类型标签详情 +export function getDatatypeLabelDetail(onum) { + return request({ + url: '/default-api/metadataConfig/datatypeLabel/' + onum, + method: 'get' + }) +}