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