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='操作成功')