From 0625685de6abc68e22afe31ecee98cf4d8e75849 Mon Sep 17 00:00:00 2001 From: siyaqi Date: Mon, 23 Feb 2026 20:22:45 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B5=84=E4=BA=A7=E5=AE=A1=E6=89=B9=E6=B5=81?= =?UTF-8?q?=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/data_asset_controller.py | 26 ++++++++++++++++++- .../module_admin/dao/data_asset_dao.py | 8 ++++-- .../module_admin/dao/dataast_dao.py | 7 ++++- .../module_admin/service/approval_service.py | 2 ++ .../module_admin/service/dataast_service.py | 24 ++++++++++++++++- .../module_admin/service/meta_service.py | 2 +- .../src/api/dataAsset/assetDetail.js | 10 ++++++- .../src/views/dataAsset/assetDetail/index.vue | 6 ++--- 8 files changed, 75 insertions(+), 10 deletions(-) diff --git a/vue-fastapi-backend/module_admin/controller/data_asset_controller.py b/vue-fastapi-backend/module_admin/controller/data_asset_controller.py index cbece15..9175392 100644 --- a/vue-fastapi-backend/module_admin/controller/data_asset_controller.py +++ b/vue-fastapi-backend/module_admin/controller/data_asset_controller.py @@ -212,6 +212,30 @@ async def add_dataast_appr( return ResponseUtil.success(msg=add_dataast_result.message) +@dataAssetController.post('/delastappr') +@Log(title='数据资产删除申请', business_type=BusinessType.DELETE) +async def delete_dataast_appr( + request: Request, + delete_dataasts: DataAstApprBatchModel, + query_db: AsyncSession = Depends(get_db), + current_user: CurrentUserModel = Depends(LoginService.get_current_user), +): + now = datetime.now() + for delete_dataast in delete_dataasts.assetItems: + delete_dataast.upd_prsn = current_user.user.user_name + delete_dataast.upd_time = now + if not delete_dataast.create_by: + delete_dataast.create_by = current_user.user.user_name + if not delete_dataast.create_time: + delete_dataast.create_time = now + + delete_dataast_result = await DataAstService.delete_dataasts_appr( + query_db, delete_dataasts, current_user.user.user_name + ) + logger.info(delete_dataast_result.message) + return ResponseUtil.success(msg=delete_dataast_result.message) + + @dataAssetController.get('/listastappr', response_model=PageResponseModel ) async def get_ast_main_appr_list( @@ -221,4 +245,4 @@ async def get_ast_main_appr_list( ): main_page_query_result = await DataAstService.get_ast_main_appr_list(query_db, flowId, is_page=True) logger.info('获取数据标准列表成功') - return ResponseUtil.success(data=main_page_query_result) \ No newline at end of file + return ResponseUtil.success(data=main_page_query_result) diff --git a/vue-fastapi-backend/module_admin/dao/data_asset_dao.py b/vue-fastapi-backend/module_admin/dao/data_asset_dao.py index 6353ccd..d88ea68 100644 --- a/vue-fastapi-backend/module_admin/dao/data_asset_dao.py +++ b/vue-fastapi-backend/module_admin/dao/data_asset_dao.py @@ -84,7 +84,11 @@ class DataAssetDao: :return: 数据资产信息对象 """ data_asset = ( - await db.execute(select(DataAssetInfoAppr).where(DataAssetInfoAppr.ast_no == ast_no)) + await db.execute( + select(DataAssetInfoAppr) + .where(DataAssetInfoAppr.ast_no == ast_no) + .order_by(DataAssetInfoAppr.create_time.desc()) + ) ).scalars().first() return data_asset @@ -220,4 +224,4 @@ class DataAssetDao: # 分页查询 result = await PageUtil.paginate(db, query, page_num, page_size, is_page) - return result \ No newline at end of file + return result diff --git a/vue-fastapi-backend/module_admin/dao/dataast_dao.py b/vue-fastapi-backend/module_admin/dao/dataast_dao.py index 2dbdb05..69f8b6f 100644 --- a/vue-fastapi-backend/module_admin/dao/dataast_dao.py +++ b/vue-fastapi-backend/module_admin/dao/dataast_dao.py @@ -125,6 +125,11 @@ class DataAstDao: await db.rollback() raise e + @classmethod + async def delete_dataast_data_by_ast_no(cls, db: AsyncSession, ast_no: int): + await db.execute(delete(DataAssetInfo).where(DataAssetInfo.ast_no == ast_no)) + await db.flush() + @classmethod async def update_data_ast_appr(cls, db: AsyncSession, update_data: DataAstInfoModel): @@ -137,4 +142,4 @@ class DataAstDao: filters = [] filters.append(DataAssetInfoAppr.flowId == flowId) query = select(DataAssetInfoAppr).where(*filters).order_by(desc(DataAssetInfoAppr.create_time)) - return await PageUtil.paginate(db, query, 0, 0, False) \ No newline at end of file + return await PageUtil.paginate(db, query, 0, 0, False) diff --git a/vue-fastapi-backend/module_admin/service/approval_service.py b/vue-fastapi-backend/module_admin/service/approval_service.py index afd91b8..b9729a8 100644 --- a/vue-fastapi-backend/module_admin/service/approval_service.py +++ b/vue-fastapi-backend/module_admin/service/approval_service.py @@ -253,6 +253,8 @@ class ApprovalService: # logger.info(f"发现新增类型变更,准备添加数据资产,AST_NO: {appr_model.ast_no}") main_model = DataAstInfoModel(**appr_model.model_dump(exclude_unset=True, by_alias=True)) await DataAstDao.add_dataast_data(result_db, main_model) + elif change_type == "delete" and appr_model.ast_no is not None: + await DataAstDao.delete_dataast_data_by_ast_no(result_db, appr_model.ast_no) # logger.info(f"数据资产添加成功,AST_NO: {main_model.ast_no}") # 更新 approStatus 状态 diff --git a/vue-fastapi-backend/module_admin/service/dataast_service.py b/vue-fastapi-backend/module_admin/service/dataast_service.py index b0aed9d..ccb5c43 100644 --- a/vue-fastapi-backend/module_admin/service/dataast_service.py +++ b/vue-fastapi-backend/module_admin/service/dataast_service.py @@ -65,6 +65,28 @@ class DataAstService: return CrudResponseModel(is_success=True, message='新增数据资产成功') + @classmethod + async def delete_dataasts_appr(cls, query_db: AsyncSession, models: DataAstApprBatchModel, username: str): + flowId = str(uuid.uuid4()) + for model in models.assetItems: + original_onum = model.onum + appr_onum = str(uuid.uuid4()) + model.onum = appr_onum + apprModel = DataAstApprModel(**model.model_dump(exclude_unset=True, by_alias=True)) + apprModel.changeType = "delete" + apprModel.compareId = original_onum + apprModel.oldInstId = str(model.ast_no) if model.ast_no is not None else original_onum + apprModel.approStatus = "waiting" + apprModel.flowId = flowId + await DataAstDao.add_dataast_appr(query_db, apprModel) + + applyModel = ApplyModel() + applyModel.businessType = "dataAssetMain" + applyModel.businessId = flowId + applyModel.applicant = username + await ApprovalService.apply_services(query_db, applyModel, 'dataAssetMain') + return CrudResponseModel(is_success=True, message='删除数据资产申请提交成功') + @classmethod async def get_ast_main_appr_list(cls, query_db: AsyncSession, flowId: str, is_page: bool = False): - return await DataAstDao.get_ast_main_appr_list(flowId, query_db) \ No newline at end of file + return await DataAstDao.get_ast_main_appr_list(flowId, query_db) diff --git a/vue-fastapi-backend/module_admin/service/meta_service.py b/vue-fastapi-backend/module_admin/service/meta_service.py index d604d48..938535a 100644 --- a/vue-fastapi-backend/module_admin/service/meta_service.py +++ b/vue-fastapi-backend/module_admin/service/meta_service.py @@ -56,7 +56,7 @@ class MetaService: table['hasAsset'] = '1' # 已发布 else: hasAsset2 = await DataAssetDao.get_data_asset_appr_by_ast_no(result_db, table['extractOnum']) - if hasAsset2: + if hasAsset2 and hasAsset2.approStatus == 'waiting': table['hasAsset'] = '2' # 发布中 table['batchTabClas'] = CamelCaseUtil.transform_result(tab_list) return meta_rel_list diff --git a/vue-fastapi-frontend/src/api/dataAsset/assetDetail.js b/vue-fastapi-frontend/src/api/dataAsset/assetDetail.js index b6a498f..e5923fc 100644 --- a/vue-fastapi-frontend/src/api/dataAsset/assetDetail.js +++ b/vue-fastapi-frontend/src/api/dataAsset/assetDetail.js @@ -24,6 +24,14 @@ export function batch(data) { }) } +export function delAstAppr(data) { + return request({ + url: '/default-api/system/dataAsset/delastappr', + method: 'post', + data, + }) +} + export function deptTreeSelect() { return request({ url: '/default-api/system/dataAsset/sources', @@ -38,4 +46,4 @@ export function listAssetMainAppr(data) { }) } - \ No newline at end of file + diff --git a/vue-fastapi-frontend/src/views/dataAsset/assetDetail/index.vue b/vue-fastapi-frontend/src/views/dataAsset/assetDetail/index.vue index 1974446..176253f 100644 --- a/vue-fastapi-frontend/src/views/dataAsset/assetDetail/index.vue +++ b/vue-fastapi-frontend/src/views/dataAsset/assetDetail/index.vue @@ -226,7 +226,7 @@ @@ -256,7 +256,7 @@