From 7499f3500295722d9a28a3119f4b7e230c921012 Mon Sep 17 00:00:00 2001
From: xueyinfei <1207092115@qq.com>
Date: Fri, 15 Aug 2025 16:40:09 +0800
Subject: [PATCH] =?UTF-8?q?=E5=85=83=E6=95=B0=E6=8D=AE=E6=A8=A1=E5=9D=97?=
=?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=AE=89=E5=85=A8=E7=AD=89=E7=BA=A7?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../controller/metadata_config_controller.py | 427 +++++-----
.../module_admin/dao/datastd_dao.py | 795 ++++++++++--------
.../module_admin/dao/meta_dao.py | 4 +
.../module_admin/dao/metadata_config_dao.py | 59 +-
.../module_admin/entity/do/datastd_do.py | 75 +-
.../module_admin/entity/do/meta_do.py | 2 +
.../module_admin/entity/vo/meta_vo.py | 1 +
.../module_admin/service/approval_service.py | 157 ++--
.../module_admin/service/meta_service.py | 17 +-
.../service/metadata_config_service.py | 8 +
.../src/api/metadataConfig/metadataConfig.js | 8 +
.../src/views/meta/metaInfo/index.vue | 44 +-
.../src/views/system/flow/index.vue | 13 +
13 files changed, 905 insertions(+), 705 deletions(-)
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 b837846..3e729f2 100644
--- a/vue-fastapi-backend/module_admin/controller/metadata_config_controller.py
+++ b/vue-fastapi-backend/module_admin/controller/metadata_config_controller.py
@@ -37,17 +37,17 @@ from utils.page_util import PageResponseModel
from utils.log_util import logger
from module_admin.service.login_service import LoginService
from module_admin.entity.vo.user_vo import CurrentUserModel
-from module_admin.entity.vo.metatask_vo import DeleteMetataskModel,OperaMetataskModel
-from module_admin.entity.vo.dataSource_vo import ProcessDefinition,ParmScheduleVo,ProcessInstancePage
+from module_admin.entity.vo.metatask_vo import DeleteMetataskModel, OperaMetataskModel
+from module_admin.entity.vo.dataSource_vo import ProcessDefinition, ParmScheduleVo, ProcessInstancePage
metadataConfigController = APIRouter(prefix='/metadataConfig')
@metadataConfigController.get('/clas/list', response_model=PageResponseModel)
async def get_metadata_clas_list(
- request: Request,
- query: MetadataClasPageQueryModel = Depends(MetadataClasPageQueryModel.as_query),
- query_db: AsyncSession = Depends(get_db),
+ request: Request,
+ query: MetadataClasPageQueryModel = Depends(MetadataClasPageQueryModel.as_query),
+ query_db: AsyncSession = Depends(get_db),
):
result = await MetadataConfigService.get_metadata_clas_list_services(query_db, query, is_page=True)
logger.info('获取元数据分类列表成功')
@@ -57,10 +57,10 @@ async def get_metadata_clas_list(
@metadataConfigController.post('/clas')
@ValidateFields(validate_model='add_metadata_clas')
async def add_metadata_clas(
- request: Request,
- add_clas: MetadataClasModel,
- query_db: AsyncSession = Depends(get_db),
- current_user: CurrentUserModel = Depends(LoginService.get_current_user),
+ request: Request,
+ add_clas: MetadataClasModel,
+ query_db: AsyncSession = Depends(get_db),
+ current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
add_clas.upd_time = datetime.now()
add_clas.rec_subm_prsn = current_user.user.user_name
@@ -74,10 +74,10 @@ async def add_metadata_clas(
@metadataConfigController.put('/clas')
@ValidateFields(validate_model='edit_metadata_clas')
async def edit_metadata_clas(
- request: Request,
- edit_clas: MetadataClasModel,
- query_db: AsyncSession = Depends(get_db),
- current_user: CurrentUserModel = Depends(LoginService.get_current_user),
+ request: Request,
+ edit_clas: MetadataClasModel,
+ query_db: AsyncSession = Depends(get_db),
+ current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
edit_clas.upd_time = datetime.now()
edit_clas.rec_subm_prsn = current_user.user.user_name
@@ -88,9 +88,9 @@ async def edit_metadata_clas(
@metadataConfigController.delete('/clas/{clas_ids}')
async def delete_metadata_clas(
- request: Request,
- clas_ids: str,
- query_db: AsyncSession = Depends(get_db),
+ request: Request,
+ clas_ids: str,
+ query_db: AsyncSession = Depends(get_db),
):
result = await MetadataConfigService.delete_metadata_clas_services(query_db, clas_ids)
logger.info(result.message)
@@ -99,9 +99,9 @@ async def delete_metadata_clas(
@metadataConfigController.get('/clas/{clas_id}', response_model=MetadataClasModel)
async def get_metadata_clas_detail(
- request: Request,
- clas_id: int,
- query_db: AsyncSession = Depends(get_db),
+ request: Request,
+ clas_id: int,
+ query_db: AsyncSession = Depends(get_db),
):
result = await MetadataConfigService.get_metadata_clas_detail_services(query_db, clas_id)
logger.info(f'获取元数据分类ID={clas_id}详情成功')
@@ -113,22 +113,32 @@ async def get_metadata_clas_detail(
@metadataConfigController.get('/sec/list', response_model=PageResponseModel)
async def get_metadata_sec_list(
- request: Request,
- query: MetadataSecPageQueryModel = Depends(MetadataSecPageQueryModel.as_query),
- query_db: AsyncSession = Depends(get_db),
+ request: Request,
+ query: MetadataSecPageQueryModel = Depends(MetadataSecPageQueryModel.as_query),
+ query_db: AsyncSession = Depends(get_db),
):
result = await MetadataConfigService.get_metadata_sec_list_services(query_db, query, is_page=True)
logger.info('获取数据安全配置列表成功')
return ResponseUtil.success(model_content=result)
+@metadataConfigController.get('/sec/optionList', response_model=PageResponseModel)
+async def get_metadata_sec_list(
+ request: Request,
+ query_db: AsyncSession = Depends(get_db),
+):
+ result = await MetadataConfigService.get_metadata_sec_option_list_services(query_db)
+ logger.info('获取数据安全配置列表成功')
+ return ResponseUtil.success(data=result)
+
+
@metadataConfigController.post('/sec')
@ValidateFields(validate_model='add_metadata_sec')
async def add_metadata_sec(
- request: Request,
- add_sec: MetadataSecModel,
- query_db: AsyncSession = Depends(get_db),
- current_user: CurrentUserModel = Depends(LoginService.get_current_user),
+ request: Request,
+ add_sec: MetadataSecModel,
+ query_db: AsyncSession = Depends(get_db),
+ current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
add_sec.upd_time = datetime.now()
add_sec.rec_subm_prsn = current_user.user.user_name
@@ -141,10 +151,10 @@ async def add_metadata_sec(
@metadataConfigController.put('/sec')
@ValidateFields(validate_model='edit_metadata_sec')
async def edit_metadata_sec(
- request: Request,
- edit_sec: MetadataSecModel,
- query_db: AsyncSession = Depends(get_db),
- current_user: CurrentUserModel = Depends(LoginService.get_current_user),
+ request: Request,
+ edit_sec: MetadataSecModel,
+ query_db: AsyncSession = Depends(get_db),
+ current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
edit_sec.upd_time = datetime.now()
edit_sec.rec_subm_prsn = current_user.user.user_name
@@ -156,9 +166,9 @@ async def edit_metadata_sec(
@metadataConfigController.delete('/sec/{sec_ids}')
async def delete_metadata_sec(
- request: Request,
- sec_ids: str,
- query_db: AsyncSession = Depends(get_db),
+ request: Request,
+ sec_ids: str,
+ query_db: AsyncSession = Depends(get_db),
):
result = await MetadataConfigService.delete_metadata_sec_services(query_db, sec_ids)
logger.info(result.message)
@@ -167,9 +177,9 @@ async def delete_metadata_sec(
@metadataConfigController.get('/sec/{sec_id}', response_model=MetadataSecModel)
async def get_metadata_sec_detail(
- request: Request,
- sec_id: str,
- query_db: AsyncSession = Depends(get_db),
+ request: Request,
+ sec_id: str,
+ query_db: AsyncSession = Depends(get_db),
):
result = await MetadataConfigService.get_metadata_sec_detail_services(query_db, sec_id)
logger.info(f'获取数据安全配置 onum={sec_id} 详情成功')
@@ -181,9 +191,9 @@ async def get_metadata_sec_detail(
@metadataConfigController.get('/bizConfig/list', response_model=PageResponseModel)
async def get_biz_config_list(
- request: Request,
- query: SecuBizConfigQueryModel = Depends(SecuBizConfigPageQueryModel.as_query),
- db: AsyncSession = Depends(get_db),
+ request: Request,
+ query: SecuBizConfigQueryModel = Depends(SecuBizConfigPageQueryModel.as_query),
+ db: AsyncSession = Depends(get_db),
):
result = await MetadataConfigService.get_biz_config_list_services(db, query, is_page=True)
return ResponseUtil.success(model_content=result)
@@ -191,9 +201,9 @@ async def get_biz_config_list(
@metadataConfigController.get('/bizConfig/listall')
async def get_biz_config_list_all(
- request: Request,
- query: SecuBizConfigQueryModel = Depends(SecuBizConfigPageQueryModel.as_query),
- db: AsyncSession = Depends(get_db),
+ request: Request,
+ query: SecuBizConfigQueryModel = Depends(SecuBizConfigPageQueryModel.as_query),
+ db: AsyncSession = Depends(get_db),
):
result = await MetadataConfigService.get_biz_config_list_services(db, query, is_page=False)
return ResponseUtil.success(data=result)
@@ -202,9 +212,9 @@ async def get_biz_config_list_all(
@metadataConfigController.post('/bizConfig/add')
@ValidateFields(['bizModule', 'configType', 'data_sec_lvl', 'applyType'])
async def add_biz_config(
- item: SecuBizConfigAddModel,
- db: AsyncSession = Depends(get_db),
- current_user: CurrentUserModel = Depends(LoginService.get_current_user),
+ item: SecuBizConfigAddModel,
+ db: AsyncSession = Depends(get_db),
+ current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
item.create_by = current_user.user.user_name
item.create_time = datetime.now()
@@ -215,9 +225,9 @@ async def add_biz_config(
@metadataConfigController.post('/bizConfig/edit')
@ValidateFields(['onum'])
async def edit_biz_config(
- item: SecuBizConfigAddModel,
- db: AsyncSession = Depends(get_db),
- current_user: CurrentUserModel = Depends(LoginService.get_current_user),
+ item: SecuBizConfigAddModel,
+ db: AsyncSession = Depends(get_db),
+ current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
item.update_by = current_user.user.user_name
item.update_time = datetime.now()
@@ -242,9 +252,9 @@ async def get_biz_config_detail(onum: str, db: AsyncSession = Depends(get_db)):
@metadataConfigController.get('/bizPermiConfig/list', response_model=PageResponseModel)
async def get_biz_permi_config_list(
- request: Request,
- query: SecuBizConfigModel = Depends(SecuBizPermiConfigPageQueryModel.as_query),
- query_db: AsyncSession = Depends(get_db),
+ request: Request,
+ query: SecuBizConfigModel = Depends(SecuBizPermiConfigPageQueryModel.as_query),
+ query_db: AsyncSession = Depends(get_db),
):
result = await MetadataConfigService.get_biz_permi_config_list_services(query_db, query, is_page=True)
return ResponseUtil.success(model_content=result)
@@ -252,9 +262,9 @@ async def get_biz_permi_config_list(
@metadataConfigController.post('/bizPermiConfig/add')
async def add_biz_permi_config(
- item: SecuBizPermiConfigBatchModel,
- db: AsyncSession = Depends(get_db),
- current_user: CurrentUserModel = Depends(LoginService.get_current_user),
+ item: SecuBizPermiConfigBatchModel,
+ db: AsyncSession = Depends(get_db),
+ current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
create_by = current_user.user.user_name
create_time = datetime.now()
@@ -265,9 +275,9 @@ async def add_biz_permi_config(
@metadataConfigController.post('/bizPermiConfig/edit')
@ValidateFields(['onum'])
async def edit_biz_permi_config(
- item: SecuBizPermiConfigModel,
- db: AsyncSession = Depends(get_db),
- current_user: CurrentUserModel = Depends(LoginService.get_current_user),
+ item: SecuBizPermiConfigModel,
+ db: AsyncSession = Depends(get_db),
+ current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
item.update_by = current_user.user.user_name
item.update_time = datetime.now()
@@ -290,8 +300,8 @@ async def get_biz_permi_config_detail(onum: str, db: AsyncSession = Depends(get_
@metadataConfigController.get('/bizConfigRela/list/{bizOnum}')
async def get_biz_rela_config_list(
- bizOnum: int,
- query_db: AsyncSession = Depends(get_db),
+ bizOnum: int,
+ query_db: AsyncSession = Depends(get_db),
):
ai_chat_list_result = await MetadataConfigService.get_biz_config_rela_list_services(query_db, bizOnum)
logger.info('获取成功')
@@ -300,9 +310,9 @@ async def get_biz_rela_config_list(
@metadataConfigController.get('/busiLabel/list', response_model=PageResponseModel)
async def get_busi_label_list(
- request: Request,
- query: BatchBusiLabelConfigModel = Depends(BatchBusiLabelConfigPageQueryModel.as_query),
- query_db: AsyncSession = Depends(get_db),
+ request: Request,
+ query: BatchBusiLabelConfigModel = Depends(BatchBusiLabelConfigPageQueryModel.as_query),
+ query_db: AsyncSession = Depends(get_db),
):
result = await BatchLabelConfigService.get_busi_list_services(query_db, query, False)
logger.info('获取业务标签配置列表成功')
@@ -312,10 +322,10 @@ async def get_busi_label_list(
@metadataConfigController.post('/busiLabel')
@ValidateFields(validate_model='add_busi_label')
async def add_busi_label(
- request: Request,
- model: BatchBusiLabelConfigModel,
- query_db: AsyncSession = Depends(get_db),
- current_user: CurrentUserModel = Depends(LoginService.get_current_user),
+ request: Request,
+ model: BatchBusiLabelConfigModel,
+ query_db: AsyncSession = Depends(get_db),
+ current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
model.upd_by = current_user.user.user_name
@@ -328,10 +338,10 @@ async def add_busi_label(
@metadataConfigController.put('/busiLabel')
@ValidateFields(validate_model='edit_busi_label')
async def edit_busi_label(
- request: Request,
- model: BatchBusiLabelConfigModel,
- query_db: AsyncSession = Depends(get_db),
- current_user: CurrentUserModel = Depends(LoginService.get_current_user),
+ request: Request,
+ model: BatchBusiLabelConfigModel,
+ query_db: AsyncSession = Depends(get_db),
+ current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
model.upd_by = current_user.user.user_name
@@ -343,9 +353,9 @@ async def edit_busi_label(
@metadataConfigController.delete('/busiLabel/{onum_list}')
async def delete_busi_label(
- request: Request,
- onum_list: str,
- query_db: AsyncSession = Depends(get_db),
+ 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)
@@ -354,9 +364,9 @@ async def delete_busi_label(
@metadataConfigController.get('/busiLabel/{onum}', response_model=BatchBusiLabelConfigModel)
async def get_busi_label_detail(
- request: Request,
- onum: str,
- query_db: AsyncSession = Depends(get_db),
+ 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} 详情成功')
@@ -365,9 +375,9 @@ async def get_busi_label_detail(
@metadataConfigController.get('/dataopLabel/list', response_model=PageResponseModel)
async def get_dataop_label_list(
- request: Request,
- query: BatchDataopLabelConfigModel=Depends(BatchDataopLabelModelPageQueryModel.as_query),
- query_db: AsyncSession = Depends(get_db),
+ request: Request,
+ query: BatchDataopLabelConfigModel = Depends(BatchDataopLabelModelPageQueryModel.as_query),
+ query_db: AsyncSession = Depends(get_db),
):
result = await BatchLabelConfigService.get_dataop_vo_services(query_db, query, is_page=True)
logger.info('获取操作标签配置列表成功')
@@ -377,10 +387,10 @@ async def get_dataop_label_list(
@metadataConfigController.post('/dataopLabel')
@ValidateFields(validate_model='add_dataop_label')
async def add_dataop_label(
- request: Request,
- model: BatchDataopLabelConfigModelVo,
- query_db: AsyncSession = Depends(get_db),
- current_user: CurrentUserModel = Depends(LoginService.get_current_user),
+ request: Request,
+ model: BatchDataopLabelConfigModelVo,
+ query_db: AsyncSession = Depends(get_db),
+ current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
model.upd_by = current_user.user.user_name
@@ -393,10 +403,10 @@ async def add_dataop_label(
@metadataConfigController.put('/dataopLabel')
@ValidateFields(validate_model='edit_dataop_label')
async def edit_dataop_label(
- request: Request,
- model: BatchDataopLabelConfigModel,
- query_db: AsyncSession = Depends(get_db),
- current_user: CurrentUserModel = Depends(LoginService.get_current_user),
+ request: Request,
+ model: BatchDataopLabelConfigModel,
+ query_db: AsyncSession = Depends(get_db),
+ current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
model.upd_by = current_user.user.user_name
@@ -408,9 +418,9 @@ async def edit_dataop_label(
@metadataConfigController.delete('/dataopLabel/{onum_list}')
async def delete_dataop_label(
- request: Request,
- onum_list: str,
- query_db: AsyncSession = Depends(get_db),
+ 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)
@@ -419,9 +429,9 @@ async def delete_dataop_label(
@metadataConfigController.get('/dataopLabel/{onum}', response_model=BatchDataopLabelConfigModel)
async def get_dataop_label_detail(
- request: Request,
- onum: str,
- query_db: AsyncSession = Depends(get_db),
+ 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} 详情成功')
@@ -430,12 +440,12 @@ async def get_dataop_label_detail(
@metadataConfigController.get('/datatypeLabel/list', response_model=PageResponseModel)
async def get_datatype_label_list(
- request: Request,
- query: BatchDatatypeLabelConfigModel = Depends(BatchDatatypeLabelConfigPageQueryModel.as_query),
- query_db: AsyncSession = Depends(get_db),
+ request: Request,
+ query: BatchDatatypeLabelConfigModel = Depends(BatchDatatypeLabelConfigPageQueryModel.as_query),
+ query_db: AsyncSession = Depends(get_db),
):
- result = await BatchLabelConfigService.get_datatype_list_services(query_db, query,False)
+ result = await BatchLabelConfigService.get_datatype_list_services(query_db, query, False)
logger.info('获取数据类型标签配置列表成功')
return ResponseUtil.success(data=result)
@@ -443,14 +453,14 @@ async def get_datatype_label_list(
@metadataConfigController.post('/datatypeLabel')
@ValidateFields(validate_model='add_datatype_label')
async def add_datatype_label(
- request: Request,
- model: BatchDatatypeLabelConfigModel,
- query_db: AsyncSession = Depends(get_db),
- current_user: CurrentUserModel = Depends(LoginService.get_current_user),
+ request: Request,
+ model: BatchDatatypeLabelConfigModel,
+ query_db: AsyncSession = Depends(get_db),
+ current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
model.upd_by = current_user.user.user_name
model.upd_time = datetime.now()
-
+
result = await BatchLabelConfigService.add_datatype_services(query_db, model)
logger.info(result.message)
return ResponseUtil.success(msg=result.message)
@@ -459,10 +469,10 @@ async def add_datatype_label(
@metadataConfigController.put('/datatypeLabel')
@ValidateFields(validate_model='edit_datatype_label')
async def edit_datatype_label(
- request: Request,
- model: BatchDatatypeLabelConfigModel,
- query_db: AsyncSession = Depends(get_db),
- current_user: CurrentUserModel = Depends(LoginService.get_current_user),
+ request: Request,
+ model: BatchDatatypeLabelConfigModel,
+ query_db: AsyncSession = Depends(get_db),
+ current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
model.upd_by = current_user.user.user_name
@@ -474,9 +484,9 @@ async def edit_datatype_label(
@metadataConfigController.delete('/datatypeLabel/{onum_list}')
async def delete_datatype_label(
- request: Request,
- onum_list: str,
- query_db: AsyncSession = Depends(get_db),
+ 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)
@@ -485,18 +495,20 @@ async def delete_datatype_label(
@metadataConfigController.get('/datatypeLabel/{onum}', response_model=BatchDatatypeLabelConfigModel)
async def get_datatype_label_detail(
- request: Request,
- onum: str,
- query_db: AsyncSession = Depends(get_db),
+ 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)
+
+
@metadataConfigController.get("/datasecConfig/list", response_model=PageResponseModel)
async def get_datasec_config_list(
- request: Request,
- query: DatasecConfigModel = Depends(DatasecConfigPageQueryModel.as_query),
- query_db: AsyncSession = Depends(get_db),
+ request: Request,
+ query: DatasecConfigModel = Depends(DatasecConfigPageQueryModel.as_query),
+ query_db: AsyncSession = Depends(get_db),
):
result = await DatasecConfigService.get_datasec_list_services(query_db, query, True)
logger.info("获取数据安全参数配置列表成功")
@@ -506,14 +518,14 @@ async def get_datasec_config_list(
@metadataConfigController.post("/datasecConfig")
@ValidateFields(validate_model="add_datasec_config")
async def add_datasec_config(
- request: Request,
- model: DatasecConfigModel,
- query_db: AsyncSession = Depends(get_db),
- current_user: CurrentUserModel = Depends(LoginService.get_current_user),
+ request: Request,
+ model: DatasecConfigModel,
+ query_db: AsyncSession = Depends(get_db),
+ current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
model.create_by = current_user.user.user_name
model.create_time = datetime.now()
- result = await DatasecConfigService.add_datasec_services(query_db, model,current_user,request)
+ result = await DatasecConfigService.add_datasec_services(query_db, model, current_user, request)
logger.info(result.message)
return ResponseUtil.success(msg=result.message)
@@ -521,14 +533,14 @@ async def add_datasec_config(
@metadataConfigController.put("/datasecConfig")
@ValidateFields(validate_model="edit_datasec_config")
async def edit_datasec_config(
- request: Request,
- model: DatasecConfigModel,
- query_db: AsyncSession = Depends(get_db),
- current_user: CurrentUserModel = Depends(LoginService.get_current_user),
+ request: Request,
+ model: DatasecConfigModel,
+ query_db: AsyncSession = Depends(get_db),
+ current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
model.update_by = current_user.user.user_name
model.update_time = datetime.now()
- result = await DatasecConfigService.edit_datasec_services(query_db, model,current_user,request)
+ result = await DatasecConfigService.edit_datasec_services(query_db, model, current_user, request)
logger.info(result.message)
return ResponseUtil.success(msg=result.message)
@@ -543,77 +555,87 @@ async def edit_datasec_config(
# logger.info(result.message)
# return ResponseUtil.success(msg=result.message)
@metadataConfigController.delete('/datasecConfig/{metatask_ids}/{ds_ids}')
-async def delete_system_config(request: Request, metatask_ids: str,ds_ids:str, query_db: AsyncSession = Depends(get_db),current_user: CurrentUserModel = Depends(LoginService.get_current_user)):
- delete_config = DeleteMetataskModel(metatask_ids=metatask_ids,ds_ids=ds_ids)
- delete_config_result = await DatasecConfigService.delete_datasec_services(request, query_db, delete_config,current_user)
+async def delete_system_config(request: Request, metatask_ids: str, ds_ids: str,
+ query_db: AsyncSession = Depends(get_db),
+ current_user: CurrentUserModel = Depends(LoginService.get_current_user)):
+ delete_config = DeleteMetataskModel(metatask_ids=metatask_ids, ds_ids=ds_ids)
+ delete_config_result = await DatasecConfigService.delete_datasec_services(request, query_db, delete_config,
+ current_user)
logger.info(delete_config_result.message)
return ResponseUtil.success(msg=delete_config_result.message)
+
@metadataConfigController.get("/datasecConfig/{onum}", response_model=DatasecConfigModel)
async def get_datasec_config_detail(
- request: Request,
- onum: int,
- query_db: AsyncSession = Depends(get_db),
+ request: Request,
+ onum: int,
+ query_db: AsyncSession = Depends(get_db),
):
result = await DatasecConfigService.get_datasec_detail_services(query_db, onum)
logger.info(f"获取数据安全参数配置 onum={onum} 详情成功")
return ResponseUtil.success(data=result)
+
+
@metadataConfigController.put('/upOrdown')
async def up_or_down_meta_metatask(
- request: Request,
- DownOrUpdate: OperaMetataskModel,
- query_db: AsyncSession = Depends(get_db),
- current_user: CurrentUserModel = Depends(LoginService.get_current_user),
+ request: Request,
+ DownOrUpdate: OperaMetataskModel,
+ query_db: AsyncSession = Depends(get_db),
+ current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
-
- edit_config_result = await DatasecConfigService.up_or_down_metatask_services(request, query_db,current_user, DownOrUpdate.id,DownOrUpdate.type)
+ edit_config_result = await DatasecConfigService.up_or_down_metatask_services(request, query_db, current_user,
+ DownOrUpdate.id, DownOrUpdate.type)
logger.info(edit_config_result.message)
return ResponseUtil.success(msg=edit_config_result.message)
+
+
# 元数据任务调度
@metadataConfigController.put('/DS')
async def DS_meta_metatask(
- request: Request,
- process: ParmScheduleVo,
- query_db: AsyncSession = Depends(get_db),
- current_user: CurrentUserModel = Depends(LoginService.get_current_user)
+ request: Request,
+ process: ParmScheduleVo,
+ query_db: AsyncSession = Depends(get_db),
+ current_user: CurrentUserModel = Depends(LoginService.get_current_user)
):
-
- edit_config_result = await DatasecConfigService.ds_metatask_services(request, query_db, process,current_user)
+ edit_config_result = await DatasecConfigService.ds_metatask_services(request, query_db, process, current_user)
return ResponseUtil.success(msg=edit_config_result)
-@metadataConfigController.get('/DS/{id}')
+@metadataConfigController.get('/DS/{id}')
async def DS_meta_metatask_detail(
- request: Request,
- id: int,
- query_db: AsyncSession = Depends(get_db),
- current_user: CurrentUserModel = Depends(LoginService.get_current_user)
+ request: Request,
+ id: int,
+ query_db: AsyncSession = Depends(get_db),
+ current_user: CurrentUserModel = Depends(LoginService.get_current_user)
):
- process=ParmScheduleVo()
- process.processDefinitionCode=id
- edit_config_result = await DatasecConfigService.ds_metatask_detail(request, query_db, process,current_user)
+ process = ParmScheduleVo()
+ process.processDefinitionCode = id
+ edit_config_result = await DatasecConfigService.ds_metatask_detail(request, query_db, process, current_user)
return ResponseUtil.success(data=edit_config_result)
+
+
@metadataConfigController.delete('/DS')
async def DS_meta_metatask_delete(
- request: Request,
- process: ParmScheduleVo,
- query_db: AsyncSession = Depends(get_db),
- current_user: CurrentUserModel = Depends(LoginService.get_current_user)
+ request: Request,
+ process: ParmScheduleVo,
+ query_db: AsyncSession = Depends(get_db),
+ current_user: CurrentUserModel = Depends(LoginService.get_current_user)
):
-
- edit_config_result = await DatasecConfigService.ds_metatask_delete(request, query_db, process,current_user)
+ edit_config_result = await DatasecConfigService.ds_metatask_delete(request, query_db, process, current_user)
return ResponseUtil.success(msg=edit_config_result)
+
+
# ----------元数据标签调度任务 ----------
@metadataConfigController.get('/taskBizConfig/list', response_model=PageResponseModel)
async def get_task_biz_config_list(
- request: Request,
- query: TaskBizConfigQueryModel = Depends(TaskBizConfigPageQueryModel.as_query),
- db: AsyncSession = Depends(get_db),
+ request: Request,
+ query: TaskBizConfigQueryModel = Depends(TaskBizConfigPageQueryModel.as_query),
+ db: AsyncSession = Depends(get_db),
):
result = await MetadataConfigService.get_task_biz_config_list_services(db, query, is_page=True)
return ResponseUtil.success(model_content=result)
@@ -621,9 +643,9 @@ async def get_task_biz_config_list(
@metadataConfigController.get('/taskBizConfig/listall')
async def get_task_biz_config_list_all(
- request: Request,
- query: TaskBizConfigQueryModel = Depends(TaskBizConfigPageQueryModel.as_query),
- db: AsyncSession = Depends(get_db),
+ request: Request,
+ query: TaskBizConfigQueryModel = Depends(TaskBizConfigPageQueryModel.as_query),
+ db: AsyncSession = Depends(get_db),
):
result = await MetadataConfigService.get_task_biz_config_list_services(db, query, is_page=False)
return ResponseUtil.success(data=result)
@@ -632,28 +654,28 @@ async def get_task_biz_config_list_all(
@metadataConfigController.post('/taskBizConfig/add')
@ValidateFields(['bizModule', 'configType', 'data_sec_lvl', 'applyType'])
async def add_task_biz_config(
- request: Request,
- item: TaskBizConfigAddModel,
- db: AsyncSession = Depends(get_db),
- current_user: CurrentUserModel = Depends(LoginService.get_current_user),
+ request: Request,
+ item: TaskBizConfigAddModel,
+ db: AsyncSession = Depends(get_db),
+ current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
item.create_by = current_user.user.user_name
item.create_time = datetime.now()
- result = await MetadataConfigService.add_task_biz_config_services(db, item,current_user,request)
+ result = await MetadataConfigService.add_task_biz_config_services(db, item, current_user, request)
return ResponseUtil.success(msg=result.message)
@metadataConfigController.post('/taskBizConfig/edit')
@ValidateFields(['onum'])
async def edit_task_biz_config(
- request: Request,
- item: TaskBizConfigAddModel,
- db: AsyncSession = Depends(get_db),
- current_user: CurrentUserModel = Depends(LoginService.get_current_user),
+ request: Request,
+ item: TaskBizConfigAddModel,
+ db: AsyncSession = Depends(get_db),
+ current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
item.update_by = current_user.user.user_name
item.update_time = datetime.now()
- result = await MetadataConfigService.edit_task_biz_config_services(db, item,current_user,request)
+ result = await MetadataConfigService.edit_task_biz_config_services(db, item, current_user, request)
return ResponseUtil.success(msg=result.message)
@@ -662,57 +684,64 @@ async def edit_task_biz_config(
# result = await MetadataConfigService.delete_task_biz_config_services(db, onums)
# return ResponseUtil.success(msg=result.message)
@metadataConfigController.delete('/taskBizConfig/{metatask_ids}/{ds_ids}')
-async def delete_task_biz_config(request: Request, metatask_ids: str,ds_ids:str, query_db: AsyncSession = Depends(get_db),current_user: CurrentUserModel = Depends(LoginService.get_current_user)):
- delete_config = DeleteMetataskModel(metatask_ids=metatask_ids,ds_ids=ds_ids)
- delete_config_result = await MetadataConfigService.delete_task_biz_config_services(request, query_db, delete_config,current_user)
+async def delete_task_biz_config(request: Request, metatask_ids: str, ds_ids: str,
+ query_db: AsyncSession = Depends(get_db),
+ current_user: CurrentUserModel = Depends(LoginService.get_current_user)):
+ delete_config = DeleteMetataskModel(metatask_ids=metatask_ids, ds_ids=ds_ids)
+ delete_config_result = await MetadataConfigService.delete_task_biz_config_services(request, query_db, delete_config,
+ current_user)
logger.info(delete_config_result.message)
return ResponseUtil.success(msg=delete_config_result.message)
+
+
@metadataConfigController.get('/taskBizConfig/detail')
async def get_task_biz_config_detail(onum: str, db: AsyncSession = Depends(get_db)):
data = await MetadataConfigService.get_task_biz_config_detail_services(db, onum)
return ResponseUtil.success(data=data)
+
+
@metadataConfigController.get('/taskBizConfigRela/list/{bizOnum}')
async def get_task_biz_rela_config_list(
- bizOnum: int,
- query_db: AsyncSession = Depends(get_db),
+ bizOnum: int,
+ query_db: AsyncSession = Depends(get_db),
):
ai_chat_list_result = await MetadataConfigService.get_task_biz_config_rela_list_services(query_db, bizOnum)
logger.info('获取成功')
return ResponseUtil.success(data=ai_chat_list_result)
+
+
@metadataConfigController.put('/taskBiz/upOrdown')
async def task_biz_up_or_down_meta_metatask(
- request: Request,
- DownOrUpdate: OperaMetataskModel,
- query_db: AsyncSession = Depends(get_db),
- current_user: CurrentUserModel = Depends(LoginService.get_current_user),
+ request: Request,
+ DownOrUpdate: OperaMetataskModel,
+ query_db: AsyncSession = Depends(get_db),
+ current_user: CurrentUserModel = Depends(LoginService.get_current_user),
):
-
- edit_config_result = await MetadataConfigService.up_or_down_metatask_services(request, query_db,current_user, DownOrUpdate.id,DownOrUpdate.type)
+ edit_config_result = await MetadataConfigService.up_or_down_metatask_services(request, query_db, current_user,
+ DownOrUpdate.id, DownOrUpdate.type)
logger.info(edit_config_result.message)
- return ResponseUtil.success(msg=edit_config_result.message)
-
+ return ResponseUtil.success(msg=edit_config_result.message)
@metadataConfigController.put('/taskBiz/DS')
async def task_biz_DS_meta_metatask(
- request: Request,
- process: ParmScheduleVo,
- query_db: AsyncSession = Depends(get_db),
- current_user: CurrentUserModel = Depends(LoginService.get_current_user)
+ request: Request,
+ process: ParmScheduleVo,
+ query_db: AsyncSession = Depends(get_db),
+ current_user: CurrentUserModel = Depends(LoginService.get_current_user)
):
+ edit_config_result = await MetadataConfigService.ds_metatask_services(request, query_db, process, current_user)
- edit_config_result = await MetadataConfigService.ds_metatask_services(request, query_db, process,current_user)
+ return ResponseUtil.success(msg=edit_config_result)
- return ResponseUtil.success(msg=edit_config_result)
@metadataConfigController.delete('/taskBiz/DS')
async def task_biz_DS_meta_metatask_delete(
- request: Request,
- process: ParmScheduleVo,
- query_db: AsyncSession = Depends(get_db),
- current_user: CurrentUserModel = Depends(LoginService.get_current_user)
+ request: Request,
+ process: ParmScheduleVo,
+ query_db: AsyncSession = Depends(get_db),
+ current_user: CurrentUserModel = Depends(LoginService.get_current_user)
):
+ edit_config_result = await MetadataConfigService.ds_metatask_delete(request, query_db, process, current_user)
- edit_config_result = await MetadataConfigService.ds_metatask_delete(request, query_db, process,current_user)
-
- return ResponseUtil.success(msg=edit_config_result)
\ No newline at end of file
+ return ResponseUtil.success(msg=edit_config_result)
diff --git a/vue-fastapi-backend/module_admin/dao/datastd_dao.py b/vue-fastapi-backend/module_admin/dao/datastd_dao.py
index 914812e..8403571 100644
--- a/vue-fastapi-backend/module_admin/dao/datastd_dao.py
+++ b/vue-fastapi-backend/module_admin/dao/datastd_dao.py
@@ -1,12 +1,14 @@
-from sqlalchemy import delete, select, update, desc,or_,not_
+from sqlalchemy import delete, select, update, desc, or_, not_, and_
from sqlalchemy.ext.asyncio import AsyncSession
-from module_admin.entity.do.datastd_do import DataStdCode,DataStdDict,DataAstContent,DataAstContentRela,DataStdMain,DataStdMainAppr,DataStdDictAppr,DataStdCodeAppr
+from module_admin.entity.do.datastd_do import DataStdCode, DataStdDict, DataAstContent, DataAstContentRela, DataStdMain, \
+ DataStdMainAppr, DataStdDictAppr, DataStdCodeAppr
from module_admin.entity.vo.datastd_vo import DataStdCodeModel, DataStdDictModel, DataStdMainModel, \
DataStdMainApprModel, DataStdDictApprModel, DataStdCodeApprModel, StdDictNoPageParam
from module_admin.entity.do.dept_do import SysDept
from utils.page_util import PageUtil
from sqlalchemy.orm import aliased
-from module_admin.entity.vo.data_ast_content_vo import DataCatalogPageQueryModel, DeleteDataCatalogModel,DataCatalogChild
+from module_admin.entity.vo.data_ast_content_vo import DataCatalogPageQueryModel, DeleteDataCatalogModel, \
+ DataCatalogChild
from datetime import datetime
from module_admin.entity.do.approval_do import FlowApproval, FlowConfig
@@ -15,18 +17,19 @@ class DataStdDao:
# ----------------------------------------------------------------数据标准模块----------------------------------------------------------------------------------------------------
@classmethod
- async def get_std_code_appr_list(cls, flowId:str,db: AsyncSession):
- filters = []
- filters.append(DataStdCodeAppr.flowId == flowId)
- filters.append(DataStdCodeAppr.class_id == "code")
- query = select(DataStdCodeAppr).where(*filters).order_by(desc(DataStdCodeAppr.create_time))
- return await PageUtil.paginate(db, query, 0, 0, False)
+ async def get_std_code_appr_list(cls, flowId: str, db: AsyncSession):
+ filters = []
+ filters.append(DataStdCodeAppr.flowId == flowId)
+ filters.append(DataStdCodeAppr.class_id == "code")
+ query = select(DataStdCodeAppr).where(*filters).order_by(desc(DataStdCodeAppr.create_time))
+ return await PageUtil.paginate(db, query, 0, 0, False)
+
@classmethod
- async def get_std_code_appr_list_Flow(cls, flowId:str,db: AsyncSession):
- filters = []
- filters.append(DataStdCodeAppr.flowId == flowId)
- query = select(DataStdCodeAppr).where(*filters).order_by(desc(DataStdCodeAppr.create_time))
- return await PageUtil.paginate(db, query, 0, 0, False)
+ async def get_std_code_appr_list_Flow(cls, flowId: str, db: AsyncSession):
+ filters = []
+ filters.append(DataStdCodeAppr.flowId == flowId)
+ query = select(DataStdCodeAppr).where(*filters).order_by(desc(DataStdCodeAppr.create_time))
+ return await PageUtil.paginate(db, query, 0, 0, False)
@classmethod
async def get_std_code_list(cls, db: AsyncSession, query_object: DataStdCodeModel, is_page: bool = False):
@@ -40,7 +43,7 @@ class DataStdDao:
# 构建别名
c1 = aliased(DataStdCode) # 当前记录
c2 = aliased(DataStdCode) # 关联 code_map_id
-
+
# 构建过滤条件
filters = []
if query_object.cd_val_cn_mean:
@@ -62,7 +65,7 @@ class DataStdDao:
filters.append(1 == 2)
if query_object.parent_id:
filters.append(c1.parent_id == query_object.parent_id)
-
+
# 构建查询
query = (
select(
@@ -82,7 +85,7 @@ class DataStdDao:
.where(*filters)
.order_by(desc(c1.create_time))
)
-
+
# 分页处理
result = await PageUtil.paginate(
db, query, query_object.page_num, query_object.page_size, is_page
@@ -91,59 +94,61 @@ class DataStdDao:
@classmethod
async def get_appr_std_code_list(cls, db: AsyncSession, query_object: DataStdCodeApprModel, is_page: bool = False):
- """
+ """
获取 DataStdCode 的列表信息,支持模糊查询和分页
:param db: ORM对象
:param query_object: 查询参数对象
:param is_page: 是否开启分页
:return: 列表信息
"""
- # 构建查询条件
- filters = []
- if query_object.cd_val_cn_mean:
- filters.append(DataStdCodeAppr.cd_val_cn_mean.like(f"%{query_object.cd_val_cn_mean}%"))
- if query_object.cd_no:
- filters.append( or_(
- DataStdCodeAppr.cd_val_cn_mean.like(f"%{query_object.cd_no}%"),
- DataStdCodeAppr.cd_no.like(f"%{query_object.cd_no}%")
- ))
- if query_object.cd_val_stat:
- filters.append(DataStdCodeAppr.cd_val_stat==query_object.cd_val_stat)
- if query_object.src_sys:
- filters.append(DataStdCodeAppr.src_sys==query_object.src_sys)
- if query_object.cd_type:
- filters.append(DataStdCodeAppr.cd_type==query_object.cd_type)
-
- if query_object.class_id:
- filters.append(DataStdCodeAppr.class_id==query_object.class_id)
- if query_object.class_id=='codeItem' and not query_object.parent_id:
- filters.append(1==2)
- if query_object.parent_id:
- filters.append(DataStdCodeAppr.parent_id==query_object.parent_id)
- # 构建查询语句
- query = (
- select(DataStdCodeAppr)
- .where(*filters)
- .order_by(desc(DataStdCodeAppr.create_time)) # 按创建时间降序排序
- )
-
- # 分页处理
- col_list = await PageUtil.paginate(
- db, query, query_object.page_num, query_object.page_size, is_page
- )
- return col_list
+ # 构建查询条件
+ filters = []
+ if query_object.cd_val_cn_mean:
+ filters.append(DataStdCodeAppr.cd_val_cn_mean.like(f"%{query_object.cd_val_cn_mean}%"))
+ if query_object.cd_no:
+ filters.append(or_(
+ DataStdCodeAppr.cd_val_cn_mean.like(f"%{query_object.cd_no}%"),
+ DataStdCodeAppr.cd_no.like(f"%{query_object.cd_no}%")
+ ))
+ if query_object.cd_val_stat:
+ filters.append(DataStdCodeAppr.cd_val_stat == query_object.cd_val_stat)
+ if query_object.src_sys:
+ filters.append(DataStdCodeAppr.src_sys == query_object.src_sys)
+ if query_object.cd_type:
+ filters.append(DataStdCodeAppr.cd_type == query_object.cd_type)
+
+ if query_object.class_id:
+ filters.append(DataStdCodeAppr.class_id == query_object.class_id)
+ if query_object.class_id == 'codeItem' and not query_object.parent_id:
+ filters.append(1 == 2)
+ if query_object.parent_id:
+ filters.append(DataStdCodeAppr.parent_id == query_object.parent_id)
+ # 构建查询语句
+ query = (
+ select(DataStdCodeAppr)
+ .where(*filters)
+ .order_by(desc(DataStdCodeAppr.create_time)) # 按创建时间降序排序
+ )
+
+ # 分页处理
+ col_list = await PageUtil.paginate(
+ db, query, query_object.page_num, query_object.page_size, is_page
+ )
+ return col_list
+
@classmethod
- async def get_last_std_code_appr_by_id(cls,db: AsyncSession, Id: str ):
- result = await db.execute(
- select(DataStdCodeAppr)
- .where(
- DataStdCodeAppr.oldInstId == Id,
- DataStdCodeAppr.approStatus == "succeed"
- )
- .order_by(DataStdCodeAppr.upd_time.desc())
- .limit(1)
- )
- return result.scalar_one_or_none()
+ async def get_last_std_code_appr_by_id(cls, db: AsyncSession, Id: str):
+ result = await db.execute(
+ select(DataStdCodeAppr)
+ .where(
+ DataStdCodeAppr.oldInstId == Id,
+ DataStdCodeAppr.approStatus == "succeed"
+ )
+ .order_by(DataStdCodeAppr.upd_time.desc())
+ .limit(1)
+ )
+ return result.scalar_one_or_none()
+
@classmethod
async def get_std_code_list_all(cls, query_db: AsyncSession):
"""
@@ -154,6 +159,7 @@ class DataStdDao:
stmt = select(DataStdCode).where(DataStdCode.class_id == 'code') # 只查有效的
result = await query_db.execute(stmt)
return result.scalars().all()
+
@classmethod
async def get_std_main_list_import(cls, query_db: AsyncSession):
"""
@@ -161,118 +167,123 @@ class DataStdDao:
:param session: 异步数据库会话
:return: List[DataStdCode]
"""
- stmt = select(DataStdMain).where(1== 1) # 只查有效的
+ stmt = select(DataStdMain).where(1 == 1) # 只查有效的
result = await query_db.execute(stmt)
return result.scalars().all()
+
@classmethod
async def get_std_code_map_list(cls, db: AsyncSession, query_object: DataStdCodeModel, is_page: bool = False):
- # 构建查询条件
- filters = []
- # 系统级代码
- c1 = aliased(DataStdCode) # 当前 codeItem 表(c1)
- c2 = aliased(DataStdCode) # 别名 c2 表示父级(parent)
- c3 = aliased(DataStdCode) # 别名 c3 表示映射的代码
- c4 = aliased(DataStdCode) # 别名 c4 表示映射父级代码
- if query_object.parent_id:
- if query_object.cd_type =='sys':
- filters.append(c1.parent_id == query_object.parent_id)
- else:
- filters.append(c3.parent_id == query_object.parent_id)
- # 公司级代码
- # 2. 创建别名并进行连接
- filters.append(c1.class_id == 'codeItem') # class_id 为 'codeItem'
- # 3. 构建基础查询,使用连接和别名
- query = (
- select(
- c2.src_sys.label("target_sys_id"), # 父级系统编号
- c2.src_sys.label("target_sys_name"), # 父级系统名称
- c2.cd_no.label("target_code_num"), # 父级代码编号
- c2.cd_val_cn_mean.label("target_code_name"), # 父级代码名称
- c1.cd_no.label("target_code_num_item"), # 当前 codeItem 的编号
- c1.cd_val_cn_mean.label("target_code_name_item"), # 当前 codeItem 的名称
- c4.cd_no.label("resource_code_num"), # 映射的父级代码编号
- c4.cd_val_cn_mean.label("resource_code_name"), # 映射的父级代码名称
- c3.cd_no.label("resource_code_num_item"), # 映射的父级代码编号
- c3.cd_val_cn_mean.label("resource_code_name_item") # 映射的父级代码名称
- )
- .select_from(c1) # 从 c1 开始查询
- .join(c2, c1.parent_id == c2.onum, isouter=True) # 连接 c2
- .join(c3, c1.code_map_id == c3.onum, isouter=True) # 连接 c3
- .join(c4, c3.parent_id == c4.onum, isouter=True) # 连接 c4
- .where(*filters) # 使用所有过滤条件
- .order_by(desc(c1.create_time)) # 按照创建时间降序排列
- )
- # 4. 分页逻辑
- col_list = await PageUtil.paginate(
- db, query, query_object.page_num, query_object.page_size, is_page
- )
- return col_list
+ # 构建查询条件
+ filters = []
+ # 系统级代码
+ c1 = aliased(DataStdCode) # 当前 codeItem 表(c1)
+ c2 = aliased(DataStdCode) # 别名 c2 表示父级(parent)
+ c3 = aliased(DataStdCode) # 别名 c3 表示映射的代码
+ c4 = aliased(DataStdCode) # 别名 c4 表示映射父级代码
+ if query_object.parent_id:
+ if query_object.cd_type == 'sys':
+ filters.append(c1.parent_id == query_object.parent_id)
+ else:
+ filters.append(c3.parent_id == query_object.parent_id)
+ # 公司级代码
+ # 2. 创建别名并进行连接
+ filters.append(c1.class_id == 'codeItem') # class_id 为 'codeItem'
+ # 3. 构建基础查询,使用连接和别名
+ query = (
+ select(
+ c2.src_sys.label("target_sys_id"), # 父级系统编号
+ c2.src_sys.label("target_sys_name"), # 父级系统名称
+ c2.cd_no.label("target_code_num"), # 父级代码编号
+ c2.cd_val_cn_mean.label("target_code_name"), # 父级代码名称
+ c1.cd_no.label("target_code_num_item"), # 当前 codeItem 的编号
+ c1.cd_val_cn_mean.label("target_code_name_item"), # 当前 codeItem 的名称
+ c4.cd_no.label("resource_code_num"), # 映射的父级代码编号
+ c4.cd_val_cn_mean.label("resource_code_name"), # 映射的父级代码名称
+ c3.cd_no.label("resource_code_num_item"), # 映射的父级代码编号
+ c3.cd_val_cn_mean.label("resource_code_name_item") # 映射的父级代码名称
+ )
+ .select_from(c1) # 从 c1 开始查询
+ .join(c2, c1.parent_id == c2.onum, isouter=True) # 连接 c2
+ .join(c3, c1.code_map_id == c3.onum, isouter=True) # 连接 c3
+ .join(c4, c3.parent_id == c4.onum, isouter=True) # 连接 c4
+ .where(*filters) # 使用所有过滤条件
+ .order_by(desc(c1.create_time)) # 按照创建时间降序排列
+ )
+ # 4. 分页逻辑
+ col_list = await PageUtil.paginate(
+ db, query, query_object.page_num, query_object.page_size, is_page
+ )
+ return col_list
+
@classmethod
- async def get_std_main_map_list(cls, db: AsyncSession, query_object: DataStdDictModel, is_page: bool = False):
- # 构建查询条件
- filters = []
- # 系统级代码
- c1 = aliased(DataStdMain) #
- c2 = aliased(DataStdDict) #
-
- filters.append(c1.onum == query_object.onum)
-
- # 3. 构建基础查询,使用连接和别名
- query = (
- select(
- c1.data_std_no.label("data_std_no"), # 标准编号
- c1.data_std_eng_name.label("data_std_eng_name"), # 标准英文名称
- c1.data_std_cn_name.label("data_std_cn_name"), # 标准中文名
- c2.data_dict_no.label("data_dict_no"), # 字典编号
- c2.data_dict_eng_name.label("data_dict_eng_name"), # 字典英文名称
- c2.data_dict_cn_name.label("data_dict_cn_name"), # 字典中文名
- )
- .select_from(c1) # 从 c1 开始查询
- .join(c2, c1.data_std_no == c2.data_std_no, isouter=True) # 连接 c2
-
- .where(*filters) # 使用所有过滤条件
- .order_by(desc(c1.create_time)) # 按照创建时间降序排列
- )
- # 4. 分页逻辑
- col_list = await PageUtil.paginate(
- db, query, query_object.page_num, query_object.page_size, is_page
- )
- return col_list
+ async def get_std_main_map_list(cls, db: AsyncSession, query_object: DataStdDictModel, is_page: bool = False):
+ # 构建查询条件
+ filters = []
+ # 系统级代码
+ c1 = aliased(DataStdMain) #
+ c2 = aliased(DataStdDict) #
+
+ filters.append(c1.onum == query_object.onum)
+
+ # 3. 构建基础查询,使用连接和别名
+ query = (
+ select(
+ c1.data_std_no.label("data_std_no"), # 标准编号
+ c1.data_std_eng_name.label("data_std_eng_name"), # 标准英文名称
+ c1.data_std_cn_name.label("data_std_cn_name"), # 标准中文名
+ c2.data_dict_no.label("data_dict_no"), # 字典编号
+ c2.data_dict_eng_name.label("data_dict_eng_name"), # 字典英文名称
+ c2.data_dict_cn_name.label("data_dict_cn_name"), # 字典中文名
+ )
+ .select_from(c1) # 从 c1 开始查询
+ .join(c2, c1.data_std_no == c2.data_std_no, isouter=True) # 连接 c2
+
+ .where(*filters) # 使用所有过滤条件
+ .order_by(desc(c1.create_time)) # 按照创建时间降序排列
+ )
+ # 4. 分页逻辑
+ col_list = await PageUtil.paginate(
+ db, query, query_object.page_num, query_object.page_size, is_page
+ )
+ return col_list
+
@classmethod
async def get_data_code_list_by_info(cls, db: AsyncSession, query_object: DataStdCodeModel):
List = (
await db.execute(
select(DataStdCode)
.where(
- DataStdCode.cd_val_cn_mean == query_object.cd_val_cn_mean if query_object.cd_val_cn_mean else True,
- DataStdCode.onum == query_object.onum if query_object.onum else True,
- DataStdCode.cd_val_stat == query_object.cd_val_stat if query_object.cd_val_stat else True,
- DataStdCode.src_sys == query_object.src_sys if query_object.src_sys else True,
- DataStdCode.cd_type == query_object.cd_type if query_object.cd_type else True,
- DataStdCode.code_map_id == query_object.code_map_id if query_object.code_map_id else True,
- DataStdCode.parent_id == query_object.parent_id if query_object.parent_id else True,
- DataStdCode.class_id == query_object.class_id if query_object.class_id else True
+ DataStdCode.cd_val_cn_mean == query_object.cd_val_cn_mean if query_object.cd_val_cn_mean else True,
+ DataStdCode.onum == query_object.onum if query_object.onum else True,
+ DataStdCode.cd_val_stat == query_object.cd_val_stat if query_object.cd_val_stat else True,
+ DataStdCode.src_sys == query_object.src_sys if query_object.src_sys else True,
+ DataStdCode.cd_type == query_object.cd_type if query_object.cd_type else True,
+ DataStdCode.code_map_id == query_object.code_map_id if query_object.code_map_id else True,
+ DataStdCode.parent_id == query_object.parent_id if query_object.parent_id else True,
+ DataStdCode.class_id == query_object.class_id if query_object.class_id else True
)
)
).scalars().all()
return List
+
@classmethod
async def get_data_code_by_info(cls, db: AsyncSession, query_object: DataStdCodeModel):
List = (
await db.execute(
select(DataStdCode)
.where(
- DataStdCode.cd_val_cn_mean == query_object.cd_val_cn_mean if query_object.cd_val_cn_mean else True,
- DataStdCode.cd_no == query_object.cd_no if query_object.cd_no else True,
- DataStdCode.cd_val_stat == query_object.cd_val_stat if query_object.cd_val_stat else True,
- DataStdCode.src_sys == query_object.src_sys if query_object.src_sys else True,
- DataStdCode.cd_type == query_object.cd_type if query_object.cd_type else True,
- DataStdCode.parent_id == query_object.parent_id if query_object.parent_id else True,
- DataStdCode.class_id == query_object.class_id if query_object.class_id else True
+ DataStdCode.cd_val_cn_mean == query_object.cd_val_cn_mean if query_object.cd_val_cn_mean else True,
+ DataStdCode.cd_no == query_object.cd_no if query_object.cd_no else True,
+ DataStdCode.cd_val_stat == query_object.cd_val_stat if query_object.cd_val_stat else True,
+ DataStdCode.src_sys == query_object.src_sys if query_object.src_sys else True,
+ DataStdCode.cd_type == query_object.cd_type if query_object.cd_type else True,
+ DataStdCode.parent_id == query_object.parent_id if query_object.parent_id else True,
+ DataStdCode.class_id == query_object.class_id if query_object.class_id else True
)
)
).scalars().first()
return List
+
@classmethod
async def get_std_code_by_id(cls, db: AsyncSession, Id: str):
col = (
@@ -282,6 +293,7 @@ class DataStdDao:
)
).scalars().first()
return col
+
@classmethod
async def get_std_code_appr_by_id(cls, db: AsyncSession, Id: str):
col = (
@@ -293,18 +305,18 @@ class DataStdDao:
return col
@classmethod
- async def add_std_code(cls, db: AsyncSession,model:DataStdCodeModel):
+ async def add_std_code(cls, db: AsyncSession, model: DataStdCodeModel):
col = DataStdCode(
- **model.model_dump()
+ **model.model_dump()
)
db.add(col)
await db.flush()
return col
@classmethod
- async def add_std_code_appr(cls, db: AsyncSession,model:DataStdCodeApprModel):
+ async def add_std_code_appr(cls, db: AsyncSession, model: DataStdCodeApprModel):
col = DataStdCodeAppr(
- **model.model_dump()
+ **model.model_dump()
)
db.add(col)
await db.flush()
@@ -313,15 +325,16 @@ class DataStdDao:
@classmethod
async def delete_std_code(cls, db: AsyncSession, Id: str):
await db.execute(delete(DataStdCode).where(DataStdCode.onum == Id))
+
@classmethod
async def update_std_code_appr(cls, db: AsyncSession, update_data: DataStdCodeApprModel):
-
+
await db.execute(update(DataStdCodeAppr), [update_data])
await db.flush()
-
+
@classmethod
async def update_std_code(cls, db: AsyncSession, update_data: DataStdCodeModel):
-
+
await db.execute(update(DataStdCode), [update_data])
await db.flush()
@@ -341,6 +354,7 @@ class DataStdDao:
return existing_code_item is not None
return True
+
# ----------------------------------------------------------------数据字典----------------------------------------------------------------------------------------------------
@classmethod
async def get_std_dict_list(cls, db: AsyncSession, query_object: DataStdDictModel, is_page: bool = False):
@@ -355,11 +369,11 @@ class DataStdDao:
filters = []
if query_object.data_dict_cn_name:
filters.append(or_(
- DataStdDict.data_dict_cn_name.like(f"%{query_object.data_dict_cn_name}%"),
- DataStdDict.data_dict_eng_name.like(f"%{query_object.data_dict_cn_name}%")
+ DataStdDict.data_dict_cn_name.like(f"%{query_object.data_dict_cn_name}%"),
+ DataStdDict.data_dict_eng_name.like(f"%{query_object.data_dict_cn_name}%")
))
if query_object.data_dict_no:
- filters.append(DataStdDict.data_dict_no.like(f"%{query_object.data_dict_no}%"))
+ filters.append(DataStdDict.data_dict_no.like(f"%{query_object.data_dict_no}%"))
if query_object.data_dict_eng_name:
filters.append(DataStdDict.data_dict_eng_name.like(f"%{query_object.data_dict_eng_name}%"))
if query_object.data_dict_vest:
@@ -374,30 +388,30 @@ class DataStdDao:
# 构建查询语句
query = (
select(DataStdDict.onum,
- DataStdDict.create_by,
- DataStdDict.create_time,
- DataStdDict.upd_prsn,
- DataStdDict.upd_time,
- DataStdDict.data_dict_no,
- DataStdDict.data_dict_eng_name,
- DataStdDict.data_dict_cn_name,
- DataStdDict.data_dict_vest,
- DataStdDict.data_dict_type,
- DataStdDict.data_dict_data_type,
- DataStdDict.src_sys,
- DataStdDict.src_sys,
- DataStdDict.data_dict_busi_mean,
- DataStdDict.data_dict_data_type,
- DataStdDict.data_std_no,
- DataStdDict.data_dict_stat,
- DataStdMain.data_std_cn_name.label("data_std_cn_name") ,
- DataStdMain.data_std_it_ownership_dept.label("data_std_it_ownership_dept") ,
- DataStdMain.data_std_busi_ownership_dept.label("data_std_busi_ownership_dept") ,
- DataStdMain.data_std_it_ownership_prsn.label("data_std_it_ownership_prsn") ,
- DataStdMain.data_std_busi_ownership_prsn.label("data_std_busi_ownership_prsn")
-
- )
- .outerjoin(DataStdMain, DataStdDict.data_std_no == DataStdMain.data_std_no) # 正确方向的左连接
+ DataStdDict.create_by,
+ DataStdDict.create_time,
+ DataStdDict.upd_prsn,
+ DataStdDict.upd_time,
+ DataStdDict.data_dict_no,
+ DataStdDict.data_dict_eng_name,
+ DataStdDict.data_dict_cn_name,
+ DataStdDict.data_dict_vest,
+ DataStdDict.data_dict_type,
+ DataStdDict.data_dict_data_type,
+ DataStdDict.src_sys,
+ DataStdDict.src_sys,
+ DataStdDict.data_dict_busi_mean,
+ DataStdDict.data_dict_data_type,
+ DataStdDict.data_std_no,
+ DataStdDict.data_dict_stat,
+ DataStdMain.data_std_cn_name.label("data_std_cn_name"),
+ DataStdMain.data_std_it_ownership_dept.label("data_std_it_ownership_dept"),
+ DataStdMain.data_std_busi_ownership_dept.label("data_std_busi_ownership_dept"),
+ DataStdMain.data_std_it_ownership_prsn.label("data_std_it_ownership_prsn"),
+ DataStdMain.data_std_busi_ownership_prsn.label("data_std_busi_ownership_prsn")
+
+ )
+ .outerjoin(DataStdMain, DataStdDict.data_std_no == DataStdMain.data_std_no) # 正确方向的左连接
.where(*filters)
.order_by(desc(DataStdDict.create_time)) # 按创建时间降序排序
@@ -407,7 +421,7 @@ class DataStdDao:
db, query, query_object.page_num, query_object.page_size, is_page
)
- return col_list
+ return col_list
@classmethod
async def get_std_dict_list_no_page(cls, db: AsyncSession, query: StdDictNoPageParam):
@@ -438,11 +452,10 @@ class DataStdDao:
list = (await db.execute(query)).fetchall()
return list
-
@classmethod
- async def add_std_dict(cls, db: AsyncSession,model:DataStdDictModel):
+ async def add_std_dict(cls, db: AsyncSession, model: DataStdDictModel):
col = DataStdDict(
- **model.model_dump()
+ **model.model_dump()
)
db.add(col)
await db.flush()
@@ -451,29 +464,32 @@ class DataStdDao:
@classmethod
async def delete_std_dict(cls, db: AsyncSession, Id: str):
await db.execute(delete(DataStdDict).where(DataStdDict.onum == Id))
+
@classmethod
async def get_std_dict_list_all(cls, db: AsyncSession, query_object: DataStdDict):
- filters = []
- if query_object.data_std_no:
- filters.append(DataStdDict.data_std_no.like(f"%{query_object.data_std_no}%"))
- query = select(DataStdDict).where(*filters).order_by(desc(DataStdDict.create_time))
- return await PageUtil.paginate(db, query, 0, 0, False)
+ filters = []
+ if query_object.data_std_no:
+ filters.append(DataStdDict.data_std_no.like(f"%{query_object.data_std_no}%"))
+ query = select(DataStdDict).where(*filters).order_by(desc(DataStdDict.create_time))
+ return await PageUtil.paginate(db, query, 0, 0, False)
+
@classmethod
async def get_data_dict_list_by_info(cls, db: AsyncSession, query_object: DataStdDictModel):
List = (
await db.execute(
select(DataStdDict)
.where(
- DataStdDict.data_std_no == query_object.data_std_no if query_object.data_std_no else True
+ DataStdDict.data_std_no == query_object.data_std_no if query_object.data_std_no else True
)
)
).scalars().all()
return List
+
@classmethod
async def update_std_dict(cls, db: AsyncSession, update_data: DataStdDictModel):
-
+
await db.execute(update(DataStdDict), [update_data])
- await db.flush()
+ await db.flush()
@classmethod
async def get_std_dict_by_id(cls, db: AsyncSession, Id: str):
@@ -483,25 +499,45 @@ class DataStdDao:
.where(DataStdDict.onum == Id)
)
).scalars().first()
- return col
+ return col
+
@classmethod
async def get_data_dict_by_info(cls, db: AsyncSession, query_object: DataStdDictModel):
List = (
await db.execute(
select(DataStdDict)
.where(
- DataStdDict.data_dict_cn_name == query_object.data_dict_cn_name if query_object.data_dict_cn_name else True,
- DataStdDict.data_dict_no == query_object.data_dict_no if query_object.data_dict_no else True,
- DataStdDict.data_dict_stat == query_object.data_dict_stat if query_object.data_dict_stat else True,
- DataStdDict.data_std_no == query_object.data_std_no if query_object.data_std_no else True,
- DataStdDict.src_sys == query_object.src_sys if query_object.src_sys else True,
- DataStdDict.data_dict_data_type == query_object.data_dict_data_type if query_object.data_dict_data_type else True,
+ DataStdDict.data_dict_cn_name == query_object.data_dict_cn_name if query_object.data_dict_cn_name else True,
+ DataStdDict.data_dict_no == query_object.data_dict_no if query_object.data_dict_no else True,
+ DataStdDict.data_dict_stat == query_object.data_dict_stat if query_object.data_dict_stat else True,
+ DataStdDict.data_std_no == query_object.data_std_no if query_object.data_std_no else True,
+ DataStdDict.src_sys == query_object.src_sys if query_object.src_sys else True,
+ DataStdDict.data_dict_data_type == query_object.data_dict_data_type if query_object.data_dict_data_type else True,
)
)
).scalars().first()
return List
+
@classmethod
async def get_data_dict_by_id(cls, db: AsyncSession, id: str):
+ List = (
+ await db.execute(
+ select(DataStdMain.data_sec_lvl).select_from(DataStdMain)
+ .join(
+ DataStdDict,
+ and_(
+ DataStdDict.data_std_no == DataStdMain.data_std_no,
+ ), isouter=True
+ )
+ .where(
+ DataStdDict.onum == id
+ )
+ )
+ ).scalars().first()
+ return List
+
+ @classmethod
+ async def get_data_sec_lvl_by_dict_id(cls, db: AsyncSession, id: str):
List = (
await db.execute(
select(DataStdDict)
@@ -511,8 +547,9 @@ class DataStdDao:
)
).scalars().first()
return List
+
# 数据标准目录
-
+
@classmethod
async def get_catalog_by_id(cls, db: AsyncSession, content_onum: int):
"""
@@ -523,7 +560,8 @@ class DataStdDao:
:return: 目录信息对象
"""
catalog_info = (
- (await db.execute(select(DataAstContent).where(DataAstContent.content_onum == content_onum , DataAstContent.content_stat == 1)))
+ (await db.execute(select(DataAstContent).where(DataAstContent.content_onum == content_onum,
+ DataAstContent.content_stat == 1)))
.scalars()
.first()
)
@@ -579,7 +617,7 @@ class DataStdDao:
)
)
).alias('temp')
-
+
stmt = (
update(DataAstContent)
.where(DataAstContent.content_onum.in_(subquery))
@@ -600,7 +638,6 @@ class DataStdDao:
db.add(db_catalog)
await db.flush()
-
# 处理子关系(统一转换为 ORM 模型)
for child in catalog2.get('children', []):
# 如果是 Pydantic 模型实例,先转换为字典
@@ -615,11 +652,12 @@ class DataStdDao:
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):
"""
@@ -637,8 +675,9 @@ class DataStdDao:
leaf_node_flag=catalog['leaf_node_flag']
)
)
-
+
await db.execute(stmt)
+
@classmethod
async def edit_catalog_child_dao(cls, db: AsyncSession, catalog: dict):
"""
@@ -662,7 +701,7 @@ class DataStdDao:
leaf_node_flag=catalog['leaf_node_flag'],
upd_prsn=catalog['upd_prsn'],
upd_time=datetime.now()
- ) )
+ ))
await db.execute(stmt)
@@ -680,7 +719,7 @@ class DataStdDao:
rela_eff_begn_date=child.get('rela_eff_begn_date'),
rela_eff_end_date=child.get('rela_eff_end_date'),
upd_prsn=child.get('upd_prsn'))
- )
+ )
await db.execute(st)
await cls.update_leaf_node_flag(db)
@@ -690,7 +729,7 @@ class DataStdDao:
db.add(db_child)
await db.flush()
await cls.update_leaf_node_flag(db)
-
+
@classmethod
async def delete_catalog_dao(cls, db: AsyncSession, catalog: DeleteDataCatalogModel):
"""
@@ -708,7 +747,7 @@ class DataStdDao:
.values(
rela_status=0,
rela_eff_end_date=datetime.now()
- )
+ )
)
await db.execute(
update(DataAstContent)
@@ -716,10 +755,9 @@ class DataStdDao:
.values(
content_stat=0,
upd_time=datetime.now()
- )
+ )
)
-
await cls.update_leaf_node_flag(db)
@classmethod
@@ -735,15 +773,16 @@ class DataStdDao:
stmt = (
update(DataAstContent)
- .where(DataAstContent.content_onum == moved_catalog_data['content_onum'] , DataAstContent.supr_content_onum == moved_catalog_data['supr_content_onum'])
+ .where(DataAstContent.content_onum == moved_catalog_data['content_onum'],
+ DataAstContent.supr_content_onum == moved_catalog_data['supr_content_onum'])
.values(
supr_content_onum=moved_catalog_data['supr_content_onum_after'],
upd_time=datetime.now()
- ) )
+ ))
await db.execute(stmt)
await cls.update_leaf_node_flag(db)
-
+
@classmethod
async def merge_catalog_instr_dao(cls, db: AsyncSession, merge_catalog_data: dict):
"""
@@ -766,7 +805,8 @@ class DataStdDao:
# await db.execute(stmt)
stmt1 = (
update(DataAstContentRela)
- .where( DataAstContentRela.content_onum == merge_catalog_data['content_onum'] and DataAstContentRela.rela_status == 1 )
+ .where(DataAstContentRela.content_onum == merge_catalog_data[
+ 'content_onum'] and DataAstContentRela.rela_status == 1)
.values(
content_onum=merge_catalog_data['content_onum_after'],
rela_eff_begn_date=datetime.now()
@@ -776,12 +816,14 @@ class DataStdDao:
stmt2 = (
update(DataAstContent)
- .where(DataAstContent.content_onum == merge_catalog_data['content_onum'] , DataAstContent.supr_content_onum == merge_catalog_data['supr_content_onum'])
- .values( content_stat = '0' )
+ .where(DataAstContent.content_onum == merge_catalog_data['content_onum'],
+ DataAstContent.supr_content_onum == merge_catalog_data['supr_content_onum'])
+ .values(content_stat='0')
)
await db.execute(stmt2)
await cls.update_leaf_node_flag(db)
+
@classmethod
async def removerel_data_ast_catalog_dao(cls, db: AsyncSession, removerel_catalog_data: dict):
"""
@@ -794,14 +836,14 @@ class DataStdDao:
stmt = (
update(DataAstContentRela)
- .where(DataAstContentRela.rela_onum == removerel_catalog_data['rela_onum'] , DataAstContentRela.content_onum == removerel_catalog_data['content_onum'])
+ .where(DataAstContentRela.rela_onum == removerel_catalog_data['rela_onum'],
+ DataAstContentRela.content_onum == removerel_catalog_data['content_onum'])
.values(
rela_status=removerel_catalog_data['rela_status']
- ) )
+ ))
await db.execute(stmt)
await cls.update_leaf_node_flag(db)
-
@classmethod
async def moverel_data_ast_catalog_dao(cls, db: AsyncSession, moverel_catalog_data: dict):
@@ -815,16 +857,19 @@ class DataStdDao:
stmt = (
update(DataAstContentRela)
- .where(DataAstContentRela.rela_onum == moverel_catalog_data['rela_onum'] , DataAstContentRela.content_onum == moverel_catalog_data['content_onum'])
+ .where(DataAstContentRela.rela_onum == moverel_catalog_data['rela_onum'],
+ DataAstContentRela.content_onum == moverel_catalog_data['content_onum'])
.values(
content_onum=moverel_catalog_data['content_onum_after'],
rela_eff_end_date=datetime.now()
- ) )
+ ))
await db.execute(stmt)
- await cls.update_leaf_node_flag(db)
+ await cls.update_leaf_node_flag(db)
+
@classmethod
- async def get_catalog_list(cls, db: AsyncSession, query_object: DataCatalogPageQueryModel, user_id: int, is_page: bool = False):
+ async def get_catalog_list(cls, db: AsyncSession, query_object: DataCatalogPageQueryModel, user_id: int,
+ is_page: bool = False):
"""
根据查询参数获取数据资产目录列表
@@ -834,11 +879,11 @@ class DataStdDao:
:return: 数据资产目录分页列表
"""
-
# 修改子查询部分
subquery_t1 = (
select(DataAstContentRela)
- .where(DataAstContentRela.upd_prsn == query_object.upd_prsn, DataAstContentRela.content_onum == '2' and DataAstContentRela.rela_status == '1')
+ .where(DataAstContentRela.upd_prsn == query_object.upd_prsn,
+ DataAstContentRela.content_onum == '2' and DataAstContentRela.rela_status == '1')
.union_all(
select(DataAstContentRela)
.where(DataAstContentRela.content_onum != '2' and DataAstContentRela.rela_status == '1')
@@ -856,13 +901,13 @@ class DataStdDao:
DataAstContent.leaf_node_flag,
DataAstContent.upd_prsn,
DataAstContent.upd_time,
-
+
subquery_t1.c.rela_onum, # 明确指定子查询的字段
subquery_t1.c.ast_onum,
subquery_t1.c.rela_type,
subquery_t1.c.rela_eff_begn_date,
subquery_t1.c.rela_eff_end_date,
- subquery_t1.c.upd_prsn,
+ subquery_t1.c.upd_prsn,
)
.distinct()
.select_from(DataAstContent)
@@ -873,15 +918,16 @@ class DataStdDao:
# 使用分页工具进行查询
data_ast_list = await PageUtil.paginate(
- db,
- query,
+ db,
+ query,
page_num=query_object.page_num,
page_size=query_object.page_size,
is_page=is_page
)
return data_ast_list
-#------------------------------------------------------------数据标准(658行)-------------------------------------------------------------------------------------------------
+
+ # ------------------------------------------------------------数据标准(658行)-------------------------------------------------------------------------------------------------
@classmethod
async def get_std_main_list(cls, db: AsyncSession, query_object: DataStdMainModel, is_page: bool = False):
filters = []
@@ -889,11 +935,11 @@ class DataStdDao:
filters.append(DataStdMain.data_std_cn_name.like(f"%{query_object.data_std_cn_name}%"))
if query_object.data_std_eng_name:
filters.append(
- or_(
- DataStdMain.data_std_cn_name.like(f"%{query_object.data_std_eng_name}%"),
- DataStdMain.data_std_eng_name.like(f"%{query_object.data_std_eng_name}%")
- )
- )
+ or_(
+ DataStdMain.data_std_cn_name.like(f"%{query_object.data_std_eng_name}%"),
+ DataStdMain.data_std_eng_name.like(f"%{query_object.data_std_eng_name}%")
+ )
+ )
if query_object.data_std_busi_defn:
filters.append(DataStdMain.data_std_busi_defn.like(f"%{query_object.data_std_busi_defn}%"))
if query_object.data_std_no:
@@ -906,114 +952,120 @@ class DataStdDao:
filters.append(DataStdMain.std_status == query_object.std_status)
if query_object.belt_data_std_content:
filters.append(DataStdMain.belt_data_std_content == query_object.belt_data_std_content)
-
+
query = (
- select(
- DataStdMain.onum,
- DataStdMain.create_by,
- DataStdMain.create_time,
- DataStdMain.upd_prsn,
- DataStdMain.upd_time,
- DataStdMain.data_std_no,
- DataStdMain.data_std_eng_name,
- DataStdMain.data_std_cn_name,
- DataStdMain.data_std_type,
- DataStdMain.data_sec_lvl,
- DataStdMain.src_sys,
- DataStdMain.data_std_vest,
- DataStdMain.data_std_busi_defn,
- DataStdMain.cd_id,
- DataStdMain.std_status,
- DataStdMain.data_std_busi_ownership_dept,
- DataStdMain.data_std_it_ownership_dept,
- DataStdMain.data_std_busi_ownership_prsn,
- DataStdMain.data_std_it_ownership_prsn,
- DataStdMain.belt_data_std_content,
- DataStdMain.data_std_src,
- DataStdMain.data_clas,
- DataStdMain.typical_fld,
- DataStdCode.cd_no.label("cd_no") # 关联查询的cd_no
- )
- .outerjoin( # 使用left outer join确保即使没有关联code也能返回主表数据
- DataStdCode,
- DataStdMain.cd_id == DataStdCode.onum
- )
- .where(*filters)
- .order_by(desc(DataStdMain.create_time))
- )
+ select(
+ DataStdMain.onum,
+ DataStdMain.create_by,
+ DataStdMain.create_time,
+ DataStdMain.upd_prsn,
+ DataStdMain.upd_time,
+ DataStdMain.data_std_no,
+ DataStdMain.data_std_eng_name,
+ DataStdMain.data_std_cn_name,
+ DataStdMain.data_std_type,
+ DataStdMain.data_sec_lvl,
+ DataStdMain.src_sys,
+ DataStdMain.data_std_vest,
+ DataStdMain.data_std_busi_defn,
+ DataStdMain.cd_id,
+ DataStdMain.std_status,
+ DataStdMain.data_std_busi_ownership_dept,
+ DataStdMain.data_std_it_ownership_dept,
+ DataStdMain.data_std_busi_ownership_prsn,
+ DataStdMain.data_std_it_ownership_prsn,
+ DataStdMain.belt_data_std_content,
+ DataStdMain.data_std_src,
+ DataStdMain.data_clas,
+ DataStdMain.typical_fld,
+ DataStdCode.cd_no.label("cd_no") # 关联查询的cd_no
+ )
+ .outerjoin( # 使用left outer join确保即使没有关联code也能返回主表数据
+ DataStdCode,
+ DataStdMain.cd_id == DataStdCode.onum
+ )
+ .where(*filters)
+ .order_by(desc(DataStdMain.create_time))
+ )
return await PageUtil.paginate(db, query, query_object.page_num, query_object.page_size, is_page)
+
@classmethod
async def get_std_main_list_all(cls, db: AsyncSession, query_object: DataStdMainModel):
- filters = []
-
- if query_object.data_std_cn_name:
- filters.append(DataStdMain.data_std_cn_name.like(f"%{query_object.data_std_cn_name}%"))
- if query_object.data_std_no:
- filters.append(DataStdMain.data_std_no.like(f"%{query_object.data_std_no}%"))
- if query_object.src_sys:
- filters.append(DataStdMain.src_sys == query_object.src_sys)
- if query_object.cd_id:
- filters.append(DataStdMain.cd_id == query_object.cd_id)
- if query_object.data_std_type:
- filters.append(DataStdMain.data_std_type == query_object.data_std_type)
- if query_object.std_status:
- filters.append(DataStdMain.std_status == query_object.std_status)
- query = (
- select(
- DataStdMain.onum,
- DataStdMain.create_by,
- DataStdMain.create_time,
- DataStdMain.upd_prsn,
- DataStdMain.upd_time,
- DataStdMain.data_std_no,
- DataStdMain.data_std_eng_name,
- DataStdMain.data_std_cn_name,
- DataStdMain.data_std_type,
- DataStdMain.data_sec_lvl,
- DataStdMain.src_sys,
- DataStdMain.data_std_vest,
- DataStdMain.data_std_busi_defn,
- DataStdMain.cd_id,
- DataStdMain.std_status,
- DataStdMain.data_std_busi_ownership_dept,
- DataStdMain.data_std_it_ownership_dept,
- DataStdMain.data_std_busi_ownership_prsn,
- DataStdMain.data_std_it_ownership_prsn,
- DataStdMain.belt_data_std_content,
- DataStdMain.data_std_src,
- DataStdMain.data_clas,
- DataStdMain.typical_fld,
- DataStdCode.cd_no.label("cd_no") # 关联查询的cd_no
- )
- .outerjoin( # 使用left outer join确保即使没有关联code也能返回主表数据
- DataStdCode,
- DataStdMain.cd_id == DataStdCode.onum
+ filters = []
+
+ if query_object.data_std_cn_name:
+ filters.append(DataStdMain.data_std_cn_name.like(f"%{query_object.data_std_cn_name}%"))
+ if query_object.data_std_no:
+ filters.append(DataStdMain.data_std_no.like(f"%{query_object.data_std_no}%"))
+ if query_object.src_sys:
+ filters.append(DataStdMain.src_sys == query_object.src_sys)
+ if query_object.cd_id:
+ filters.append(DataStdMain.cd_id == query_object.cd_id)
+ if query_object.data_std_type:
+ filters.append(DataStdMain.data_std_type == query_object.data_std_type)
+ if query_object.std_status:
+ filters.append(DataStdMain.std_status == query_object.std_status)
+ query = (
+ select(
+ DataStdMain.onum,
+ DataStdMain.create_by,
+ DataStdMain.create_time,
+ DataStdMain.upd_prsn,
+ DataStdMain.upd_time,
+ DataStdMain.data_std_no,
+ DataStdMain.data_std_eng_name,
+ DataStdMain.data_std_cn_name,
+ DataStdMain.data_std_type,
+ DataStdMain.data_sec_lvl,
+ DataStdMain.src_sys,
+ DataStdMain.data_std_vest,
+ DataStdMain.data_std_busi_defn,
+ DataStdMain.cd_id,
+ DataStdMain.std_status,
+ DataStdMain.data_std_busi_ownership_dept,
+ DataStdMain.data_std_it_ownership_dept,
+ DataStdMain.data_std_busi_ownership_prsn,
+ DataStdMain.data_std_it_ownership_prsn,
+ DataStdMain.belt_data_std_content,
+ DataStdMain.data_std_src,
+ DataStdMain.data_clas,
+ DataStdMain.typical_fld,
+ DataStdCode.cd_no.label("cd_no") # 关联查询的cd_no
+ )
+ .outerjoin( # 使用left outer join确保即使没有关联code也能返回主表数据
+ DataStdCode,
+ DataStdMain.cd_id == DataStdCode.onum
+ )
+ .where(*filters)
+ .order_by(desc(DataStdMain.create_time))
)
- .where(*filters)
- .order_by(desc(DataStdMain.create_time))
- )
- return await PageUtil.paginate(db, query, 0, 0, False)
+ return await PageUtil.paginate(db, query, 0, 0, False)
+
@classmethod
async def add_std_main(cls, db: AsyncSession, model: DataStdMainModel):
col = DataStdMain(**model.model_dump())
db.add(col)
await db.flush()
return col
+
@classmethod
async def add_std_main_appr(cls, db: AsyncSession, model: DataStdMainApprModel):
col = DataStdMainAppr(**model.model_dump())
db.add(col)
await db.flush()
return col
+
@classmethod
async def add_std_dict_appr(cls, db: AsyncSession, model: DataStdDictApprModel):
col = DataStdDictAppr(**model.model_dump())
db.add(col)
await db.flush()
return col
+
@classmethod
async def delete_std_main(cls, db: AsyncSession, Id: str):
await db.execute(delete(DataStdMain).where(DataStdMain.onum == Id))
+
@classmethod
async def delete_std_dict_appr(cls, db: AsyncSession, Id: str):
await db.execute(delete(DataStdDictAppr).where(DataStdDictAppr.onum == Id))
@@ -1023,17 +1075,18 @@ class DataStdDao:
update_dict = update_data.model_dump(exclude_unset=True)
await db.execute(update(DataStdMain), [update_dict])
await db.flush()
+
@classmethod
async def update_std_dict_appr(cls, db: AsyncSession, update_data: DataStdDictApprModel):
update_dict = update_data.model_dump(exclude_unset=True)
await db.execute(update(DataStdDictAppr), [update_dict])
await db.flush()
-
+
@classmethod
async def get_std_main_by_id(cls, db: AsyncSession, Id: str):
col = await db.execute(select(DataStdMain).where(DataStdMain.onum == Id))
return col.scalars().first()
-
+
@classmethod
async def get_data_main_by_info(cls, db: AsyncSession, query_object: DataStdMainModel):
col = await db.execute(
@@ -1048,50 +1101,54 @@ class DataStdDao:
)
)
return col.scalars().first()
+
@classmethod
async def get_std_main_appr_list_all(cls, db: AsyncSession, query_object: DataStdMainApprModel):
- filters = []
-
- if query_object.data_std_cn_name:
- filters.append(DataStdMainAppr.data_std_cn_name.like(f"%{query_object.data_std_cn_name}%"))
- if query_object.data_std_no:
- filters.append(DataStdMainAppr.data_std_no.like(f"%{query_object.data_std_no}%"))
- if query_object.src_sys:
- filters.append(DataStdMainAppr.src_sys == query_object.src_sys)
- if query_object.cd_id:
- filters.append(DataStdMainAppr.cd_id == query_object.cd_id)
- if query_object.flowId:
- filters.append(DataStdMainAppr.flowId == query_object.flowId)
- if query_object.data_std_type:
- filters.append(DataStdMainAppr.data_std_type == query_object.data_std_type)
- if query_object.std_status:
- filters.append(DataStdMainAppr.std_status == query_object.std_status)
- query = select(DataStdMainAppr).where(*filters).order_by(desc(DataStdMainAppr.create_time))
- return await PageUtil.paginate(db, query, 0, 0, False)
-
+ filters = []
+
+ if query_object.data_std_cn_name:
+ filters.append(DataStdMainAppr.data_std_cn_name.like(f"%{query_object.data_std_cn_name}%"))
+ if query_object.data_std_no:
+ filters.append(DataStdMainAppr.data_std_no.like(f"%{query_object.data_std_no}%"))
+ if query_object.src_sys:
+ filters.append(DataStdMainAppr.src_sys == query_object.src_sys)
+ if query_object.cd_id:
+ filters.append(DataStdMainAppr.cd_id == query_object.cd_id)
+ if query_object.flowId:
+ filters.append(DataStdMainAppr.flowId == query_object.flowId)
+ if query_object.data_std_type:
+ filters.append(DataStdMainAppr.data_std_type == query_object.data_std_type)
+ if query_object.std_status:
+ filters.append(DataStdMainAppr.std_status == query_object.std_status)
+ query = select(DataStdMainAppr).where(*filters).order_by(desc(DataStdMainAppr.create_time))
+ return await PageUtil.paginate(db, query, 0, 0, False)
+
@classmethod
- async def get_std_main_appr_list(cls, flowId:str,db: AsyncSession):
- filters = []
- filters.append(DataStdMainAppr.flowId == flowId)
- query = select(DataStdMainAppr).where(*filters).order_by(desc(DataStdMainAppr.create_time))
- return await PageUtil.paginate(db, query, 0, 0, False)
+ async def get_std_main_appr_list(cls, flowId: str, db: AsyncSession):
+ filters = []
+ filters.append(DataStdMainAppr.flowId == flowId)
+ query = select(DataStdMainAppr).where(*filters).order_by(desc(DataStdMainAppr.create_time))
+ return await PageUtil.paginate(db, query, 0, 0, False)
+
@classmethod
- async def get_std_dict_appr_list(cls, flowId:str,db: AsyncSession):
- filters = []
- filters.append(DataStdDictAppr.flowId == flowId)
- query = select(DataStdDictAppr).where(*filters).order_by(desc(DataStdDictAppr.create_time))
- return await PageUtil.paginate(db, query, 0, 0, False)
-
+ async def get_std_dict_appr_list(cls, flowId: str, db: AsyncSession):
+ filters = []
+ filters.append(DataStdDictAppr.flowId == flowId)
+ query = select(DataStdDictAppr).where(*filters).order_by(desc(DataStdDictAppr.create_time))
+ return await PageUtil.paginate(db, query, 0, 0, False)
+
@classmethod
async def get_std_main_appr_by_id(cls, db: AsyncSession, Id: str):
col = await db.execute(select(DataStdMainAppr).where(DataStdMainAppr.onum == Id))
- return col.scalars().first()
+ return col.scalars().first()
+
@classmethod
async def get_std_dict_appr_by_id(cls, db: AsyncSession, Id: str):
col = await db.execute(select(DataStdDictAppr).where(DataStdDictAppr.onum == Id))
- return col.scalars().first()
+ return col.scalars().first()
+
@classmethod
- async def get_last_std_main_appr_by_id(cls,db: AsyncSession, Id: str ):
+ async def get_last_std_main_appr_by_id(cls, db: AsyncSession, Id: str):
result = await db.execute(
select(DataStdMainAppr)
.where(
@@ -1102,8 +1159,9 @@ class DataStdDao:
.limit(1)
)
return result.scalar_one_or_none()
+
@classmethod
- async def get_last_std_dict_appr_by_id(cls,db: AsyncSession, Id: str ):
+ async def get_last_std_dict_appr_by_id(cls, db: AsyncSession, Id: str):
result = await db.execute(
select(DataStdDictAppr)
.where(
@@ -1114,7 +1172,7 @@ class DataStdDao:
.limit(1)
)
return result.scalar_one_or_none()
-
+
@classmethod
async def update_std_main_appr(cls, db: AsyncSession, update_data: DataStdMainApprModel):
update_dict = update_data.model_dump(exclude_unset=True)
@@ -1134,13 +1192,13 @@ class DataStdDao:
)
result = await db.execute(query)
first_record = result.scalars().first()
-
+
if not first_record:
return None # 或 raise 自定义异常,例如“未找到审批记录”
-
+
# 2. 获取 instid,去 FlowApproval 中查询是否存在 pending 或 waiting 状态
instid = first_record.flowId
-
+
approval_query = (
select(FlowApproval)
.where(
@@ -1150,9 +1208,10 @@ class DataStdDao:
)
approval_result = await db.execute(approval_query)
approval = approval_result.scalars().first()
-
+
# 返回 FlowApproval 对象或布尔值
return approval # 或 return approval is not None
+
@classmethod
async def check_std_dict_waiting(cls, oldInstId: str, db: AsyncSession):
"""
@@ -1166,13 +1225,13 @@ class DataStdDao:
)
result = await db.execute(query)
first_record = result.scalars().first()
-
+
if not first_record:
return None # 或 raise 自定义异常,例如“未找到审批记录”
-
+
# 2. 获取 instid,去 FlowApproval 中查询是否存在 pending 或 waiting 状态
instid = first_record.flowId
-
+
approval_query = (
select(FlowApproval)
.where(
@@ -1182,8 +1241,6 @@ class DataStdDao:
)
approval_result = await db.execute(approval_query)
approval = approval_result.scalars().first()
-
+
# 返回 FlowApproval 对象或布尔值
return approval # 或 return approval is not None
-
-
\ No newline at end of file
diff --git a/vue-fastapi-backend/module_admin/dao/meta_dao.py b/vue-fastapi-backend/module_admin/dao/meta_dao.py
index aad3405..e186802 100644
--- a/vue-fastapi-backend/module_admin/dao/meta_dao.py
+++ b/vue-fastapi-backend/module_admin/dao/meta_dao.py
@@ -178,6 +178,7 @@ class MetaDao:
MetadataFldSuppInfo.fld_clas,
MetadataFldSuppInfo.fld_null_rate,
MetadataFldSuppInfo.data_dict_id,
+ MetadataFldSuppInfo.data_sec_lvl,
DataStdDict.data_dict_cn_name.label('data_dict_name'),
MetadataFldSuppInfo.rec_stat.label('supp_rec_stat'),
MetadataFldSuppInfo.upd_time.label('supp_upd_time')
@@ -329,6 +330,7 @@ class MetaDao:
"fld_clas": vett_info.fld_clas,
"fld_null_rate": vett_info.fld_null_rate,
"data_dict_id": vett_info.data_dict_id,
+ "data_sec_lvl": vett_info.data_sec_lvl,
"rec_stat": vett_info.rec_stat,
"upd_time": vett_info.upd_time,
"rec_subm_prsn": vett_info.rec_subm_prsn,
@@ -389,6 +391,7 @@ class MetaDao:
fld_clas=column.fld_clas,
fld_null_rate=column.fld_null_rate,
data_dict_id=column.data_dict_id,
+ data_sec_lvl=column.data_sec_lvl,
rec_stat=column.rec_stat,
upd_time=column.upd_time if column.upd_time else datetime.now(),
)
@@ -409,6 +412,7 @@ class MetaDao:
suppColumn.fld_clas = column.fld_clas
suppColumn.fld_null_rate = column.fld_null_rate
suppColumn.data_dict_id = column.data_dict_id
+ suppColumn.data_sec_lvl = column.data_sec_lvl
suppColumn.rec_stat = column.rec_stat
suppColumn.upd_time = column.upd_time
db.add(suppColumn)
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 e9068df..620a4c2 100644
--- a/vue-fastapi-backend/module_admin/dao/metadata_config_dao.py
+++ b/vue-fastapi-backend/module_admin/dao/metadata_config_dao.py
@@ -1,9 +1,10 @@
from datetime import datetime, time
-from sqlalchemy import delete, select, update,and_
+from sqlalchemy import delete, select, update, and_
from sqlalchemy.ext.asyncio import AsyncSession
-from module_admin.entity.do.meta_do import MetadataClas,MetadataExtractInfo # ORM 类
-from module_admin.entity.do.metadata_config_do import MetadataSec,SecuBizConfig,SecuBizPermiConfig,SecuBizConfigRela,DatasecConfig ,\
-TaskBizConfigRela,TaskBizConfig
+from module_admin.entity.do.meta_do import MetadataClas, MetadataExtractInfo # ORM 类
+from module_admin.entity.do.metadata_config_do import MetadataSec, SecuBizConfig, SecuBizPermiConfig, SecuBizConfigRela, \
+ DatasecConfig, \
+ TaskBizConfigRela, TaskBizConfig
# ORM 类
from typing import List
@@ -11,6 +12,7 @@ from sqlalchemy.orm import joinedload
from sqlalchemy.sql import true
from utils.page_util import PageUtil
+
class MetadataConfigDao:
"""
标签信息数据库操作层
@@ -37,6 +39,7 @@ class MetadataConfigDao:
)
)
return result.scalars().first()
+
@classmethod
async def get_clas_by_onum(cls, db: AsyncSession, clas_onum: int):
"""
@@ -55,7 +58,8 @@ class MetadataConfigDao:
query = select(MetadataClas).where(
MetadataClas.clas_pri_clas.like(f"%{query_object.clas_pri_clas}%") if query_object.clas_pri_clas else True,
MetadataClas.clas_scd_clas.like(f"%{query_object.clas_scd_clas}%") if query_object.clas_scd_clas else True,
- MetadataClas.clas_thre_clas.like(f"%{query_object.clas_thre_clas}%") if query_object.clas_thre_clas else True,
+ MetadataClas.clas_thre_clas.like(
+ f"%{query_object.clas_thre_clas}%") if query_object.clas_thre_clas else True,
MetadataClas.clas_name.like(f"%{query_object.clas_name}%") if query_object.clas_name else True,
MetadataClas.clas_eff_flag == query_object.clas_eff_flag if query_object.clas_eff_flag else True,
MetadataClas.upd_time.between(
@@ -94,6 +98,7 @@ class MetadataConfigDao:
删除标签信息(支持批量)
"""
await db.execute(delete(MetadataClas).where(MetadataClas.clas_onum.in_(clas_onum_list)))
+
@classmethod
async def get_sec_detail_by_id(cls, db: AsyncSession, onum: str):
result = await db.execute(select(MetadataSec).where(MetadataSec.onum == onum))
@@ -102,7 +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_name.like(f"%{query_object.sec_level_name}%") if query_object.sec_level_name 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,
MetadataSec.upd_time.between(
datetime.combine(datetime.strptime(query_object.begin_time, '%Y-%m-%d'), time(0, 0, 0)),
@@ -113,12 +119,19 @@ class MetadataConfigDao:
from utils.page_util import PageUtil
return await PageUtil.paginate(db, query, query_object.page_num, query_object.page_size, is_page)
+ @classmethod
+ async def get_metadata_sec_option_list(cls, db: AsyncSession):
+ query = select(MetadataSec).where(MetadataSec.sec_eff_flag == '1').order_by(MetadataSec.sec_level_summary)
+ result = (await db.execute(query)).scalars().all()
+ return result
+
@classmethod
async def add_metadata_sec_dao(cls, db: AsyncSession, sec):
db_sec = MetadataSec(**sec.model_dump())
db.add(db_sec)
await db.flush()
- return db_sec
+ return db_sec
+
@classmethod
async def get_by_sec_level_summary(cls, query_db: AsyncSession, sec_level_summary: str, exclude_onum: str = None):
stmt = select(MetadataSec).where(MetadataSec.sec_level_summary == sec_level_summary)
@@ -136,7 +149,8 @@ class MetadataConfigDao:
@classmethod
async def delete_metadata_sec_dao(cls, db: AsyncSession, onum_list: list[str]):
await db.execute(delete(MetadataSec).where(MetadataSec.onum.in_(onum_list)))
- # ------------- t_secu_biz_config 相关方法 --------------
+
+ # ------------- t_secu_biz_config 相关方法 --------------
@classmethod
async def get_biz_config_detail_by_id(cls, db: AsyncSession, onum: int):
@@ -173,6 +187,7 @@ class MetadataConfigDao:
@classmethod
async def delete_biz_config(cls, db: AsyncSession, onum_list: list[int]):
await db.execute(delete(SecuBizConfig).where(SecuBizConfig.onum.in_(onum_list)))
+
@classmethod
async def add_biz_permi_config_batch(cls, db: AsyncSession, records: List[SecuBizPermiConfig]):
orm_objs = []
@@ -190,6 +205,7 @@ class MetadataConfigDao:
)
orm_objs.append(orm_obj)
db.add_all(orm_objs)
+
# ------------- t_secu_biz_permi_config 相关方法 --------------
@classmethod
@@ -247,6 +263,7 @@ class MetadataConfigDao:
return await PageUtil.paginate(
db, query, query_object.page_num, query_object.page_size, is_page
)
+
@classmethod
async def add_biz_permi_config(cls, db: AsyncSession, obj):
db_obj = SecuBizPermiConfig(**obj.model_dump())
@@ -262,26 +279,31 @@ class MetadataConfigDao:
@classmethod
async def delete_biz_permi_config(cls, db: AsyncSession, onum_list: list[int]):
- await db.execute(delete(SecuBizPermiConfig).where(SecuBizPermiConfig.onum.in_(onum_list)))
-# ----------------------------------biz_confg_rela------------------------------
+ await db.execute(delete(SecuBizPermiConfig).where(SecuBizPermiConfig.onum.in_(onum_list)))
+
+ # ----------------------------------biz_confg_rela------------------------------
@classmethod
async def delete_biz_rela_dao(cls, db: AsyncSession, biz_onum: int):
- await db.execute(delete(SecuBizConfigRela).where(SecuBizConfigRela.biz_onum == biz_onum) )
+ await db.execute(delete(SecuBizConfigRela).where(SecuBizConfigRela.biz_onum == biz_onum))
+
@classmethod
async def delete_biz_rela_batch(cls, db: AsyncSession, bonum_list: list[int]):
- await db.execute(delete(SecuBizConfigRela).where(SecuBizConfigRela.biz_onum.in_(bonum_list)) )
+ await db.execute(delete(SecuBizConfigRela).where(SecuBizConfigRela.biz_onum.in_(bonum_list)))
+
@classmethod
async def add_batch_biz_rela_dao(cls, db: AsyncSession, rela_list: List[SecuBizConfigRela]):
db.add_all(rela_list)
- await db.flush()
+ await db.flush()
+
@classmethod
async def get_biz_rela_by_biz_id(cls, db: AsyncSession, biz_onum: int):
result = await db.execute(
select(MetadataExtractInfo)
.join(SecuBizConfigRela, MetadataExtractInfo.onum == SecuBizConfigRela.tab_onum)
.where(SecuBizConfigRela.biz_onum == biz_onum)
- )
- return result.scalars().all()
+ )
+ return result.scalars().all()
+
@classmethod
async def get_detail_by_id(cls, db: AsyncSession, onum: int):
"""
@@ -332,8 +354,9 @@ class MetadataConfigDao:
"""
批量删除任务配置
"""
- await db.execute(delete(DatasecConfig).where(DatasecConfig.onum.in_(onum_list)))
-# ----------------------------------元数据标签调度------------------------------
+ await db.execute(delete(DatasecConfig).where(DatasecConfig.onum.in_(onum_list)))
+
+ # ----------------------------------元数据标签调度------------------------------
@classmethod
async def get_task_biz_config_list(cls, db: AsyncSession, query_object, is_page: bool = False):
query = select(TaskBizConfig).where(
@@ -398,4 +421,4 @@ class MetadataConfigDao:
.join(TaskBizConfigRela, MetadataExtractInfo.onum == TaskBizConfigRela.tab_onum)
.where(TaskBizConfigRela.biz_onum == biz_onum)
)
- return result.scalars().all()
\ No newline at end of file
+ return result.scalars().all()
diff --git a/vue-fastapi-backend/module_admin/entity/do/datastd_do.py b/vue-fastapi-backend/module_admin/entity/do/datastd_do.py
index 25951ab..b0e85dc 100644
--- a/vue-fastapi-backend/module_admin/entity/do/datastd_do.py
+++ b/vue-fastapi-backend/module_admin/entity/do/datastd_do.py
@@ -1,8 +1,9 @@
-from sqlalchemy import Column, Integer, String, DateTime,Text, DateTime,Date, BigInteger
+from sqlalchemy import Column, Integer, String, DateTime, Text, DateTime, Date, BigInteger
from config.database import Base
from datetime import datetime
from sqlalchemy.dialects.mysql import MEDIUMTEXT
+
# 数据标准模块相关表
class DataStdCode(Base):
@@ -23,7 +24,8 @@ class DataStdCode(Base):
src_sys = Column(String(50), default=None, comment='归属系统')
class_id = Column(String(10), default=None, comment='代码类型(code:代码 codeItem:代码项)')
parent_id = Column(String(50), default=None, comment='父id')
- code_map_id = Column(String(50), default=None,comment='标准代码Id')
+ code_map_id = Column(String(50), default=None, comment='标准代码Id')
+
class DataStdCodeAppr(Base):
"""
@@ -43,19 +45,21 @@ class DataStdCodeAppr(Base):
src_sys = Column(String(50), default=None, comment='归属系统')
class_id = Column(String(10), default=None, comment='代码类型(code:代码 codeItem:代码项)')
parent_id = Column(String(50), default=None, comment='父id')
- code_map_id = Column(String(50), default=None,comment='标准代码Id')
- changeType = Column(String(10), default=None, comment='变更类型')
- flowId = Column(String(50), default=None, comment='审批Id')
- oldInstId = Column(String(50), default=None, comment='原始正式id')
- compareId = Column(String(50), default=None, comment='原始数据id(用于对比差异)')
- approStatus = Column(String(10), default=None, comment='审批状态(waiting,申请中,pending审核中,succeed,rejected已审核,canceled已取消)')
+ code_map_id = Column(String(50), default=None, comment='标准代码Id')
+ changeType = Column(String(10), default=None, comment='变更类型')
+ flowId = Column(String(50), default=None, comment='审批Id')
+ oldInstId = Column(String(50), default=None, comment='原始正式id')
+ compareId = Column(String(50), default=None, comment='原始数据id(用于对比差异)')
+ approStatus = Column(String(10), default=None,
+ comment='审批状态(waiting,申请中,pending审核中,succeed,rejected已审核,canceled已取消)')
+
class DataStdDict(Base):
"""
标准字典表 (Standard Code Table)
"""
__tablename__ = 't_data_dict' # 表名为 t_datastd_dict
-
+
onum = Column(String(50), primary_key=True, comment='标准代码Id')
create_by = Column(String(20), default='', comment='创建者')
create_time = Column(DateTime, nullable=True, default=None, comment='创建时间')
@@ -73,12 +77,13 @@ class DataStdDict(Base):
src_sys_tab_fld_name = Column(MEDIUMTEXT, default=None, comment='来源系统表字段名')
data_dict_stat = Column(String(1), default=None, comment='字典状态(1:有效 0:无效)')
+
class DataStdDictAppr(Base):
"""
标准字典审批表 (Standard Code Table)
"""
__tablename__ = 't_data_dict_appr' # 表名为 t_datastd_dict
-
+
onum = Column(String(50), primary_key=True, comment='标准代码Id')
create_by = Column(String(20), default='', comment='创建者')
create_time = Column(DateTime, nullable=True, default=None, comment='创建时间')
@@ -95,15 +100,17 @@ class DataStdDictAppr(Base):
data_dict_stat = Column(String(1), default=None, comment='字典状态(1:有效 0:无效)')
data_dict_data_type = Column(String(100), default=None, comment='数据类型')
src_sys_tab_fld_name = Column(MEDIUMTEXT, default=None, comment='来源系统表字段名')
- changeType = Column(String(10), default=None, comment='变更类型')
- flowId = Column(String(50), default=None, comment='审批Id')
- oldInstId = Column(String(50), default=None, comment='原始正式id')
- compareId = Column(String(50), default=None, comment='原始数据id(用于对比差异)')
- approStatus = Column(String(10), default=None, comment='审批状态(waiting,申请中,pending审核中,succeed,rejected已审核,canceled已取消)')
+ changeType = Column(String(10), default=None, comment='变更类型')
+ flowId = Column(String(50), default=None, comment='审批Id')
+ oldInstId = Column(String(50), default=None, comment='原始正式id')
+ compareId = Column(String(50), default=None, comment='原始数据id(用于对比差异)')
+ approStatus = Column(String(10), default=None,
+ comment='审批状态(waiting,申请中,pending审核中,succeed,rejected已审核,canceled已取消)')
+
class DataAstContent(Base):
__tablename__ = "t_data_std_content"
-
+
content_onum = Column(Integer, primary_key=True, autoincrement=True, comment='目录序号')
content_name = Column(String(255), nullable=False, comment='目录名称')
content_stat = Column(String(10), nullable=False, comment='目录状态(有效/废弃/停用)')
@@ -115,11 +122,9 @@ class DataAstContent(Base):
upd_time = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment='更新时间')
-
-
class DataAstContentRela(Base):
__tablename__ = "t_data_std_content_rela"
-
+
rela_onum = Column(Integer, primary_key=True, autoincrement=True, comment='关系序号')
content_onum = Column(Integer, nullable=False, comment='目录序号')
ast_onum = Column(Integer, nullable=False, comment='资产序号')
@@ -128,14 +133,14 @@ class DataAstContentRela(Base):
rela_eff_end_date = Column(Date, nullable=True, comment='关系生效结束日期')
upd_prsn = Column(String(255), nullable=False, comment='更新人员')
rela_status = Column(String(18), nullable=True, comment='关系状态')
-
-
+
+
class DataStdMain(Base):
"""
数据标准表
"""
__tablename__ = 't_data_std'
-
+
onum = Column(String(50), primary_key=True, comment='标准代码Id')
create_by = Column(String(20), default='', comment='创建者')
create_time = Column(DateTime, nullable=True, default=None, comment='创建时间')
@@ -157,16 +162,16 @@ class DataStdMain(Base):
data_std_it_ownership_prsn = Column(String(100), default=None, comment='技术认责人员')
belt_data_std_content = Column(Integer, default=None, comment='分类')
data_std_src = Column(String(20), default=None, comment='标准来源')
- data_clas = Column(String(20), default=None, comment='数据类别')
- typical_fld = Column(String(500), default=None, comment='典型字段')
-
-
+ data_clas = Column(String(20), default=None, comment='数据类别')
+ typical_fld = Column(String(500), default=None, comment='典型字段')
+
+
class DataStdMainAppr(Base):
"""
数据标准表
"""
__tablename__ = 't_data_std_appr'
-
+
onum = Column(String(50), primary_key=True, comment='标准代码Id')
create_by = Column(String(20), default='', comment='创建者')
create_time = Column(DateTime, nullable=True, default=None, comment='创建时间')
@@ -188,11 +193,11 @@ class DataStdMainAppr(Base):
data_std_it_ownership_prsn = Column(String(100), default=None, comment='技术认责人员')
belt_data_std_content = Column(Integer, default=None, comment='分类')
data_std_src = Column(String(20), default=None, comment='标准来源')
- data_clas = Column(String(20), default=None, comment='数据类别')
- typical_fld = Column(String(500), default=None, comment='典型字段')
- changeType = Column(String(10), default=None, comment='变更类型')
- flowId = Column(String(50), default=None, comment='审批Id')
- oldInstId = Column(String(50), default=None, comment='原始正式id')
- compareId = Column(String(50), default=None, comment='原始数据id(用于对比差异)')
- approStatus = Column(String(10), default=None, comment='审批状态(waiting,申请中,pending审核中,succeed,rejected已审核,canceled已取消)')
-
\ No newline at end of file
+ data_clas = Column(String(20), default=None, comment='数据类别')
+ typical_fld = Column(String(500), default=None, comment='典型字段')
+ changeType = Column(String(10), default=None, comment='变更类型')
+ flowId = Column(String(50), default=None, comment='审批Id')
+ oldInstId = Column(String(50), default=None, comment='原始正式id')
+ compareId = Column(String(50), default=None, comment='原始数据id(用于对比差异)')
+ approStatus = Column(String(10), default=None,
+ comment='审批状态(waiting,申请中,pending审核中,succeed,rejected已审核,canceled已取消)')
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 3e1c6b1..07aa07c 100644
--- a/vue-fastapi-backend/module_admin/entity/do/meta_do.py
+++ b/vue-fastapi-backend/module_admin/entity/do/meta_do.py
@@ -130,6 +130,7 @@ class MetadataFldSuppInfo(Base):
fld_clas = Column(Text, comment='字段分类')
fld_null_rate = Column(String(50, collation='utf8_general_ci'), comment='字段空值率')
data_dict_id = Column(String(50, collation='utf8_general_ci'), comment='数据字典ID')
+ data_sec_lvl = Column(String(50, collation='utf8_general_ci'), comment='字段安全等级')
rec_stat = Column(String(50, collation='utf8_general_ci'), comment='记录状态')
upd_time = Column(DateTime, comment='更新时间')
@@ -153,6 +154,7 @@ class MetadataFldSuppInfoVett(Base):
fld_clas = Column(Text, comment='字段分类')
fld_null_rate = Column(String(50, collation='utf8_general_ci'), comment='字段空值率')
data_dict_id = Column(String(50, collation='utf8_general_ci'), comment='数据字典ID')
+ data_sec_lvl = Column(String(50, collation='utf8_general_ci'), comment='字段安全等级')
rec_stat = Column(String(50, collation='utf8_general_ci'), comment='记录状态')
upd_time = Column(DateTime, comment='更新时间')
rec_subm_prsn = Column(String(255, collation='utf8_general_ci'), comment='记录提交人')
diff --git a/vue-fastapi-backend/module_admin/entity/vo/meta_vo.py b/vue-fastapi-backend/module_admin/entity/vo/meta_vo.py
index 4707fb5..8558146 100644
--- a/vue-fastapi-backend/module_admin/entity/vo/meta_vo.py
+++ b/vue-fastapi-backend/module_admin/entity/vo/meta_vo.py
@@ -41,6 +41,7 @@ class ColumnSuppleModel(BaseModel):
fld_null_rate: Optional[str] = None
rec_stat: Optional[str] = None
data_dict_id: Optional[str] = None
+ data_sec_lvl: Optional[str] = None
class SuppleModel(BaseModel):
diff --git a/vue-fastapi-backend/module_admin/service/approval_service.py b/vue-fastapi-backend/module_admin/service/approval_service.py
index 32943da..f1ab552 100644
--- a/vue-fastapi-backend/module_admin/service/approval_service.py
+++ b/vue-fastapi-backend/module_admin/service/approval_service.py
@@ -4,7 +4,8 @@ import uuid
from typing import Optional
from sqlalchemy.ext.asyncio import AsyncSession
from module_admin.entity.vo.common_vo import CrudResponseModel
-from module_admin.entity.vo.approval_vo import ApplyModel, OperateModel, ApprovalQueryObject, EditObjectModel, SaveConfModel
+from module_admin.entity.vo.approval_vo import ApplyModel, OperateModel, ApprovalQueryObject, EditObjectModel, \
+ SaveConfModel
from module_admin.entity.vo.user_vo import CurrentUserModel
from module_admin.entity.do.approval_do import FlowApproval
from exceptions.exception import ServiceException, ServiceWarning
@@ -15,9 +16,9 @@ from module_admin.dao.user_dao import UserDao
from module_admin.dao.meta_dao import MetaDao
from module_admin.dao.datastd_dao import DataStdDao
from module_admin.dao.dataast_dao import DataAstDao
-from module_admin.entity.vo.dataast_vo import DataAstApprModel,DataAstInfoModel
-from module_admin.entity.vo.datastd_vo import DataStdCodeModel,DataStdDictModel,DataStdMainModel,DataStdMainApprModel,DataStdDictApprModel,DataStdDictModel,DataStdCodeApprModel
-
+from module_admin.entity.vo.dataast_vo import DataAstApprModel, DataAstInfoModel
+from module_admin.entity.vo.datastd_vo import DataStdCodeModel, DataStdDictModel, DataStdMainModel, \
+ DataStdMainApprModel, DataStdDictApprModel, DataStdDictModel, DataStdCodeApprModel
class ApprovalService:
@@ -96,8 +97,8 @@ class ApprovalService:
await cls.syncSuppInfo(result_db, flow_approval.businessId, edit.status)
# 数据标准审批
elif flow_approval.businessType == 'dataStdMain':
- await cls.syncStdMainInfo(result_db, flow_approval.businessId, edit.status)
- # 数据字典审批
+ await cls.syncStdMainInfo(result_db, flow_approval.businessId, edit.status)
+ # 数据字典审批
elif flow_approval.businessType == 'dataStdDict':
await cls.syncStdDictInfo(result_db, flow_approval.businessId, edit.status)
# 标准代码审批
@@ -138,103 +139,103 @@ class ApprovalService:
else:
await MetaDao.updateMetadataSuppInfo(suppTable.onum, table, result_db)
return CrudResponseModel(is_success=True, message='操作成功')
+
@classmethod
async def syncStdMainInfo(cls, result_db: AsyncSession, suppId: str, operateType: str):
apprList = await DataStdDao.get_std_main_appr_list(suppId, result_db)
-
+
for appr in apprList:
# 将 SQLAlchemy 模型实例转换为 Pydantic 模型实例
appr_model = DataStdMainApprModel.model_validate(appr)
-
+
change_type = appr_model.changeType
- if operateType =='succeed':
- if change_type == "add":
- # 将 DataStdMainApprModel 转换为 DataStdMainModel
- main_model = DataStdMainModel(**appr_model.model_dump(exclude_unset=True, by_alias=True))
-
- await DataStdDao.add_std_main(result_db, main_model)
-
- elif change_type == "edit":
- # 使用 oldInstId 作为主键
- main_model = DataStdMainModel(**appr_model.model_dump(exclude_unset=True, by_alias=True))
- main_model.onum = appr_model.oldInstId
- await DataStdDao.update_std_main(result_db, main_model)
-
- elif change_type == "delete":
- await DataStdDao.delete_std_main(result_db, appr_model.oldInstId)
-
+ if operateType == 'succeed':
+ if change_type == "add":
+ # 将 DataStdMainApprModel 转换为 DataStdMainModel
+ main_model = DataStdMainModel(**appr_model.model_dump(exclude_unset=True, by_alias=True))
+
+ await DataStdDao.add_std_main(result_db, main_model)
+
+ elif change_type == "edit":
+ # 使用 oldInstId 作为主键
+ main_model = DataStdMainModel(**appr_model.model_dump(exclude_unset=True, by_alias=True))
+ main_model.onum = appr_model.oldInstId
+ await DataStdDao.update_std_main(result_db, main_model)
+
+ elif change_type == "delete":
+ await DataStdDao.delete_std_main(result_db, appr_model.oldInstId)
+
# 更新 approStatus 状态
appr_model.approStatus = operateType
await DataStdDao.update_std_main_appr(result_db, appr_model)
-
-
+
return CrudResponseModel(is_success=True, message='操作成功')
-
+
@classmethod
async def syncStdDictInfo(cls, result_db: AsyncSession, suppId: str, operateType: str):
apprList = await DataStdDao.get_std_dict_appr_list(suppId, result_db)
-
+
for appr in apprList:
# 将 SQLAlchemy 模型实例转换为 Pydantic 模型实例
appr_model = DataStdDictApprModel.model_validate(appr)
-
+
change_type = appr_model.changeType
- if operateType =='succeed':
- if change_type == "add":
- # 将 DataStdDictApprModel 转换为 DataStdDictModel
- main_model = DataStdDictModel(**appr_model.model_dump(exclude_unset=True, by_alias=True))
-
- await DataStdDao.add_std_dict(result_db, main_model)
-
- elif change_type == "edit":
- # 使用 oldInstId 作为主键
- main_model = DataStdDictModel(**appr_model.model_dump(exclude_unset=True, by_alias=True))
-
- main_model.onum = appr_model.oldInstId
- await DataStdDao.update_std_dict(result_db, main_model.model_dump(exclude_unset=True))
-
- elif change_type == "delete":
- await DataStdDao.delete_std_dict(result_db, appr_model.oldInstId)
-
+ if operateType == 'succeed':
+ if change_type == "add":
+ # 将 DataStdDictApprModel 转换为 DataStdDictModel
+ main_model = DataStdDictModel(**appr_model.model_dump(exclude_unset=True, by_alias=True))
+
+ await DataStdDao.add_std_dict(result_db, main_model)
+
+ elif change_type == "edit":
+ # 使用 oldInstId 作为主键
+ main_model = DataStdDictModel(**appr_model.model_dump(exclude_unset=True, by_alias=True))
+
+ main_model.onum = appr_model.oldInstId
+ await DataStdDao.update_std_dict(result_db, main_model.model_dump(exclude_unset=True))
+
+ elif change_type == "delete":
+ await DataStdDao.delete_std_dict(result_db, appr_model.oldInstId)
+
# 更新 approStatus 状态
appr_model.approStatus = operateType
await DataStdDao.update_std_dict_appr(result_db, appr_model)
-
-
+
return CrudResponseModel(is_success=True, message='操作成功')
@classmethod
async def syncStdCodeInfo(cls, result_db: AsyncSession, suppId: str, operateType: str):
apprList = await DataStdDao.get_std_code_appr_list_Flow(suppId, result_db)
-
+
for appr in apprList:
# 将 SQLAlchemy 模型实例转换为 Pydantic 模型实例
appr_model = DataStdCodeApprModel.model_validate(appr)
-
+
change_type = appr_model.changeType
- if operateType =='succeed':
- if change_type == "add":
- main_model = DataStdCodeModel(**appr_model.model_dump(exclude_unset=True, by_alias=True))
-
- await DataStdDao.add_std_code(result_db, main_model)
-
- elif change_type == "update":
- # 使用 oldInstId 作为主键
- main_model = DataStdCodeModel(**appr_model.model_dump(exclude_unset=True, by_alias=True))
-
- main_model.onum = appr_model.oldInstId
- await DataStdDao.update_std_code(result_db, main_model.model_dump(exclude_unset=True))
-
- elif change_type == "delete":
- await DataStdDao.delete_std_code(result_db, appr_model.oldInstId)
-
+ if operateType == 'succeed':
+ if change_type == "add":
+ main_model = DataStdCodeModel(**appr_model.model_dump(exclude_unset=True, by_alias=True))
+
+ await DataStdDao.add_std_code(result_db, main_model)
+
+ elif change_type == "update":
+ # 使用 oldInstId 作为主键
+ main_model = DataStdCodeModel(**appr_model.model_dump(exclude_unset=True, by_alias=True))
+
+ main_model.onum = appr_model.oldInstId
+ await DataStdDao.update_std_code(result_db, main_model.model_dump(exclude_unset=True))
+
+ elif change_type == "delete":
+ await DataStdDao.delete_std_code(result_db, appr_model.oldInstId)
+
# 更新 approStatus 状态
appr_model.approStatus = operateType
main_appro_model = DataStdCodeApprModel(**appr_model.model_dump(exclude_unset=True, by_alias=True))
- await DataStdDao.update_std_code_appr(result_db, main_appro_model.model_dump(exclude_unset=True))
-
+ await DataStdDao.update_std_code_appr(result_db, main_appro_model.model_dump(exclude_unset=True))
+
return CrudResponseModel(is_success=True, message='操作成功')
+
@classmethod
async def syncDataAstInfo(cls, result_db: AsyncSession, suppId: str, operateType: str):
apprList = await DataAstDao.get_dataast_appr_list_Flow(suppId, result_db)
@@ -243,14 +244,13 @@ class ApprovalService:
# 将 SQLAlchemy 模型实例转换为 Pydantic 模型实例
appr_model = DataAstApprModel.model_validate(appr)
change_type = appr_model.changeType
- if operateType =='succeed':
+ if operateType == 'succeed':
if change_type == "add":
# 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)
# logger.info(f"数据资产添加成功,AST_NO: {main_model.ast_no}")
-
# 更新 approStatus 状态
appr_model.approStatus = operateType
main_appro_model = DataStdCodeApprModel(**appr_model.model_dump(exclude_unset=True, by_alias=True))
@@ -259,8 +259,6 @@ class ApprovalService:
return CrudResponseModel(is_success=True, message='操作成功')
-
-
@classmethod
async def get_flow_list_services(cls, query_db: AsyncSession, query_param: ApprovalQueryObject,
current_user: CurrentUserModel):
@@ -282,27 +280,27 @@ class ApprovalService:
for item in approval_list:
nextRoles = json.loads(item.nextStepRole)
nextUsers = json.loads(item.nextStepUser)
- if len(nextRoles)>0 and len(nextUsers) > 0:
+ if len(nextRoles) > 0 and len(nextUsers) > 0:
if current_user.user.user_name in nextUsers:
- count = count+1
+ count = count + 1
break
if any(element in set(current_user.roles) for element in nextRoles):
- count = count+1
+ count = count + 1
break
if len(nextRoles) > 0 and len(nextUsers) == 0:
if any(element in set(current_user.roles) for element in nextRoles):
- count = count+1
+ count = count + 1
break
if len(nextRoles) == 0 and len(nextUsers) > 0:
if current_user.user.user_name in nextUsers:
- count = count+1
+ count = count + 1
break
return count
@classmethod
async def cancel_apply_services(cls, query_db: AsyncSession, flow_id: str,
- current_user: CurrentUserModel):
- flow = await ApprovalDao.get_flow_by_idAndUser(query_db,flow_id, current_user.user.user_name)
+ current_user: CurrentUserModel):
+ flow = await ApprovalDao.get_flow_by_idAndUser(query_db, flow_id, current_user.user.user_name)
if flow is None:
raise ServiceException(message=f'所操作的流程不存在')
if flow.status == 'succeed' or flow.status == 'rejected':
@@ -335,4 +333,3 @@ class ApprovalService:
await ApprovalDao.add_flow_config(query_db, confDict)
await query_db.commit()
return CrudResponseModel(is_success=True, message='操作成功')
-
diff --git a/vue-fastapi-backend/module_admin/service/meta_service.py b/vue-fastapi-backend/module_admin/service/meta_service.py
index 04e965f..1307742 100644
--- a/vue-fastapi-backend/module_admin/service/meta_service.py
+++ b/vue-fastapi-backend/module_admin/service/meta_service.py
@@ -46,8 +46,13 @@ class MetaService:
table['batchTabClas'] = CamelCaseUtil.transform_result(tab_list)
return meta_rel_list
else:
- # meta_rel_list = MetaDao.get_meta_rel_list(result_db, query_object, data_scope_sql)
- return None
+ meta_rel_list = await MetaDao.get_meta_rel_list(result_db, query_object)
+ if meta_rel_list and len(meta_rel_list.rows) > 0:
+ for table in meta_rel_list.rows:
+ tab_list = await MetaDao.get_meta_tab_clas(result_db, table['ssysCd'], table['mdlName'],
+ table['tabEngName'])
+ table['batchTabClas'] = CamelCaseUtil.transform_result(tab_list)
+ return meta_rel_list
@classmethod
async def get_meta_col_list_services(cls, result_db: AsyncSession, query_object: MetaColObject):
@@ -57,6 +62,10 @@ class MetaService:
fld_list = await MetaDao.get_meta_fld_clas(result_db, column['ssysCd'], column['mdlName'],
column['tabEngName'], column['fldEngName'])
column['batchFldClas'] = CamelCaseUtil.transform_result(fld_list)
+ if column['dataSecLvl'] is None and column['dataDictId'] is not None:
+ # 获取数据标准的安全等级
+ data_sec_lvl = await DataStdDao.get_data_sec_lvl_by_dict_id(result_db, column['dataDictId'])
+ column['dataSecLvl'] = data_sec_lvl
return result
@classmethod
@@ -99,7 +108,7 @@ class MetaService:
supple.tab_eng_name,
column.fld_eng_name, result_db)
data_dict_name = ''
- if oldColumn.data_dict_id and oldColumn.data_dict_id != '':
+ if oldColumn and oldColumn.data_dict_id and oldColumn.data_dict_id != '':
oldDict = await DataStdDao.get_data_dict_by_id(result_db, oldColumn.data_dict_id)
data_dict_name = oldDict.data_dict_cn_name if oldDict else ''
columnInfo = await MetaDao.get_meta_column(supple.ssys_cd, supple.mdl_name, supple.tab_eng_name,
@@ -117,6 +126,7 @@ class MetaService:
suppColumnInfo.fld_clas = column.fld_clas
suppColumnInfo.fld_null_rate = column.fld_null_rate
suppColumnInfo.data_dict_id = column.data_dict_id
+ suppColumnInfo.data_sec_lvl = column.data_sec_lvl
suppColumnInfo.rec_stat = column.rec_stat
suppColumnInfo.rec_subm_prsn = current_user.user.user_name
suppColumnInfo.apply_time = applyTime
@@ -174,6 +184,7 @@ class MetaService:
fldClas=column.fld_clas if column and column.fld_clas else None,
fldNullRate=column.fld_null_rate if column and column.fld_null_rate else None,
dataDictId=column.data_dict_id if column and column.data_dict_id else None,
+ dataSecLvl=column.data_sec_lvl if column and column.data_sec_lvl else None,
dataDictName=dictName,
recStat=column.rec_stat if column and column.rec_stat else None,
updTime=column.upd_time.isoformat() if column and column.upd_time else None
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 9ede624..0d357e8 100644
--- a/vue-fastapi-backend/module_admin/service/metadata_config_service.py
+++ b/vue-fastapi-backend/module_admin/service/metadata_config_service.py
@@ -133,6 +133,14 @@ class MetadataConfigService:
result = await MetadataConfigDao.get_metadata_sec_list(query_db, query_object, is_page)
return result
+ @classmethod
+ async def get_metadata_sec_option_list_services(cls, query_db: AsyncSession):
+ """
+ 查询数据安全配置列表
+ """
+ result = await MetadataConfigDao.get_metadata_sec_option_list(query_db)
+ return CamelCaseUtil.transform_result(result)
+
@classmethod
async def add_metadata_sec_services(cls, query_db: AsyncSession, page_object: MetadataSecModel):
"""
diff --git a/vue-fastapi-frontend/src/api/metadataConfig/metadataConfig.js b/vue-fastapi-frontend/src/api/metadataConfig/metadataConfig.js
index 2bab37d..7f51f3a 100644
--- a/vue-fastapi-frontend/src/api/metadataConfig/metadataConfig.js
+++ b/vue-fastapi-frontend/src/api/metadataConfig/metadataConfig.js
@@ -53,6 +53,14 @@ export function listMetadataSec(query) {
})
}
+// 查询数据安全配置列表,不带分页
+export function listMetadataSecOptions() {
+ return request({
+ url: '/default-api/metadataConfig/sec/optionList',
+ method: 'get'
+ })
+}
+
// 查询数据安全配置详情
export function getMetadataSec(secId) {
return request({
diff --git a/vue-fastapi-frontend/src/views/meta/metaInfo/index.vue b/vue-fastapi-frontend/src/views/meta/metaInfo/index.vue
index 4a2a5a8..f9afc99 100644
--- a/vue-fastapi-frontend/src/views/meta/metaInfo/index.vue
+++ b/vue-fastapi-frontend/src/views/meta/metaInfo/index.vue
@@ -313,6 +313,7 @@
+
@@ -521,6 +522,21 @@
+
+
+
+
+
+
@@ -738,6 +754,7 @@
import cache from "@/plugins/cache";
import BusinssRelation from "./businssRelation.vue";
import BloodRelation from "./bloodRelation.vue";
+ import {listMetadataSecOptions} from "@/api/metadataConfig/metadataConfig.js";
const data = reactive({
queryParams:{
@@ -823,6 +840,7 @@
"clasScdClas": ""
});
const stddictOptions = ref([])
+ const secLvlOptions = ref([])
function changeColumnTab(){
if (activeColumnTab.value === 'businessRelation'){
@@ -858,6 +876,11 @@
})
}
}
+ function remoteSecLvl(){
+ listMetadataSecOptions().then(res=>{
+ secLvlOptions.value = res.data
+ })
+ }
function generateDemoData(){
let param ={
dataAstSrc: currentMetaData.value.ssysCd,
@@ -965,6 +988,10 @@
columnList.value[i].dataDictName = currentColumnData.value.dataDictName
changed = true
}
+ if (columnList.value[i].dataSecLvl !== currentColumnData.value.dataSecLvl){
+ columnList.value[i].dataSecLvl = currentColumnData.value.dataSecLvl
+ changed = true
+ }
if (currentColumnData.value.showFldClas && currentColumnData.value.showFldClas.length > 0){
let showFldClas = currentColumnData.value.showFldClas
let fldClas = []
@@ -1037,7 +1064,20 @@
}
columnInfoDialog.value = false
if (changed){
- changedColumns.value.push(currentColumnData.value)
+ if (changedColumns.value.length>0){
+ let hasCol = false
+ for (let i = 0; i < changedColumns.value.length; i++) {
+ if (changedColumns.value[i].fldEngName === currentColumnData.value.fldEngName){
+ changedColumns.value[i] = currentColumnData.value
+ hasCol = true
+ }
+ }
+ if (!hasCol){
+ changedColumns.value.push(currentColumnData.value)
+ }
+ }else{
+ changedColumns.value.push(currentColumnData.value)
+ }
}
}
function addTableTag(){
@@ -1188,6 +1228,7 @@
metaClasList.value = res.data
})
remoteStddict()
+ remoteSecLvl()
}
function showColumnDialog(row) {
let tableData = JSON.parse(JSON.stringify(row))
@@ -1501,6 +1542,7 @@
fldClas: JSON.stringify(column.showFldClas),
fldNullRate: column.fldNullRate,
dataDictId: column.dataDictId,
+ dataSecLvl: column.dataSecLvl,
recStat: column.recStat
})
}
diff --git a/vue-fastapi-frontend/src/views/system/flow/index.vue b/vue-fastapi-frontend/src/views/system/flow/index.vue
index 3cc87a8..453af60 100644
--- a/vue-fastapi-frontend/src/views/system/flow/index.vue
+++ b/vue-fastapi-frontend/src/views/system/flow/index.vue
@@ -344,6 +344,12 @@
{{scope.row.dataDictName}}
+
+
+ {{scope.row.dataSecLvl}}
+ {{scope.row.dataSecLvl}}
+
+
@@ -524,6 +530,12 @@
{{scope.row.dataDictName}}
+
+
+ {{scope.row.dataSecLvl}}
+ {{scope.row.dataSecLvl}}
+
+
@@ -983,6 +995,7 @@ function showBusinessDataDialog(row){
fldCnName:column.fldCnName,
fldType:column.fldType,
dataDictName: col.dataDictName,
+ dataSecLvl: col.dataSecLvl,
showColClas: showNewColClas
})
}