Browse Source

问题修复

master
si@aidatagov.com 7 days ago
parent
commit
adb7238532
  1. 9
      vue-fastapi-backend/module_admin/controller/datastd_controller.py
  2. 57
      vue-fastapi-backend/module_admin/dao/metadata_config_dao.py
  3. 10
      vue-fastapi-backend/module_admin/service/datastd_service.py
  4. 9
      vue-fastapi-frontend/src/api/datastd/std.js
  5. 18
      vue-fastapi-frontend/src/views/datastd/main/index.vue
  6. 1
      vue-fastapi-frontend/src/views/metadataConfig/bizConfig/index.vue

9
vue-fastapi-backend/module_admin/controller/datastd_controller.py

@ -871,4 +871,11 @@ async def export_std_dict_template(request: Request, query_db: AsyncSession = De
dict_import_template_result = await DataStdService.get_dict_import_template_services()
logger.info('获取成功')
return ResponseUtil.streaming(data=bytes2file_response(dict_import_template_result))
return ResponseUtil.streaming(data=bytes2file_response(dict_import_template_result))
@datastdController.post("/stdmain/saveStdStatus")
async def save_tsmcb(request: Request,
saveSscfModel: DataStdMainModel,
query_db: AsyncSession = Depends(get_db),
current_user: CurrentUserModel = Depends(LoginService.get_current_user)):
result = await DataStdService.edit_std_main_status(query_db, saveSscfModel)
return ResponseUtil.success(msg=result.message)

57
vue-fastapi-backend/module_admin/dao/metadata_config_dao.py

@ -13,7 +13,7 @@ from sqlalchemy.sql import true
from utils.page_util import PageUtil
from module_admin.entity.vo.data_ast_content_vo import DataCatalogPageQueryModel, DeleteDataCatalogModel, \
DataCatalogChild
from sqlalchemy import delete, select, update, desc, or_, not_, and_
from sqlalchemy import delete, select, update, desc, or_, not_, and_,func
from exceptions.exception import ServiceException,ServiceWarning
class MetadataConfigDao:
@ -159,18 +159,55 @@ class MetadataConfigDao:
result = await db.execute(select(SecuBizConfig).where(SecuBizConfig.onum == onum))
return result.scalars().first()
# @classmethod
# async def get_biz_config_list(cls, db: AsyncSession, query_object, is_page: bool = False):
# query = select(SecuBizConfig).where(
# SecuBizConfig.risk_lvl.like(f"%{query_object.risk_lvl}%") if query_object.risk_lvl else True,
# SecuBizConfig.isStop == query_object.isStop if query_object.isStop is not None else True,
# SecuBizConfig.create_time.between(
# datetime.combine(datetime.strptime(query_object.begin_time, '%Y-%m-%d'), time.min),
# datetime.combine(datetime.strptime(query_object.end_time, '%Y-%m-%d'), time.max),
# ) if query_object.begin_time and query_object.end_time else True,
# ).order_by(SecuBizConfig.create_time.desc())
# from utils.page_util import PageUtil
# return await PageUtil.paginate(db, query, query_object.page_num, query_object.page_size, is_page)
@classmethod
async def get_biz_config_list(cls, db: AsyncSession, query_object, is_page: bool = False):
query = select(SecuBizConfig).where(
SecuBizConfig.risk_lvl.like(f"%{query_object.risk_lvl}%") if query_object.risk_lvl else True,
SecuBizConfig.isStop == query_object.isStop if query_object.isStop is not None else True,
SecuBizConfig.create_time.between(
datetime.combine(datetime.strptime(query_object.begin_time, '%Y-%m-%d'), time.min),
datetime.combine(datetime.strptime(query_object.end_time, '%Y-%m-%d'), time.max),
) if query_object.begin_time and query_object.end_time else True,
).order_by(SecuBizConfig.create_time.desc())
# === 副表数量子查询 ===
subquery = (
select(
SecuBizConfigRela.biz_onum.label("biz_onum"),
func.count(SecuBizConfigRela.onum).label("rela_count")
)
.group_by(SecuBizConfigRela.biz_onum)
.subquery()
)
from utils.page_util import PageUtil
# === 主查询,LEFT JOIN 子查询 ===
query = (
select(
SecuBizConfig.biz_name,
SecuBizConfig.onum,
SecuBizConfig.risk_lvl,
SecuBizConfig.update_by,
SecuBizConfig.update_time,
SecuBizConfig.isStop,
SecuBizConfig.create_by,
SecuBizConfig.create_time,
func.coalesce(subquery.c.rela_count, 0).label("rela_count") # 无关联时为 0
)
.outerjoin(subquery, SecuBizConfig.onum == subquery.c.biz_onum)
.where(
SecuBizConfig.risk_lvl.like(f"%{query_object.risk_lvl}%") if query_object.risk_lvl else True,
SecuBizConfig.isStop == query_object.isStop if query_object.isStop is not None else True,
SecuBizConfig.create_time.between(
datetime.combine(datetime.strptime(query_object.begin_time, '%Y-%m-%d'), time.min),
datetime.combine(datetime.strptime(query_object.end_time, '%Y-%m-%d'), time.max),
) if query_object.begin_time and query_object.end_time else True,
)
.order_by(SecuBizConfig.create_time.desc())
)
return await PageUtil.paginate(db, query, query_object.page_num, query_object.page_size, is_page)
@classmethod

10
vue-fastapi-backend/module_admin/service/datastd_service.py

@ -1257,6 +1257,16 @@ class DataStdService:
else:
raise ServiceException(message=f'标准 {model.onum} 不存在')
@classmethod
async def edit_std_main_status(cls, query_db: AsyncSession, model: DataStdMainModel):
existing = await cls.get_std_main_by_id(query_db, model.onum)
if existing:
existing.std_status=model.std_status
await DataStdDao.update_std_main(query_db, existing)
await query_db.commit()
return CrudResponseModel(is_success=True, message='编辑标准成功')
else:
raise ServiceException(message=f'标准 {model.onum} 不存在')
@classmethod
async def add_std_main_appr(cls, query_db: AsyncSession, model: DataStdMainModel):
if not await cls.check_std_num_unique(query_db, model):
raise ServiceException(message=f"标准编号 {model.data_std_no} 已存在")

9
vue-fastapi-frontend/src/api/datastd/std.js

@ -254,6 +254,7 @@ export function listStdCodeAppr(query) {
params: query
})
}
// 查询数据标准列表
export function listStdMainSelect(query) {
return request({
@ -262,7 +263,13 @@ export function listStdMainSelect(query) {
params: query
})
}
export function saveStdStatus(data){
return request({
url: '/default-api/datastd/stdmain/saveStdStatus',
method: 'post',
data: data
})
}
// 查询数据标准详情

18
vue-fastapi-frontend/src/views/datastd/main/index.vue

@ -309,6 +309,13 @@
<el-table-column label="业务认责人员" prop="dataStdBusiOwnershipPrsn" width="150"></el-table-column>
<el-table-column label="技术认责部门" prop="dataStdItOwnershipDept" width="150"></el-table-column>
<el-table-column label="技术认责人员" prop="dataStdItOwnershipPrsn" width="150"></el-table-column>
<el-table-column label="状态" align="center" prop="status">
<template #default="scope">
<el-switch v-model="scope.row.stdStatus"
active-value="1"
inactive-value="0" @change="changeStatus(scope.row)" />
</template>
</el-table-column>
<el-table-column label="标准引用" align="center" >
<template #default="scope">
@ -482,6 +489,7 @@ import {
getStdMain,
deleteStdMain,
listStdMainSelect,
saveStdStatus,
changeStdMainOum
} from "@/api/datastd/std"; //
import useUserStore from '@/store/modules/user'
@ -504,6 +512,16 @@ const currentNode = ref({})
const handleTargetCatalogNodeClick = (data) => {
chooseOnumNum.value=data.contentOnum
}
function changeStatus(row){
let param = {
onum: row.onum,
stdStatus: row.stdStatus
}
saveStdStatus(param).then(res=>{
proxy.$modal.msgSuccess("操作成功");
getList()
})
}
const codeMapId = ref(null);
const mapVisible = ref(false);
/**文件上传中处理 */

1
vue-fastapi-frontend/src/views/metadataConfig/bizConfig/index.vue

@ -59,6 +59,7 @@
<el-table-column type="selection" width="55" />
<el-table-column prop="onum" label="主键" />
<el-table-column prop="bizName" label="业务域名称" />
<el-table-column prop="relaCount" label="表数量" />
<el-table-column label="风险等级">
<template #default="{ row }">
{{ getSecLevelName(row.riskLvl) }}

Loading…
Cancel
Save