From 3fda4a284c569de605a0dbb830f55fa8d4d098e8 Mon Sep 17 00:00:00 2001 From: insistence <3055204202@qq.com> Date: Fri, 26 Jan 2024 08:59:50 +0800 Subject: [PATCH] =?UTF-8?q?perf:=20=E4=BC=98=E5=8C=96=E5=AE=9A=E6=97=B6?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1=E6=A8=A1=E5=9D=97=E5=88=86=E9=A1=B5=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../module_admin/controller/job_controller.py | 24 ++++++---------- .../module_admin/dao/job_dao.py | 9 ++++-- .../module_admin/dao/job_log_dao.py | 9 ++++-- .../module_admin/service/job_log_service.py | 28 +++++++++++-------- .../module_admin/service/job_service.py | 7 +++-- 5 files changed, 41 insertions(+), 36 deletions(-) diff --git a/ruoyi-fastapi-backend/module_admin/controller/job_controller.py b/ruoyi-fastapi-backend/module_admin/controller/job_controller.py index dce5501..508dd2c 100644 --- a/ruoyi-fastapi-backend/module_admin/controller/job_controller.py +++ b/ruoyi-fastapi-backend/module_admin/controller/job_controller.py @@ -18,11 +18,8 @@ jobController = APIRouter(prefix='/monitor', dependencies=[Depends(LoginService. @jobController.get("/job/list", response_model=PageResponseModel, dependencies=[Depends(CheckUserInterfaceAuth('monitor:job:list'))]) async def get_system_job_list(request: Request, job_page_query: JobPageQueryModel = Depends(JobPageQueryModel.as_query), query_db: Session = Depends(get_db)): try: - job_query = JobModel(**job_page_query.model_dump(by_alias=True)) - # 获取全量数据 - job_query_result = JobService.get_job_list_services(query_db, job_query) - # 分页操作 - notice_page_query_result = get_page_obj(job_query_result, job_page_query.page_num, job_page_query.page_size) + # 获取分页数据 + notice_page_query_result = JobService.get_job_list_services(query_db, job_page_query, is_page=True) logger.info('获取成功') return ResponseUtil.success(model_content=notice_page_query_result) except Exception as e: @@ -133,9 +130,8 @@ async def query_detail_system_job(request: Request, job_id: int, query_db: Sessi @log_decorator(title='定时任务管理', business_type=5) async def export_system_job_list(request: Request, job_page_query: JobPageQueryModel = Depends(JobPageQueryModel.as_form), query_db: Session = Depends(get_db)): try: - job_query = JobModel(**job_page_query.model_dump(by_alias=True)) # 获取全量数据 - job_query_result = JobService.get_job_list_services(query_db, job_query) + job_query_result = JobService.get_job_list_services(query_db, job_page_query, is_page=False) job_export_result = await JobService.export_job_list_services(request, job_query_result) logger.info('导出成功') return ResponseUtil.streaming(data=bytes2file_response(job_export_result)) @@ -147,13 +143,10 @@ async def export_system_job_list(request: Request, job_page_query: JobPageQueryM @jobController.get("/jobLog/list", response_model=PageResponseModel, dependencies=[Depends(CheckUserInterfaceAuth('monitor:job:list'))]) async def get_system_job_log_list(request: Request, job_log_page_query: JobLogPageQueryModel = Depends(JobLogPageQueryModel.as_query), query_db: Session = Depends(get_db)): try: - job_log_query = JobLogQueryModel(**job_log_page_query.model_dump(by_alias=True)) - # 获取全量数据 - job_log_query_result = JobLogService.get_job_log_list_services(query_db, job_log_query) - # 分页操作 - notice_page_query_result = get_page_obj(job_log_query_result, job_log_page_query.page_num, job_log_page_query.page_size) + # 获取分页数据 + job_log_page_query_result = JobLogService.get_job_log_list_services(query_db, job_log_page_query, is_page=True) logger.info('获取成功') - return ResponseUtil.success(model_content=notice_page_query_result) + return ResponseUtil.success(model_content=job_log_page_query_result) except Exception as e: logger.exception(e) return ResponseUtil.error(msg=str(e)) @@ -196,10 +189,9 @@ async def clear_system_job_log(request: Request, query_db: Session = Depends(get @log_decorator(title='定时任务日志管理', business_type=5) async def export_system_job_log_list(request: Request, job_log_page_query: JobLogPageQueryModel = Depends(JobLogPageQueryModel.as_form), query_db: Session = Depends(get_db)): try: - job_log_query = JobLogQueryModel(**job_log_page_query.model_dump(by_alias=True)) # 获取全量数据 - job_log_query_result = JobLogService.get_job_log_list_services(query_db, job_log_query) - job_log_export_result = JobLogService.export_job_log_list_services(query_db, job_log_query_result) + job_log_query_result = JobLogService.get_job_log_list_services(query_db, job_log_page_query, is_page=False) + job_log_export_result = await JobLogService.export_job_log_list_services(request, job_log_query_result) logger.info('导出成功') return ResponseUtil.streaming(data=bytes2file_response(job_log_export_result)) except Exception as e: diff --git a/ruoyi-fastapi-backend/module_admin/dao/job_dao.py b/ruoyi-fastapi-backend/module_admin/dao/job_dao.py index 2456270..0007b52 100644 --- a/ruoyi-fastapi-backend/module_admin/dao/job_dao.py +++ b/ruoyi-fastapi-backend/module_admin/dao/job_dao.py @@ -1,6 +1,7 @@ from sqlalchemy.orm import Session from module_admin.entity.do.job_do import SysJob from module_admin.entity.vo.job_vo import * +from utils.page_util import PageUtil class JobDao: @@ -40,19 +41,21 @@ class JobDao: return job_info @classmethod - def get_job_list(cls, db: Session, query_object: JobModel): + def get_job_list(cls, db: Session, query_object: JobPageQueryModel, is_page: bool = False): """ 根据查询参数获取定时任务列表信息 :param db: orm对象 :param query_object: 查询参数对象 + :param is_page: 是否开启分页 :return: 定时任务列表信息对象 """ - job_list = db.query(SysJob) \ + query = db.query(SysJob) \ .filter(SysJob.job_name.like(f'%{query_object.job_name}%') if query_object.job_name else True, SysJob.job_group == query_object.job_group if query_object.job_group else True, SysJob.status == query_object.status if query_object.status else True ) \ - .distinct().all() + .distinct() + job_list = PageUtil.paginate(query, query_object.page_num, query_object.page_size, is_page) return job_list diff --git a/ruoyi-fastapi-backend/module_admin/dao/job_log_dao.py b/ruoyi-fastapi-backend/module_admin/dao/job_log_dao.py index 6c090c7..7139465 100644 --- a/ruoyi-fastapi-backend/module_admin/dao/job_log_dao.py +++ b/ruoyi-fastapi-backend/module_admin/dao/job_log_dao.py @@ -1,6 +1,7 @@ from sqlalchemy.orm import Session from module_admin.entity.do.job_do import SysJobLog from module_admin.entity.vo.job_vo import * +from utils.page_util import PageUtil from datetime import datetime, time @@ -10,14 +11,15 @@ class JobLogDao: """ @classmethod - def get_job_log_list(cls, db: Session, query_object: JobLogQueryModel): + def get_job_log_list(cls, db: Session, query_object: JobLogPageQueryModel, is_page: bool = False): """ 根据查询参数获取定时任务日志列表信息 :param db: orm对象 :param query_object: 查询参数对象 + :param is_page: 是否开启分页 :return: 定时任务日志列表信息对象 """ - job_log_list = db.query(SysJobLog) \ + query = db.query(SysJobLog) \ .filter(SysJobLog.job_name.like(f'%{query_object.job_name}%') if query_object.job_name else True, SysJobLog.job_group == query_object.job_group if query_object.job_group else True, SysJobLog.status == query_object.status if query_object.status else True, @@ -26,7 +28,8 @@ class JobLogDao: datetime.combine(datetime.strptime(query_object.end_time, '%Y-%m-%d'), time(23, 59, 59))) if query_object.begin_time and query_object.end_time else True ) \ - .distinct().all() + .distinct() + job_log_list = PageUtil.paginate(query, query_object.page_num, query_object.page_size, is_page) return job_log_list diff --git a/ruoyi-fastapi-backend/module_admin/service/job_log_service.py b/ruoyi-fastapi-backend/module_admin/service/job_log_service.py index 28bac95..7de9d05 100644 --- a/ruoyi-fastapi-backend/module_admin/service/job_log_service.py +++ b/ruoyi-fastapi-backend/module_admin/service/job_log_service.py @@ -1,7 +1,7 @@ from module_admin.dao.job_log_dao import * -from module_admin.dao.dict_dao import DictDataDao +from module_admin.service.dict_service import Request, DictDataService from module_admin.entity.vo.common_vo import CrudResponseModel -from utils.common_util import export_list2excel, CamelCaseUtil +from utils.common_util import export_list2excel class JobLogService: @@ -10,16 +10,17 @@ class JobLogService: """ @classmethod - def get_job_log_list_services(cls, query_db: Session, query_object: JobLogQueryModel): + def get_job_log_list_services(cls, query_db: Session, query_object: JobLogPageQueryModel, is_page: bool = False): """ 获取定时任务日志列表信息service :param query_db: orm对象 :param query_object: 查询参数对象 + :param is_page: 是否开启分页 :return: 定时任务日志列表信息对象 """ - job_log_list_result = JobLogDao.get_job_log_list(query_db, query_object) + job_log_list_result = JobLogDao.get_job_log_list(query_db, query_object, is_page) - return CamelCaseUtil.transform_result(job_log_list_result) + return job_log_list_result @classmethod def add_job_log_services(cls, query_db: Session, page_object: JobLogModel): @@ -79,10 +80,10 @@ class JobLogService: return CrudResponseModel(**result) @staticmethod - def export_job_log_list_services(query_db, job_log_list: List): + async def export_job_log_list_services(request: Request, job_log_list: List): """ 导出定时任务日志信息service - :param query_db: orm对象 + :param request: Request对象 :param job_log_list: 定时任务日志信息列表 :return: 定时任务日志信息对应excel的二进制数据 """ @@ -103,17 +104,22 @@ class JobLogService: } data = job_log_list - job_group_list = DictDataDao.query_dict_data_list(query_db, dict_type='sys_job_group') - job_group_option = [dict(label=item.dict_label, value=item.dict_value) for item in job_group_list] + job_group_list = await DictDataService.query_dict_data_list_from_cache_services(request.app.state.redis, dict_type='sys_job_group') + job_group_option = [dict(label=item.get('dictLabel'), value=item.get('dictValue')) for item in job_group_list] job_group_option_dict = {item.get('value'): item for item in job_group_option} + job_executor_list = await DictDataService.query_dict_data_list_from_cache_services(request.app.state.redis, dict_type='sys_job_executor') + job_executor_option = [dict(label=item.get('dictLabel'), value=item.get('dictValue')) for item in job_executor_list] + job_executor_option_dict = {item.get('value'): item for item in job_executor_option} for item in data: if item.get('status') == '0': item['status'] = '正常' else: item['status'] = '暂停' - if str(item.get('job_group')) in job_group_option_dict.keys(): - item['job_group'] = job_group_option_dict.get(str(item.get('job_group'))).get('label') + if str(item.get('jobGroup')) in job_group_option_dict.keys(): + item['jobGroup'] = job_group_option_dict.get(str(item.get('jobGroup'))).get('label') + if str(item.get('jobExecutor')) in job_executor_option_dict.keys(): + item['jobExecutor'] = job_executor_option_dict.get(str(item.get('jobExecutor'))).get('label') new_data = [{mapping_dict.get(key): value for key, value in item.items() if mapping_dict.get(key)} for item in data] binary_data = export_list2excel(new_data) diff --git a/ruoyi-fastapi-backend/module_admin/service/job_service.py b/ruoyi-fastapi-backend/module_admin/service/job_service.py index 727ccd1..62887e8 100644 --- a/ruoyi-fastapi-backend/module_admin/service/job_service.py +++ b/ruoyi-fastapi-backend/module_admin/service/job_service.py @@ -11,16 +11,17 @@ class JobService: """ @classmethod - def get_job_list_services(cls, query_db: Session, query_object: JobModel): + def get_job_list_services(cls, query_db: Session, query_object: JobPageQueryModel, is_page: bool = False): """ 获取定时任务列表信息service :param query_db: orm对象 :param query_object: 查询参数对象 + :param is_page: 是否开启分页 :return: 定时任务列表信息对象 """ - job_list_result = JobDao.get_job_list(query_db, query_object) + job_list_result = JobDao.get_job_list(query_db, query_object, is_page) - return CamelCaseUtil.transform_result(job_list_result) + return job_list_result @classmethod def add_job_services(cls, query_db: Session, page_object: JobModel):