si@aidatagov.com 2 months ago
parent
commit
fc8eab3421
  1. 64
      vue-fastapi-backend/module_admin/controller/metadata_config_controller.py
  2. 46
      vue-fastapi-backend/module_admin/dao/batch_label_config_dao.py
  3. 174
      vue-fastapi-backend/module_admin/dao/meta_dao.py
  4. 20
      vue-fastapi-backend/module_admin/entity/do/meta_do.py
  5. 37
      vue-fastapi-backend/module_admin/entity/do/metadata_config_do.py
  6. 10
      vue-fastapi-backend/module_admin/entity/vo/meta_vo.py
  7. 99
      vue-fastapi-backend/module_admin/entity/vo/metadata_config_vo.py
  8. 132
      vue-fastapi-backend/module_admin/service/batch_label_config_service.py
  9. 132
      vue-fastapi-backend/module_admin/service/meta_service.py
  10. 17
      vue-fastapi-frontend/src/api/metadataConfig/metadataConfig.js
  11. 6
      vue-fastapi-frontend/src/views/meta/metaInfo/bloodRelation.vue
  12. 49
      vue-fastapi-frontend/src/views/meta/metaInfo/index.vue
  13. 336
      vue-fastapi-frontend/src/views/metadataConfig/metaclas/index.vue

64
vue-fastapi-backend/module_admin/controller/metadata_config_controller.py

@ -21,11 +21,10 @@ from module_admin.entity.vo.metadata_config_vo import (
SecuBizPermiConfigBatchModel, SecuBizPermiConfigBatchModel,
SecuBizPermiConfigPageQueryModel, SecuBizPermiConfigPageQueryModel,
BatchBusiLabelConfigModel, BatchBusiLabelConfigModel,
BatchDataopLabelConfigModel,
BatchDatatypeLabelConfigModel, BatchDatatypeLabelConfigModel,
BatchBusiLabelConfigPageQueryModel, ColOpTypeLabelPageQueryModel,
BatchDataopLabelConfigModelVo, BatchDataopLabelConfigModelVo,
BatchDataopLabelModelPageQueryModel, BatchBusiLabelConfigPageQueryModel,
BatchDatatypeLabelConfigPageQueryModel, BatchDatatypeLabelConfigPageQueryModel,
DatasecConfigPageQueryModel, DatasecConfigPageQueryModel,
DatasecConfigModel, DatasecConfigModel,
@ -325,6 +324,17 @@ async def get_busi_label_list(
return ResponseUtil.success(data=result) return ResponseUtil.success(data=result)
@metadataConfigController.get('/colOpTypeLabel/list', response_model=PageResponseModel)
async def get_col_optype_label_list(
request: Request,
query: ColOpTypeLabelPageQueryModel = Depends(ColOpTypeLabelPageQueryModel.as_query),
query_db: AsyncSession = Depends(get_db),
):
result = await BatchLabelConfigService.get_col_optype_list_services(query_db, query, False)
logger.info('获取业务标签配置列表成功')
return ResponseUtil.success(data=result)
@metadataConfigController.post('/busiLabel') @metadataConfigController.post('/busiLabel')
@ValidateFields(validate_model='add_busi_label') @ValidateFields(validate_model='add_busi_label')
async def add_busi_label( async def add_busi_label(
@ -379,17 +389,6 @@ async def get_busi_label_detail(
return ResponseUtil.success(data=result) return ResponseUtil.success(data=result)
@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),
):
result = await BatchLabelConfigService.get_dataop_vo_services(query_db, query, is_page=True)
logger.info('获取操作标签配置列表成功')
return ResponseUtil.success(data=result)
@metadataConfigController.post('/dataopLabel') @metadataConfigController.post('/dataopLabel')
@ValidateFields(validate_model='add_dataop_label') @ValidateFields(validate_model='add_dataop_label')
async def add_dataop_label( async def add_dataop_label(
@ -397,7 +396,6 @@ async def add_dataop_label(
model: BatchDataopLabelConfigModelVo, model: BatchDataopLabelConfigModelVo,
query_db: AsyncSession = Depends(get_db), query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user), current_user: CurrentUserModel = Depends(LoginService.get_current_user),
): ):
model.upd_by = current_user.user.user_name model.upd_by = current_user.user.user_name
model.upd_time = datetime.now() model.upd_time = datetime.now()
@ -410,7 +408,7 @@ async def add_dataop_label(
@ValidateFields(validate_model='edit_dataop_label') @ValidateFields(validate_model='edit_dataop_label')
async def edit_dataop_label( async def edit_dataop_label(
request: Request, request: Request,
model: BatchDataopLabelConfigModel, model: BatchDataopLabelConfigModelVo,
query_db: AsyncSession = Depends(get_db), query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user), current_user: CurrentUserModel = Depends(LoginService.get_current_user),
@ -433,17 +431,6 @@ async def delete_dataop_label(
return ResponseUtil.success(msg=result.message) return ResponseUtil.success(msg=result.message)
@metadataConfigController.get('/dataopLabel/{onum}', response_model=BatchDataopLabelConfigModel)
async def get_dataop_label_detail(
request: Request,
onum: str,
query_db: AsyncSession = Depends(get_db),
):
result = await BatchLabelConfigService.get_dataop_detail_services(query_db, onum)
logger.info(f'获取操作标签配置 onum={onum} 详情成功')
return ResponseUtil.success(data=result)
@metadataConfigController.get('/datatypeLabel/list', response_model=PageResponseModel) @metadataConfigController.get('/datatypeLabel/list', response_model=PageResponseModel)
async def get_datatype_label_list( async def get_datatype_label_list(
request: Request, request: Request,
@ -751,6 +738,8 @@ async def task_biz_DS_meta_metatask_delete(
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) return ResponseUtil.success(msg=edit_config_result)
# --------------------------------------------------------------------------------标签树--------------------------------------------------- # --------------------------------------------------------------------------------标签树---------------------------------------------------
@metadataConfigController.get( @metadataConfigController.get(
'/cata/list', response_model=PageResponseModel) '/cata/list', response_model=PageResponseModel)
@ -763,23 +752,28 @@ async def get_data_catalog_list(
# 设置字段 # 设置字段
user_id = current_user.user.user_id user_id = current_user.user.user_id
# 获取分页数据 # 获取分页数据
catalog_page_query_result = await MetadataConfigService.get_catalog_list_services(query_db, catalog_page_query, user_id, catalog_page_query_result = await MetadataConfigService.get_catalog_list_services(query_db, catalog_page_query,
is_page=True) user_id,
is_page=True)
logger.info('获取成功') logger.info('获取成功')
return ResponseUtil.success(model_content=catalog_page_query_result) return ResponseUtil.success(model_content=catalog_page_query_result)
@metadataConfigController.delete('/cata/{content_onums}', @metadataConfigController.delete('/cata/{content_onums}',
) )
@Log(title='标准分类管理', business_type=BusinessType.DELETE) @Log(title='标准分类管理', business_type=BusinessType.DELETE)
async def delete_data_catalog(request: Request, content_onums: str, query_db: AsyncSession = Depends(get_db), async def delete_data_catalog(request: Request, content_onums: str, query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user), current_user: CurrentUserModel = Depends(LoginService.get_current_user),
): ):
delete_catalog = DeleteDataCatalogModel(content_onums=content_onums) delete_catalog = DeleteDataCatalogModel(content_onums=content_onums)
delete_catalog_result = await MetadataConfigService.delete_catalog_services(query_db, delete_catalog, delete_catalog_result = await MetadataConfigService.delete_catalog_services(query_db, delete_catalog,
user_id=current_user.user.user_id) user_id=current_user.user.user_id)
logger.info(delete_catalog_result.message) logger.info(delete_catalog_result.message)
return ResponseUtil.success(msg=delete_catalog_result.message) return ResponseUtil.success(msg=delete_catalog_result.message)
@metadataConfigController.put('/cata/removerel') @metadataConfigController.put('/cata/removerel')
@ValidateFields(validate_model='removerel_data_ast_catalog') @ValidateFields(validate_model='removerel_data_ast_catalog')
@Log(title='标准分类管理', business_type=BusinessType.UPDATE) @Log(title='标准分类管理', business_type=BusinessType.UPDATE)
@ -795,6 +789,8 @@ async def removerel_data_ast_catalog(
# 返回标准化响应 # 返回标准化响应
return ResponseUtil.success() return ResponseUtil.success()
@metadataConfigController.put('/cata/moved') @metadataConfigController.put('/cata/moved')
@ValidateFields(validate_model='moved_data_catalog') @ValidateFields(validate_model='moved_data_catalog')
@Log(title='标准分类管理', business_type=BusinessType.UPDATE) @Log(title='标准分类管理', business_type=BusinessType.UPDATE)
@ -831,6 +827,8 @@ async def moved_data_catalog(
return ResponseUtil.success( return ResponseUtil.success(
msg=merge_result.message msg=merge_result.message
) )
@metadataConfigController.put('/cata/moverel') @metadataConfigController.put('/cata/moverel')
@ValidateFields(validate_model='moverel_data_ast_catalog') @ValidateFields(validate_model='moverel_data_ast_catalog')
@Log(title='标准分类管理', business_type=BusinessType.UPDATE) @Log(title='标准分类管理', business_type=BusinessType.UPDATE)
@ -846,6 +844,8 @@ async def moverel_data_ast_catalog(
# 返回标准化响应 # 返回标准化响应
return ResponseUtil.success() return ResponseUtil.success()
@metadataConfigController.put('/cata/edit') @metadataConfigController.put('/cata/edit')
@ValidateFields(validate_model='edit_data_catalog') @ValidateFields(validate_model='edit_data_catalog')
@Log(title='标准分类管理', business_type=BusinessType.UPDATE) @Log(title='标准分类管理', business_type=BusinessType.UPDATE)
@ -866,6 +866,8 @@ async def edit_data_catalog(
return ResponseUtil.success( return ResponseUtil.success(
msg=edit_result.message msg=edit_result.message
) )
@metadataConfigController.post('/cata') @metadataConfigController.post('/cata')
@ValidateFields(validate_model='add_data_catalog') @ValidateFields(validate_model='add_data_catalog')
@Log(title='标准分类管理', business_type=BusinessType.INSERT) @Log(title='标准分类管理', business_type=BusinessType.INSERT)

46
vue-fastapi-backend/module_admin/dao/batch_label_config_dao.py

@ -1,9 +1,11 @@
from sqlalchemy import delete, select, update,and_ from sqlalchemy import delete, select, update, and_
from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.ext.asyncio import AsyncSession
from module_admin.entity.do.metadata_config_do import BatchBusiLabelConfig,BatchDataopLabelConfig,BatchDatatypeLabelConfig from module_admin.entity.do.metadata_config_do import BatchBusiLabelConfig, BatchDataopLabelConfig, \
BatchDatatypeLabelConfig
from utils.page_util import PageUtil from utils.page_util import PageUtil
class BatchLabelConfigDAO: class BatchLabelConfigDAO:
# region === BatchBusiLabelConfig === # region === BatchBusiLabelConfig ===
@ -17,11 +19,20 @@ class BatchLabelConfigDAO:
async def get_busi_list(cls, db: AsyncSession, query_object, is_page: bool = False): async def get_busi_list(cls, db: AsyncSession, query_object, is_page: bool = False):
query = select(BatchBusiLabelConfig).where( query = select(BatchBusiLabelConfig).where(
BatchBusiLabelConfig.mdl_name == query_object.mdl_name if query_object.mdl_name else True, BatchBusiLabelConfig.mdl_name == query_object.mdl_name if query_object.mdl_name else True,
BatchBusiLabelConfig.ssys_cd == query_object.ssys_cd if query_object.ssys_cd else True, BatchBusiLabelConfig.ssys_id == query_object.ssys_id if query_object.ssys_id else True,
).order_by(BatchBusiLabelConfig.upd_time.desc()) ).order_by(BatchBusiLabelConfig.upd_time.desc())
return await PageUtil.paginate(db, query, query_object.page_num, query_object.page_size, is_page) return await PageUtil.paginate(db, query, query_object.page_num, query_object.page_size, is_page)
@classmethod
async def get_col_optype_list(cls, db: AsyncSession, query_object, is_page: bool = False):
query = select(BatchDataopLabelConfig).where(
BatchDataopLabelConfig.mdl_name.like(f'%{query_object.mdl_name}%') if query_object.mdl_name else True,
BatchDataopLabelConfig.ssys_id == query_object.ssys_id if query_object.ssys_id else True,
).order_by(BatchDataopLabelConfig.upd_time.desc())
return await PageUtil.paginate(db, query, query_object.page_num, query_object.page_size, is_page)
@classmethod @classmethod
async def add_busi(cls, db: AsyncSession, obj): async def add_busi(cls, db: AsyncSession, obj):
db_obj = BatchBusiLabelConfig(**obj.model_dump()) db_obj = BatchBusiLabelConfig(**obj.model_dump())
@ -50,35 +61,21 @@ class BatchLabelConfigDAO:
async def get_dataop_list(cls, db: AsyncSession, query_object, is_page: bool = False): async def get_dataop_list(cls, db: AsyncSession, query_object, is_page: bool = False):
query = select(BatchDataopLabelConfig).where( query = select(BatchDataopLabelConfig).where(
BatchDataopLabelConfig.mdl_name == query_object.mdl_name if query_object.mdl_name else True, BatchDataopLabelConfig.mdl_name == query_object.mdl_name if query_object.mdl_name else True,
BatchDataopLabelConfig.ssys_cd == query_object.ssys_cd if query_object.ssys_cd else True, BatchDataopLabelConfig.ssys_id == query_object.ssys_id if query_object.ssys_id else True,
) )
return await PageUtil.paginate(db, query, query_object.page_num, query_object.page_size, is_page) return await PageUtil.paginate(db, query, query_object.page_num, query_object.page_size, is_page)
@classmethod
async def get_dataop_list_all(cls, db: AsyncSession, query_object):
conditions = []
if query_object.mdl_name:
conditions.append(BatchDataopLabelConfig.mdl_name == query_object.mdl_name)
if query_object.ssys_cd:
conditions.append(BatchDataopLabelConfig.ssys_cd == query_object.ssys_cd)
stmt = select(BatchDataopLabelConfig).where(*conditions)
result = await db.execute(stmt)
return result.scalars().all()
@classmethod @classmethod
async def add_dataop(cls, db: AsyncSession, obj): async def add_dataop(cls, db: AsyncSession, obj):
db_obj = BatchDataopLabelConfig(**obj.model_dump()) db.add(obj)
db.add(db_obj)
await db.flush() await db.flush()
return db_obj return obj
@classmethod @classmethod
async def edit_dataop(cls, db: AsyncSession, onum: int, update_data: dict): async def edit_dataop(cls, db: AsyncSession, onum: int, update_data: dict):
await db.execute(update(BatchDataopLabelConfig).where(BatchDataopLabelConfig.onum == onum).values(**update_data)) await db.execute(
update(BatchDataopLabelConfig).where(BatchDataopLabelConfig.onum == onum).values(**update_data))
@classmethod @classmethod
async def delete_dataop(cls, db: AsyncSession, onum_list: list[int]): async def delete_dataop(cls, db: AsyncSession, onum_list: list[int]):
@ -97,7 +94,7 @@ class BatchLabelConfigDAO:
async def get_datatype_list(cls, db: AsyncSession, query_object, is_page: bool = False): async def get_datatype_list(cls, db: AsyncSession, query_object, is_page: bool = False):
query = select(BatchDatatypeLabelConfig).where( query = select(BatchDatatypeLabelConfig).where(
BatchDatatypeLabelConfig.mdl_name == query_object.mdl_name if query_object.mdl_name else True, BatchDatatypeLabelConfig.mdl_name == query_object.mdl_name if query_object.mdl_name else True,
BatchDatatypeLabelConfig.ssys_cd == query_object.ssys_cd if query_object.ssys_cd else True, BatchDatatypeLabelConfig.ssys_id == query_object.ssys_id if query_object.ssys_id else True,
).order_by(BatchDatatypeLabelConfig.upd_time.desc()) ).order_by(BatchDatatypeLabelConfig.upd_time.desc())
return await PageUtil.paginate(db, query, query_object.page_num, query_object.page_size, is_page) return await PageUtil.paginate(db, query, query_object.page_num, query_object.page_size, is_page)
@ -111,7 +108,8 @@ class BatchLabelConfigDAO:
@classmethod @classmethod
async def edit_datatype(cls, db: AsyncSession, onum: int, update_data: dict): async def edit_datatype(cls, db: AsyncSession, onum: int, update_data: dict):
await db.execute(update(BatchDatatypeLabelConfig).where(BatchDatatypeLabelConfig.onum == onum).values(**update_data)) await db.execute(
update(BatchDatatypeLabelConfig).where(BatchDatatypeLabelConfig.onum == onum).values(**update_data))
@classmethod @classmethod
async def delete_datatype(cls, db: AsyncSession, onum_list: list[int]): async def delete_datatype(cls, db: AsyncSession, onum_list: list[int]):

174
vue-fastapi-backend/module_admin/dao/meta_dao.py

@ -14,29 +14,28 @@ from datetime import datetime
class MetaDao: class MetaDao:
@classmethod @classmethod
async def get_meta_tab_clas(cls, db: AsyncSession, sysCode: str, mdlName: str, tabName: str): async def get_meta_tab_clas(cls, db: AsyncSession, sysId: int, mdlName: str, tabName: str):
query_result = ( query_result = (
( (
await db.execute( await db.execute(
select( select(
MetaBatchTabClas.onum, MetaBatchTabClas.onum,
MetaBatchTabClas.ssys_cd, MetaBatchTabClas.ssys_id,
MetaBatchTabClas.data_whs_name, MetaBatchTabClas.data_whs_name,
MetaBatchTabClas.mdl_name, MetaBatchTabClas.mdl_name,
MetaBatchTabClas.tab_no, MetaBatchTabClas.tab_no,
MetaBatchTabClas.tab_eng_name, MetaBatchTabClas.tab_eng_name,
MetaBatchTabClas.clas_onum, MetaBatchTabClas.clas_onum,
MetaBatchTabClas.clas_value, MetaBatchTabClas.clas_value,
MetadataClas.clas_pri_clas, MetadataClas.clas_tmpl,
MetadataClas.clas_scd_clas,
MetadataClas.clas_thre_clas,
MetadataClas.clas_eff_flag, MetadataClas.clas_eff_flag,
MetadataClas.rec_subm_prsn, MetadataClas.rec_subm_prsn,
MetadataClas.clas_name MetadataClas.clas_name,
MetadataClas.belt_batch_content,
).join( ).join(
MetadataClas, MetaBatchTabClas.clas_onum == MetadataClas.clas_onum MetadataClas, MetaBatchTabClas.clas_onum == MetadataClas.clas_onum
) )
.where(MetaBatchTabClas.ssys_cd == sysCode, .where(MetaBatchTabClas.ssys_id == sysId,
MetaBatchTabClas.mdl_name == mdlName, MetaBatchTabClas.mdl_name == mdlName,
MetaBatchTabClas.tab_eng_name == tabName).distinct() MetaBatchTabClas.tab_eng_name == tabName).distinct()
) )
@ -45,13 +44,13 @@ class MetaDao:
return query_result return query_result
@classmethod @classmethod
async def get_meta_fld_clas(cls, db: AsyncSession, sysCode: str, mdlName: str, tabName: str, fldName: str): async def get_meta_fld_clas(cls, db: AsyncSession, sysId: int, mdlName: str, tabName: str, fldName: str):
query_result = ( query_result = (
( (
await db.execute( await db.execute(
select( select(
MetaBatchFldClas.onum, MetaBatchFldClas.onum,
MetaBatchFldClas.ssys_cd, MetaBatchFldClas.ssys_id,
MetaBatchFldClas.data_whs_name, MetaBatchFldClas.data_whs_name,
MetaBatchFldClas.mdl_name, MetaBatchFldClas.mdl_name,
MetaBatchFldClas.tab_no, MetaBatchFldClas.tab_no,
@ -59,16 +58,15 @@ class MetaDao:
MetaBatchFldClas.fld_eng_name, MetaBatchFldClas.fld_eng_name,
MetaBatchFldClas.clas_onum, MetaBatchFldClas.clas_onum,
MetaBatchFldClas.clas_value, MetaBatchFldClas.clas_value,
MetadataClas.clas_pri_clas, MetadataClas.clas_tmpl,
MetadataClas.clas_scd_clas,
MetadataClas.clas_thre_clas,
MetadataClas.clas_eff_flag, MetadataClas.clas_eff_flag,
MetadataClas.rec_subm_prsn, MetadataClas.rec_subm_prsn,
MetadataClas.belt_batch_content,
MetadataClas.clas_name MetadataClas.clas_name
).join( ).join(
MetadataClas, MetaBatchFldClas.clas_onum == MetadataClas.clas_onum MetadataClas, MetaBatchFldClas.clas_onum == MetadataClas.clas_onum
) )
.where(MetaBatchFldClas.ssys_cd == sysCode, .where(MetaBatchFldClas.ssys_id == sysId,
MetaBatchFldClas.mdl_name == mdlName, MetaBatchFldClas.mdl_name == mdlName,
MetaBatchFldClas.tab_eng_name == tabName, MetaBatchFldClas.tab_eng_name == tabName,
MetaBatchFldClas.fld_eng_name == fldName).distinct() MetaBatchFldClas.fld_eng_name == fldName).distinct()
@ -88,7 +86,7 @@ class MetaDao:
MetadataExtractInfo.onum.label('extract_onum'), MetadataExtractInfo.onum.label('extract_onum'),
MetadataExtractInfo.extract_ver_num, MetadataExtractInfo.extract_ver_num,
MetadataExtractInfo.ver_desc.label('extract_ver_desc'), MetadataExtractInfo.ver_desc.label('extract_ver_desc'),
MetadataExtractInfo.ssys_cd, MetadataExtractInfo.ssys_id,
MetadataExtractInfo.data_whs_name, MetadataExtractInfo.data_whs_name,
MetadataExtractInfo.mdl_name, MetadataExtractInfo.mdl_name,
MetadataExtractInfo.tab_no, MetadataExtractInfo.tab_no,
@ -109,26 +107,26 @@ class MetaDao:
MetadataSuppInfo.upd_time.label('supp_upd_time'), MetadataSuppInfo.upd_time.label('supp_upd_time'),
).join(MetadataSuppInfo, ).join(MetadataSuppInfo,
and_( and_(
MetadataExtractInfo.ssys_cd == MetadataSuppInfo.ssys_cd, MetadataExtractInfo.ssys_id == MetadataSuppInfo.ssys_id,
MetadataExtractInfo.mdl_name == MetadataSuppInfo.mdl_name, MetadataExtractInfo.mdl_name == MetadataSuppInfo.mdl_name,
MetadataExtractInfo.tab_eng_name == MetadataSuppInfo.tab_eng_name MetadataExtractInfo.tab_eng_name == MetadataSuppInfo.tab_eng_name
), isouter=True) ), isouter=True)
.join( .join(
MetadataFldTabExtractInfo, MetadataFldTabExtractInfo,
and_( and_(
MetadataExtractInfo.ssys_cd == MetadataFldTabExtractInfo.ssys_cd, MetadataExtractInfo.ssys_id == MetadataFldTabExtractInfo.ssys_id,
MetadataExtractInfo.mdl_name == MetadataFldTabExtractInfo.mdl_name, MetadataExtractInfo.mdl_name == MetadataFldTabExtractInfo.mdl_name,
MetadataExtractInfo.tab_eng_name == MetadataFldTabExtractInfo.tab_eng_name MetadataExtractInfo.tab_eng_name == MetadataFldTabExtractInfo.tab_eng_name
), isouter=True) ), isouter=True)
.join( .join(
MetadataFldSuppInfo, MetadataFldSuppInfo,
and_( and_(
MetadataExtractInfo.ssys_cd == MetadataFldSuppInfo.ssys_cd, MetadataExtractInfo.ssys_id == MetadataFldSuppInfo.ssys_id,
MetadataExtractInfo.mdl_name == MetadataFldSuppInfo.mdl_name, MetadataExtractInfo.mdl_name == MetadataFldSuppInfo.mdl_name,
MetadataExtractInfo.tab_eng_name == MetadataFldSuppInfo.tab_eng_name MetadataExtractInfo.tab_eng_name == MetadataFldSuppInfo.tab_eng_name
), isouter=True) ), isouter=True)
.where( .where(
MetadataExtractInfo.ssys_cd == query_object.ssys_cd if query_object.ssys_cd else True, MetadataExtractInfo.ssys_id == query_object.ssys_id if query_object.ssys_id else True,
MetadataExtractInfo.mdl_name == query_object.mdl_name if query_object.mdl_name else True, MetadataExtractInfo.mdl_name == query_object.mdl_name if query_object.mdl_name else True,
or_(MetadataExtractInfo.tab_eng_name.like(f'%{query_object.tab_name}%'), or_(MetadataExtractInfo.tab_eng_name.like(f'%{query_object.tab_name}%'),
MetadataExtractInfo.tab_cn_name.like(f'%{query_object.tab_name}%'), MetadataExtractInfo.tab_cn_name.like(f'%{query_object.tab_name}%'),
@ -156,7 +154,7 @@ class MetaDao:
select( select(
MetadataFldTabExtractInfo.onum.label('extract_onum'), MetadataFldTabExtractInfo.onum.label('extract_onum'),
MetadataFldTabExtractInfo.extract_ver_num, MetadataFldTabExtractInfo.extract_ver_num,
MetadataFldTabExtractInfo.ssys_cd, MetadataFldTabExtractInfo.ssys_id,
MetadataFldTabExtractInfo.data_whs_name, MetadataFldTabExtractInfo.data_whs_name,
MetadataFldTabExtractInfo.mdl_name, MetadataFldTabExtractInfo.mdl_name,
MetadataFldTabExtractInfo.tab_no, MetadataFldTabExtractInfo.tab_no,
@ -186,7 +184,7 @@ class MetaDao:
.join( .join(
MetadataFldSuppInfo, MetadataFldSuppInfo,
and_( and_(
MetadataFldTabExtractInfo.ssys_cd == MetadataFldSuppInfo.ssys_cd, MetadataFldTabExtractInfo.ssys_id == MetadataFldSuppInfo.ssys_id,
MetadataFldTabExtractInfo.mdl_name == MetadataFldSuppInfo.mdl_name, MetadataFldTabExtractInfo.mdl_name == MetadataFldSuppInfo.mdl_name,
MetadataFldTabExtractInfo.tab_eng_name == MetadataFldSuppInfo.tab_eng_name, MetadataFldTabExtractInfo.tab_eng_name == MetadataFldSuppInfo.tab_eng_name,
MetadataFldTabExtractInfo.fld_eng_name == MetadataFldSuppInfo.fld_eng_name MetadataFldTabExtractInfo.fld_eng_name == MetadataFldSuppInfo.fld_eng_name
@ -197,7 +195,7 @@ class MetaDao:
DataStdDict.onum == MetadataFldSuppInfo.data_dict_id DataStdDict.onum == MetadataFldSuppInfo.data_dict_id
), isouter=True ), isouter=True
).where( ).where(
MetadataFldTabExtractInfo.ssys_cd == query_object.ssys_cd, MetadataFldTabExtractInfo.ssys_id == query_object.ssys_id,
MetadataFldTabExtractInfo.mdl_name == query_object.mdl_name, MetadataFldTabExtractInfo.mdl_name == query_object.mdl_name,
MetadataFldTabExtractInfo.tab_eng_name == query_object.tab_name MetadataFldTabExtractInfo.tab_eng_name == query_object.tab_name
).distinct().order_by(MetadataFldTabExtractInfo.fld_no) ).distinct().order_by(MetadataFldTabExtractInfo.fld_no)
@ -218,11 +216,11 @@ class MetaDao:
return query_result return query_result
@classmethod @classmethod
async def get_lastest_meta_data_supp_vett(cls, db: AsyncSession, ssys_cd: str, mdl_name: str, tab_eng_name: str): async def get_lastest_meta_data_supp_vett(cls, db: AsyncSession, ssys_id: int, mdl_name: str, tab_eng_name: str):
query_result = ( query_result = (
( (
await db.execute( await db.execute(
select(MetadataSuppInfoVett).where(MetadataSuppInfoVett.ssys_cd == ssys_cd, select(MetadataSuppInfoVett).where(MetadataSuppInfoVett.ssys_id == ssys_id,
MetadataSuppInfoVett.mdl_name == mdl_name, MetadataSuppInfoVett.mdl_name == mdl_name,
MetadataSuppInfoVett.tab_eng_name == tab_eng_name) MetadataSuppInfoVett.tab_eng_name == tab_eng_name)
.order_by(desc(MetadataSuppInfoVett.apply_time)) .order_by(desc(MetadataSuppInfoVett.apply_time))
@ -251,7 +249,7 @@ class MetaDao:
async def insertMetadataSuppInfo(cls, table: MetadataSuppInfoVett, db: AsyncSession): async def insertMetadataSuppInfo(cls, table: MetadataSuppInfoVett, db: AsyncSession):
suppTable = MetadataSuppInfo() suppTable = MetadataSuppInfo()
suppTable.onum = uuid.uuid4() suppTable.onum = uuid.uuid4()
suppTable.ssys_cd = table.ssys_cd suppTable.ssys_id = table.ssys_id
suppTable.mdl_name = table.mdl_name suppTable.mdl_name = table.mdl_name
suppTable.tab_eng_name = table.tab_eng_name suppTable.tab_eng_name = table.tab_eng_name
suppTable.tab_crrct_name = table.tab_crrct_name suppTable.tab_crrct_name = table.tab_crrct_name
@ -304,7 +302,7 @@ class MetaDao:
MetadataFldSuppInfoVett.data_dict_id == DataStdDict.onum, # 假设关联条件 MetadataFldSuppInfoVett.data_dict_id == DataStdDict.onum, # 假设关联条件
isouter=True, # 可选,是否左连接 isouter=True, # 可选,是否左连接
).where( ).where(
MetadataFldSuppInfoVett.ssys_cd == tableInfo.ssys_cd, MetadataFldSuppInfoVett.ssys_id == tableInfo.ssys_id,
MetadataFldSuppInfoVett.mdl_name == tableInfo.mdl_name, MetadataFldSuppInfoVett.mdl_name == tableInfo.mdl_name,
MetadataFldSuppInfoVett.tab_eng_name == tableInfo.tab_eng_name, MetadataFldSuppInfoVett.tab_eng_name == tableInfo.tab_eng_name,
MetadataFldSuppInfoVett.apply_time == tableInfo.apply_time MetadataFldSuppInfoVett.apply_time == tableInfo.apply_time
@ -319,7 +317,7 @@ class MetaDao:
result.append({ result.append({
"onum": vett_info.onum, "onum": vett_info.onum,
"crrct_ver_num": vett_info.crrct_ver_num, "crrct_ver_num": vett_info.crrct_ver_num,
"ssys_cd": vett_info.ssys_cd, "ssys_id": vett_info.ssys_id,
"mdl_name": vett_info.mdl_name, "mdl_name": vett_info.mdl_name,
"tab_eng_name": vett_info.tab_eng_name, "tab_eng_name": vett_info.tab_eng_name,
"fld_eng_name": vett_info.fld_eng_name, "fld_eng_name": vett_info.fld_eng_name,
@ -342,11 +340,11 @@ class MetaDao:
return result return result
@classmethod @classmethod
async def get_supp_table_by_vett(cls, sysCode: str, mdlName: str, tableName: str, db: AsyncSession): async def get_supp_table_by_vett(cls, ssys_id: int, mdlName: str, tableName: str, db: AsyncSession):
query_result = ( query_result = (
( (
await db.execute( await db.execute(
select(MetadataSuppInfo).where(MetadataSuppInfo.ssys_cd == sysCode, select(MetadataSuppInfo).where(MetadataSuppInfo.ssys_id == ssys_id,
MetadataSuppInfo.mdl_name == mdlName, MetadataSuppInfo.mdl_name == mdlName,
MetadataSuppInfo.tab_eng_name == tableName).distinct() MetadataSuppInfo.tab_eng_name == tableName).distinct()
) )
@ -355,11 +353,11 @@ class MetaDao:
return query_result return query_result
@classmethod @classmethod
async def get_meta_table(cls, sysCode: str, mdlName: str, tableName: str, db: AsyncSession): async def get_meta_table(cls, ssys_id: int, mdlName: str, tableName: str, db: AsyncSession):
query_result = ( query_result = (
( (
await db.execute( await db.execute(
select(MetadataExtractInfo).where(MetadataExtractInfo.ssys_cd == sysCode, select(MetadataExtractInfo).where(MetadataExtractInfo.ssys_id == ssys_id,
MetadataExtractInfo.mdl_name == mdlName, MetadataExtractInfo.mdl_name == mdlName,
MetadataExtractInfo.tab_eng_name == tableName).distinct() MetadataExtractInfo.tab_eng_name == tableName).distinct()
) )
@ -401,7 +399,7 @@ class MetaDao:
async def insertMetadataFldSuppInfo(cls, column: MetadataFldSuppInfoVett, db: AsyncSession): async def insertMetadataFldSuppInfo(cls, column: MetadataFldSuppInfoVett, db: AsyncSession):
suppColumn = MetadataFldSuppInfo() suppColumn = MetadataFldSuppInfo()
suppColumn.onum = uuid.uuid4() suppColumn.onum = uuid.uuid4()
suppColumn.ssys_cd = column.ssys_cd suppColumn.ssys_id = column.ssys_id
suppColumn.mdl_name = column.mdl_name suppColumn.mdl_name = column.mdl_name
suppColumn.tab_eng_name = column.tab_eng_name suppColumn.tab_eng_name = column.tab_eng_name
suppColumn.fld_eng_name = column.fld_eng_name suppColumn.fld_eng_name = column.fld_eng_name
@ -421,7 +419,7 @@ class MetaDao:
@classmethod @classmethod
async def get_meta_col_supp_vett(cls, table: MetadataSuppInfoVett, db: AsyncSession): async def get_meta_col_supp_vett(cls, table: MetadataSuppInfoVett, db: AsyncSession):
sql_query = text("select max(apply_time) from t_metadata_fld_supp_info_vett where ssys_cd ='" + table.ssys_cd + sql_query = text("select max(apply_time) from t_metadata_fld_supp_info_vett where ssys_id ='" + table.ssys_id +
"' and mdl_name = '" + table.mdl_name + "' and tab_eng_name = '" + table.tab_eng_name + "' and mdl_name = '" + table.mdl_name + "' and tab_eng_name = '" + table.tab_eng_name +
"'") "'")
maxTime = (await db.execute(sql_query)).scalar() maxTime = (await db.execute(sql_query)).scalar()
@ -430,7 +428,7 @@ class MetaDao:
( (
await db.execute( await db.execute(
select(MetadataFldSuppInfoVett) select(MetadataFldSuppInfoVett)
.where(MetadataFldSuppInfoVett.ssys_cd == table.ssys_cd, .where(MetadataFldSuppInfoVett.ssys_id == table.ssys_id,
MetadataFldSuppInfoVett.mdl_name == table.mdl_name, MetadataFldSuppInfoVett.mdl_name == table.mdl_name,
MetadataFldSuppInfoVett.tab_eng_name == table.tab_eng_name, MetadataFldSuppInfoVett.tab_eng_name == table.tab_eng_name,
MetadataFldSuppInfoVett.apply_time == maxTime).distinct() MetadataFldSuppInfoVett.apply_time == maxTime).distinct()
@ -445,7 +443,7 @@ class MetaDao:
( (
await db.execute( await db.execute(
select(MetadataFldSuppInfo) select(MetadataFldSuppInfo)
.where(MetadataFldSuppInfo.ssys_cd == column.ssys_cd, .where(MetadataFldSuppInfo.ssys_id == column.ssys_id,
MetadataFldSuppInfo.mdl_name == column.mdl_name, MetadataFldSuppInfo.mdl_name == column.mdl_name,
MetadataFldSuppInfo.tab_eng_name == column.tab_eng_name, MetadataFldSuppInfo.tab_eng_name == column.tab_eng_name,
MetadataFldSuppInfo.fld_eng_name == column.fld_eng_name).distinct() MetadataFldSuppInfo.fld_eng_name == column.fld_eng_name).distinct()
@ -455,12 +453,12 @@ class MetaDao:
return query_result return query_result
@classmethod @classmethod
async def get_supp_column_by_columnInfo(cls, sysCode, mdlName, tabEngName, fldEngName, db: AsyncSession): async def get_supp_column_by_columnInfo(cls, ssys_id: int, mdlName: str, tabEngName: str, fldEngName: str, db: AsyncSession):
query_result = ( query_result = (
( (
await db.execute( await db.execute(
select(MetadataFldSuppInfo) select(MetadataFldSuppInfo)
.where(MetadataFldSuppInfo.ssys_cd == sysCode, .where(MetadataFldSuppInfo.ssys_id == ssys_id,
MetadataFldSuppInfo.mdl_name == mdlName, MetadataFldSuppInfo.mdl_name == mdlName,
MetadataFldSuppInfo.tab_eng_name == tabEngName, MetadataFldSuppInfo.tab_eng_name == tabEngName,
MetadataFldSuppInfo.fld_eng_name == fldEngName).distinct() MetadataFldSuppInfo.fld_eng_name == fldEngName).distinct()
@ -471,12 +469,12 @@ class MetaDao:
return query_result return query_result
@classmethod @classmethod
async def get_meta_column(cls, sysCode, mdlName, tabEngName, fldEngName, db: AsyncSession): async def get_meta_column(cls, ssys_id: int, mdlName: str, tabEngName: str, fldEngName: str, db: AsyncSession):
query_result = ( query_result = (
( (
await db.execute( await db.execute(
select(MetadataFldTabExtractInfo) select(MetadataFldTabExtractInfo)
.where(MetadataFldTabExtractInfo.ssys_cd == sysCode, .where(MetadataFldTabExtractInfo.ssys_id == ssys_id,
MetadataFldTabExtractInfo.mdl_name == mdlName, MetadataFldTabExtractInfo.mdl_name == mdlName,
MetadataFldTabExtractInfo.tab_eng_name == tabEngName, MetadataFldTabExtractInfo.tab_eng_name == tabEngName,
MetadataFldTabExtractInfo.fld_eng_name == fldEngName).distinct() MetadataFldTabExtractInfo.fld_eng_name == fldEngName).distinct()
@ -498,7 +496,7 @@ class MetaDao:
MetadataExtractInfo.onum.label('extract_onum'), MetadataExtractInfo.onum.label('extract_onum'),
MetadataExtractInfo.extract_ver_num, MetadataExtractInfo.extract_ver_num,
MetadataExtractInfo.ver_desc.label('extract_ver_desc'), MetadataExtractInfo.ver_desc.label('extract_ver_desc'),
MetadataExtractInfo.ssys_cd, MetadataExtractInfo.ssys_id,
MetadataExtractInfo.data_whs_name, MetadataExtractInfo.data_whs_name,
MetadataExtractInfo.mdl_name, MetadataExtractInfo.mdl_name,
MetadataExtractInfo.tab_no, MetadataExtractInfo.tab_no,
@ -519,21 +517,21 @@ class MetaDao:
MetadataSuppInfo.upd_time.label('supp_upd_time'), MetadataSuppInfo.upd_time.label('supp_upd_time'),
).join(MetadataSuppInfo, ).join(MetadataSuppInfo,
and_( and_(
MetadataExtractInfo.ssys_cd == MetadataSuppInfo.ssys_cd, MetadataExtractInfo.ssys_id == MetadataSuppInfo.ssys_id,
MetadataExtractInfo.mdl_name == MetadataSuppInfo.mdl_name, MetadataExtractInfo.mdl_name == MetadataSuppInfo.mdl_name,
MetadataExtractInfo.tab_eng_name == MetadataSuppInfo.tab_eng_name MetadataExtractInfo.tab_eng_name == MetadataSuppInfo.tab_eng_name
), isouter=True) ), isouter=True)
.join( .join(
MetadataFldTabExtractInfo, MetadataFldTabExtractInfo,
and_( and_(
MetadataExtractInfo.ssys_cd == MetadataFldTabExtractInfo.ssys_cd, MetadataExtractInfo.ssys_id == MetadataFldTabExtractInfo.ssys_id,
MetadataExtractInfo.mdl_name == MetadataFldTabExtractInfo.mdl_name, MetadataExtractInfo.mdl_name == MetadataFldTabExtractInfo.mdl_name,
MetadataExtractInfo.tab_eng_name == MetadataFldTabExtractInfo.tab_eng_name MetadataExtractInfo.tab_eng_name == MetadataFldTabExtractInfo.tab_eng_name
), isouter=True) ), isouter=True)
.join( .join(
MetadataFldSuppInfo, MetadataFldSuppInfo,
and_( and_(
MetadataExtractInfo.ssys_cd == MetadataFldSuppInfo.ssys_cd, MetadataExtractInfo.ssys_id == MetadataFldSuppInfo.ssys_id,
MetadataExtractInfo.mdl_name == MetadataFldSuppInfo.mdl_name, MetadataExtractInfo.mdl_name == MetadataFldSuppInfo.mdl_name,
MetadataExtractInfo.tab_eng_name == MetadataFldSuppInfo.tab_eng_name MetadataExtractInfo.tab_eng_name == MetadataFldSuppInfo.tab_eng_name
), isouter=True) ), isouter=True)
@ -544,14 +542,14 @@ class MetaDao:
return CamelCaseUtil.transform_result(result) return CamelCaseUtil.transform_result(result)
@classmethod @classmethod
async def get_meta_table_cn_name(cls, db: AsyncSession, sysCode, mdlName, tabEngName): async def get_meta_table_cn_name(cls, db: AsyncSession, ssys_id: int, mdlName: str, tabEngName: str):
sql = text("select case when a.tab_cn_name is null then b.tab_crrct_name" sql = text("select case when a.tab_cn_name is null then b.tab_crrct_name"
" when a.tab_cn_name is not null then a.tab_cn_name end as tab_cn_name" " when a.tab_cn_name is not null then a.tab_cn_name end as tab_cn_name"
" from t_metadata_extract_info a " " from t_metadata_extract_info a "
"left join t_metadata_supp_info b " "left join t_metadata_supp_info b "
"on a.ssys_cd = b.ssys_cd and a.mdl_name=b.mdl_name and a.tab_eng_name=b.tab_crrct_name " "on a.ssys_id = b.ssys_id and a.mdl_name=b.mdl_name and a.tab_eng_name=b.tab_crrct_name "
"where a.ssys_cd = :sysCode and a.mdl_name = :mdlName and a.tab_eng_name = :tabEngName") "where a.ssys_id = :ssys_id and a.mdl_name = :mdlName and a.tab_eng_name = :tabEngName")
result = (await db.execute(sql, {"sysCode": sysCode, "mdlName": mdlName, "tabEngName": tabEngName})) result = (await db.execute(sql, {"ssys_id": ssys_id, "mdlName": mdlName, "tabEngName": tabEngName}))
return result.first().tab_cn_name return result.first().tab_cn_name
@ -561,7 +559,7 @@ class MetaDao:
( (
await db.execute( await db.execute(
select( select(
MetadataFldTabExtractInfo.ssys_cd, MetadataFldTabExtractInfo.ssys_id,
MetadataFldTabExtractInfo.mdl_name, MetadataFldTabExtractInfo.mdl_name,
MetadataFldTabExtractInfo.tab_eng_name, MetadataFldTabExtractInfo.tab_eng_name,
MetadataFldTabExtractInfo.fld_eng_name, MetadataFldTabExtractInfo.fld_eng_name,
@ -570,7 +568,7 @@ class MetaDao:
MetadataFldTabExtractInfo.pk_flag, MetadataFldTabExtractInfo.pk_flag,
MetadataFldTabExtractInfo.fld_no MetadataFldTabExtractInfo.fld_no
).where( ).where(
MetadataFldTabExtractInfo.ssys_cd == query_object.ssys_cd, MetadataFldTabExtractInfo.ssys_id == query_object.ssys_id,
MetadataFldTabExtractInfo.mdl_name == query_object.mdl_name, MetadataFldTabExtractInfo.mdl_name == query_object.mdl_name,
MetadataFldTabExtractInfo.tab_eng_name == query_object.tab_name MetadataFldTabExtractInfo.tab_eng_name == query_object.tab_name
).distinct().order_by(MetadataFldTabExtractInfo.fld_no) ).distinct().order_by(MetadataFldTabExtractInfo.fld_no)
@ -580,18 +578,18 @@ class MetaDao:
return [row._asdict() for row in query_result] return [row._asdict() for row in query_result]
@classmethod @classmethod
async def get_er_relation_by_table(cls, result_db: AsyncSession, ssys_cd: str, mdl_name: str, tab_eng_name: str): async def get_er_relation_by_table(cls, result_db: AsyncSession, ssys_id: int, mdl_name: str, tab_eng_name: str):
sql = text("with tmp as (select a1.*,row_number()over(partition by b_ssys_cd,b_mdl_name,b_tab_eng_name," sql = text("with tmp as (select a1.*,row_number()over(partition by b_ssys_id,b_mdl_name,b_tab_eng_name,"
"b_fld_eng_name order by concat(op_relation,',',jd_relation) desc) as rn " "b_fld_eng_name order by concat(op_relation,',',jd_relation) desc) as rn "
"from t_batch_er_relation_step1 a1)select a1.*,'A' AS father from tmp a1 where a1.rn = 1 " "from t_batch_er_relation_step1 a1)select a1.*,'A' AS father from tmp a1 where a1.rn = 1 "
" and a1.a_ssys_cd = :sysCode and a1.a_mdl_name = :mdlName and a1.a_tab_eng_name = :tabName") " and a1.a_ssys_id = :ssys_id and a1.a_mdl_name = :mdlName and a1.a_tab_eng_name = :tabName")
sql2 = text("with tmp as (select a1.*,row_number()over(partition by b_ssys_cd,b_mdl_name,b_tab_eng_name," sql2 = text("with tmp as (select a1.*,row_number()over(partition by b_ssys_id,b_mdl_name,b_tab_eng_name,"
"b_fld_eng_name order by concat(op_relation,',',jd_relation) desc) as rn " "b_fld_eng_name order by concat(op_relation,',',jd_relation) desc) as rn "
"from t_batch_er_relation_step1 a1)select a1.*,'A' AS father from tmp a1 where a1.rn = 1 " "from t_batch_er_relation_step1 a1)select a1.*,'A' AS father from tmp a1 where a1.rn = 1 "
" and a1.b_ssys_cd = :sysCode and a1.b_mdl_name = :mdlName and a1.b_tab_eng_name = :tabName") " and a1.b_ssys_id = :ssys_id and a1.b_mdl_name = :mdlName and a1.b_tab_eng_name = :tabName")
result = (await result_db.execute(sql, {"sysCode": ssys_cd, result = (await result_db.execute(sql, {"ssys_id": ssys_id,
"mdlName": mdl_name, "tabName": tab_eng_name})) "mdlName": mdl_name, "tabName": tab_eng_name}))
result2 = (await result_db.execute(sql2, {"sysCode": ssys_cd, result2 = (await result_db.execute(sql2, {"ssys_id": ssys_id,
"mdlName": mdl_name, "tabName": tab_eng_name})) "mdlName": mdl_name, "tabName": tab_eng_name}))
# 获取列名 # 获取列名
columns = result.keys() # 返回列名列表 columns = result.keys() # 返回列名列表
@ -604,28 +602,28 @@ class MetaDao:
return result3 return result3
@classmethod @classmethod
async def get_op_relation_by_table(cls, result_db: AsyncSession, ssys_cd: str, mdl_name: str, tab_eng_name: str): async def get_op_relation_by_table(cls, result_db: AsyncSession, ssys_id: int, mdl_name: str, tab_eng_name: str):
sql = text("select a1.* ,case when a2.rela_value = '1' then 'A' when a2.rela_value = '2' then 'B' end as father" sql = text("select a1.* ,case when a2.rela_value = '1' then 'A' when a2.rela_value = '2' then 'B' end as father"
" from (select distinct a_ssys_cd ,a_mdl_name ,a_tab_eng_name ,a_fld_eng_name ,b_ssys_cd,b_mdl_name," " from (select distinct a_ssys_id ,a_mdl_name ,a_tab_eng_name ,a_fld_eng_name ,b_ssys_id,b_mdl_name,"
"b_tab_eng_name ,b_fld_eng_name from ( select a_ssys_cd ,a_mdl_name ,a_tab_eng_name ,a_fld_eng_name," "b_tab_eng_name ,b_fld_eng_name from ( select a_ssys_id ,a_mdl_name ,a_tab_eng_name ,a_fld_eng_name,"
"b_ssys_cd,b_mdl_name ,b_tab_eng_name ,b_fld_eng_name from t_batch_fld_relation " "b_ssys_id,b_mdl_name ,b_tab_eng_name ,b_fld_eng_name from t_batch_fld_relation "
"where rela_type in ('jd_relation','op_relation') and rela_value not in ('0') union all " "where rela_type in ('jd_relation','op_relation') and rela_value not in ('0') union all "
"SELECT a_ssys_cd ,a_mdl_name ,a_tab_eng_name ,a_fld_eng_name ,b_ssys_cd ,b_mdl_name,b_tab_eng_name," "SELECT a_ssys_id ,a_mdl_name ,a_tab_eng_name ,a_fld_eng_name ,b_ssys_id ,b_mdl_name,b_tab_eng_name,"
"b_fld_eng_name FROM t_batch_fld_relation t ,JSON_TABLE(replace(t.rela_value,'''','\"'),'$[*]' " "b_fld_eng_name FROM t_batch_fld_relation t ,JSON_TABLE(replace(t.rela_value,'''','\"'),'$[*]' "
"COLUMNS (value_num DOUBLE PATH '$.value')) AS j group by a_ssys_cd ,a_mdl_name ,a_tab_eng_name ," "COLUMNS (value_num DOUBLE PATH '$.value')) AS j group by a_ssys_id ,a_mdl_name ,a_tab_eng_name ,"
"a_fld_eng_name ,b_ssys_cd ,b_mdl_name ,b_tab_eng_name ,b_fld_eng_name " "a_fld_eng_name ,b_ssys_id ,b_mdl_name ,b_tab_eng_name ,b_fld_eng_name "
"having max(j.value_num) > 0.1) b1 ) a1 left join t_batch_fld_relation a2 " "having max(j.value_num) > 0.1) b1 ) a1 left join t_batch_fld_relation a2 "
"on a1.a_ssys_cd = a2.a_ssys_cd and a1.a_mdl_name = a2.a_mdl_name " "on a1.a_ssys_id = a2.a_ssys_id and a1.a_mdl_name = a2.a_mdl_name "
"and a1.a_tab_eng_name = a2.a_tab_eng_name and a1.a_fld_eng_name = a2.a_fld_eng_name " "and a1.a_tab_eng_name = a2.a_tab_eng_name and a1.a_fld_eng_name = a2.a_fld_eng_name "
"and a1.b_ssys_cd = a2.b_ssys_cd and a1.b_mdl_name = a2.b_mdl_name " "and a1.b_ssys_id = a2.b_ssys_id and a1.b_mdl_name = a2.b_mdl_name "
"and a1.b_tab_eng_name = a2.b_tab_eng_name and a1.b_fld_eng_name = a2.b_fld_eng_name " "and a1.b_tab_eng_name = a2.b_tab_eng_name and a1.b_fld_eng_name = a2.b_fld_eng_name "
"and a2.rela_type = 'set_flag' left join t_batch_fld_clas a4 on a1.a_ssys_cd = a4.ssys_cd " "and a2.rela_type = 'set_flag' left join t_batch_fld_clas a4 on a1.a_ssys_id = a4.ssys_id "
"and a1.a_mdl_name = a4.mdl_name and a1.a_tab_eng_name = a4.tab_eng_name " "and a1.a_mdl_name = a4.mdl_name and a1.a_tab_eng_name = a4.tab_eng_name "
"and a1.a_fld_eng_name = a4.fld_eng_name and a4.clas_onum = '2001001002' " "and a1.a_fld_eng_name = a4.fld_eng_name and a4.clas_onum = '2001001002' "
"where coalesce(a4.clas_value,' ') <> '日期时间类'" "where coalesce(a4.clas_value,' ') <> '日期时间类'"
" and ((a1.a_ssys_cd = :sysCode and a1.a_mdl_name = :mdlName and a1.a_tab_eng_name = :tabName) " " and ((a1.a_ssys_id = :ssys_id and a1.a_mdl_name = :mdlName and a1.a_tab_eng_name = :tabName) "
" or (a1.b_ssys_cd = :sysCode and a1.b_mdl_name = :mdlName and a1.b_tab_eng_name = :tabName))") " or (a1.b_ssys_id = :ssys_id and a1.b_mdl_name = :mdlName and a1.b_tab_eng_name = :tabName))")
result = (await result_db.execute(sql, {"sysCode": ssys_cd, result = (await result_db.execute(sql, {"ssys_id": ssys_id,
"mdlName": mdl_name, "tabName": tab_eng_name})) "mdlName": mdl_name, "tabName": tab_eng_name}))
# 获取列名 # 获取列名
columns = result.keys() # 返回列名列表 columns = result.keys() # 返回列名列表
@ -637,18 +635,18 @@ class MetaDao:
@classmethod @classmethod
async def get_er_relation_by_column(cls, result_db: AsyncSession, column: {}, module: str): async def get_er_relation_by_column(cls, result_db: AsyncSession, column: {}, module: str):
if module == 'pre': if module == 'pre':
sql = text("with tmp as (select a1.*,row_number()over(partition by b_ssys_cd,b_mdl_name,b_tab_eng_name," sql = text("with tmp as (select a1.*,row_number()over(partition by b_ssys_id,b_mdl_name,b_tab_eng_name,"
"b_fld_eng_name order by concat(op_relation,',',jd_relation) desc) as rn " "b_fld_eng_name order by concat(op_relation,',',jd_relation) desc) as rn "
"from t_batch_er_relation_step1 a1)select a1.*,'A' AS father from tmp a1 where a1.rn = 1 " "from t_batch_er_relation_step1 a1)select a1.*,'A' AS father from tmp a1 where a1.rn = 1 "
"and a1.b_ssys_cd = :sysCode and a1.b_mdl_name = :mdlName " "and a1.b_ssys_id = :ssys_id and a1.b_mdl_name = :mdlName "
"and a1.b_tab_eng_name = :tabName and a1.b_fld_eng_name = :fldName ") "and a1.b_tab_eng_name = :tabName and a1.b_fld_eng_name = :fldName ")
else: else:
sql = text("with tmp as (select a1.*,row_number()over(partition by b_ssys_cd,b_mdl_name,b_tab_eng_name," sql = text("with tmp as (select a1.*,row_number()over(partition by b_ssys_id,b_mdl_name,b_tab_eng_name,"
"b_fld_eng_name order by concat(op_relation,',',jd_relation) desc) as rn " "b_fld_eng_name order by concat(op_relation,',',jd_relation) desc) as rn "
"from t_batch_er_relation_step1 a1)select a1.*,'A' AS father from tmp a1 where a1.rn = 1 " "from t_batch_er_relation_step1 a1)select a1.*,'A' AS father from tmp a1 where a1.rn = 1 "
"and a1.a_ssys_cd = :sysCode and a1.a_mdl_name = :mdlName " "and a1.a_ssys_id = :ssys_id and a1.a_mdl_name = :mdlName "
"and a1.a_tab_eng_name = :tabName and a1.a_fld_eng_name = :fldName ") "and a1.a_tab_eng_name = :tabName and a1.a_fld_eng_name = :fldName ")
result = (await result_db.execute(sql, {"sysCode": column['ssys_cd'], result = (await result_db.execute(sql, {"ssys_id": column['ssys_id'],
"mdlName": column['mdl_name'], "tabName": column['tab_eng_name'], "mdlName": column['mdl_name'], "tabName": column['tab_eng_name'],
"fldName": column['fld_eng_name'] "fldName": column['fld_eng_name']
})) }))
@ -661,28 +659,28 @@ class MetaDao:
@classmethod @classmethod
async def get_op_relation_by_column(cls, result_db: AsyncSession, column: {}, module: str): async def get_op_relation_by_column(cls, result_db: AsyncSession, column: {}, module: str):
sql = text("select a1.* ,case when a2.rela_value = '1' then 'A' when a2.rela_value = '2' then 'B' end as father" sql = text("select a1.* ,case when a2.rela_value = '1' then 'A' when a2.rela_value = '2' then 'B' end as father"
" from (select distinct a_ssys_cd ,a_mdl_name ,a_tab_eng_name ,a_fld_eng_name ,b_ssys_cd,b_mdl_name," " from (select distinct a_ssys_id ,a_mdl_name ,a_tab_eng_name ,a_fld_eng_name ,b_ssys_id,b_mdl_name,"
"b_tab_eng_name ,b_fld_eng_name from ( select a_ssys_cd ,a_mdl_name ,a_tab_eng_name ,a_fld_eng_name," "b_tab_eng_name ,b_fld_eng_name from ( select a_ssys_id ,a_mdl_name ,a_tab_eng_name ,a_fld_eng_name,"
"b_ssys_cd,b_mdl_name ,b_tab_eng_name ,b_fld_eng_name from t_batch_fld_relation " "b_ssys_id,b_mdl_name ,b_tab_eng_name ,b_fld_eng_name from t_batch_fld_relation "
"where rela_type in ('jd_relation','op_relation') and rela_value not in ('0') union all " "where rela_type in ('jd_relation','op_relation') and rela_value not in ('0') union all "
"SELECT a_ssys_cd ,a_mdl_name ,a_tab_eng_name ,a_fld_eng_name ,b_ssys_cd ,b_mdl_name,b_tab_eng_name," "SELECT a_ssys_id ,a_mdl_name ,a_tab_eng_name ,a_fld_eng_name ,b_ssys_id ,b_mdl_name,b_tab_eng_name,"
"b_fld_eng_name FROM t_batch_fld_relation t ,JSON_TABLE(replace(t.rela_value,'''','\"'),'$[*]' " "b_fld_eng_name FROM t_batch_fld_relation t ,JSON_TABLE(replace(t.rela_value,'''','\"'),'$[*]' "
"COLUMNS (value_num DOUBLE PATH '$.value')) AS j group by a_ssys_cd ,a_mdl_name ,a_tab_eng_name ," "COLUMNS (value_num DOUBLE PATH '$.value')) AS j group by a_ssys_id ,a_mdl_name ,a_tab_eng_name ,"
"a_fld_eng_name ,b_ssys_cd ,b_mdl_name ,b_tab_eng_name ,b_fld_eng_name " "a_fld_eng_name ,b_ssys_id ,b_mdl_name ,b_tab_eng_name ,b_fld_eng_name "
"having max(j.value_num) > 0.1) b1 ) a1 left join t_batch_fld_relation a2 " "having max(j.value_num) > 0.1) b1 ) a1 left join t_batch_fld_relation a2 "
"on a1.a_ssys_cd = a2.a_ssys_cd and a1.a_mdl_name = a2.a_mdl_name " "on a1.a_ssys_id = a2.a_ssys_id and a1.a_mdl_name = a2.a_mdl_name "
"and a1.a_tab_eng_name = a2.a_tab_eng_name and a1.a_fld_eng_name = a2.a_fld_eng_name " "and a1.a_tab_eng_name = a2.a_tab_eng_name and a1.a_fld_eng_name = a2.a_fld_eng_name "
"and a1.b_ssys_cd = a2.b_ssys_cd and a1.b_mdl_name = a2.b_mdl_name " "and a1.b_ssys_id = a2.b_ssys_id and a1.b_mdl_name = a2.b_mdl_name "
"and a1.b_tab_eng_name = a2.b_tab_eng_name and a1.b_fld_eng_name = a2.b_fld_eng_name " "and a1.b_tab_eng_name = a2.b_tab_eng_name and a1.b_fld_eng_name = a2.b_fld_eng_name "
"and a2.rela_type = 'set_flag' left join t_batch_fld_clas a4 on a1.a_ssys_cd = a4.ssys_cd " "and a2.rela_type = 'set_flag' left join t_batch_fld_clas a4 on a1.a_ssys_id = a4.ssys_id "
"and a1.a_mdl_name = a4.mdl_name and a1.a_tab_eng_name = a4.tab_eng_name " "and a1.a_mdl_name = a4.mdl_name and a1.a_tab_eng_name = a4.tab_eng_name "
"and a1.a_fld_eng_name = a4.fld_eng_name and a4.clas_onum = '2001001002' " "and a1.a_fld_eng_name = a4.fld_eng_name and a4.clas_onum = '2001001002' "
"where coalesce(a4.clas_value,' ') <> '日期时间类'" "where coalesce(a4.clas_value,' ') <> '日期时间类'"
"and ((a1.a_ssys_cd = :sysCode and a1.a_mdl_name = :mdlName and a1.a_tab_eng_name = :tabName " "and ((a1.a_ssys_id = :ssys_id and a1.a_mdl_name = :mdlName and a1.a_tab_eng_name = :tabName "
" and a1.a_fld_eng_name = :fldName and a2.rela_value = :rela_value) " " and a1.a_fld_eng_name = :fldName and a2.rela_value = :rela_value) "
" or (a1.b_ssys_cd = :sysCode and a1.b_mdl_name = :mdlName and a1.b_tab_eng_name = :tabName " " or (a1.b_ssys_id = :ssys_id and a1.b_mdl_name = :mdlName and a1.b_tab_eng_name = :tabName "
" and a1.b_fld_eng_name = :fldName and a2.rela_value = :rela_value2))") " and a1.b_fld_eng_name = :fldName and a2.rela_value = :rela_value2))")
result = (await result_db.execute(sql, {"sysCode": column['ssys_cd'], result = (await result_db.execute(sql, {"ssys_id": column['ssys_id'],
"mdlName": column['mdl_name'], "tabName": column['tab_eng_name'], "mdlName": column['mdl_name'], "tabName": column['tab_eng_name'],
"fldName": column['fld_eng_name'], "fldName": column['fld_eng_name'],
"rela_value": '2' if module == 'pre' else '1', "rela_value": '2' if module == 'pre' else '1',
@ -696,12 +694,12 @@ class MetaDao:
return result_as_dict return result_as_dict
@classmethod @classmethod
async def get_proc_by_table(cls, result_db: AsyncSession, ssys_cd: str, mdl_name: str, tab_eng_name: str): async def get_proc_by_table(cls, result_db: AsyncSession, ssys_id: int, mdl_name: str, tab_eng_name: str):
sql = text("select onum, proc_text from t_metadata_data_lineage_info" sql = text("select onum, proc_text from t_metadata_data_lineage_info"
" where onum in (" " where onum in ("
"select proId from meta_blood_analysis " "select proId from meta_blood_analysis "
"where targetSysCd = :ssysCd and targetMdlName = :mdlName and targetTableName= :tableName)") "where targetSysId = :ssys_id and targetMdlName = :mdlName and targetTableName= :tableName)")
result = (await result_db.execute(sql, {"ssysCd": ssys_cd, "mdlName": mdl_name, "tableName": tab_eng_name})) result = (await result_db.execute(sql, {"ssys_id": ssys_id, "mdlName": mdl_name, "tableName": tab_eng_name}))
# 获取列名 # 获取列名
columns = result.keys() # 返回列名列表 columns = result.keys() # 返回列名列表
# 将结果转换为字典列表 # 将结果转换为字典列表

20
vue-fastapi-backend/module_admin/entity/do/meta_do.py

@ -13,7 +13,7 @@ class MetadataExtractInfo(Base):
onum = Column(Integer, primary_key=True, comment='唯一编号') onum = Column(Integer, primary_key=True, comment='唯一编号')
extract_ver_num = Column(String(50, collation='utf8_general_ci'), comment='采集版本号') extract_ver_num = Column(String(50, collation='utf8_general_ci'), comment='采集版本号')
ver_desc = Column(String(250, collation='utf8_general_ci'), comment='版本描述') ver_desc = Column(String(250, collation='utf8_general_ci'), comment='版本描述')
ssys_cd = Column(String(50, collation='utf8_general_ci'), comment='系统代码') ssys_id = Column(Integer, comment='系统代码')
data_whs_name = Column(String(50, collation='utf8_general_ci'), comment='数据仓库名称') data_whs_name = Column(String(50, collation='utf8_general_ci'), comment='数据仓库名称')
mdl_name = Column(String(50, collation='utf8_general_ci'), comment='模式名称') mdl_name = Column(String(50, collation='utf8_general_ci'), comment='模式名称')
tab_no = Column(Integer, comment='表编号') tab_no = Column(Integer, comment='表编号')
@ -33,7 +33,7 @@ class MetadataSuppInfo(Base):
# onum = Column(Integer, primary_key=True, comment='唯一编号') # onum = Column(Integer, primary_key=True, comment='唯一编号')
onum = Column(String(36, collation='utf8mb4_unicode_ci'), primary_key=True, comment='唯一编号') onum = Column(String(36, collation='utf8mb4_unicode_ci'), primary_key=True, comment='唯一编号')
crrct_ver_num = Column(String(50, collation='utf8_general_ci'), comment='补录版本号') crrct_ver_num = Column(String(50, collation='utf8_general_ci'), comment='补录版本号')
ssys_cd = Column(String(50, collation='utf8_general_ci'), comment='系统代码') ssys_id = Column(Integer, comment='系统代码')
mdl_name = Column(String(50, collation='utf8_general_ci'), comment='模型名称') mdl_name = Column(String(50, collation='utf8_general_ci'), comment='模型名称')
tab_eng_name = Column(String(250, collation='utf8_general_ci'), comment='表英文名称') tab_eng_name = Column(String(250, collation='utf8_general_ci'), comment='表英文名称')
tab_crrct_name = Column(String(250, collation='utf8_general_ci'), comment='表补录名称') tab_crrct_name = Column(String(250, collation='utf8_general_ci'), comment='表补录名称')
@ -55,7 +55,7 @@ class MetadataSuppInfoVett(Base):
# onum = Column(Integer, primary_key=True, comment='唯一编号') # onum = Column(Integer, primary_key=True, comment='唯一编号')
onum = Column(String(36, collation='utf8mb4_unicode_ci'), primary_key=True, comment='唯一编号') onum = Column(String(36, collation='utf8mb4_unicode_ci'), primary_key=True, comment='唯一编号')
crrct_ver_num = Column(String(50, collation='utf8_general_ci'), comment='补录版本号') crrct_ver_num = Column(String(50, collation='utf8_general_ci'), comment='补录版本号')
ssys_cd = Column(String(50, collation='utf8_general_ci'), comment='系统代码') ssys_id = Column(Integer, comment='系统代码')
mdl_name = Column(String(50, collation='utf8_general_ci'), comment='模型名称') mdl_name = Column(String(50, collation='utf8_general_ci'), comment='模型名称')
tab_eng_name = Column(String(250, collation='utf8_general_ci'), comment='表英文名称') tab_eng_name = Column(String(250, collation='utf8_general_ci'), comment='表英文名称')
tab_crrct_name = Column(String(250, collation='utf8_general_ci'), comment='表补录名称') tab_crrct_name = Column(String(250, collation='utf8_general_ci'), comment='表补录名称')
@ -97,7 +97,7 @@ class MetadataFldTabExtractInfo(Base):
onum = Column(Integer, primary_key=True, comment='唯一编号') onum = Column(Integer, primary_key=True, comment='唯一编号')
extract_ver_num = Column(String(50, collation='utf8_general_ci'), comment='采集版本号') extract_ver_num = Column(String(50, collation='utf8_general_ci'), comment='采集版本号')
ssys_cd = Column(String(50, collation='utf8_general_ci'), comment='系统代码') ssys_id = Column(Integer, comment='系统代码')
data_whs_name = Column(String(255, collation='utf8_general_ci'), comment='数据仓库名称') data_whs_name = Column(String(255, collation='utf8_general_ci'), comment='数据仓库名称')
mdl_name = Column(String(255, collation='utf8_general_ci'), comment='模块名称') mdl_name = Column(String(255, collation='utf8_general_ci'), comment='模块名称')
tab_no = Column(String(50, collation='utf8_general_ci'), comment='表编号') tab_no = Column(String(50, collation='utf8_general_ci'), comment='表编号')
@ -120,7 +120,7 @@ class MetadataFldSuppInfo(Base):
onum = Column(String(50, collation='utf8_general_ci'), primary_key=True, comment='唯一编号') onum = Column(String(50, collation='utf8_general_ci'), primary_key=True, comment='唯一编号')
crrct_ver_num = Column(String(50, collation='utf8_general_ci'), comment='补充版本号') crrct_ver_num = Column(String(50, collation='utf8_general_ci'), comment='补充版本号')
ssys_cd = Column(String(50, collation='utf8_general_ci'), comment='系统代码') ssys_id = Column(Integer, comment='系统代码')
mdl_name = Column(String(255, collation='utf8_general_ci'), comment='模块名称') mdl_name = Column(String(255, collation='utf8_general_ci'), comment='模块名称')
tab_eng_name = Column(String(250, collation='utf8_general_ci'), comment='表英文名称') tab_eng_name = Column(String(250, collation='utf8_general_ci'), comment='表英文名称')
fld_eng_name = Column(String(255, collation='utf8_general_ci'), comment='字段英文名称') fld_eng_name = Column(String(255, collation='utf8_general_ci'), comment='字段英文名称')
@ -144,7 +144,7 @@ class MetadataFldSuppInfoVett(Base):
onum = Column(String(50, collation='utf8_general_ci'), primary_key=True, comment='唯一编号') onum = Column(String(50, collation='utf8_general_ci'), primary_key=True, comment='唯一编号')
crrct_ver_num = Column(String(50, collation='utf8_general_ci'), comment='补充版本号') crrct_ver_num = Column(String(50, collation='utf8_general_ci'), comment='补充版本号')
ssys_cd = Column(String(50, collation='utf8_general_ci'), comment='系统代码') ssys_id = Column(Integer, comment='系统代码')
mdl_name = Column(String(255, collation='utf8_general_ci'), comment='模块名称') mdl_name = Column(String(255, collation='utf8_general_ci'), comment='模块名称')
tab_eng_name = Column(String(250, collation='utf8_general_ci'), comment='表英文名称') tab_eng_name = Column(String(250, collation='utf8_general_ci'), comment='表英文名称')
fld_eng_name = Column(String(255, collation='utf8_general_ci'), comment='字段英文名称') fld_eng_name = Column(String(255, collation='utf8_general_ci'), comment='字段英文名称')
@ -169,7 +169,7 @@ class MetaBatchTabClas(Base):
__tablename__ = 't_batch_tab_clas' __tablename__ = 't_batch_tab_clas'
onum = Column(Integer, primary_key=True, comment='序号(主键自增)') onum = Column(Integer, primary_key=True, comment='序号(主键自增)')
ssys_cd = Column(String(50, collation='utf8_general_ci'), comment='源系统代码') ssys_id = Column(Integer, comment='源系统id')
data_whs_name = Column(String(50, collation='utf8_general_ci'), comment='数据库名称') data_whs_name = Column(String(50, collation='utf8_general_ci'), comment='数据库名称')
mdl_name = Column(String(50, collation='utf8_general_ci'), comment='模式名称') mdl_name = Column(String(50, collation='utf8_general_ci'), comment='模式名称')
tab_no = Column(Integer, comment='表编号') tab_no = Column(Integer, comment='表编号')
@ -183,7 +183,7 @@ class MetaBatchFldClas(Base):
__tablename__ = 't_batch_fld_clas' __tablename__ = 't_batch_fld_clas'
onum = Column(Integer, primary_key=True, comment='序号(主键自增)') onum = Column(Integer, primary_key=True, comment='序号(主键自增)')
ssys_cd = Column(String(50, collation='utf8_general_ci'), comment='源系统代码') ssys_id = Column(Integer, comment='源系统代码')
data_whs_name = Column(String(50, collation='utf8_general_ci'), comment='数据库名称') data_whs_name = Column(String(50, collation='utf8_general_ci'), comment='数据库名称')
mdl_name = Column(String(50, collation='utf8_general_ci'), comment='模式名称') mdl_name = Column(String(50, collation='utf8_general_ci'), comment='模式名称')
tab_no = Column(Integer, comment='表编号') tab_no = Column(Integer, comment='表编号')
@ -200,14 +200,14 @@ class MetaBloodAnalysis(Base):
id = Column(String(50, collation='utf8_general_ci'), primary_key=True, comment='id') id = Column(String(50, collation='utf8_general_ci'), primary_key=True, comment='id')
proId = Column(Integer, comment='存储过程ID') proId = Column(Integer, comment='存储过程ID')
proName = Column(String(100, collation='utf8_general_ci'), comment='存储过程名称') proName = Column(String(100, collation='utf8_general_ci'), comment='存储过程名称')
targetSysCd = Column(String(100, collation='utf8_general_ci'), comment='目标系统') targetSysId = Column(String(100, collation='utf8_general_ci'), comment='目标系统')
targetMdlName = Column(String(100, collation='utf8_general_ci'), comment='目标模式') targetMdlName = Column(String(100, collation='utf8_general_ci'), comment='目标模式')
targetTableName = Column(String(100, collation='utf8_general_ci'), comment='目标表') targetTableName = Column(String(100, collation='utf8_general_ci'), comment='目标表')
targetTableCnName = Column(String(100, collation='utf8_general_ci'), comment='目标表中文名') targetTableCnName = Column(String(100, collation='utf8_general_ci'), comment='目标表中文名')
targetColName = Column(String(100, collation='utf8_general_ci'), comment='目标字段名') targetColName = Column(String(100, collation='utf8_general_ci'), comment='目标字段名')
targetColCnName = Column(String(100, collation='utf8_general_ci'), comment='目标字段中文名') targetColCnName = Column(String(100, collation='utf8_general_ci'), comment='目标字段中文名')
targetColType = Column(String(100, collation='utf8_general_ci'), comment='目标字段类型') targetColType = Column(String(100, collation='utf8_general_ci'), comment='目标字段类型')
sourceSysCd = Column(String(100, collation='utf8_general_ci'), comment='源系统代码') sourceSysId = Column(String(100, collation='utf8_general_ci'), comment='源系统代码')
sourceMdlName = Column(String(100, collation='utf8_general_ci'), comment='源系统模式') sourceMdlName = Column(String(100, collation='utf8_general_ci'), comment='源系统模式')
sourceTableName = Column(String(100, collation='utf8_general_ci'), comment='源系统表名') sourceTableName = Column(String(100, collation='utf8_general_ci'), comment='源系统表名')
sourceTableCnName = Column(String(100, collation='utf8_general_ci'), comment='源系统表中文名') sourceTableCnName = Column(String(100, collation='utf8_general_ci'), comment='源系统表中文名')

37
vue-fastapi-backend/module_admin/entity/do/metadata_config_do.py

@ -1,5 +1,5 @@
from datetime import datetime from datetime import datetime
from sqlalchemy import Column,Text,Date, String, Integer, DateTime, TIMESTAMP,Boolean, func,DECIMAL from sqlalchemy import Column, String, Integer, DateTime, TIMESTAMP, Boolean, func, DECIMAL, Text, Date
from config.database import Base from config.database import Base
@ -33,6 +33,7 @@ class MetadataSec(Base):
sec_level_desc = Column(String(200), default=None, comment='等级说明') sec_level_desc = Column(String(200), default=None, comment='等级说明')
sec_level_summary = Column(String(200), comment='等级简介') sec_level_summary = Column(String(200), comment='等级简介')
class SecuBizConfigRela(Base): class SecuBizConfigRela(Base):
""" """
业务域配置关联表 ORM 映射类对应表 t_secu_biz_config_rela 业务域配置关联表 ORM 映射类对应表 t_secu_biz_config_rela
@ -44,6 +45,8 @@ class SecuBizConfigRela(Base):
tab_onum = Column(Integer, nullable=True, comment="表id") tab_onum = Column(Integer, nullable=True, comment="表id")
create_by = Column(String(20), nullable=True, comment="创建者") create_by = Column(String(20), nullable=True, comment="创建者")
create_time = Column(DateTime, nullable=True, comment="创建时间") create_time = Column(DateTime, nullable=True, comment="创建时间")
class TaskBizConfigRela(Base): class TaskBizConfigRela(Base):
""" """
业务域调度配置关联表 ORM 映射类对应表 t_task_biz_config_rela 业务域调度配置关联表 ORM 映射类对应表 t_task_biz_config_rela
@ -56,6 +59,7 @@ class TaskBizConfigRela(Base):
create_by = Column(String(20), nullable=True, comment="创建者") create_by = Column(String(20), nullable=True, comment="创建者")
create_time = Column(DateTime, nullable=True, comment="创建时间") create_time = Column(DateTime, nullable=True, comment="创建时间")
class SecuBizPermiConfig(Base): class SecuBizPermiConfig(Base):
__tablename__ = "t_secu_biz_permi_config" __tablename__ = "t_secu_biz_permi_config"
@ -70,6 +74,7 @@ class SecuBizPermiConfig(Base):
update_by = Column(String(20), nullable=True, comment="更新者") update_by = Column(String(20), nullable=True, comment="更新者")
update_time = Column(DateTime, nullable=True, comment="更新时间") update_time = Column(DateTime, nullable=True, comment="更新时间")
class SecuBizConfig(Base): class SecuBizConfig(Base):
__tablename__ = "t_secu_biz_config" __tablename__ = "t_secu_biz_config"
@ -81,6 +86,8 @@ class SecuBizConfig(Base):
create_time = Column(DateTime, nullable=True, comment="创建时间") create_time = Column(DateTime, nullable=True, comment="创建时间")
update_by = Column(String(20), nullable=True, comment="更新者") update_by = Column(String(20), nullable=True, comment="更新者")
update_time = Column(DateTime, nullable=True, comment="更新时间") update_time = Column(DateTime, nullable=True, comment="更新时间")
class TaskBizConfig(Base): class TaskBizConfig(Base):
__tablename__ = "t_task_biz_config" __tablename__ = "t_task_biz_config"
@ -96,6 +103,8 @@ class TaskBizConfig(Base):
ds_time = Column(DateTime, nullable=True, comment="调度时间") ds_time = Column(DateTime, nullable=True, comment="调度时间")
ds_ids = Column(String(50), nullable=True, comment="任务ID") ds_ids = Column(String(50), nullable=True, comment="任务ID")
schId = Column(String(50), nullable=True, comment="调度id") schId = Column(String(50), nullable=True, comment="调度id")
class BatchBusiLabelConfig(Base): class BatchBusiLabelConfig(Base):
""" """
批处理业务标签配置表 ORM 映射类对应表 t_batch_busi_label_config 批处理业务标签配置表 ORM 映射类对应表 t_batch_busi_label_config
@ -105,30 +114,30 @@ class BatchBusiLabelConfig(Base):
onum = Column(Integer, primary_key=True, autoincrement=True, comment="唯一编号") onum = Column(Integer, primary_key=True, autoincrement=True, comment="唯一编号")
regex_name = Column(String(255), nullable=True, comment="正则表达式名称") regex_name = Column(String(255), nullable=True, comment="正则表达式名称")
regex_pattern = Column(String(255), nullable=True, comment="正则表达式") regex_pattern = Column(String(255), nullable=True, comment="正则表达式")
ssys_cd = Column(String(50), nullable=True) ssys_id = Column(Integer, nullable=True)
mdl_name = Column(String(50), nullable=True) mdl_name = Column(String(50), nullable=True)
ratio = Column(DECIMAL(10, 4), nullable=True) ratio = Column(DECIMAL(10, 4), nullable=True)
upd_by = Column(String(50), nullable=True) upd_by = Column(String(50), nullable=True)
upd_time = Column(DateTime, nullable=True, comment='更新时间') upd_time = Column(DateTime, nullable=True, comment='更新时间')
class BatchDataopLabelConfig(Base): class BatchDataopLabelConfig(Base):
""" """
批处理数据操作标签配置表 ORM 映射类对应表 t_batch_dataop_label_config 批处理数据操作标签配置表 ORM 映射类对应表 t_batch_dataop_label_config
""" """
__tablename__ = "t_batch_dataop_label_config" __tablename__ = "t_batch_dataoptype_label_config"
onum = Column(Integer, primary_key=True, autoincrement=True, comment="唯一编号") onum = Column(Integer, primary_key=True, autoincrement=True, comment="唯一编号")
optype = Column(String(50), nullable=True, comment="唯一类型,忽略类型") op_type = Column(String(50), nullable=True, comment="唯一类型,忽略类型")
config1 = Column(DECIMAL(10, 4), nullable=True, comment="参数1") col_type = Column(String(50), nullable=True, comment="字段类型")
config2 = Column(DECIMAL(10, 4), nullable=True, comment="参数2") col_attr = Column(String(50), nullable=True, comment="字段属性")
config3 = Column(DECIMAL(10, 4), nullable=True, comment="参数3") ratio = Column(DECIMAL(10, 4), nullable=True, comment="阈值")
config4 = Column(DECIMAL(10, 4), nullable=True, comment="参数4") ssys_id = Column(Integer, nullable=True)
config5 = Column(DECIMAL(10, 4), nullable=True, comment="参数5")
config6 = Column(DECIMAL(10, 4), nullable=True, comment="参数6")
config7 = Column(DECIMAL(10, 4), nullable=True, comment="参数7")
ssys_cd = Column(String(50), nullable=True)
mdl_name = Column(String(50), nullable=True) mdl_name = Column(String(50), nullable=True)
upd_by = Column(String(50), nullable=True) upd_by = Column(String(50), nullable=True)
upd_time = Column(DateTime, nullable=True, comment='更新时间') upd_time = Column(DateTime, nullable=True, comment='更新时间')
class BatchDatatypeLabelConfig(Base): class BatchDatatypeLabelConfig(Base):
""" """
批处理字段类型标签配置表 ORM 映射类对应表 t_batch_datatype_label_config 批处理字段类型标签配置表 ORM 映射类对应表 t_batch_datatype_label_config
@ -138,10 +147,12 @@ class BatchDatatypeLabelConfig(Base):
onum = Column(Integer, primary_key=True, autoincrement=True, comment="唯一编号") onum = Column(Integer, primary_key=True, autoincrement=True, comment="唯一编号")
datatype = Column(String(100), nullable=True, comment="字段类型") datatype = Column(String(100), nullable=True, comment="字段类型")
ratio = Column(DECIMAL(10, 4), nullable=True, comment="比率") ratio = Column(DECIMAL(10, 4), nullable=True, comment="比率")
ssys_cd = Column(String(50), nullable=True) ssys_id = Column(Integer, nullable=True)
mdl_name = Column(String(50), nullable=True) mdl_name = Column(String(50), nullable=True)
upd_by = Column(String(50), nullable=True) upd_by = Column(String(50), nullable=True)
upd_time = Column(DateTime, nullable=True, comment='更新时间') upd_time = Column(DateTime, nullable=True, comment='更新时间')
class DatasecConfig(Base): class DatasecConfig(Base):
""" """
数据安全参数配置 ORM 映射类对应表 t_datasec_config 数据安全参数配置 ORM 映射类对应表 t_datasec_config

10
vue-fastapi-backend/module_admin/entity/vo/meta_vo.py

@ -7,7 +7,7 @@ from pydantic.alias_generators import to_camel
class MetaModel(BaseModel): class MetaModel(BaseModel):
model_config = ConfigDict(alias_generator=to_camel, from_attributes=True) model_config = ConfigDict(alias_generator=to_camel, from_attributes=True)
ssys_cd: Optional[str] = Field(default=None, description='系统名称') ssys_id: Optional[int] = Field(default=None, description='系统名称')
mdl_name: Optional[str] = Field(default=None, description='模式名称') mdl_name: Optional[str] = Field(default=None, description='模式名称')
tab_name: Optional[str] = Field(default=None, description='表名') tab_name: Optional[str] = Field(default=None, description='表名')
tab_type: Optional[str] = Field(default=None, description='表类型') tab_type: Optional[str] = Field(default=None, description='表类型')
@ -25,7 +25,7 @@ class MetaPageObject(MetaModel):
@as_query @as_query
class MetaColObject(BaseModel): class MetaColObject(BaseModel):
model_config = ConfigDict(alias_generator=to_camel, from_attributes=True) model_config = ConfigDict(alias_generator=to_camel, from_attributes=True)
ssys_cd: Optional[str] = Field(default=None, description='系统名称') ssys_id: Optional[int] = Field(default=None, description='系统名称')
mdl_name: Optional[str] = Field(default=None, description='模式名称') mdl_name: Optional[str] = Field(default=None, description='模式名称')
tab_name: Optional[str] = Field(default=None, description='表名') tab_name: Optional[str] = Field(default=None, description='表名')
@ -46,7 +46,7 @@ class ColumnSuppleModel(BaseModel):
class SuppleModel(BaseModel): class SuppleModel(BaseModel):
model_config = ConfigDict(alias_generator=to_camel, from_attributes=True) model_config = ConfigDict(alias_generator=to_camel, from_attributes=True)
ssys_cd: Optional[str] = None ssys_id: Optional[int] = None
mdl_name: Optional[str] = None mdl_name: Optional[str] = None
tab_eng_name: Optional[str] = None tab_eng_name: Optional[str] = None
tab_crrct_name: Optional[str] = None tab_crrct_name: Optional[str] = None
@ -61,7 +61,7 @@ class SuppleModel(BaseModel):
@as_query @as_query
class MetaBusinessRelShipObject(BaseModel): class MetaBusinessRelShipObject(BaseModel):
model_config = ConfigDict(alias_generator=to_camel, from_attributes=True) model_config = ConfigDict(alias_generator=to_camel, from_attributes=True)
ssys_cd: Optional[str] ssys_id: Optional[int]
mdl_name: Optional[str] mdl_name: Optional[str]
tab_eng_name: Optional[str] tab_eng_name: Optional[str]
type: Optional[str] type: Optional[str]
@ -70,6 +70,6 @@ class MetaBusinessRelShipObject(BaseModel):
@as_query @as_query
class MetaProcQueryObject(BaseModel): class MetaProcQueryObject(BaseModel):
model_config = ConfigDict(alias_generator=to_camel, from_attributes=True) model_config = ConfigDict(alias_generator=to_camel, from_attributes=True)
ssys_cd: Optional[str] ssys_id: Optional[int]
mdl_name: Optional[str] mdl_name: Optional[str]
tab_eng_name: Optional[str] tab_eng_name: Optional[str]

99
vue-fastapi-backend/module_admin/entity/vo/metadata_config_vo.py

@ -2,7 +2,7 @@ from datetime import datetime
from pydantic import BaseModel, ConfigDict, Field from pydantic import BaseModel, ConfigDict, Field
from pydantic.alias_generators import to_camel from pydantic.alias_generators import to_camel
from pydantic_validation_decorator import NotBlank, Size from pydantic_validation_decorator import NotBlank, Size
from typing import Literal, Optional,List from typing import Literal, Optional, List
from module_admin.annotation.pydantic_annotation import as_query from module_admin.annotation.pydantic_annotation import as_query
@ -39,7 +39,6 @@ class MetadataClasQueryModel(MetadataClasModel):
end_time: Optional[str] = Field(default=None, description='结束时间') end_time: Optional[str] = Field(default=None, description='结束时间')
@as_query @as_query
class MetadataClasPageQueryModel(MetadataClasQueryModel): class MetadataClasPageQueryModel(MetadataClasQueryModel):
""" """
@ -58,6 +57,7 @@ class DeleteMetadataClasModel(BaseModel):
clas_onums: str = Field(description='需要删除的标签主键(多个用逗号分隔)') clas_onums: str = Field(description='需要删除的标签主键(多个用逗号分隔)')
class MetadataSecModel(BaseModel): class MetadataSecModel(BaseModel):
""" """
数据安全配置表对应 Pydantic 模型 数据安全配置表对应 Pydantic 模型
@ -80,6 +80,8 @@ class MetadataSecModel(BaseModel):
def validate_fields(self): def validate_fields(self):
self.get_sec_level_name() self.get_sec_level_name()
class DeleteMetadataSecModel(BaseModel): class DeleteMetadataSecModel(BaseModel):
""" """
删除数据安全配置模型 删除数据安全配置模型
@ -88,6 +90,8 @@ class DeleteMetadataSecModel(BaseModel):
model_config = ConfigDict(alias_generator=to_camel) model_config = ConfigDict(alias_generator=to_camel)
onums: str = Field(description='需要删除的唯一编号(多个用逗号分隔)') onums: str = Field(description='需要删除的唯一编号(多个用逗号分隔)')
class MetadataSecQueryModel(MetadataSecModel): class MetadataSecQueryModel(MetadataSecModel):
""" """
数据安全配置不分页查询模型 数据安全配置不分页查询模型
@ -95,6 +99,7 @@ class MetadataSecQueryModel(MetadataSecModel):
begin_time: Optional[str] = Field(default=None, description='开始时间') begin_time: Optional[str] = Field(default=None, description='开始时间')
end_time: Optional[str] = Field(default=None, description='结束时间') end_time: Optional[str] = Field(default=None, description='结束时间')
@as_query @as_query
class MetadataSecPageQueryModel(MetadataSecQueryModel): class MetadataSecPageQueryModel(MetadataSecQueryModel):
""" """
@ -116,6 +121,8 @@ class SecuBizConfigRelaModel(BaseModel):
tab_onum: Optional[int] = Field(default=None, description="表ID") tab_onum: Optional[int] = Field(default=None, description="表ID")
create_by: Optional[str] = Field(default=None, description="创建者") create_by: Optional[str] = Field(default=None, description="创建者")
create_time: Optional[datetime] = Field(default=None, description="创建时间") create_time: Optional[datetime] = Field(default=None, description="创建时间")
class TaskBizConfigRelaModel(BaseModel): class TaskBizConfigRelaModel(BaseModel):
""" """
业务域配置关联表对应 Pydantic 模型 业务域配置关联表对应 Pydantic 模型
@ -127,6 +134,7 @@ class TaskBizConfigRelaModel(BaseModel):
create_by: Optional[str] = Field(default=None, description="创建者") create_by: Optional[str] = Field(default=None, description="创建者")
create_time: Optional[datetime] = Field(default=None, description="创建时间") create_time: Optional[datetime] = Field(default=None, description="创建时间")
class SecuBizConfigAddModel(BaseModel): class SecuBizConfigAddModel(BaseModel):
""" """
业务域配置对应 Pydantic 模型 业务域配置对应 Pydantic 模型
@ -142,6 +150,8 @@ class SecuBizConfigAddModel(BaseModel):
update_by: Optional[str] = Field(default=None, description='更新者') update_by: Optional[str] = Field(default=None, description='更新者')
update_time: Optional[datetime] = Field(default=None, description='更新时间') update_time: Optional[datetime] = Field(default=None, description='更新时间')
tab_onum_list: List[int] = Field(default=None, description='表id列表') tab_onum_list: List[int] = Field(default=None, description='表id列表')
class SecuBizConfigModel(BaseModel): class SecuBizConfigModel(BaseModel):
""" """
业务域配置对应 Pydantic 模型 业务域配置对应 Pydantic 模型
@ -165,6 +175,7 @@ class SecuBizConfigModel(BaseModel):
def validate_fields(self): def validate_fields(self):
self.get_risk_lvl() self.get_risk_lvl()
class DeleteSecuBizConfigModel(BaseModel): class DeleteSecuBizConfigModel(BaseModel):
""" """
删除业务域配置模型 删除业务域配置模型
@ -172,6 +183,7 @@ class DeleteSecuBizConfigModel(BaseModel):
model_config = ConfigDict(alias_generator=to_camel) model_config = ConfigDict(alias_generator=to_camel)
onums: str = Field(..., description='需要删除的唯一编号(多个用逗号分隔)') onums: str = Field(..., description='需要删除的唯一编号(多个用逗号分隔)')
class SecuBizConfigQueryModel(SecuBizConfigModel): class SecuBizConfigQueryModel(SecuBizConfigModel):
""" """
业务域配置不分页查询模型 业务域配置不分页查询模型
@ -179,6 +191,7 @@ class SecuBizConfigQueryModel(SecuBizConfigModel):
begin_time: Optional[str] = Field(default=None, description='开始时间') begin_time: Optional[str] = Field(default=None, description='开始时间')
end_time: Optional[str] = Field(default=None, description='结束时间') end_time: Optional[str] = Field(default=None, description='结束时间')
@as_query @as_query
class SecuBizConfigPageQueryModel(SecuBizConfigQueryModel): class SecuBizConfigPageQueryModel(SecuBizConfigQueryModel):
""" """
@ -206,6 +219,8 @@ class SecuBizPermiConfigModel(BaseModel):
create_time: Optional[datetime] = Field(default=None, description='创建时间') create_time: Optional[datetime] = Field(default=None, description='创建时间')
update_by: Optional[str] = Field(default=None, description='更新者') update_by: Optional[str] = Field(default=None, description='更新者')
update_time: Optional[datetime] = Field(default=None, description='更新时间') update_time: Optional[datetime] = Field(default=None, description='更新时间')
class SecuBizPermiConfigBatchModel(BaseModel): class SecuBizPermiConfigBatchModel(BaseModel):
model_config = ConfigDict(alias_generator=to_camel, from_attributes=True) model_config = ConfigDict(alias_generator=to_camel, from_attributes=True)
@ -215,8 +230,6 @@ class SecuBizPermiConfigBatchModel(BaseModel):
obj_name: str = Field(..., description='角色名称') obj_name: str = Field(..., description='角色名称')
isStop: Optional[bool] = Field(default=False, description='是否停用(false:运行 true:停用)') isStop: Optional[bool] = Field(default=False, description='是否停用(false:运行 true:停用)')
@NotBlank(field_name='obj_name', message='角色名称不能为空') @NotBlank(field_name='obj_name', message='角色名称不能为空')
@Size(field_name='obj_name', max_length=50, message='角色名称长度不能超过50个字符') @Size(field_name='obj_name', max_length=50, message='角色名称长度不能超过50个字符')
def get_obj_name(self): def get_obj_name(self):
@ -225,6 +238,7 @@ class SecuBizPermiConfigBatchModel(BaseModel):
def validate_fields(self): def validate_fields(self):
self.get_obj_name() self.get_obj_name()
class DeleteSecuBizPermiConfigModel(BaseModel): class DeleteSecuBizPermiConfigModel(BaseModel):
""" """
删除业务域权限配置模型 删除业务域权限配置模型
@ -232,6 +246,7 @@ class DeleteSecuBizPermiConfigModel(BaseModel):
model_config = ConfigDict(alias_generator=to_camel) model_config = ConfigDict(alias_generator=to_camel)
onums: str = Field(..., description='需要删除的唯一编号(多个用逗号分隔)') onums: str = Field(..., description='需要删除的唯一编号(多个用逗号分隔)')
class SecuBizPermiConfigQueryModel(SecuBizPermiConfigModel): class SecuBizPermiConfigQueryModel(SecuBizPermiConfigModel):
""" """
业务域权限配置不分页查询模型 业务域权限配置不分页查询模型
@ -239,6 +254,7 @@ class SecuBizPermiConfigQueryModel(SecuBizPermiConfigModel):
begin_time: Optional[str] = Field(default=None, description='开始时间') begin_time: Optional[str] = Field(default=None, description='开始时间')
end_time: Optional[str] = Field(default=None, description='结束时间') end_time: Optional[str] = Field(default=None, description='结束时间')
@as_query @as_query
class SecuBizPermiConfigPageQueryModel(SecuBizPermiConfigQueryModel): class SecuBizPermiConfigPageQueryModel(SecuBizPermiConfigQueryModel):
""" """
@ -246,56 +262,40 @@ class SecuBizPermiConfigPageQueryModel(SecuBizPermiConfigQueryModel):
""" """
page_num: int = Field(default=1, description='当前页码') page_num: int = Field(default=1, description='当前页码')
page_size: int = Field(default=10, description='每页记录数') page_size: int = Field(default=10, description='每页记录数')
class BatchDataopLabelConfigModel(BaseModel):
class BatchDatatypeLabelConfigModel(BaseModel):
""" """
批处理数据操作标签配置 Pydantic 模型 批处理字段类型标签配置 Pydantic 模型
""" """
model_config = ConfigDict(alias_generator=to_camel, from_attributes=True) model_config = ConfigDict(alias_generator=to_camel, from_attributes=True)
onum: Optional[int] = Field(default=None, description='唯一编号') onum: Optional[int] = Field(default=None, description='唯一编号')
optype: Optional[str] = Field(default=None, description='唯一类型,忽略类型') datatype: Optional[str] = Field(default=None, description='字段类型')
config1: Optional[float] = Field(default=None, description='参数1') ratio: Optional[float] = Field(default=None, description='比率')
config2: Optional[float] = Field(default=None, description='参数2') ssys_id: Optional[int] = Field(default=None, description='系统代码')
config3: Optional[float] = Field(default=None, description='参数3')
config4: Optional[float] = Field(default=None, description='参数4')
config5: Optional[float] = Field(default=None, description='参数5')
config6: Optional[float] = Field(default=None, description='参数6')
config7: Optional[float] = Field(default=None, description='参数7')
ssys_cd: Optional[str] = Field(default=None, description='系统代码')
mdl_name: Optional[str] = Field(default=None, description='模块名称') mdl_name: Optional[str] = Field(default=None, description='模块名称')
upd_by: Optional[str] = Field(default=None, description='更新人员') upd_by: Optional[str] = Field(default=None, description='更新人员')
upd_time: Optional[datetime] = Field(default=None, description='更新时间') upd_time: Optional[datetime] = Field(default=None, description='更新时间')
class BatchDataopLabelConfigModelVo(BaseModel): class BatchDataopLabelConfigModelVo(BaseModel):
"""
批处理数据操作标签配置 Pydantic 模型
"""
model_config = ConfigDict(alias_generator=to_camel, from_attributes=True)
config1: Optional[float] = Field(default=None, description='参数1')
config2: Optional[float] = Field(default=None, description='参数2')
config3: Optional[float] = Field(default=None, description='参数3')
config4: Optional[float] = Field(default=None, description='参数4')
config5: Optional[float] = Field(default=None, description='参数5')
config6: Optional[float] = Field(default=None, description='参数6')
config7: Optional[float] = Field(default=None, description='参数7')
ssys_cd: Optional[str] = Field(default=None, description='系统代码')
mdl_name: Optional[str] = Field(default=None, description='模块名称')
upd_by: Optional[str] = Field(default=None, description='更新人员')
upd_time: Optional[datetime] = Field(default=None, description='更新时间')
class BatchDatatypeLabelConfigModel(BaseModel):
""" """
批处理字段类型标签配置 Pydantic 模型 批处理字段类型标签配置 Pydantic 模型
""" """
model_config = ConfigDict(alias_generator=to_camel, from_attributes=True) model_config = ConfigDict(alias_generator=to_camel, from_attributes=True)
onum: Optional[int] = Field(default=None, description='唯一编号') onum: Optional[int] = Field(default=None, description='唯一编号')
datatype: Optional[str] = Field(default=None, description='字段类型') op_type: Optional[str] = Field(default=None, description='处理类型')
ratio: Optional[float] = Field(default=None, description='比率') col_type: Optional[str] = Field(default=None, description='字段类型')
ssys_cd: Optional[str] = Field(default=None, description='系统代码') col_attr: Optional[str] = Field(default=None, description='字段属性')
ratio: Optional[float] = Field(default=None, description='阈值')
ssys_id: Optional[int] = Field(default=None, description='系统代码')
mdl_name: Optional[str] = Field(default=None, description='模块名称') mdl_name: Optional[str] = Field(default=None, description='模块名称')
upd_by: Optional[str] = Field(default=None, description='更新人员') upd_by: Optional[str] = Field(default=None, description='更新人员')
upd_time: Optional[datetime] = Field(default=None, description='更新时间') upd_time: Optional[datetime] = Field(default=None, description='更新时间')
class BatchBusiLabelConfigModel(BaseModel): class BatchBusiLabelConfigModel(BaseModel):
""" """
批处理业务标签配置 Pydantic 模型 批处理业务标签配置 Pydantic 模型
@ -305,24 +305,34 @@ class BatchBusiLabelConfigModel(BaseModel):
onum: Optional[int] = Field(default=None, description='唯一编号') onum: Optional[int] = Field(default=None, description='唯一编号')
regex_name: Optional[str] = Field(default=None, description='正则表达式名称') regex_name: Optional[str] = Field(default=None, description='正则表达式名称')
regex_pattern: Optional[str] = Field(default=None, description='正则表达式') regex_pattern: Optional[str] = Field(default=None, description='正则表达式')
ssys_cd: Optional[str] = Field(default=None, description='系统代码') ssys_id: Optional[int] = Field(default=None, description='系统代码')
mdl_name: Optional[str] = Field(default=None, description='模块名称') mdl_name: Optional[str] = Field(default=None, description='模块名称')
ratio: Optional[float] = Field(default=None, description='比率') ratio: Optional[float] = Field(default=None, description='比率')
upd_by: Optional[str] = Field(default=None, description='更新人员') upd_by: Optional[str] = Field(default=None, description='更新人员')
upd_time: Optional[datetime] = Field(default=None, description='更新时间') upd_time: Optional[datetime] = Field(default=None, description='更新时间')
@as_query @as_query
class BatchDataopLabelModelPageQueryModel(BatchDataopLabelConfigModel): class ColOpTypeLabelPageQueryModel(BaseModel):
model_config = ConfigDict(alias_generator=to_camel, from_attributes=True)
ssys_id: Optional[int] = Field(default=None, description='系统名称')
mdl_name: Optional[str] = Field(default=None, description='模式名称')
page_num: Optional[int] = Field(default=None, description='当前页码')
page_size: Optional[int] = Field(default=None, description='每页记录数')
page_num: int = Field(default=1, description='当前页码')
page_size: int = Field(default=10, description='每页记录数')
@as_query @as_query
class BatchDatatypeLabelConfigPageQueryModel(BatchDatatypeLabelConfigModel): class BatchDatatypeLabelConfigPageQueryModel(BatchDatatypeLabelConfigModel):
page_num: int = Field(default=1, description='当前页码') page_num: int = Field(default=1, description='当前页码')
page_size: int = Field(default=10, description='每页记录数') page_size: int = Field(default=10, description='每页记录数')
@as_query @as_query
class BatchBusiLabelConfigPageQueryModel(BatchBusiLabelConfigModel): class BatchBusiLabelConfigPageQueryModel(BatchBusiLabelConfigModel):
page_num: int = Field(default=1, description='当前页码') page_num: int = Field(default=1, description='当前页码')
page_size: int = Field(default=10, description='每页记录数') page_size: int = Field(default=10, description='每页记录数')
class DatasecConfigModel(BaseModel): class DatasecConfigModel(BaseModel):
""" """
数据安全任务配置 Pydantic 模型对应表 t_datasec_config 数据安全任务配置 Pydantic 模型对应表 t_datasec_config
@ -340,12 +350,15 @@ class DatasecConfigModel(BaseModel):
ds_time: Optional[datetime] = Field(default=None, description="调度时间") ds_time: Optional[datetime] = Field(default=None, description="调度时间")
ds_ids: Optional[str] = Field(default=None, description="任务ID") ds_ids: Optional[str] = Field(default=None, description="任务ID")
schId: Optional[str] = Field(default=None, description="调度id") schId: Optional[str] = Field(default=None, description="调度id")
@as_query @as_query
class DatasecConfigPageQueryModel(DatasecConfigModel): class DatasecConfigPageQueryModel(DatasecConfigModel):
page_num: int = Field(default=1, description='当前页码') page_num: int = Field(default=1, description='当前页码')
page_size: int = Field(default=10, description='每页记录数') page_size: int = Field(default=10, description='每页记录数')
begin_time: Optional[str]= Field(default=None, description='开始时间') begin_time: Optional[str] = Field(default=None, description='开始时间')
end_time: Optional[str]= Field(default=None, description='结束时间') end_time: Optional[str] = Field(default=None, description='结束时间')
class TaskBizConfigAddModel(BaseModel): class TaskBizConfigAddModel(BaseModel):
""" """
@ -366,6 +379,8 @@ class TaskBizConfigAddModel(BaseModel):
ds_ids: Optional[str] = Field(default=None, description="任务ID") ds_ids: Optional[str] = Field(default=None, description="任务ID")
schId: Optional[str] = Field(default=None, description="调度id") schId: Optional[str] = Field(default=None, description="调度id")
tab_onum_list: List[int] = Field(default=None, description='表id列表') tab_onum_list: List[int] = Field(default=None, description='表id列表')
class TaskBizConfigModel(BaseModel): class TaskBizConfigModel(BaseModel):
""" """
标签任务配置对应 Pydantic 模型 标签任务配置对应 Pydantic 模型
@ -384,6 +399,7 @@ class TaskBizConfigModel(BaseModel):
ds_time: Optional[datetime] = Field(default=None, description="调度时间") ds_time: Optional[datetime] = Field(default=None, description="调度时间")
ds_ids: Optional[str] = Field(default=None, description="任务ID") ds_ids: Optional[str] = Field(default=None, description="任务ID")
schId: Optional[str] = Field(default=None, description="调度id") schId: Optional[str] = Field(default=None, description="调度id")
@NotBlank(field_name='risk_lvl', message='安全等级不能为空') @NotBlank(field_name='risk_lvl', message='安全等级不能为空')
@Size(field_name='risk_lvl', max_length=50, message='安全等级长度不能超过50') @Size(field_name='risk_lvl', max_length=50, message='安全等级长度不能超过50')
def get_risk_lvl(self): def get_risk_lvl(self):
@ -392,6 +408,7 @@ class TaskBizConfigModel(BaseModel):
def validate_fields(self): def validate_fields(self):
self.get_risk_lvl() self.get_risk_lvl()
class DeleteTaskBizConfigModel(BaseModel): class DeleteTaskBizConfigModel(BaseModel):
""" """
删除业务域配置模型 删除业务域配置模型
@ -399,6 +416,7 @@ class DeleteTaskBizConfigModel(BaseModel):
model_config = ConfigDict(alias_generator=to_camel) model_config = ConfigDict(alias_generator=to_camel)
onums: str = Field(..., description='需要删除的唯一编号(多个用逗号分隔)') onums: str = Field(..., description='需要删除的唯一编号(多个用逗号分隔)')
class TaskBizConfigQueryModel(TaskBizConfigModel): class TaskBizConfigQueryModel(TaskBizConfigModel):
""" """
业务域配置不分页查询模型 业务域配置不分页查询模型
@ -406,6 +424,7 @@ class TaskBizConfigQueryModel(TaskBizConfigModel):
begin_time: Optional[str] = Field(default=None, description='开始时间') begin_time: Optional[str] = Field(default=None, description='开始时间')
end_time: Optional[str] = Field(default=None, description='结束时间') end_time: Optional[str] = Field(default=None, description='结束时间')
@as_query @as_query
class TaskBizConfigPageQueryModel(TaskBizConfigQueryModel): class TaskBizConfigPageQueryModel(TaskBizConfigQueryModel):
""" """

132
vue-fastapi-backend/module_admin/service/batch_label_config_service.py

@ -1,7 +1,8 @@
from sqlalchemy.ext.asyncio import AsyncSession from sqlalchemy.ext.asyncio import AsyncSession
from module_admin.dao.batch_label_config_dao import BatchLabelConfigDAO from module_admin.dao.batch_label_config_dao import BatchLabelConfigDAO
from module_admin.entity.vo.common_vo import CrudResponseModel from module_admin.entity.vo.common_vo import CrudResponseModel
from module_admin.entity.vo.metadata_config_vo import BatchBusiLabelConfigModel,BatchDataopLabelConfigModel,BatchDatatypeLabelConfigModel,BatchDataopLabelConfigModelVo from module_admin.entity.vo.metadata_config_vo import BatchBusiLabelConfigModel, BatchDatatypeLabelConfigModel
from module_admin.entity.do.metadata_config_do import BatchDataopLabelConfig
from exceptions.exception import ServiceException from exceptions.exception import ServiceException
import uuid import uuid
from utils.common_util import CamelCaseUtil from utils.common_util import CamelCaseUtil
@ -17,6 +18,10 @@ class BatchLabelConfigService:
async def get_busi_list_services(cls, db: AsyncSession, query_object, is_page: bool = False): async def get_busi_list_services(cls, db: AsyncSession, query_object, is_page: bool = False):
return await BatchLabelConfigDAO.get_busi_list(db, query_object, is_page) return await BatchLabelConfigDAO.get_busi_list(db, query_object, is_page)
@classmethod
async def get_col_optype_list_services(cls, db: AsyncSession, query_object, is_page: bool = False):
return await BatchLabelConfigDAO.get_col_optype_list(db, query_object, is_page)
@classmethod @classmethod
async def add_busi_services(cls, db: AsyncSession, page_object): async def add_busi_services(cls, db: AsyncSession, page_object):
try: try:
@ -44,7 +49,7 @@ class BatchLabelConfigService:
@classmethod @classmethod
async def delete_busi_services(cls, db: AsyncSession, onum_list: str): async def delete_busi_services(cls, db: AsyncSession, onum_list: str):
id_list = [x.strip() for x in onum_list.split(",") if x.strip()] id_list = [int(x.strip()) for x in onum_list.split(",") if x.strip()]
if not id_list: if not id_list:
raise ServiceException(message="无效的编号列表") raise ServiceException(message="无效的编号列表")
@ -70,95 +75,37 @@ class BatchLabelConfigService:
@classmethod @classmethod
async def get_dataop_list_services(cls, db: AsyncSession, query_object, is_page: bool = False): async def get_dataop_list_services(cls, db: AsyncSession, query_object, is_page: bool = False):
return await BatchLabelConfigDAO.get_dataop_list(db, query_object, is_page) return await BatchLabelConfigDAO.get_dataop_list(db, query_object, is_page)
@classmethod
async def get_dataop_vo_services(cls, db: AsyncSession, query_object, is_page: bool = False):
result = BatchDataopLabelConfigModelVo() # 自定义返回 VO 对象
resultList = await BatchLabelConfigDAO.get_dataop_list_all(db, query_object)
if resultList:
for item in resultList:
if item.optype == "唯一类型":
result.config1 = item.config1
result.config2 = item.config2
result.config3 = item.config3
result.config4 = item.config4
result.ssys_cd = item.ssys_cd
result.mdl_name = item.mdl_name
result.upd_by = item.upd_by
result.upd_time = item.upd_time
elif item.optype == "忽略类型":
result.config5 = item.config1 # 注意:忽略类型只有 config1, config2
result.config6 = item.config2
# 其他公共字段,如果你也想覆盖可再写一次:
result.ssys_cd = item.ssys_cd
result.mdl_name = item.mdl_name
result.upd_by = item.upd_by
result.upd_time = item.upd_time
return result
@classmethod @classmethod
async def add_dataop_services(cls, db: AsyncSession, page_object): async def add_dataop_services(cls, db: AsyncSession, page_object):
try: try:
if page_object.onum:
resultList = await BatchLabelConfigDAO.get_dataop_list_all(db, page_object) # edit
conf = BatchDataopLabelConfig()
# 唯一类型对象 conf.op_type = page_object.op_type
onopLabel = BatchDataopLabelConfigModel( conf.col_type = page_object.col_type
optype="唯一类型", conf.col_attr = page_object.col_attr
config1=page_object.config1, conf.ratio = page_object.ratio
config2=page_object.config2, conf.ssys_id = page_object.ssys_id
config3=page_object.config3, conf.mdl_name = page_object.mdl_name
config4=page_object.config4, conf.upd_by = page_object.upd_by
ssysCd=page_object.ssys_cd, conf.upd_time = page_object.upd_time
mdlName=page_object.mdl_name, dic = conf.model_dump(exclude_unset=True)
updBy=page_object.upd_by, await BatchLabelConfigDAO.edit_dataop(db, page_object.onum, dic)
updTime=page_object.upd_time
)
# 忽略类型对象
inopLabel = BatchDataopLabelConfigModel(
optype="忽略类型",
config1=page_object.config5,
config2=page_object.config6,
ssysCd=page_object.ssys_cd,
mdlName=page_object.mdl_name,
updBy=page_object.upd_by,
updTime=page_object.upd_time
)
if resultList:
for item in resultList:
if item.optype == "唯一类型":
update_data = {
"config1": onopLabel.config1,
"config2": onopLabel.config2,
"config3": onopLabel.config3,
"config4": onopLabel.config4,
"ssys_cd": onopLabel.ssys_cd,
"mdl_name": onopLabel.mdl_name,
"upd_by": onopLabel.upd_by,
"upd_time": onopLabel.upd_time
}
elif item.optype == "忽略类型":
update_data = {
"config1": inopLabel.config1,
"config2": inopLabel.config2,
"ssys_cd": inopLabel.ssys_cd,
"mdl_name": inopLabel.mdl_name,
"upd_by": inopLabel.upd_by,
"upd_time": inopLabel.upd_time
}
else:
continue # 忽略未知类型
await BatchLabelConfigDAO.edit_dataop(db, item.onum, update_data)
else: else:
await BatchLabelConfigDAO.add_dataop(db, onopLabel) # add
await BatchLabelConfigDAO.add_dataop(db, inopLabel) conf = BatchDataopLabelConfig()
conf.op_type = page_object.op_type
conf.col_type = page_object.col_type
conf.col_attr = page_object.col_attr
conf.ratio = page_object.ratio
conf.ssys_id = page_object.ssys_id
conf.mdl_name = page_object.mdl_name
conf.upd_by = page_object.upd_by
conf.upd_time = page_object.upd_time
await BatchLabelConfigDAO.add_dataop(db, conf)
await db.commit() await db.commit()
return CrudResponseModel(is_success=True, message="新增或更新成功") return CrudResponseModel(is_success=True, message="操作成功")
except Exception as e: except Exception as e:
await db.rollback() await db.rollback()
raise e raise e
@ -166,8 +113,8 @@ class BatchLabelConfigService:
@classmethod @classmethod
async def edit_dataop_services(cls, db: AsyncSession, page_object): async def edit_dataop_services(cls, db: AsyncSession, page_object):
edit_data = page_object.model_dump(exclude_unset=True) edit_data = page_object.model_dump(exclude_unset=True)
info = await cls.get_dataop_detail_services(db, page_object.onum) result = await BatchLabelConfigDAO.get_dataop_detail_by_id(db, page_object.onum)
if info.onum: if result.onum:
try: try:
await BatchLabelConfigDAO.edit_dataop(db, page_object.onum, edit_data) await BatchLabelConfigDAO.edit_dataop(db, page_object.onum, edit_data)
await db.commit() await db.commit()
@ -180,7 +127,7 @@ class BatchLabelConfigService:
@classmethod @classmethod
async def delete_dataop_services(cls, db: AsyncSession, onum_list: str): async def delete_dataop_services(cls, db: AsyncSession, onum_list: str):
id_list = [x.strip() for x in onum_list.split(",") if x.strip()] id_list = [int(x.strip()) for x in onum_list.split(",") if x.strip()]
if not id_list: if not id_list:
raise ServiceException(message="无效的编号列表") raise ServiceException(message="无效的编号列表")
@ -192,13 +139,6 @@ class BatchLabelConfigService:
await db.rollback() await db.rollback()
raise e raise e
@classmethod
async def get_dataop_detail_services(cls, db: AsyncSession, onum: str):
result = await BatchLabelConfigDAO.get_dataop_detail_by_id(db, onum)
if result:
return BatchDataopLabelConfigModel(**CamelCaseUtil.transform_result(result))
return BatchDataopLabelConfigModel(**dict())
# endregion # endregion
# region === BatchDatatypeLabelConfig === # region === BatchDatatypeLabelConfig ===
@ -234,7 +174,7 @@ class BatchLabelConfigService:
@classmethod @classmethod
async def delete_datatype_services(cls, db: AsyncSession, onum_list: str): async def delete_datatype_services(cls, db: AsyncSession, onum_list: str):
id_list = [x.strip() for x in onum_list.split(",") if x.strip()] id_list = [int(x.strip()) for x in onum_list.split(",") if x.strip()]
if not id_list: if not id_list:
raise ServiceException(message="无效的编号列表") raise ServiceException(message="无效的编号列表")

132
vue-fastapi-backend/module_admin/service/meta_service.py

@ -41,7 +41,7 @@ class MetaService:
meta_rel_list = await MetaDao.get_meta_rel_list(result_db, query_object) meta_rel_list = await MetaDao.get_meta_rel_list(result_db, query_object)
if meta_rel_list and len(meta_rel_list.rows) > 0: if meta_rel_list and len(meta_rel_list.rows) > 0:
for table in meta_rel_list.rows: for table in meta_rel_list.rows:
tab_list = await MetaDao.get_meta_tab_clas(result_db, table['ssysCd'], table['mdlName'], tab_list = await MetaDao.get_meta_tab_clas(result_db, table['ssysId'], table['mdlName'],
table['tabEngName']) table['tabEngName'])
table['batchTabClas'] = CamelCaseUtil.transform_result(tab_list) table['batchTabClas'] = CamelCaseUtil.transform_result(tab_list)
return meta_rel_list return meta_rel_list
@ -49,7 +49,7 @@ class MetaService:
meta_rel_list = await MetaDao.get_meta_rel_list(result_db, query_object) meta_rel_list = await MetaDao.get_meta_rel_list(result_db, query_object)
if meta_rel_list and len(meta_rel_list.rows) > 0: if meta_rel_list and len(meta_rel_list.rows) > 0:
for table in meta_rel_list.rows: for table in meta_rel_list.rows:
tab_list = await MetaDao.get_meta_tab_clas(result_db, table['ssysCd'], table['mdlName'], tab_list = await MetaDao.get_meta_tab_clas(result_db, table['ssysId'], table['mdlName'],
table['tabEngName']) table['tabEngName'])
table['batchTabClas'] = CamelCaseUtil.transform_result(tab_list) table['batchTabClas'] = CamelCaseUtil.transform_result(tab_list)
return meta_rel_list return meta_rel_list
@ -59,7 +59,7 @@ class MetaService:
meta_result = await MetaDao.get_meta_col_list(result_db, query_object) meta_result = await MetaDao.get_meta_col_list(result_db, query_object)
result = CamelCaseUtil.transform_result(meta_result) result = CamelCaseUtil.transform_result(meta_result)
for column in result: for column in result:
fld_list = await MetaDao.get_meta_fld_clas(result_db, column['ssysCd'], column['mdlName'], fld_list = await MetaDao.get_meta_fld_clas(result_db, column['ssysId'], column['mdlName'],
column['tabEngName'], column['fldEngName']) column['tabEngName'], column['fldEngName'])
column['batchFldClas'] = CamelCaseUtil.transform_result(fld_list) column['batchFldClas'] = CamelCaseUtil.transform_result(fld_list)
if column['dataSecLvl'] is None and column['dataDictId'] is not None: if column['dataSecLvl'] is None and column['dataDictId'] is not None:
@ -76,10 +76,10 @@ class MetaService:
@classmethod @classmethod
async def meta_supp(cls, result_db: AsyncSession, supple: SuppleModel, current_user: CurrentUserModel): async def meta_supp(cls, result_db: AsyncSession, supple: SuppleModel, current_user: CurrentUserModel):
# 0,暂存 waiting,申请中,pending审核中,succeed,rejected已审核,canceled已取消 # 0,暂存 waiting,申请中,pending审核中,succeed,rejected已审核,canceled已取消
hasTable = await MetaDao.get_lastest_meta_data_supp_vett(result_db, supple.ssys_cd, supple.mdl_name, hasTable = await MetaDao.get_lastest_meta_data_supp_vett(result_db, supple.ssys_id, supple.mdl_name,
supple.tab_eng_name) supple.tab_eng_name)
oldTable = await MetaDao.get_supp_table_by_vett(supple.ssys_cd, supple.mdl_name, supple.tab_eng_name, result_db) oldTable = await MetaDao.get_supp_table_by_vett(supple.ssys_id, supple.mdl_name, supple.tab_eng_name, result_db)
tableInfo = await MetaDao.get_meta_table(supple.ssys_cd, supple.mdl_name, supple.tab_eng_name, result_db) tableInfo = await MetaDao.get_meta_table(supple.ssys_id, supple.mdl_name, supple.tab_eng_name, result_db)
tableOnum = uuid.uuid4() tableOnum = uuid.uuid4()
if hasTable is not None: if hasTable is not None:
if hasTable.apply_status == 'waiting': if hasTable.apply_status == 'waiting':
@ -89,7 +89,7 @@ class MetaService:
applyTime = datetime.now().strftime("%Y-%m-%d %H:%M:%S") applyTime = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
suppTableInfo = MetadataSuppInfoVett() suppTableInfo = MetadataSuppInfoVett()
suppTableInfo.onum = tableOnum suppTableInfo.onum = tableOnum
suppTableInfo.ssys_cd = supple.ssys_cd suppTableInfo.ssys_id = supple.ssys_id
suppTableInfo.mdl_name = supple.mdl_name suppTableInfo.mdl_name = supple.mdl_name
suppTableInfo.tab_eng_name = supple.tab_eng_name suppTableInfo.tab_eng_name = supple.tab_eng_name
suppTableInfo.tab_crrct_name = supple.tab_crrct_name suppTableInfo.tab_crrct_name = supple.tab_crrct_name
@ -104,18 +104,18 @@ class MetaService:
await MetaDao.insertMetadataSuppInfoVett(suppTableInfo, result_db) await MetaDao.insertMetadataSuppInfoVett(suppTableInfo, result_db)
if supple.columnInfo is not None and len(supple.columnInfo) > 0: if supple.columnInfo is not None and len(supple.columnInfo) > 0:
for column in supple.columnInfo: for column in supple.columnInfo:
oldColumn = await MetaDao.get_supp_column_by_columnInfo(supple.ssys_cd, supple.mdl_name, oldColumn = await MetaDao.get_supp_column_by_columnInfo(supple.ssys_id, supple.mdl_name,
supple.tab_eng_name, supple.tab_eng_name,
column.fld_eng_name, result_db) column.fld_eng_name, result_db)
data_dict_name = '' data_dict_name = ''
if oldColumn and 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) 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 '' 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, columnInfo = await MetaDao.get_meta_column(supple.ssys_id, supple.mdl_name, supple.tab_eng_name,
column.fld_eng_name, result_db) column.fld_eng_name, result_db)
suppColumnInfo = MetadataFldSuppInfoVett() suppColumnInfo = MetadataFldSuppInfoVett()
suppColumnInfo.onum = uuid.uuid4() suppColumnInfo.onum = uuid.uuid4()
suppColumnInfo.ssys_cd = supple.ssys_cd suppColumnInfo.ssys_id = supple.ssys_id
suppColumnInfo.mdl_name = supple.mdl_name suppColumnInfo.mdl_name = supple.mdl_name
suppColumnInfo.tab_eng_name = supple.tab_eng_name suppColumnInfo.tab_eng_name = supple.tab_eng_name
suppColumnInfo.fld_eng_name = column.fld_eng_name suppColumnInfo.fld_eng_name = column.fld_eng_name
@ -146,7 +146,7 @@ class MetaService:
tableDict = dict( tableDict = dict(
onum=tableInfo.onum, onum=tableInfo.onum,
crrctVerNum=table.crrct_ver_num if table else None, crrctVerNum=table.crrct_ver_num if table else None,
ssysCd=tableInfo.ssys_cd, ssysId=tableInfo.ssys_id,
mdlName=tableInfo.mdl_name, mdlName=tableInfo.mdl_name,
tabEngName=tableInfo.tab_eng_name, tabEngName=tableInfo.tab_eng_name,
tabCnName=tableInfo.tab_cn_name, tabCnName=tableInfo.tab_cn_name,
@ -168,7 +168,7 @@ class MetaService:
columnDict = dict( columnDict = dict(
onum=columnInfo.onum, onum=columnInfo.onum,
crrctVerNum=column.crrct_ver_num if column and column.crrct_ver_num else None, crrctVerNum=column.crrct_ver_num if column and column.crrct_ver_num else None,
ssysCd=columnInfo.ssys_cd, ssysId=columnInfo.ssys_id,
mdlName=columnInfo.mdl_name, mdlName=columnInfo.mdl_name,
tabEngName=columnInfo.tab_eng_name, tabEngName=columnInfo.tab_eng_name,
fldEngName=columnInfo.fld_eng_name, fldEngName=columnInfo.fld_eng_name,
@ -195,13 +195,13 @@ class MetaService:
async def get_meta_apply_detail_services(cls, result_db: AsyncSession, businessId: str): async def get_meta_apply_detail_services(cls, result_db: AsyncSession, businessId: str):
tableData = await MetaDao.get_supp_table_vett_by_id(businessId, result_db) tableData = await MetaDao.get_supp_table_vett_by_id(businessId, result_db)
table = CamelCaseUtil.transform_result(tableData) table = CamelCaseUtil.transform_result(tableData)
clas_list = await MetaDao.get_meta_tab_clas(result_db, tableData.ssys_cd, tableData.mdl_name, clas_list = await MetaDao.get_meta_tab_clas(result_db, tableData.ssys_id, tableData.mdl_name,
tableData.tab_eng_name) tableData.tab_eng_name)
table['batchTabClas'] = CamelCaseUtil.transform_result(clas_list) table['batchTabClas'] = CamelCaseUtil.transform_result(clas_list)
columnData = await MetaDao.get_supp_column_vett_by_tableInfo(result_db, tableData) columnData = await MetaDao.get_supp_column_vett_by_tableInfo(result_db, tableData)
column_list = CamelCaseUtil.transform_result(columnData) column_list = CamelCaseUtil.transform_result(columnData)
for column in column_list: for column in column_list:
col_list = await MetaDao.get_meta_fld_clas(result_db, column['ssysCd'], column['mdlName'], col_list = await MetaDao.get_meta_fld_clas(result_db, column['ssysId'], column['mdlName'],
column['tabEngName'], column['fldEngName']) column['tabEngName'], column['fldEngName'])
column['batchColClas'] = CamelCaseUtil.transform_result(col_list) column['batchColClas'] = CamelCaseUtil.transform_result(col_list)
result = dict( result = dict(
@ -213,16 +213,16 @@ class MetaService:
@classmethod @classmethod
async def get_table_by_id(cls, result_db: AsyncSession, tableId: int): async def get_table_by_id(cls, result_db: AsyncSession, tableId: int):
table = await MetaDao.get_meta_table_by_id(tableId, result_db) table = await MetaDao.get_meta_table_by_id(tableId, result_db)
tab_list = await MetaDao.get_meta_tab_clas(result_db, table['ssysCd'], table['mdlName'], tab_list = await MetaDao.get_meta_tab_clas(result_db, table['ssysId'], table['mdlName'],
table['tabEngName']) table['tabEngName'])
table['batchTabClas'] = CamelCaseUtil.transform_result(tab_list) table['batchTabClas'] = CamelCaseUtil.transform_result(tab_list)
colQuery = MetaColObject() colQuery = MetaColObject()
colQuery.ssys_cd = table['ssysCd'] colQuery.ssys_id = table['ssysId']
colQuery.mdl_name = table['mdlName'] colQuery.mdl_name = table['mdlName']
colQuery.tab_name = table['tabEngName'] colQuery.tab_name = table['tabEngName']
columnList = await MetaDao.get_meta_col_list(result_db, colQuery) columnList = await MetaDao.get_meta_col_list(result_db, colQuery)
for column in columnList: for column in columnList:
col_list = await MetaDao.get_meta_fld_clas(result_db, column['ssys_cd'], column['mdl_name'], col_list = await MetaDao.get_meta_fld_clas(result_db, column['ssys_id'], column['mdl_name'],
column['tab_eng_name'], column['fld_eng_name']) column['tab_eng_name'], column['fld_eng_name'])
column['batchColClas'] = CamelCaseUtil.transform_result(col_list) column['batchColClas'] = CamelCaseUtil.transform_result(col_list)
table['columnList'] = CamelCaseUtil.transform_result(columnList) table['columnList'] = CamelCaseUtil.transform_result(columnList)
@ -230,37 +230,37 @@ class MetaService:
@classmethod @classmethod
async def getBusinessRelationShip(cls, result_db: AsyncSession, meta_query: MetaBusinessRelShipObject): async def getBusinessRelationShip(cls, result_db: AsyncSession, meta_query: MetaBusinessRelShipObject):
currentNodeList = await cls.getRelationByTable(result_db, meta_query.ssys_cd, meta_query.mdl_name, currentNodeList = await cls.getRelationByTable(result_db, meta_query.ssys_id, meta_query.mdl_name,
meta_query.tab_eng_name, meta_query.type) meta_query.tab_eng_name, meta_query.type)
relationList = [] relationList = []
if currentNodeList is not None and len(currentNodeList) > 0: if currentNodeList is not None and len(currentNodeList) > 0:
for currentNode in currentNodeList: for currentNode in currentNodeList:
if currentNode['father'] is None: if currentNode['father'] is None:
relation = {"source": {"ssys_cd": currentNode['a_ssys_cd'], relation = {"source": {"ssys_id": currentNode['a_ssys_id'],
"mdl_name": currentNode['a_mdl_name'], "mdl_name": currentNode['a_mdl_name'],
"tab_eng_name": currentNode['a_tab_eng_name'], "tab_eng_name": currentNode['a_tab_eng_name'],
"fld_eng_name": currentNode['a_fld_eng_name']}, "fld_eng_name": currentNode['a_fld_eng_name']},
"target": {'ssys_cd': currentNode['b_ssys_cd'], "target": {'ssys_id': currentNode['b_ssys_id'],
'mdl_name': currentNode['b_mdl_name'], 'mdl_name': currentNode['b_mdl_name'],
'tab_eng_name': currentNode['b_tab_eng_name'], 'tab_eng_name': currentNode['b_tab_eng_name'],
'fld_eng_name': currentNode['b_fld_eng_name']}, 'fld_eng_name': currentNode['b_fld_eng_name']},
"endArrow": False} "endArrow": False}
else: else:
relation = {"source": {"ssys_cd": currentNode['a_ssys_cd'], relation = {"source": {"ssys_id": currentNode['a_ssys_id'],
"mdl_name": currentNode['a_mdl_name'], "mdl_name": currentNode['a_mdl_name'],
"tab_eng_name": currentNode['a_tab_eng_name'], "tab_eng_name": currentNode['a_tab_eng_name'],
"fld_eng_name": currentNode['a_fld_eng_name']}, "fld_eng_name": currentNode['a_fld_eng_name']},
"target": {'ssys_cd': currentNode['b_ssys_cd'], "target": {'ssys_id': currentNode['b_ssys_id'],
'mdl_name': currentNode['b_mdl_name'], 'mdl_name': currentNode['b_mdl_name'],
'tab_eng_name': currentNode['b_tab_eng_name'], 'tab_eng_name': currentNode['b_tab_eng_name'],
'fld_eng_name': currentNode['b_fld_eng_name']}, 'fld_eng_name': currentNode['b_fld_eng_name']},
"endArrow": True} if \ "endArrow": True} if \
currentNode['father'] == 'A' else { currentNode['father'] == 'A' else {
"source": {'ssys_cd': currentNode['b_ssys_cd'], "source": {'ssys_id': currentNode['b_ssys_id'],
'mdl_name': currentNode['b_mdl_name'], 'mdl_name': currentNode['b_mdl_name'],
'tab_eng_name': currentNode['b_tab_eng_name'], 'tab_eng_name': currentNode['b_tab_eng_name'],
'fld_eng_name': currentNode['b_fld_eng_name']}, 'fld_eng_name': currentNode['b_fld_eng_name']},
"target": {"ssys_cd": currentNode['a_ssys_cd'], "target": {"ssys_id": currentNode['a_ssys_id'],
"mdl_name": currentNode['a_mdl_name'], "mdl_name": currentNode['a_mdl_name'],
"tab_eng_name": currentNode['a_tab_eng_name'], "tab_eng_name": currentNode['a_tab_eng_name'],
"fld_eng_name": currentNode['a_fld_eng_name']}, "fld_eng_name": currentNode['a_fld_eng_name']},
@ -270,7 +270,7 @@ class MetaService:
if currentNode['a_tab_eng_name'] == meta_query.tab_eng_name: if currentNode['a_tab_eng_name'] == meta_query.tab_eng_name:
if currentNode['father'] == 'A': if currentNode['father'] == 'A':
# b为下游,取b字段的下下游 # b为下游,取b字段的下下游
nextNodeList = (await cls.getRelationByColumn(result_db, currentNode['b_ssys_cd'], nextNodeList = (await cls.getRelationByColumn(result_db, currentNode['b_ssys_id'],
currentNode['b_mdl_name'], currentNode['b_mdl_name'],
currentNode['b_tab_eng_name'], currentNode['b_tab_eng_name'],
currentNode['b_fld_eng_name'], currentNode['b_fld_eng_name'],
@ -278,20 +278,20 @@ class MetaService:
'next')) 'next'))
if nextNodeList and len(nextNodeList) > 0: if nextNodeList and len(nextNodeList) > 0:
for nextNode in nextNodeList: for nextNode in nextNodeList:
relation = {"source": {"ssys_cd": nextNode['a_ssys_cd'], relation = {"source": {"ssys_id": nextNode['a_ssys_id'],
"mdl_name": nextNode['a_mdl_name'], "mdl_name": nextNode['a_mdl_name'],
"tab_eng_name": nextNode['a_tab_eng_name'], "tab_eng_name": nextNode['a_tab_eng_name'],
"fld_eng_name": nextNode['a_fld_eng_name']}, "fld_eng_name": nextNode['a_fld_eng_name']},
"target": {'ssys_cd': nextNode['b_ssys_cd'], "target": {'ssys_id': nextNode['b_ssys_id'],
'mdl_name': nextNode['b_mdl_name'], 'mdl_name': nextNode['b_mdl_name'],
'tab_eng_name': nextNode['b_tab_eng_name'], 'tab_eng_name': nextNode['b_tab_eng_name'],
'fld_eng_name': nextNode['b_fld_eng_name']}, 'fld_eng_name': nextNode['b_fld_eng_name']},
"endArrow": True} if nextNode['father'] == 'A' else \ "endArrow": True} if nextNode['father'] == 'A' else \
{"source": {'ssys_cd': nextNode['b_ssys_cd'], {"source": {'ssys_id': nextNode['b_ssys_id'],
'mdl_name': nextNode['b_mdl_name'], 'mdl_name': nextNode['b_mdl_name'],
'tab_eng_name': nextNode['b_tab_eng_name'], 'tab_eng_name': nextNode['b_tab_eng_name'],
'fld_eng_name': nextNode['b_fld_eng_name']}, 'fld_eng_name': nextNode['b_fld_eng_name']},
"target": {"ssys_cd": nextNode['a_ssys_cd'], "target": {"ssys_id": nextNode['a_ssys_id'],
"mdl_name": nextNode['a_mdl_name'], "mdl_name": nextNode['a_mdl_name'],
"tab_eng_name": nextNode['a_tab_eng_name'], "tab_eng_name": nextNode['a_tab_eng_name'],
"fld_eng_name": nextNode['a_fld_eng_name']}, "fld_eng_name": nextNode['a_fld_eng_name']},
@ -300,7 +300,7 @@ class MetaService:
relationList.append(relation) relationList.append(relation)
if currentNode['father'] == 'B': if currentNode['father'] == 'B':
# b为上游, 取b字段的上上游 # b为上游, 取b字段的上上游
preNodeList = await cls.getRelationByColumn(result_db, currentNode['b_ssys_cd'], preNodeList = await cls.getRelationByColumn(result_db, currentNode['b_ssys_id'],
currentNode['b_mdl_name'], currentNode['b_mdl_name'],
currentNode['b_tab_eng_name'], currentNode['b_tab_eng_name'],
currentNode['b_fld_eng_name'], currentNode['b_fld_eng_name'],
@ -308,20 +308,20 @@ class MetaService:
'pre') 'pre')
if preNodeList and len(preNodeList) > 0: if preNodeList and len(preNodeList) > 0:
for preNode in preNodeList: for preNode in preNodeList:
relation = {"source": {"ssys_cd": preNode['a_ssys_cd'], relation = {"source": {"ssys_id": preNode['a_ssys_id'],
"mdl_name": preNode['a_mdl_name'], "mdl_name": preNode['a_mdl_name'],
"tab_eng_name": preNode['a_tab_eng_name'], "tab_eng_name": preNode['a_tab_eng_name'],
"fld_eng_name": preNode['a_fld_eng_name']}, "fld_eng_name": preNode['a_fld_eng_name']},
"target": {'ssys_cd': preNode['b_ssys_cd'], "target": {'ssys_id': preNode['b_ssys_id'],
'mdl_name': preNode['b_mdl_name'], 'mdl_name': preNode['b_mdl_name'],
'tab_eng_name': preNode['b_tab_eng_name'], 'tab_eng_name': preNode['b_tab_eng_name'],
'fld_eng_name': preNode['b_fld_eng_name']}, 'fld_eng_name': preNode['b_fld_eng_name']},
"endArrow": True} if preNode['father'] == 'A' else \ "endArrow": True} if preNode['father'] == 'A' else \
{"source": {'ssys_cd': preNode['b_ssys_cd'], {"source": {'ssys_id': preNode['b_ssys_id'],
'mdl_name': preNode['b_mdl_name'], 'mdl_name': preNode['b_mdl_name'],
'tab_eng_name': preNode['b_tab_eng_name'], 'tab_eng_name': preNode['b_tab_eng_name'],
'fld_eng_name': preNode['b_fld_eng_name']}, 'fld_eng_name': preNode['b_fld_eng_name']},
"target": {"ssys_cd": preNode['a_ssys_cd'], "mdl_name": preNode['a_mdl_name'], "target": {"ssys_id": preNode['a_ssys_id'], "mdl_name": preNode['a_mdl_name'],
"tab_eng_name": preNode['a_tab_eng_name'], "tab_eng_name": preNode['a_tab_eng_name'],
"fld_eng_name": preNode['a_fld_eng_name']}, "fld_eng_name": preNode['a_fld_eng_name']},
"endArrow": True} "endArrow": True}
@ -329,7 +329,7 @@ class MetaService:
if currentNode['b_tab_eng_name'] == meta_query.tab_eng_name: if currentNode['b_tab_eng_name'] == meta_query.tab_eng_name:
if currentNode['father'] == 'A': if currentNode['father'] == 'A':
# a 为上游,取a字段的上上游 # a 为上游,取a字段的上上游
preNodeList = await cls.getRelationByColumn(result_db, currentNode['a_ssys_cd'], preNodeList = await cls.getRelationByColumn(result_db, currentNode['a_ssys_id'],
currentNode['a_mdl_name'], currentNode['a_mdl_name'],
currentNode['a_tab_eng_name'], currentNode['a_tab_eng_name'],
currentNode['a_fld_eng_name'], currentNode['a_fld_eng_name'],
@ -337,49 +337,49 @@ class MetaService:
'pre') 'pre')
if preNodeList and len(preNodeList) > 0: if preNodeList and len(preNodeList) > 0:
for preNode in preNodeList: for preNode in preNodeList:
relation = {"source": {"ssys_cd": preNode['a_ssys_cd'], relation = {"source": {"ssys_id": preNode['a_ssys_id'],
"mdl_name": preNode['a_mdl_name'], "mdl_name": preNode['a_mdl_name'],
"tab_eng_name": preNode['a_tab_eng_name'], "tab_eng_name": preNode['a_tab_eng_name'],
"fld_eng_name": preNode['a_fld_eng_name']}, "fld_eng_name": preNode['a_fld_eng_name']},
"target": {'ssys_cd': preNode['b_ssys_cd'], "target": {'ssys_id': preNode['b_ssys_id'],
'mdl_name': preNode['b_mdl_name'], 'mdl_name': preNode['b_mdl_name'],
'tab_eng_name': preNode['b_tab_eng_name'], 'tab_eng_name': preNode['b_tab_eng_name'],
'fld_eng_name': preNode['b_fld_eng_name']}, 'fld_eng_name': preNode['b_fld_eng_name']},
"endArrow": True} if \ "endArrow": True} if \
preNode['father'] == 'A' else { preNode['father'] == 'A' else {
"source": {'ssys_cd': preNode['b_ssys_cd'], "source": {'ssys_id': preNode['b_ssys_id'],
'mdl_name': preNode['b_mdl_name'], 'mdl_name': preNode['b_mdl_name'],
'tab_eng_name': preNode['b_tab_eng_name'], 'tab_eng_name': preNode['b_tab_eng_name'],
'fld_eng_name': preNode['b_fld_eng_name']}, 'fld_eng_name': preNode['b_fld_eng_name']},
"target": {"ssys_cd": preNode['a_ssys_cd'], "mdl_name": preNode['a_mdl_name'], "target": {"ssys_id": preNode['a_ssys_id'], "mdl_name": preNode['a_mdl_name'],
"tab_eng_name": preNode['a_tab_eng_name'], "tab_eng_name": preNode['a_tab_eng_name'],
"fld_eng_name": preNode['a_fld_eng_name']}, "fld_eng_name": preNode['a_fld_eng_name']},
"endArrow": True} "endArrow": True}
relationList.append(relation) relationList.append(relation)
if currentNode['father'] == 'B': if currentNode['father'] == 'B':
# a 为下游,取a字段的下下游 # a 为下游,取a字段的下下游
nextNodeList = await cls.getRelationByColumn(result_db, currentNode['a_ssys_cd'], nextNodeList = await cls.getRelationByColumn(result_db, currentNode['a_ssys_id'],
currentNode['a_mdl_name'], currentNode['a_mdl_name'],
currentNode['a_tab_eng_name'], currentNode['a_tab_eng_name'],
currentNode['a_fld_eng_name'], currentNode['a_fld_eng_name'],
meta_query.type, meta_query.type,
'next') 'next')
for nextNode in nextNodeList: for nextNode in nextNodeList:
relation = {"source": {"ssys_cd": nextNode['a_ssys_cd'], relation = {"source": {"ssys_id": nextNode['a_ssys_id'],
"mdl_name": nextNode['a_mdl_name'], "mdl_name": nextNode['a_mdl_name'],
"tab_eng_name": nextNode['a_tab_eng_name'], "tab_eng_name": nextNode['a_tab_eng_name'],
"fld_eng_name": nextNode['a_fld_eng_name']}, "fld_eng_name": nextNode['a_fld_eng_name']},
"target": {'ssys_cd': nextNode['b_ssys_cd'], "target": {'ssys_id': nextNode['b_ssys_id'],
'mdl_name': nextNode['b_mdl_name'], 'mdl_name': nextNode['b_mdl_name'],
'tab_eng_name': nextNode['b_tab_eng_name'], 'tab_eng_name': nextNode['b_tab_eng_name'],
'fld_eng_name': nextNode['b_fld_eng_name']}, 'fld_eng_name': nextNode['b_fld_eng_name']},
"endArrow": True} if \ "endArrow": True} if \
nextNode['father'] == 'A' else { nextNode['father'] == 'A' else {
"source": {'ssys_cd': nextNode['b_ssys_cd'], "source": {'ssys_id': nextNode['b_ssys_id'],
'mdl_name': nextNode['b_mdl_name'], 'mdl_name': nextNode['b_mdl_name'],
'tab_eng_name': nextNode['b_tab_eng_name'], 'tab_eng_name': nextNode['b_tab_eng_name'],
'fld_eng_name': nextNode['b_fld_eng_name']}, 'fld_eng_name': nextNode['b_fld_eng_name']},
"target": {"ssys_cd": nextNode['a_ssys_cd'], "mdl_name": nextNode['a_mdl_name'], "target": {"ssys_id": nextNode['a_ssys_id'], "mdl_name": nextNode['a_mdl_name'],
"tab_eng_name": nextNode['a_tab_eng_name'], "tab_eng_name": nextNode['a_tab_eng_name'],
"fld_eng_name": nextNode['a_fld_eng_name']}, "fld_eng_name": nextNode['a_fld_eng_name']},
"endArrow": True} "endArrow": True}
@ -391,38 +391,38 @@ class MetaService:
hasSourceTable = False hasSourceTable = False
hasTargetTable = False hasTargetTable = False
for tab in tableList: for tab in tableList:
if tab['ssys_cd'] == relation['source']['ssys_cd'] and tab['mdl_name'] == \ if tab['ssys_id'] == relation['source']['ssys_id'] and tab['mdl_name'] == \
relation['source']['mdl_name'] and tab['tab_eng_name'] == \ relation['source']['mdl_name'] and tab['tab_eng_name'] == \
relation['source']['tab_eng_name']: relation['source']['tab_eng_name']:
hasSourceTable = True hasSourceTable = True
if tab['ssys_cd'] == relation['target']['ssys_cd'] and tab['mdl_name'] == \ if tab['ssys_id'] == relation['target']['ssys_id'] and tab['mdl_name'] == \
relation['target']['mdl_name'] and tab['tab_eng_name'] == \ relation['target']['mdl_name'] and tab['tab_eng_name'] == \
relation['target']['tab_eng_name']: relation['target']['tab_eng_name']:
hasTargetTable = True hasTargetTable = True
if not hasSourceTable: if not hasSourceTable:
tableList.append({"ssys_cd": relation['source']['ssys_cd'], tableList.append({"ssys_id": relation['source']['ssys_id'],
"mdl_name": relation['source']['mdl_name'], "mdl_name": relation['source']['mdl_name'],
"tab_eng_name": relation['source']['tab_eng_name']}) "tab_eng_name": relation['source']['tab_eng_name']})
if not hasTargetTable: if not hasTargetTable:
tableList.append({"ssys_cd": relation['target']['ssys_cd'], tableList.append({"ssys_id": relation['target']['ssys_id'],
"mdl_name": relation['target']['mdl_name'], "mdl_name": relation['target']['mdl_name'],
"tab_eng_name": relation['target']['tab_eng_name']}) "tab_eng_name": relation['target']['tab_eng_name']})
else: else:
tableList.append({"ssys_cd": relation['source']['ssys_cd'], tableList.append({"ssys_id": relation['source']['ssys_id'],
"mdl_name": relation['source']['mdl_name'], "mdl_name": relation['source']['mdl_name'],
"tab_eng_name": relation['source']['tab_eng_name']}) "tab_eng_name": relation['source']['tab_eng_name']})
tableList.append({"ssys_cd": relation['target']['ssys_cd'], tableList.append({"ssys_id": relation['target']['ssys_id'],
"mdl_name": relation['target']['mdl_name'], "mdl_name": relation['target']['mdl_name'],
"tab_eng_name": relation['target']['tab_eng_name']}) "tab_eng_name": relation['target']['tab_eng_name']})
if len(tableList) > 0: if len(tableList) > 0:
for table in tableList: for table in tableList:
query_object = MetaColObject() query_object = MetaColObject()
query_object.ssys_cd = table['ssys_cd'] query_object.ssys_id = table['ssys_id']
query_object.mdl_name = table['mdl_name'] query_object.mdl_name = table['mdl_name']
query_object.tab_name = table['tab_eng_name'] query_object.tab_name = table['tab_eng_name']
meta_result = await MetaDao.get_meta_col_name_list(result_db, query_object) meta_result = await MetaDao.get_meta_col_name_list(result_db, query_object)
result = CamelCaseUtil.transform_result(meta_result) result = CamelCaseUtil.transform_result(meta_result)
tableCnName = await MetaDao.get_meta_table_cn_name(result_db, table['ssys_cd'], table['mdl_name'], tableCnName = await MetaDao.get_meta_table_cn_name(result_db, table['ssys_id'], table['mdl_name'],
table['tab_eng_name']) table['tab_eng_name'])
table['tab_cn_name'] = tableCnName table['tab_cn_name'] = tableCnName
table['column'] = result table['column'] = result
@ -433,21 +433,21 @@ class MetaService:
return result return result
@classmethod @classmethod
async def getRelationByTable(cls, result_db: AsyncSession, ssys_cd: str, mdl_name: str, async def getRelationByTable(cls, result_db: AsyncSession, ssys_id: int, mdl_name: str,
tab_eng_name: str, rel_type: str): tab_eng_name: str, rel_type: str):
if rel_type == 'op': if rel_type == 'op':
currentNodeList = await MetaDao.get_op_relation_by_table(result_db, ssys_cd, mdl_name, tab_eng_name) currentNodeList = await MetaDao.get_op_relation_by_table(result_db, ssys_id, mdl_name, tab_eng_name)
return currentNodeList return currentNodeList
if rel_type == 'er': if rel_type == 'er':
currentNodeList = await MetaDao.get_er_relation_by_table(result_db, ssys_cd, mdl_name, tab_eng_name) currentNodeList = await MetaDao.get_er_relation_by_table(result_db, ssys_id, mdl_name, tab_eng_name)
return currentNodeList return currentNodeList
return None return None
@classmethod @classmethod
async def getRelationByColumn(cls, result_db: AsyncSession, ssys_cd: str, mdl_name: str, async def getRelationByColumn(cls, result_db: AsyncSession, ssys_id: int, mdl_name: str,
tab_eng_name: str, fld_eng_name: str, rel_type: str, module: str): tab_eng_name: str, fld_eng_name: str, rel_type: str, module: str):
col = { col = {
'ssys_cd': ssys_cd, 'ssys_id': ssys_id,
'mdl_name': mdl_name, 'mdl_name': mdl_name,
'tab_eng_name': tab_eng_name, 'tab_eng_name': tab_eng_name,
'fld_eng_name': fld_eng_name 'fld_eng_name': fld_eng_name
@ -462,7 +462,7 @@ class MetaService:
@classmethod @classmethod
async def getMetaProc(cls, result_db: AsyncSession, meta_query: MetaProcQueryObject): async def getMetaProc(cls, result_db: AsyncSession, meta_query: MetaProcQueryObject):
result = await MetaDao.get_proc_by_table(result_db, meta_query.ssys_cd, meta_query.mdl_name, result = await MetaDao.get_proc_by_table(result_db, meta_query.ssys_id, meta_query.mdl_name,
meta_query.tab_eng_name) meta_query.tab_eng_name)
return result return result
@ -473,38 +473,38 @@ class MetaService:
if bloodRelations is not None and len(bloodRelations) > 0: if bloodRelations is not None and len(bloodRelations) > 0:
for blood in bloodRelations: for blood in bloodRelations:
if len(tableList) > 0: if len(tableList) > 0:
exists1 = any(item["ssys_cd"].lower() == blood.targetSysCd.lower() exists1 = any(item["ssys_id"] == blood.targetSysId
and item["mdl_name"].lower() == blood.targetMdlName.lower() and item["mdl_name"].lower() == blood.targetMdlName.lower()
and item["tab_eng_name"].lower() == blood.targetTableName.lower() and item["tab_eng_name"].lower() == blood.targetTableName.lower()
for item in tableList) for item in tableList)
if not exists1: if not exists1:
tableList.append({"ssys_cd": blood.targetSysCd.lower(), tableList.append({"ssys_id": blood.targetSysId,
"mdl_name": blood.targetMdlName.lower(), "mdl_name": blood.targetMdlName.lower(),
"tab_eng_name": blood.targetTableName.lower()}) "tab_eng_name": blood.targetTableName.lower()})
exists2 = any(item["ssys_cd"].lower() == blood.sourceSysCd.lower() exists2 = any(item["ssys_id"] == blood.sourceSysId
and item["mdl_name"].lower() == blood.sourceMdlName.lower() and item["mdl_name"].lower() == blood.sourceMdlName.lower()
and item["tab_eng_name"].lower() == blood.sourceTableName.lower() and item["tab_eng_name"].lower() == blood.sourceTableName.lower()
for item in tableList) for item in tableList)
if not exists2: if not exists2:
tableList.append({"ssys_cd": blood.sourceSysCd.lower(), tableList.append({"ssys_id": blood.sourceSysId,
"mdl_name": blood.sourceMdlName.lower(), "mdl_name": blood.sourceMdlName.lower(),
"tab_eng_name": blood.sourceTableName.lower()}) "tab_eng_name": blood.sourceTableName.lower()})
else: else:
tableList.append({"ssys_cd": blood.targetSysCd.lower(), tableList.append({"ssys_id": blood.targetSysId,
"mdl_name": blood.targetMdlName.lower(), "mdl_name": blood.targetMdlName.lower(),
"tab_eng_name": blood.targetTableName.lower()}) "tab_eng_name": blood.targetTableName.lower()})
tableList.append({"ssys_cd": blood.sourceSysCd.lower(), tableList.append({"ssys_id": blood.sourceSysId,
"mdl_name": blood.sourceMdlName.lower(), "mdl_name": blood.sourceMdlName.lower(),
"tab_eng_name": blood.sourceTableName.lower()}) "tab_eng_name": blood.sourceTableName.lower()})
if len(tableList) > 0: if len(tableList) > 0:
for table in tableList: for table in tableList:
query_object = MetaColObject() query_object = MetaColObject()
query_object.ssys_cd = table['ssys_cd'] query_object.ssys_id = table['ssys_id']
query_object.mdl_name = table['mdl_name'] query_object.mdl_name = table['mdl_name']
query_object.tab_name = table['tab_eng_name'] query_object.tab_name = table['tab_eng_name']
meta_result = await MetaDao.get_meta_col_name_list(result_db, query_object) meta_result = await MetaDao.get_meta_col_name_list(result_db, query_object)
result1 = CamelCaseUtil.transform_result(meta_result) result1 = CamelCaseUtil.transform_result(meta_result)
tableCnName = await MetaDao.get_meta_table_cn_name(result_db, table['ssys_cd'], table['mdl_name'], tableCnName = await MetaDao.get_meta_table_cn_name(result_db, table['ssys_id'], table['mdl_name'],
table['tab_eng_name']) table['tab_eng_name'])
table['tab_cn_name'] = tableCnName table['tab_cn_name'] = tableCnName
table['column'] = result1 table['column'] = result1

17
vue-fastapi-frontend/src/api/metadataConfig/metadataConfig.js

@ -206,6 +206,15 @@ export function getBusiLabelList(data) {
}) })
} }
// 获取业务标签列表(分页)
export function getColOpTypeLabelList(data) {
return request({
url: '/default-api/metadataConfig/colOpTypeLabel/list',
method: 'get',
params: data
})
}
// 新增业务标签 // 新增业务标签
export function addBusiLabel(data) { export function addBusiLabel(data) {
return request({ return request({
@ -239,14 +248,6 @@ export function getBusiLabelDetail(onum) {
method: 'get' method: 'get'
}) })
} }
// 获取操作标签列表(分页)
export function getDataopLabelList(data) {
return request({
url: '/default-api/metadataConfig/dataopLabel/list',
method: 'get',
params: data
})
}
// 新增操作标签 // 新增操作标签
export function addDataopLabel(data) { export function addDataopLabel(data) {

6
vue-fastapi-frontend/src/views/meta/metaInfo/bloodRelation.vue

@ -653,7 +653,7 @@ watch(
for (let i = 0; i < props.data.tableList.length; i++) { for (let i = 0; i < props.data.tableList.length; i++) {
let table = props.data.tableList[i] let table = props.data.tableList[i]
let g6Tab = { let g6Tab = {
id: table.ssys_cd+"-"+table.mdl_name+"-"+table.tab_eng_name, id: table.ssys_id+"-"+table.mdl_name+"-"+table.tab_eng_name,
label: table.tab_eng_name + ((table.tab_cn_name && table.tab_cn_name.length>0)?"("+table.tab_cn_name+")":""), label: table.tab_eng_name + ((table.tab_cn_name && table.tab_cn_name.length>0)?"("+table.tab_cn_name+")":""),
attrs:[], attrs:[],
collapsed:true collapsed:true
@ -670,8 +670,8 @@ watch(
for (let i = 0; i < props.data.relation.length; i++) { for (let i = 0; i < props.data.relation.length; i++) {
let relation = props.data.relation[i] let relation = props.data.relation[i]
let key = relation.targetColName.toLowerCase() let key = relation.targetColName.toLowerCase()
let tableKey = relation.sourceSysCd.toLowerCase()+"-"+relation.sourceMdlName.toLowerCase()+"-"+relation.sourceTableName.toLowerCase() let tableKey = relation.sourceSysId+"-"+relation.sourceMdlName.toLowerCase()+"-"+relation.sourceTableName.toLowerCase()
let nodeId = relation.targetSysCd.toLowerCase()+"-"+relation.targetMdlName.toLowerCase()+"-"+relation.targetTableName.toLowerCase() let nodeId = relation.targetSysId+"-"+relation.targetMdlName.toLowerCase()+"-"+relation.targetTableName.toLowerCase()
if (g6data.value.length > 0){ if (g6data.value.length > 0){
for (let j = 0; j < g6data.value.length; j++) { for (let j = 0; j < g6data.value.length; j++) {
if (g6data.value[j].id === tableKey){ if (g6data.value[j].id === tableKey){

49
vue-fastapi-frontend/src/views/meta/metaInfo/index.vue

@ -758,7 +758,7 @@
const data = reactive({ const data = reactive({
queryParams:{ queryParams:{
ssysCd:'', ssysId:'',
mdlName:'', mdlName:'',
tabName:'', tabName:'',
colName:'', colName:'',
@ -772,6 +772,7 @@
tabEngName:'', tabEngName:'',
tabCnName:'', tabCnName:'',
ssysCd:'', ssysCd:'',
ssysId:-1,
mdlName:'', mdlName:'',
tabCrrctName:'', tabCrrctName:'',
tabDesc:'', tabDesc:'',
@ -863,18 +864,10 @@
} }
} }
function remoteStddict(){ function remoteStddict(){
let param = {ssysCd:""} let param = {ssysCd:currentMetaData.value.ssysId + ""}
let dbList = databaseList.value[0].children; listStdDictNoPage(param).then(res=>{
for (let i = 0; i < dbList.length; i++) { stddictOptions.value = res.data
if (currentMetaData.value.ssysCd.toUpperCase() === dbList[i].name.toUpperCase()){ })
param.ssysCd = dbList[i].id + ""
}
}
if (param.ssysCd !== ""){
listStdDictNoPage(param).then(res=>{
stddictOptions.value = res.data
})
}
} }
function remoteSecLvl(){ function remoteSecLvl(){
listMetadataSecOptions().then(res=>{ listMetadataSecOptions().then(res=>{
@ -883,7 +876,7 @@
} }
function generateDemoData(){ function generateDemoData(){
let param ={ let param ={
dataAstSrc: currentMetaData.value.ssysCd, dataAstSrc: currentMetaData.value.ssysId,
dataAstEngName:currentMetaData.value.mdlName+"."+currentMetaData.value.tabEngName dataAstEngName:currentMetaData.value.mdlName+"."+currentMetaData.value.tabEngName
} }
getMetaSecurityData(param).then(res=>{ getMetaSecurityData(param).then(res=>{
@ -894,7 +887,7 @@
function changeBusinessOption(){ function changeBusinessOption(){
loadingBusiness.value = true; loadingBusiness.value = true;
let data = { let data = {
ssysCd: currentMetaData.value.ssysCd, ssysId: currentMetaData.value.ssysId,
mdlName: currentMetaData.value.mdlName, mdlName: currentMetaData.value.mdlName,
tabEngName: currentMetaData.value.tabEngName, tabEngName: currentMetaData.value.tabEngName,
type: businessOptionSelect.value type: businessOptionSelect.value
@ -1236,6 +1229,7 @@
tabEngName: tableData.tabEngName, tabEngName: tableData.tabEngName,
tabCnName: tableData.tabCnName, tabCnName: tableData.tabCnName,
ssysCd: tableData.ssysCd, ssysCd: tableData.ssysCd,
ssysId: tableData.ssysId,
mdlName:tableData.mdlName, mdlName:tableData.mdlName,
tabCrrctName:tableData.tabCrrctName, tabCrrctName:tableData.tabCrrctName,
tabDesc:tableData.tabDesc, tabDesc:tableData.tabDesc,
@ -1245,7 +1239,7 @@
} }
let columnData = { let columnData = {
tabName: row.tabEngName, tabName: row.tabEngName,
ssysCd: row.ssysCd, ssysId: row.ssysId,
mdlName: row.mdlName mdlName: row.mdlName
} }
getColumnList(columnData).then(res=>{ getColumnList(columnData).then(res=>{
@ -1305,7 +1299,7 @@
drawer.value = true drawer.value = true
changedColumns.value = [] changedColumns.value = []
let param = { let param = {
ssysCd: currentMetaData.value.ssysCd, ssysId: currentMetaData.value.ssysId,
mdlName: currentMetaData.value.mdlName, mdlName: currentMetaData.value.mdlName,
tabEngName: currentMetaData.value.tabEngName tabEngName: currentMetaData.value.tabEngName
} }
@ -1313,7 +1307,7 @@
if(res.data.length >0){ if(res.data.length >0){
let dbList = databaseList.value[0].children; let dbList = databaseList.value[0].children;
for (let i = 0; i < dbList.length; i++) { for (let i = 0; i < dbList.length; i++) {
if (currentMetaData.value.ssysCd.toUpperCase() === dbList[i].name.toUpperCase()){ if (currentMetaData.value.ssysId === dbList[i].id){
dbType.value = dbList[i].type dbType.value = dbList[i].type
} }
} }
@ -1341,7 +1335,7 @@
} }
function resetQuery(){ function resetQuery(){
queryParams.value ={ queryParams.value ={
ssysCd:'', ssysId:'',
mdlName:'', mdlName:'',
tabName:'', tabName:'',
colName:'', colName:'',
@ -1386,8 +1380,15 @@
function getList(){ function getList(){
getMetaDataList(queryParams.value).then(res=>{ getMetaDataList(queryParams.value).then(res=>{
dataList.value = res.data.rows dataList.value = res.data.rows
let dbList = databaseList.value[0].children
console.log(dataList.value[0].ssysId)
if (dataList.value.length>0){ if (dataList.value.length>0){
for (let i = 0; i < dataList.value.length; i++) { for (let i = 0; i < dataList.value.length; i++) {
for (let j = 0; j < dbList.length; j++) {
if (dataList.value[i].ssysId === dbList[j].id){
dataList.value[i].ssysCd = dbList[j].name
}
}
let batchTabClas = dataList.value[i].batchTabClas let batchTabClas = dataList.value[i].batchTabClas
let tabClas =[] let tabClas =[]
if (dataList.value[i].tabClas && dataList.value[i].tabClas !== '[]'){ if (dataList.value[i].tabClas && dataList.value[i].tabClas !== '[]'){
@ -1496,7 +1497,7 @@
dataAstType: row.tabType, dataAstType: row.tabType,
dataAstStat: '1', dataAstStat: '1',
dataAstDesc:'', dataAstDesc:'',
dataAstSrc: row.ssysCd, dataAstSrc: row.ssysId,
astNo: row.extractOnum, astNo: row.extractOnum,
dataAstClas: JSON.stringify(row.batchTabClas), dataAstClas: JSON.stringify(row.batchTabClas),
showTabClas: row.showTabClas, showTabClas: row.showTabClas,
@ -1512,7 +1513,7 @@
return data.name.indexOf(value) !== -1; return data.name.indexOf(value) !== -1;
}; };
function handleNodeClick(data) { function handleNodeClick(data) {
queryParams.value.ssysCd = data.name; queryParams.value.ssysId = data.id;
handleQuery(); handleQuery();
} }
watch(database, val => { watch(database, val => {
@ -1520,7 +1521,7 @@
}); });
function submit(){ function submit(){
let data = { let data = {
ssysCd: currentMetaData.value.ssysCd, ssysId: currentMetaData.value.ssysId,
mdlName: currentMetaData.value.mdlName, mdlName: currentMetaData.value.mdlName,
tabEngName: currentMetaData.value.tabEngName, tabEngName: currentMetaData.value.tabEngName,
tabCrrctName: currentMetaData.value.tabCrrctName, tabCrrctName: currentMetaData.value.tabCrrctName,
@ -1556,8 +1557,8 @@
function cancel(){ function cancel(){
drawer.value = false drawer.value = false
} }
onMounted(()=>{ onMounted(async () => {
getDatabaseList() await getDatabaseList()
handleQuery() handleQuery()
}) })

336
vue-fastapi-frontend/src/views/metadataConfig/metaclas/index.vue

@ -3,8 +3,8 @@
<el-row :gutter="10" class="mb8"> <el-row :gutter="10" class="mb8">
<el-form :inline="true" :model="queryForm"> <el-form :inline="true" :model="queryForm">
<el-form-item label="归属系统"> <el-form-item label="归属系统">
<el-select v-model="queryForm.ssysCd" placeholder="请选择系统" clearable allow-create filterable style="width: 180px"> <el-select v-model="queryForm.ssysId" placeholder="请选择系统" clearable allow-create filterable style="width: 180px">
<el-option v-for="item in dsSysList" :key="item.id" :label="item.name" :value="item.name" /> <el-option v-for="item in dsSysList" :key="item.id" :label="item.name" :value="item.id" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="模式名"> <el-form-item label="模式名">
@ -16,106 +16,73 @@
</el-form-item> </el-form-item>
</el-form> </el-form>
</el-row> </el-row>
<el-tabs v-model="activeTab" type="border-card" class="full-height-tabs">
<el-divider content-position="center" ><span style=" font-size: 18px; font-weight: bold; ">值类型参数调整</span></el-divider> <el-tab-pane label="值类型参数调整" name="valueType">
<el-row :gutter="10" class="mb8">
<el-row :gutter="10" class="mb8"> <el-col :span="1.5">
<el-col :span="1.5"> <el-button type="primary" plain icon="Plus" @click="openAddDialog1">新增</el-button>
<el-button type="primary" plain icon="Plus" @click="openAddDialog1">新增</el-button> </el-col>
</el-col> <el-col :span="1.5">
<el-col :span="1.5"> <el-button type="success" plain icon="Edit" :disabled="selectedRows1.length !== 1" @click="openEditDialog1(selectedRows1[0])">修改</el-button>
<el-button type="success" plain icon="Edit" :disabled="selectedRows1.length !== 1" @click="openEditDialog1(selectedRows1[0])">修改</el-button> </el-col>
</el-col> <el-col :span="1.5">
<el-col :span="1.5"> <el-button type="danger" plain icon="Delete" :disabled="selectedRows1.length === 0" @click="deleteSelected1">删除</el-button>
<el-button type="danger" plain icon="Delete" :disabled="selectedRows1.length === 0" @click="deleteSelected1">删除</el-button> </el-col>
</el-col> </el-row>
</el-row> <el-table v-loading="loading" :data="configList1" @selection-change="handleSelectionChange1" style="width: 100%" height="400" border stripe>
<el-table-column type="selection" width="55" />
<el-table v-loading="loading" :data="configList1" @selection-change="handleSelectionChange1" style="width: 100%" height="400" border stripe> <el-table-column prop="datatype" label="值类型" />
<el-table-column type="selection" width="55" /> <el-table-column prop="ratio" label="阈值" />
<el-table-column prop="datatype" label="值类型" /> <el-table-column prop="updBy" label="更新人" />
<el-table-column prop="ratio" label="阈值" /> <el-table-column prop="updTime" label="更新时间" />
<el-table-column prop="updBy" label="更新人" /> </el-table>
<el-table-column prop="updTime" label="更新时间" /> </el-tab-pane>
</el-table> <el-tab-pane label="业务类型参数调整" name="businessType">
<el-row :gutter="10" class="mb8">
<el-divider content-position="center" ><span style=" font-size: 18px; font-weight: bold; ">业务类型参数调整</span></el-divider> <el-col :span="1.5">
<el-button type="primary" plain icon="Plus" @click="openAddDialog2">新增</el-button>
<el-row :gutter="10" class="mb8"> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="primary" plain icon="Plus" @click="openAddDialog2">新增</el-button> <el-button type="success" plain icon="Edit" :disabled="selectedRows2.length !== 1" @click="openEditDialog2(selectedRows2[0])">修改</el-button>
</el-col> </el-col>
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="success" plain icon="Edit" :disabled="selectedRows2.length !== 1" @click="openEditDialog2(selectedRows2[0])">修改</el-button> <el-button type="danger" plain icon="Delete" :disabled="selectedRows2.length === 0" @click="deleteSelected2">删除</el-button>
</el-col> </el-col>
<el-col :span="1.5"> </el-row>
<el-button type="danger" plain icon="Delete" :disabled="selectedRows2.length === 0" @click="deleteSelected2">删除</el-button> <el-table v-loading="loading" :data="configList2" @selection-change="handleSelectionChange2" style="width: 100%" height="400" border stripe>
</el-col> <el-table-column type="selection" width="55" />
</el-row> <el-table-column prop="regexName" label="业务类型" />
<el-table-column prop="regexPattern" label="正则表达式" />
<el-table v-loading="loading" :data="configList2" @selection-change="handleSelectionChange2" style="width: 100%" height="400" border stripe> <el-table-column prop="ratio" label="阈值" />
<el-table-column type="selection" width="55" /> <el-table-column prop="updBy" label="更新人" />
<el-table-column prop="regexName" label="业务类型" /> <el-table-column prop="updTime" label="更新时间" />
<el-table-column prop="regexPattern" label="正则表达式" /> </el-table>
<el-table-column prop="ratio" label="阈值" /> </el-tab-pane>
<el-table-column prop="updBy" label="更新人" /> <el-tab-pane label="字段处理类型参数调整" name="columnType">
<el-table-column prop="updTime" label="更新时间" /> <el-row :gutter="10" class="mb8">
</el-table> <el-col :span="1.5">
<el-button type="primary" plain icon="Plus" @click="openAddDialog3">新增</el-button>
</el-col>
<el-divider content-position="center" ><span style=" font-size: 18px; font-weight: bold; ">字段处理类型参数调整</span></el-divider> <el-col :span="1.5">
<el-button type="success" plain icon="Edit" :disabled="selectedRows3.length !== 1" @click="openEditDialog3(selectedRows3[0])">修改</el-button>
<div style="margin-bottom: 10px"> </el-col>
<span style="display: inline-block; font-size: 14px; font-weight: bold; margin-bottom: 4px">唯一类型数值类判定条件</span> <el-col :span="1.5">
<el-form :inline="true" :model="form3" size="medium"> <el-button type="danger" plain icon="Delete" :disabled="selectedRows3.length === 0" @click="deleteSelected3">删除</el-button>
<el-form-item label="空值率小于"> </el-col>
<el-input v-model="form3.config1" style="width: 100px" /> </el-row>
</el-form-item> <el-table v-loading="loading" :data="configList3" @selection-change="handleSelectionChange3" style="width: 100%" height="400" border stripe>
<el-form-item label="值长度方差小于"> <el-table-column type="selection" width="55" />
<el-input v-model.number="form3.config2" style="width: 100px" /> <el-table-column prop="opType" label="处理类型" />
</el-form-item> <el-table-column prop="colType" label="字段类型" />
<el-form-item label="重复率大于"> <el-table-column prop="colAttr" label="字段属性" />
<el-input v-model.number="form3.config3" style="width: 100px" /> <el-table-column prop="ratio" label="阈值" />
</el-form-item> <el-table-column prop="updBy" label="更新人" />
</el-form> <el-table-column prop="updTime" label="更新时间" />
</div> </el-table>
</el-tab-pane>
<div style="margin-bottom: 10px"> </el-tabs>
<span style="display: inline-block; font-size: 14px; font-weight: bold; margin-bottom: 4px">唯一类型非数值类判定条件</span>
<el-form :inline="true" :model="form3" size="medium">
<el-form-item label="重复率大于">
<el-input v-model.number="form3.config4" style="width: 100px" />
</el-form-item>
</el-form>
</div>
<div style="border-top: 1px dashed #999; margin: 10px 0;"></div>
<div style="margin-bottom: 10px">
<span style="display: inline-block; font-size: 14px; font-weight: bold; margin-bottom: 4px">忽略类型数值类判断条件</span>
<el-form :inline="true" :model="form3" size="medium">
<el-form-item label="空值率大于">
<el-input v-model.number="form3.config5" style="width: 100px" />
</el-form-item>
</el-form>
</div>
<div style="margin-bottom: 10px">
<span style="display: inline-block; font-size: 14px; font-weight: bold; margin-bottom: 4px">忽略类型其他判断条件</span>
<el-form :inline="true" :model="form3" size="medium">
<el-form-item label="平均值长大于">
<el-input v-model.number="form3.config6" style="width: 100px" />
</el-form-item>
<el-form-item >
<el-button type="primary" @click="submitForm3">保存</el-button>
</el-form-item>
</el-form>
</div>
<el-dialog :title="title" v-model="open1" width="500px" append-to-body :before-close="handleClose1"> <el-dialog :title="title" v-model="open1" width="500px" append-to-body :before-close="handleClose1">
<el-form ref="clasFormRef1" :model="form1" :rules="rules1" label-width="120px" size="medium"> <el-form ref="clasFormRef1" :model="form1" :rules="rules1" label-width="120px" >
<el-form-item label="值类型" prop="datatype"> <el-form-item label="值类型" prop="datatype">
<el-input v-model="form1.datatype" autocomplete="off" /> <el-input v-model="form1.datatype" autocomplete="off" />
</el-form-item> </el-form-item>
@ -146,6 +113,34 @@
<el-button type="primary" @click="submitForm2">保存</el-button> <el-button type="primary" @click="submitForm2">保存</el-button>
</template> </template>
</el-dialog> </el-dialog>
<el-dialog :title="title" v-model="open3" width="500px" append-to-body :before-close="handleClose3">
<el-form ref="clasFormRef3" :model="form3" :rules="rules3" label-width="120px">
<el-form-item label="处理类型" prop="opType">
<el-input v-model="form3.opType" autocomplete="off" />
</el-form-item>
<el-form-item label="字段类型" prop="regexPattern">
<el-input v-model="form3.colType" autocomplete="off" />
</el-form-item>
<el-form-item label="字段属性" prop="regexPattern">
<el-input v-model="form3.colAttr" autocomplete="off" />
</el-form-item>
<el-form-item label="阈值" prop="ratio">
<el-input v-model.number="form3.ratio" autocomplete="off" />
</el-form-item>
<el-form-item label="所属系统" prop="ssysId">
<el-select v-model="form3.ssysId" placeholder="请选择系统" clearable allow-create filterable style="width: 350px">
<el-option v-for="item in dsSysList" :key="item.id" :label="item.name" :value="item.id" />
</el-select>
</el-form-item>
<el-form-item label="所属模式" prop="mdlName">
<el-input v-model="form3.mdlName" autocomplete="off" />
</el-form-item>
</el-form>
<template #footer>
<el-button @click="open3 = false">取消</el-button>
<el-button type="primary" @click="submitForm3">保存</el-button>
</template>
</el-dialog>
</div> </div>
</template> </template>
@ -161,29 +156,34 @@ import {
deleteBusiLabel, deleteBusiLabel,
editBusiLabel, editBusiLabel,
addBusiLabel, addBusiLabel,
getBusiLabelList,
deleteDataopLabel,
editDataopLabel,
addDataopLabel, addDataopLabel,
getDataopLabelList, getColOpTypeLabelList,
getBusiLabelList
} from "@/api/metadataConfig/metadataConfig"; } from "@/api/metadataConfig/metadataConfig";
import useUserStore from '@/store/modules/user'; // import useUserStore from '@/store/modules/user'; //
const userStore = useUserStore(); // const userStore = useUserStore(); //
const dsSysList = userStore.dsSysList; // 访 const dsSysList = userStore.dsSysList; // 访
const queryForm = reactive({ const queryForm = reactive({
ssysCd: "*", ssysId: undefined,
mdlName: "*", mdlName: "",
}); });
const activeTab = ref('valueType');
const configList1 = ref([]); // const configList1 = ref([]); //
const configList2 = ref([]); // const configList2 = ref([]); //
const configList3 = ref([]); //
const loading = ref(false); const loading = ref(false);
const open1 = ref(false); // const open1 = ref(false); //
const open2 = ref(false); // const open2 = ref(false); //
const open3 = ref(false); //
const title = ref(""); const title = ref("");
const clasFormRef1 = ref(null); // formRef const clasFormRef1 = ref(null); // formRef
const clasFormRef2 = ref(null); // formRef const clasFormRef2 = ref(null); // formRef
const clasFormRef3 = ref(null); // formRef
const form1 = reactive({ const form1 = reactive({
datatype: "", datatype: "",
@ -195,13 +195,12 @@ const form2 = reactive({
ratio: null, ratio: null,
}); });
const form3 = reactive({ const form3 = reactive({
config1: null, opType: "",
config2: null, colType: "",
config3: null, colAttr: "",
config4: null, ssysId: undefined,
config5: null, mdlName: "",
config6: null, ratio: null,
config7: null,
}); });
const rules1 = { const rules1 = {
@ -213,9 +212,16 @@ const rules2 = {
regexPattern: [{ required: true, message: "请输入正则表达式", trigger: "blur" }], regexPattern: [{ required: true, message: "请输入正则表达式", trigger: "blur" }],
ratio: [{ required: true, message: "请输入阈值", trigger: "blur" }], ratio: [{ required: true, message: "请输入阈值", trigger: "blur" }],
}; };
const rules3 = {
opType: [{ required: true, message: "请输入处理类型", trigger: "blur" }],
colType: [{ required: true, message: "请输入字段类型", trigger: "blur" }],
colAttr: [{ required: true, message: "请输入字段属", trigger: "blur" }],
ratio: [{ required: true, message: "请输入阈值", trigger: "blur" }],
};
const selectedRows1 = ref([]); const selectedRows1 = ref([]);
const selectedRows2 = ref([]); const selectedRows2 = ref([]);
const selectedRows3 = ref([]);
function handleSelectionChange1(val) { function handleSelectionChange1(val) {
selectedRows1.value = val; selectedRows1.value = val;
@ -223,6 +229,9 @@ function handleSelectionChange1(val) {
function handleSelectionChange2(val) { function handleSelectionChange2(val) {
selectedRows2.value = val; selectedRows2.value = val;
} }
function handleSelectionChange3(val) {
selectedRows3.value = val;
}
async function getList1() { async function getList1() {
loading.value = true; loading.value = true;
@ -248,16 +257,20 @@ async function getList2() {
} }
} }
async function getList3() { async function getList3() {
loading.value = true;
const res = await getDataopLabelList(queryForm); try {
Object.assign(form3, res.data); const res = await getColOpTypeLabelList(queryForm);
configList3.value = res.data || [];
} catch (error) {
ElMessage.error("获取字段处理类型列表失败");
} finally {
loading.value = false;
}
} }
function resetQuery() { function resetQuery() {
queryForm.ssysCd = "*"; queryForm.ssysId = undefined;
queryForm.mdlName = "*"; queryForm.mdlName = "";
getList1(); getList1();
getList2(); getList2();
getList3(); getList3();
@ -289,7 +302,7 @@ function openEditDialog1(row) {
function submitForm1() { function submitForm1() {
clasFormRef1.value.validate(async (valid) => { clasFormRef1.value.validate(async (valid) => {
if (!valid) return; if (!valid) return;
const submitData = { ...form1,ssysCd:queryForm.ssysCd,mdlName:queryForm.mdlName }; const submitData = { ...form1,ssysId:queryForm.ssysId,mdlName:queryForm.mdlName };
try { try {
if (title.value.includes("新增")) { if (title.value.includes("新增")) {
await addDatatypeLabel(submitData); await addDatatypeLabel(submitData);
@ -305,17 +318,6 @@ function submitForm1() {
} }
}); });
} }
async function submitForm3() {
const submitData = { ...form3,ssysCd:queryForm.ssysCd,mdlName:queryForm.mdlName };
try {
await addDataopLabel(submitData);
ElMessage.success("编辑成功");
} catch (error) {
ElMessage.error("操作失败,请重试");
}
}
function deleteSelected1() { function deleteSelected1() {
if (selectedRows1.value.length === 0) { if (selectedRows1.value.length === 0) {
ElMessage.warning("请至少选择一条记录删除"); ElMessage.warning("请至少选择一条记录删除");
@ -353,6 +355,18 @@ function openAddDialog2() {
}); });
open2.value = true; open2.value = true;
} }
function openAddDialog3() {
title.value = "新增字段处理类型参数";
Object.assign(form3, {
opType: "",
colType: "",
colAttr: "",
ssysId: queryForm.ssysId,
mdlName: queryForm.mdlName,
ratio: null,
});
open3.value = true;
}
function openEditDialog2(row) { function openEditDialog2(row) {
if (!row) { if (!row) {
@ -364,10 +378,20 @@ function openEditDialog2(row) {
open2.value = true; open2.value = true;
} }
function openEditDialog3(row) {
if (!row) {
ElMessage.warning("请选择一条记录进行编辑");
return;
}
title.value = "编辑字段处理类型参数";
Object.assign(form3, row);
open3.value = true;
}
function submitForm2() { function submitForm2() {
clasFormRef2.value.validate(async (valid) => { clasFormRef2.value.validate(async (valid) => {
if (!valid) return; if (!valid) return;
const submitData = { ...form2,ssysCd:queryForm.ssysCd,mdlName:queryForm.mdlName}; const submitData = { ...form2,ssysId:queryForm.ssysId,mdlName:queryForm.mdlName};
try { try {
if (title.value.includes("新增")) { if (title.value.includes("新增")) {
await addBusiLabel(submitData); await addBusiLabel(submitData);
@ -383,6 +407,25 @@ function submitForm2() {
} }
}); });
} }
function submitForm3() {
clasFormRef3.value.validate(async (valid) => {
if (!valid) return;
const submitData = { ...form3};
try {
if (title.value.includes("新增")) {
await addDataopLabel(submitData);
ElMessage.success("新增成功");
} else {
await editDataopLabel(submitData);
ElMessage.success("编辑成功");
}
open3.value = false;
await getList3();
} catch {
ElMessage.error("操作失败,请重试");
}
});
}
function deleteSelected2() { function deleteSelected2() {
if (selectedRows2.value.length === 0) { if (selectedRows2.value.length === 0) {
@ -406,11 +449,38 @@ function deleteSelected2() {
}); });
} }
function deleteSelected3() {
if (selectedRows3.value.length === 0) {
ElMessage.warning("请至少选择一条记录删除");
return;
}
ElMessageBox.confirm(
`确定删除选中的 ${selectedRows3.value.length} 条字段处理类型参数吗?`,
"提示",
{ type: "warning" }
).then(async () => {
try {
for (const row of selectedRows3.value) {
await deleteDataopLabel(row.onum);
}
ElMessage.success("删除成功");
getList3();
} catch {
ElMessage.error("删除失败,请重试");
}
});
}
function handleClose2(done) { function handleClose2(done) {
clasFormRef2.value.resetFields(); clasFormRef2.value.resetFields();
done(); done();
} }
function handleClose3(done) {
clasFormRef3.value.resetFields();
done();
}
onMounted(() => { onMounted(() => {
getList1(); getList1();
getList2(); getList2();

Loading…
Cancel
Save