Browse Source

资产审批流程

master
siyaqi 3 weeks ago
parent
commit
0625685de6
  1. 26
      vue-fastapi-backend/module_admin/controller/data_asset_controller.py
  2. 8
      vue-fastapi-backend/module_admin/dao/data_asset_dao.py
  3. 7
      vue-fastapi-backend/module_admin/dao/dataast_dao.py
  4. 2
      vue-fastapi-backend/module_admin/service/approval_service.py
  5. 24
      vue-fastapi-backend/module_admin/service/dataast_service.py
  6. 2
      vue-fastapi-backend/module_admin/service/meta_service.py
  7. 10
      vue-fastapi-frontend/src/api/dataAsset/assetDetail.js
  8. 6
      vue-fastapi-frontend/src/views/dataAsset/assetDetail/index.vue

26
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)
return ResponseUtil.success(data=main_page_query_result)

8
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
return result

7
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)
return await PageUtil.paginate(db, query, 0, 0, False)

2
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 状态

24
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)
return await DataAstDao.get_ast_main_appr_list(flowId, query_db)

2
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

10
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) {
})
}

6
vue-fastapi-frontend/src/views/dataAsset/assetDetail/index.vue

@ -226,7 +226,7 @@
<el-table-column label="标签状态" align="center" prop="clasEffFlag">
<template #default="scope">
<span v-if="scope.row.clasEffFlag === '1'" style="color:#67C23A;">{{'有效'}}</span>
<span v-else style="color: #F56C6C">{{'已删?}}</span>
<span v-else style="color: #F56C6C">{{'已删除'}}</span>
</template>
</el-table-column>
<el-table-column label="设置方式" width="80" align="center" prop="tagSource">
@ -256,7 +256,7 @@
</template>
<script setup name="AssetDetail">
import { getSearch, batch, deptTreeSelect } from "@/api/dataAsset/assetDetail";
import { getSearch, batch, delAstAppr, deptTreeSelect } from "@/api/dataAsset/assetDetail";
import {getMetaClasList} from "@/api/meta/metaInfo"
import cache from "@/plugins/cache";
@ -520,7 +520,7 @@ const handleDelete = (row) => {
)
})
proxy.$modal.confirm('是否确认删除?').then(function () {
return batch({ dataAssets: submitasset });
return delAstAppr({ assetItems: submitasset });
}).then(() => {
getList();
proxy.$modal.msgSuccess("删除成功");

Loading…
Cancel
Save