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
4.3 KiB
97 lines
4.3 KiB
1 month ago
|
import json
|
||
|
import uuid
|
||
|
|
||
|
from typing import Optional, List
|
||
|
from sqlalchemy.ext.asyncio import AsyncSession
|
||
|
from module_admin.entity.vo.common_vo import CrudResponseModel
|
||
|
from module_admin.entity.vo.user_vo import CurrentUserModel
|
||
|
from module_admin.entity.vo.dataint_vo import SscfPageObject, SaveSscfModel, TreeOperateModel
|
||
|
from module_admin.entity.do.dataint_do import SysSscf
|
||
|
from module_admin.dao.sscf_dao import SscfDao
|
||
|
from exceptions.exception import ServiceException, ServiceWarning
|
||
|
from datetime import datetime
|
||
|
from utils.common_util import CamelCaseUtil
|
||
|
|
||
|
|
||
|
class SscfService:
|
||
|
"""
|
||
|
智能问答服务层
|
||
|
"""
|
||
|
|
||
|
@classmethod
|
||
|
async def get_sscf_list_services(cls, result_db: AsyncSession, sscf_query: SscfPageObject, current_user: CurrentUserModel):
|
||
|
result = await SscfDao.get_sscf_list(result_db, sscf_query)
|
||
|
return CamelCaseUtil.transform_result(result)
|
||
|
|
||
|
@classmethod
|
||
|
async def get_dasset_tree_services(cls, result_db: AsyncSession, current_user: CurrentUserModel):
|
||
|
result = await SscfDao.get_dasset_tree(result_db)
|
||
|
return CamelCaseUtil.transform_result(result)
|
||
|
|
||
|
@classmethod
|
||
|
async def save_dasset_tree_services(cls, result_db: AsyncSession, treeOperate: TreeOperateModel, current_user: CurrentUserModel):
|
||
|
tree = await SscfDao.get_dasset_tree_by_code(result_db, treeOperate.dasset_code)
|
||
|
if treeOperate.operate == 'ADD':
|
||
|
if tree:
|
||
|
raise ServiceException(message="已存在code为:"+treeOperate.dasset_code+"的目录,无法重复新增,请修改code后新增")
|
||
|
else:
|
||
|
await SscfDao.insert_dasset_tree(result_db, treeOperate)
|
||
|
await result_db.commit()
|
||
|
if treeOperate.operate == 'UPDATE':
|
||
|
if tree:
|
||
|
if tree.onum == treeOperate.onum:
|
||
|
treeObj = dict(
|
||
|
onum=treeOperate.onum,
|
||
|
dasset_code=treeOperate.dasset_code,
|
||
|
dasset_name=treeOperate.dasset_name
|
||
|
)
|
||
|
await SscfDao.save_dasset_tree(result_db, treeObj)
|
||
|
await result_db.commit()
|
||
|
else:
|
||
|
raise ServiceException(message="已存在code为:"+treeOperate.dasset_code+"的目录")
|
||
|
else:
|
||
|
treeObj = dict(
|
||
|
onum=treeOperate.onum,
|
||
|
dasset_code=treeOperate.dasset_code,
|
||
|
dasset_name=treeOperate.dasset_name
|
||
|
)
|
||
|
await SscfDao.save_dasset_tree(result_db, treeObj)
|
||
|
await result_db.commit()
|
||
|
if treeOperate.operate == 'DELETE':
|
||
|
if tree:
|
||
|
await SscfDao.delete_dasset_tree(result_db, treeOperate.onum)
|
||
|
await result_db.commit()
|
||
|
else:
|
||
|
raise ServiceException(mssage="不存在code为:"+treeOperate.dasset_code+"的目录")
|
||
|
return CrudResponseModel(is_success=True, message='操作成功')
|
||
|
|
||
|
@classmethod
|
||
|
async def save_sscf(cls, result_db: AsyncSession, saveSscfModel: SaveSscfModel, current_user: CurrentUserModel):
|
||
|
if saveSscfModel.onum is None:
|
||
|
# add
|
||
|
saveSscfModel.onum = uuid.uuid4()
|
||
|
addObj = SysSscf(**saveSscfModel.model_dump())
|
||
|
addObj.create_by = current_user.user.user_name
|
||
|
addObj.create_time = datetime.now()
|
||
|
addObj.update_by = current_user.user.user_name
|
||
|
addObj.update_time = datetime.now()
|
||
|
await SscfDao.insert_sscf(result_db, addObj)
|
||
|
else:
|
||
|
# update
|
||
|
oldObj = await SscfDao.get_sscf_by_id(result_db, saveSscfModel.onum)
|
||
|
if oldObj is None:
|
||
|
raise ServiceException(message='所改对象不存在')
|
||
|
saveObj = saveSscfModel.model_dump(exclude_unset=True)
|
||
|
saveObj['update_by'] = current_user.user.user_name
|
||
|
saveObj['update_time'] = datetime.now()
|
||
|
await SscfDao.update_sscf(result_db, saveObj)
|
||
|
await result_db.commit()
|
||
|
return CrudResponseModel(is_success=True, message='操作成功')
|
||
|
|
||
|
@classmethod
|
||
|
async def delete_sscf(cls, db: AsyncSession, array: List[str]):
|
||
|
await SscfDao.delete_sscf(db, array)
|
||
|
await db.commit()
|
||
|
return CrudResponseModel(is_success=True, message='操作成功')
|
||
|
|