diff --git a/vue-fastapi-backend/module_admin/dao/datasec_config_dao.py b/vue-fastapi-backend/module_admin/dao/datasec_config_dao.py index 1f346c9..5e6471e 100644 --- a/vue-fastapi-backend/module_admin/dao/datasec_config_dao.py +++ b/vue-fastapi-backend/module_admin/dao/datasec_config_dao.py @@ -75,15 +75,25 @@ class DatasecConfigDao: """ await db.execute(delete(DatasecConfig).where(DatasecConfig.onum.in_([metatask.onum]))) @classmethod - async def check_name_or_param_exist(cls, db: AsyncSession, metatask_name: str, metatask_param: str, exclude_onum: int = None): + async def check_name_or_param_exist(cls, db: AsyncSession, metatask_name: str = None, metatask_param: str = None, exclude_onum: int = None): """ - 检查是否存在相同的任务名称或参数字段,排除指定 onum(用于编辑) + 检查是否存在指定任务名称和参数字段(同时匹配非空的字段),排除指定 onum(用于编辑) """ - stmt = select(DatasecConfig).where( - (DatasecConfig.metatask_name == metatask_name) | (DatasecConfig.metatask_param == metatask_param) - ) + conditions = [] + + if metatask_name: # 不为空才加条件 + conditions.append(DatasecConfig.metatask_name == metatask_name) + + + + if not conditions: # 两个都为空,直接返回 False + return False + + stmt = select(DatasecConfig).where(*conditions) + if exclude_onum: stmt = stmt.where(DatasecConfig.onum != exclude_onum) result = await db.execute(stmt) return result.scalars().first() is not None + 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 2d85853..a38065c 100644 --- a/vue-fastapi-backend/module_admin/dao/metadata_config_dao.py +++ b/vue-fastapi-backend/module_admin/dao/metadata_config_dao.py @@ -452,7 +452,15 @@ class MetadataConfigDao: async def add_batch_task_rela_dao(cls, db: AsyncSession, rela_list: List[TaskBizConfigRela]): db.add_all(rela_list) await db.flush() + @classmethod + async def check_biz_name_exists(cls, db: AsyncSession, biz_name: str, exclude_onum: str = None): + stmt = select(SecuBizConfig).where(SecuBizConfig.biz_name == biz_name) + + if exclude_onum: + stmt = stmt.where(SecuBizConfig.onum != exclude_onum) + result = await db.execute(stmt) + return result.first() @classmethod async def get_task_rela_by_biz_id(cls, db: AsyncSession, biz_onum: int): result = await db.execute( diff --git a/vue-fastapi-backend/module_admin/service/datasec_config_service.py b/vue-fastapi-backend/module_admin/service/datasec_config_service.py index 8c94c3d..b3cdbe0 100644 --- a/vue-fastapi-backend/module_admin/service/datasec_config_service.py +++ b/vue-fastapi-backend/module_admin/service/datasec_config_service.py @@ -37,7 +37,7 @@ class DatasecConfigService: # 检查任务名称或参数是否已存在 exists = await DatasecConfigDao.check_name_or_param_exist(db, page_object.metatask_name, page_object.metatask_param) if exists: - raise ServiceException(message="任务名称或参数字段已存在") + raise ServiceException(message="任务名称已存在") # 获取流程配置 processconfig = MetaprocessconfigQueryModel() @@ -79,7 +79,13 @@ class DatasecConfigService: code_list = data["data"] str_list = list(map(str, code_list)) for config in processConfigList: - modified_json_str = config.taskDefinitionJson.replace("18093081592672", str_list[0]).replace("sh /home/xx/code/remote_python_sec.sh", "sh /home/xx/code/remote_python_sec.sh "+page_object.metatask_param) + # 原来的字符串替换 + modified_json_str = config.taskDefinitionJson.replace("18093081592672", str_list[0]) + # 拼接命令时先判断 metatask_param 是否为空 + cmd = "sh /home/xx/code/remote_python_sec.sh" + if page_object.metatask_param: # 只有非空才加参数 + cmd += f" {page_object.metatask_param}" + modified_json_str = modified_json_str.replace("sh /home/xx/code/remote_python_sec.sh", cmd) modified_json_str2=config.taskRelationJson.replace("18093081592672", str_list[0]) modified_json_str3=config.locations.replace("18093081592672", str_list[0]) metaprocessconfig_dict = MetaprocessconfigModel(taskDefinitionJson=modified_json_str,# 替换taskDefinitionJson diff --git a/vue-fastapi-backend/module_admin/service/datastd_service.py b/vue-fastapi-backend/module_admin/service/datastd_service.py index 555b182..0c6441a 100644 --- a/vue-fastapi-backend/module_admin/service/datastd_service.py +++ b/vue-fastapi-backend/module_admin/service/datastd_service.py @@ -2150,7 +2150,7 @@ class DataStdService: except Exception as e: await query_db.rollback() - raise ServiceException(message=f"导入失败:{str(e)}") + raise ServiceException(message=f"导入失败:{str(e.message)}") @classmethod async def batch_import_code_std_services( 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 0cebff8..129e33b 100644 --- a/vue-fastapi-backend/module_admin/service/metadata_config_service.py +++ b/vue-fastapi-backend/module_admin/service/metadata_config_service.py @@ -240,6 +240,11 @@ class MetadataConfigService: configMode.update_by=page_object.update_by configMode.update_time=page_object.update_time configMode.create_time=page_object.create_time + # 校验 biz_name 是否重复 + exists = await MetadataConfigDao.check_biz_name_exists(db, page_object.biz_name) + if exists: + raise ServiceException(message=f"业务域名称 {page_object.biz_name} 已存在,请更换名称") + obj=await MetadataConfigDao.add_biz_config(db, configMode) records: List[SecuBizConfigRela] = [] for tab_onum in page_object.tab_onum_list: @@ -268,7 +273,9 @@ class MetadataConfigService: configMode.update_by=page_object.update_by configMode.update_time=page_object.update_time configMode.create_time=page_object.create_time - + exists = await MetadataConfigDao.check_biz_name_exists(db, page_object.biz_name, exclude_onum=page_object.onum) + if exists: + raise ServiceException(message=f"业务名称 {page_object.biz_name} 已存在,请更换名称") edit_data = configMode.model_dump(exclude_unset=True) diff --git a/vue-fastapi-frontend/src/views/dataAsset/assetDetail/index.vue b/vue-fastapi-frontend/src/views/dataAsset/assetDetail/index.vue index 6d7ae13..4231e69 100644 --- a/vue-fastapi-frontend/src/views/dataAsset/assetDetail/index.vue +++ b/vue-fastapi-frontend/src/views/dataAsset/assetDetail/index.vue @@ -197,7 +197,7 @@ - +