You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

97 lines
3.2 KiB

import uuid
from typing import List
from sqlalchemy import desc, delete, func, select, update
from sqlalchemy.ext.asyncio import AsyncSession
from module_admin.entity.vo.user_vo import CurrentUserModel
from module_admin.entity.vo.dataint_vo import SscfPageObject, TreeOperateModel
from module_admin.entity.do.dataint_do import SysSscf, SysDassetTree
from sqlalchemy import select, text, cast, Integer, and_, or_, outerjoin, func, join
from utils.page_util import PageUtil
class SscfDao:
"""
菜单管理模块数据库操作层
"""
@classmethod
async def get_sscf_list(cls, db: AsyncSession, sscf_query: SscfPageObject):
query = (
select(SysSscf).where(
SysSscf.keyword == sscf_query.keyword if sscf_query.keyword else True,
SysSscf.type == sscf_query.type if sscf_query.type else True,
SysSscf.dasset_id == sscf_query.dasset_id if sscf_query.dasset_id else True,
SysSscf.status == sscf_query.status if sscf_query.status else True
).distinct()
)
query_result = await PageUtil.paginate(db, query, sscf_query.page_num, sscf_query.page_size, True)
return query_result
@classmethod
async def insert_sscf(cls, db: AsyncSession, sysSscf: SysSscf):
db.add(sysSscf)
await db.flush()
return sysSscf
@classmethod
async def get_sscf_by_id(cls, db: AsyncSession, onum: str):
result = (
(
await db.execute(
select(SysSscf).where(SysSscf.onum == onum).distinct()
)
).scalars().first()
)
return result
@classmethod
async def update_sscf(cls, db: AsyncSession, saveObj: dict):
await db.execute(update(SysSscf), [saveObj])
@classmethod
async def delete_sscf(cls, db: AsyncSession, array: List[str]):
await db.execute(delete(SysSscf).where(SysSscf.onum.in_(array)))
@classmethod
async def get_dasset_tree(cls, db: AsyncSession):
result = (
(
await db.execute(
select(SysDassetTree).distinct()
)
).scalars().all()
)
return result
@classmethod
async def get_dasset_tree_by_code(cls, db: AsyncSession, code: str):
result = (
(
await db.execute(
select(SysDassetTree).where(SysDassetTree.dasset_code == code).distinct()
)
).scalars().first()
)
return result
@classmethod
async def insert_dasset_tree(cls, db: AsyncSession, treeOperate: TreeOperateModel):
tree = SysDassetTree()
tree.onum = uuid.uuid4()
tree.dasset_code = treeOperate.dasset_code
tree.dasset_name = treeOperate.dasset_name
tree.parent_code = "1"
db.add(tree)
await db.flush()
return tree
@classmethod
async def save_dasset_tree(cls, db: AsyncSession, treeOperate: dict):
await db.execute(update(SysDassetTree), [treeOperate])
@classmethod
async def delete_dasset_tree(cls, db: AsyncSession, onum: str):
await db.execute(delete(SysDassetTree).where(SysDassetTree.onum == onum))