from module_admin.entity.vo.newtest_vo import * from module_admin.dao.newtest_dao import * from utils.common_util import export_list2excel class NewtestService: """ 测试管理模块服务层 """ @classmethod def get_newtest_select_option_services(cls, result_db: Session): """ 获取测试列表不分页信息service :param result_db: orm对象 :return: 测试列表不分页信息对象 """ newtest_list_result = NewtestDao.get_newtest_select_option_dao(result_db) return newtest_list_result @classmethod def get_newtest_list_services(cls, result_db: Session, query_object: NewtestModel): """ 获取测试列表信息service :param result_db: orm对象 :param query_object: 查询参数对象 :return: 测试列表信息对象 """ newtest_list_result = NewtestDao.get_newtest_list(result_db, query_object) return newtest_list_result @classmethod def add_newtest_services(cls, result_db: Session, page_object: NewtestModel): """ 新增测试信息service :param result_db: orm对象 :param page_object: 新增测试对象 :return: 新增测试校验结果 """ newtest = NewtestDao.get_newtest_detail_by_info(result_db, NewtestModel(**dict(newtest_name=page_object.newtest_name))) if newtest: result = dict(is_success=False, message='测试名称已存在') else: try: NewtestDao.add_newtest_dao(result_db, page_object) result_db.commit() result = dict(is_success=True, message='新增成功') except Exception as e: result_db.rollback() result = dict(is_success=False, message=str(e)) return CrudNewtestResponse(**result) @classmethod def edit_newtest_services(cls, result_db: Session, page_object: NewtestModel): """ 编辑测试信息service :param result_db: orm对象 :param page_object: 编辑测试对象 :return: 编辑测试校验结果 """ edit_newtest = page_object.dict(exclude_unset=True) newtest_info = cls.detail_newtest_services(result_db, edit_newtest.get('newtest_id')) if newtest_info: if newtest_info.newtest_name != page_object.newtest_name: newtest = NewtestDao.get_newtest_detail_by_info(result_db, NewtestModel(**dict(newtest_name=page_object.newtest_name))) if newtest: result = dict(is_success=False, message='测试名称已存在') return CrudNewtestResponse(**result) try: NewtestDao.edit_newtest_dao(result_db, edit_newtest) result_db.commit() result = dict(is_success=True, message='更新成功') except Exception as e: result_db.rollback() result = dict(is_success=False, message=str(e)) else: result = dict(is_success=False, message='测试不存在') return CrudNewtestResponse(**result) @classmethod def delete_newtest_services(cls, result_db: Session, page_object: DeleteNewtestModel): """ 删除测试信息service :param result_db: orm对象 :param page_object: 删除测试对象 :return: 删除测试校验结果 """ if page_object.newtest_ids.split(','): newtest_id_list = page_object.newtest_ids.split(',') try: for newtest_id in newtest_id_list: newtest_id_dict = dict(newtest_id=newtest_id) NewtestDao.delete_newtest_dao(result_db, NewtestModel(**newtest_id_dict)) result_db.commit() result = dict(is_success=True, message='删除成功') except Exception as e: result_db.rollback() result = dict(is_success=False, message=str(e)) else: result = dict(is_success=False, message='传入测试id为空') return CrudNewtestResponse(**result) @classmethod def detail_newtest_services(cls, result_db: Session, newtest_id: int): """ 获取测试详细信息service :param result_db: orm对象 :param newtest_id: 测试id :return: 测试id对应的信息 """ newtest = NewtestDao.get_newtest_detail_by_id(result_db, newtest_id=newtest_id) return newtest @staticmethod def export_newtest_list_services(newtest_list: List): """ 导出测试信息service :param newtest_list: 测试信息列表 :return: 测试信息对应excel的二进制数据 """ # 创建一个映射字典,将英文键映射到中文键 mapping_dict = { "newtest_id": "测试编号", "newtest_code": "测试编码", "newtest_name": "测试名称", "newtest_sort": "显示顺序", "status": "状态", "create_by": "创建者", "create_time": "创建时间", "update_by": "更新者", "update_time": "更新时间", "remark": "备注", } data = [NewtestModel(**vars(row)).dict() for row in newtest_list] for item in data: if item.get('status') == '0': item['status'] = '正常' else: item['status'] = '停用' 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) return binary_data