diff --git a/api/api_v1/endpoints/forms.py b/api/api_v1/endpoints/forms.py index a8b4bb6..e89ce5a 100644 --- a/api/api_v1/endpoints/forms.py +++ b/api/api_v1/endpoints/forms.py @@ -220,23 +220,32 @@ async def man_mass_form( async def man_gander_form( request: Request, interview: InterviewDo = Depends(InterviewDo), - db: CKDrive = Depends(get_ck_db), + ck_db: CKDrive = Depends(get_ck_db), + db: AsyncIOMotorDatabase = Depends(get_database), current_user: schemas.UserDB = Depends(deps.get_current_user) ) -> schemas.Msg: """ 候选人质量性别报表 """ await interview.init() res = interview.get_man_mass_form_sql() sql = res['sql'] - data = await db.execute(sql) + data = await ck_db.execute(sql) # 性别 gander = { '男': [], '女': [] } - if not data: return schemas.Msg(code=-9, msg='无数据', data=None) + # 获取报表相关参数 + table_id = interview.data_in.get('table_id', '') + if not table_id: + return schemas.Msg(code=-9, msg='报表数据错误', data=None) + + table_data = await crud.api_interview_tables.get_one_table(db, table_id) + if not table_data: + return schemas.Msg(code=-9, msg='报表数据错误', data=None) + # 处理数据 for interview_data in data.values(): i_name = interview_data.get('name', '默认名字') @@ -246,7 +255,11 @@ async def man_gander_form( else: gander['女'].append(i_name) - return schemas.Msg(code=200, msg='ok', data=gander) + res_msg = { + 'data': gander, + 'table_data': table_data + } + return schemas.Msg(code=200, msg='ok', data=res_msg) # 候选人质量年龄报表 @@ -254,14 +267,15 @@ async def man_gander_form( async def man_age_form( request: Request, interview: InterviewDo = Depends(InterviewDo), - db: CKDrive = Depends(get_ck_db), + ck_db: CKDrive = Depends(get_ck_db), + db: AsyncIOMotorDatabase = Depends(get_database), current_user: schemas.UserDB = Depends(deps.get_current_user) ) -> schemas.Msg: """ 候选人质量年龄报表 """ await interview.init() res = interview.get_man_mass_form_sql() sql = res['sql'] - data = await db.execute(sql) + data = await ck_db.execute(sql) # 年龄 age = { '20-29': [], @@ -274,6 +288,15 @@ async def man_age_form( if not data: return schemas.Msg(code=-9, msg='无数据', data=None) + # 获取报表相关参数 + table_id = interview.data_in.get('table_id', '') + if not table_id: + return schemas.Msg(code=-9, msg='报表数据错误', data=None) + + table_data = await crud.api_interview_tables.get_one_table(db, table_id) + if not table_data: + return schemas.Msg(code=-9, msg='报表数据错误', data=None) + # 处理数据 for interview_data in data.values(): i_name = interview_data.get('name', '默认名字') @@ -289,7 +312,11 @@ async def man_age_form( else: age['60-100'].append(i_name) - return schemas.Msg(code=200, msg='ok', data=age) + res_msg = { + 'data': age, + 'table_data': table_data + } + return schemas.Msg(code=200, msg='ok', data=res_msg) # 候选人质量学历报表 @@ -297,14 +324,15 @@ async def man_age_form( async def man_education_form( request: Request, interview: InterviewDo = Depends(InterviewDo), - db: CKDrive = Depends(get_ck_db), + ck_db: CKDrive = Depends(get_ck_db), + db: AsyncIOMotorDatabase = Depends(get_database), current_user: schemas.UserDB = Depends(deps.get_current_user) ) -> schemas.Msg: """ 候选人质量学历报表 """ await interview.init() res = interview.get_man_mass_form_sql() sql = res['sql'] - data = await db.execute(sql) + data = await ck_db.execute(sql) # 学历 education = { '大专': [], @@ -317,6 +345,15 @@ async def man_education_form( if not data: return schemas.Msg(code=-9, msg='无数据', data=None) + # 获取报表相关参数 + table_id = interview.data_in.get('table_id', '') + if not table_id: + return schemas.Msg(code=-9, msg='报表数据错误', data=None) + + table_data = await crud.api_interview_tables.get_one_table(db, table_id) + if not table_data: + return schemas.Msg(code=-9, msg='报表数据错误', data=None) + # 处理数据 for interview_data in data.values(): i_name = interview_data.get('name', '默认名字') @@ -332,7 +369,11 @@ async def man_education_form( else: education['硕士'].append(i_name) - return schemas.Msg(code=200, msg='ok', data=education) + res_msg = { + 'data': education, + 'table_data': table_data + } + return schemas.Msg(code=200, msg='ok', data=res_msg) # 候选人质量工作经验报表 @@ -340,14 +381,15 @@ async def man_education_form( async def man_work_exp_form( request: Request, interview: InterviewDo = Depends(InterviewDo), - db: CKDrive = Depends(get_ck_db), + ck_db: CKDrive = Depends(get_ck_db), + db: AsyncIOMotorDatabase = Depends(get_database), current_user: schemas.UserDB = Depends(deps.get_current_user) ) -> schemas.Msg: """ 候选人质量工作经验报表 """ await interview.init() res = interview.get_man_mass_form_sql() sql = res['sql'] - data = await db.execute(sql) + data = await ck_db.execute(sql) # 工作经验 work_exp = { '0-2': [], @@ -359,6 +401,15 @@ async def man_work_exp_form( if not data: return schemas.Msg(code=-9, msg='无数据', data=None) + # 获取报表相关参数 + table_id = interview.data_in.get('table_id', '') + if not table_id: + return schemas.Msg(code=-9, msg='报表数据错误', data=None) + + table_data = await crud.api_interview_tables.get_one_table(db, table_id) + if not table_data: + return schemas.Msg(code=-9, msg='报表数据错误', data=None) + # 处理数据 for interview_data in data.values(): i_name = interview_data.get('name', '默认名字') @@ -374,7 +425,11 @@ async def man_work_exp_form( else: work_exp['20-40'].append(i_name) - return schemas.Msg(code=200, msg='ok', data=work_exp) + res_msg = { + 'data': work_exp, + 'table_data': table_data + } + return schemas.Msg(code=200, msg='ok', data=res_msg) # 候选人质量所在地报表 @@ -382,20 +437,30 @@ async def man_work_exp_form( async def man_account_form( request: Request, interview: InterviewDo = Depends(InterviewDo), - db: CKDrive = Depends(get_ck_db), + ck_db: CKDrive = Depends(get_ck_db), + db: AsyncIOMotorDatabase = Depends(get_database), current_user: schemas.UserDB = Depends(deps.get_current_user) ) -> schemas.Msg: """ 候选人质量所在地报表 """ await interview.init() res = interview.get_man_mass_form_sql() sql = res['sql'] - data = await db.execute(sql) + data = await ck_db.execute(sql) # 所在地 account = { } if not data: return schemas.Msg(code=-9, msg='无数据', data=None) + # 获取报表相关参数 + table_id = interview.data_in.get('table_id', '') + if not table_id: + return schemas.Msg(code=-9, msg='报表数据错误', data=None) + + table_data = await crud.api_interview_tables.get_one_table(db, table_id) + if not table_data: + return schemas.Msg(code=-9, msg='报表数据错误', data=None) + # 处理数据 for interview_data in data.values(): i_name = interview_data.get('name', '默认名字') @@ -406,7 +471,11 @@ async def man_account_form( else: account[i_account] = [i_name] - return schemas.Msg(code=200, msg='ok', data=account) + res_msg = { + 'data': account, + 'table_data': table_data + } + return schemas.Msg(code=200, msg='ok', data=res_msg) # 候选人质量毕业院校报表 @@ -414,20 +483,30 @@ async def man_account_form( async def man_school_form( request: Request, interview: InterviewDo = Depends(InterviewDo), - db: CKDrive = Depends(get_ck_db), + ck_db: CKDrive = Depends(get_ck_db), + db: AsyncIOMotorDatabase = Depends(get_database), current_user: schemas.UserDB = Depends(deps.get_current_user) ) -> schemas.Msg: """ 候选人质量毕业院校报表 """ await interview.init() res = interview.get_man_mass_form_sql() sql = res['sql'] - data = await db.execute(sql) + data = await ck_db.execute(sql) # 毕业院校 school = { } if not data: return schemas.Msg(code=-9, msg='无数据', data=None) + # 获取报表相关参数 + table_id = interview.data_in.get('table_id', '') + if not table_id: + return schemas.Msg(code=-9, msg='报表数据错误', data=None) + + table_data = await crud.api_interview_tables.get_one_table(db, table_id) + if not table_data: + return schemas.Msg(code=-9, msg='报表数据错误', data=None) + # 处理数据 for interview_data in data.values(): i_name = interview_data.get('name', '默认名字') @@ -438,7 +517,11 @@ async def man_school_form( else: school[i_school] = [i_name] - return schemas.Msg(code=200, msg='ok', data=school) + res_msg = { + 'data': school, + 'table_data': table_data + } + return schemas.Msg(code=200, msg='ok', data=res_msg) # 候选人质量就职公司报表 @@ -446,20 +529,30 @@ async def man_school_form( async def man_work_for_form( request: Request, interview: InterviewDo = Depends(InterviewDo), - db: CKDrive = Depends(get_ck_db), + ck_db: CKDrive = Depends(get_ck_db), + db: AsyncIOMotorDatabase = Depends(get_database), current_user: schemas.UserDB = Depends(deps.get_current_user) ) -> schemas.Msg: """ 候选人质量就职公司报表 """ await interview.init() res = interview.get_man_mass_form_sql() sql = res['sql'] - data = await db.execute(sql) + data = await ck_db.execute(sql) # 就职公司 work_for = { } if not data: return schemas.Msg(code=-9, msg='无数据', data=None) + # 获取报表相关参数 + table_id = interview.data_in.get('table_id', '') + if not table_id: + return schemas.Msg(code=-9, msg='报表数据错误', data=None) + + table_data = await crud.api_interview_tables.get_one_table(db, table_id) + if not table_data: + return schemas.Msg(code=-9, msg='报表数据错误', data=None) + # 处理数据 for interview_data in data.values(): i_name = interview_data.get('name', '默认名字') @@ -473,7 +566,11 @@ async def man_work_for_form( else: work_for[i_work_for] = [i_name] - return schemas.Msg(code=200, msg='ok', data=work_for) + res_msg = { + 'data': work_for, + 'table_data': table_data + } + return schemas.Msg(code=200, msg='ok', data=res_msg) # 候选人质量渠道报表 @@ -481,14 +578,15 @@ async def man_work_for_form( async def man_owner_name_form( request: Request, interview: InterviewDo = Depends(InterviewDo), - db: CKDrive = Depends(get_ck_db), + ck_db: CKDrive = Depends(get_ck_db), + db: AsyncIOMotorDatabase = Depends(get_database), current_user: schemas.UserDB = Depends(deps.get_current_user) ) -> schemas.Msg: """ 候选人质量渠道报表 """ await interview.init() res = interview.get_man_mass_form_sql() sql = res['sql'] - data = await db.execute(sql) + data = await ck_db.execute(sql) # 渠道 owner_name = { '前程无忧': [], @@ -500,6 +598,15 @@ async def man_owner_name_form( if not data: return schemas.Msg(code=-9, msg='无数据', data=None) + # 获取报表相关参数 + table_id = interview.data_in.get('table_id', '') + if not table_id: + return schemas.Msg(code=-9, msg='报表数据错误', data=None) + + table_data = await crud.api_interview_tables.get_one_table(db, table_id) + if not table_data: + return schemas.Msg(code=-9, msg='报表数据错误', data=None) + # 处理数据 for interview_data in data.values(): i_name = interview_data.get('name', '默认名字') @@ -515,7 +622,11 @@ async def man_owner_name_form( else: owner_name['58同城'].append(i_name) - return schemas.Msg(code=200, msg='ok', data=owner_name) + res_msg = { + 'data': owner_name, + 'table_data': table_data + } + return schemas.Msg(code=200, msg='ok', data=res_msg) # 候选人质量职位报表 @@ -523,14 +634,15 @@ async def man_owner_name_form( async def man_job_name_form( request: Request, interview: InterviewDo = Depends(InterviewDo), - db: CKDrive = Depends(get_ck_db), + ck_db: CKDrive = Depends(get_ck_db), + db: AsyncIOMotorDatabase = Depends(get_database), current_user: schemas.UserDB = Depends(deps.get_current_user) ) -> schemas.Msg: """ 候选人质量职位报表 """ await interview.init() res = interview.get_man_mass_form_sql() sql = res['sql'] - data = await db.execute(sql) + data = await ck_db.execute(sql) # 职位 job_name = { @@ -538,6 +650,15 @@ async def man_job_name_form( if not data: return schemas.Msg(code=-9, msg='无数据', data=None) + # 获取报表相关参数 + table_id = interview.data_in.get('table_id', '') + if not table_id: + return schemas.Msg(code=-9, msg='报表数据错误', data=None) + + table_data = await crud.api_interview_tables.get_one_table(db, table_id) + if not table_data: + return schemas.Msg(code=-9, msg='报表数据错误', data=None) + # 处理数据 for interview_data in data.values(): i_name = interview_data.get('name', '默认名字') @@ -548,7 +669,11 @@ async def man_job_name_form( else: job_name[i_job_name] = [i_name] - return schemas.Msg(code=200, msg='ok', data=job_name) + res_msg = { + 'data': job_name, + 'table_data': table_data + } + return schemas.Msg(code=200, msg='ok', data=res_msg) # 候选人质量学校类型报表 @@ -556,14 +681,15 @@ async def man_job_name_form( async def man_school_type_form( request: Request, interview: InterviewDo = Depends(InterviewDo), - db: CKDrive = Depends(get_ck_db), + ck_db: CKDrive = Depends(get_ck_db), + db: AsyncIOMotorDatabase = Depends(get_database), current_user: schemas.UserDB = Depends(deps.get_current_user) ) -> schemas.Msg: """ 候选人质量学校类型报表 """ await interview.init() res = interview.get_man_mass_form_sql() sql = res['sql'] - data = await db.execute(sql) + data = await ck_db.execute(sql) school_985 = ['清华大学', '北京大学', '中国人民大学', '北京理工大学', '北京航空航天大学', '中央民族大学', '北京师范大学', '中国农业大学', '天津大学', '南开大学', '复旦大学', '上海交通大学', '同济大学', '华东师范大学', '重庆大学', '四川大学', '电子科技大学', '湖南大学', '国防科技大学', '中南大学', '厦门大学'] @@ -583,6 +709,15 @@ async def man_school_type_form( if not data: return schemas.Msg(code=-9, msg='无数据', data=None) + # 获取报表相关参数 + table_id = interview.data_in.get('table_id', '') + if not table_id: + return schemas.Msg(code=-9, msg='报表数据错误', data=None) + + table_data = await crud.api_interview_tables.get_one_table(db, table_id) + if not table_data: + return schemas.Msg(code=-9, msg='报表数据错误', data=None) + # 处理数据 for interview_data in data.values(): i_name = interview_data.get('name', '默认名字') @@ -596,7 +731,11 @@ async def man_school_type_form( else: school_type['其他'].append(i_name) - return schemas.Msg(code=200, msg='ok', data=school_type) + res_msg = { + 'data': school_type, + 'table_data': table_data + } + return schemas.Msg(code=200, msg='ok', data=res_msg) # 候选人明细报表 @@ -604,16 +743,27 @@ async def man_school_type_form( async def man_info_form( request: Request, interview: InterviewDo = Depends(InterviewDo), - db: CKDrive = Depends(get_ck_db), + ck_db: CKDrive = Depends(get_ck_db), + db: AsyncIOMotorDatabase = Depends(get_database), current_user: schemas.UserDB = Depends(deps.get_current_user) ) -> schemas.Msg: """ 候选人明细报表 """ await interview.init() res = interview.get_man_info_form_sql() sql = res['sql'] - data = await db.execute(sql) + data = await ck_db.execute(sql) if not data: return schemas.Msg(code=-9, msg='无数据', data=None) + + # 获取报表相关参数 + table_id = interview.data_in.get('table_id', '') + if not table_id: + return schemas.Msg(code=-9, msg='报表数据错误', data=None) + + table_data = await crud.api_interview_tables.get_one_table(db, table_id) + if not table_data: + return schemas.Msg(code=-9, msg='报表数据错误', data=None) + for key, interview_data in data.items(): i_work_list = interview_data.get('work_list', '') if i_work_list: @@ -656,10 +806,14 @@ async def man_info_form( "phone": "电话", "work_for": "上家公司" } - res_msg = { + res_data = { 'data': res_data, 'level_list': level_list } + res_msg = { + 'data': res_data, + 'table_data': table_data + } return schemas.Msg(code=200, msg='ok', data=res_msg) @@ -699,6 +853,16 @@ async def every_stage_form( data = await ck_db.execute(sql) if not data: return schemas.Msg(code=-9, msg='无数据', data=None) + + # 获取报表相关参数 + table_id = interview.data_in.get('table_id', '') + if not table_id: + return schemas.Msg(code=-9, msg='报表数据错误', data=None) + + table_data = await crud.api_interview_tables.get_one_table(db, table_id) + if not table_data: + return schemas.Msg(code=-9, msg='报表数据错误', data=None) + for ck_data in data.values(): # 职位id不存在跳过 if ck_data['job_id'] not in job_id_to_name: @@ -716,7 +880,11 @@ async def every_stage_form( elif stage == 5: res_msg[ck_job_name]['待入职'] += 1 - return schemas.Msg(code=200, msg='ok', data=res_msg) + res_data = { + 'data': res_msg, + 'table_data': table_data + } + return schemas.Msg(code=200, msg='ok', data=res_data) # hr工作量报表 @@ -735,6 +903,16 @@ async def hr_works_form( data = await ck_db.execute(sql) if not data: return schemas.Msg(code=-9, msg='无数据', data=None) + + # 获取报表相关参数 + table_id = interview.data_in.get('table_id', '') + if not table_id: + return schemas.Msg(code=-9, msg='报表数据错误', data=None) + + table_data = await crud.api_interview_tables.get_one_table(db, table_id) + if not table_data: + return schemas.Msg(code=-9, msg='报表数据错误', data=None) + res_msg = {} job_name_sector = {} hr_names = [] # 查询面试数据 @@ -832,7 +1010,11 @@ async def hr_works_form( 'msg': res_msg, 'job_sector': job_name_sector } - return schemas.Msg(code=200, msg='ok', data=res_data) + res_true_data = { + 'data': res_data, + 'table_data':table_data + } + return schemas.Msg(code=200, msg='ok', data=res_true_data) # 职位阶段通过率报表 @@ -871,6 +1053,16 @@ async def stage_success_form( data = await ck_db.execute(sql) if not data: return schemas.Msg(code=-9, msg='无数据', data=None) + + # 获取报表相关参数 + table_id = interview.data_in.get('table_id', '') + if not table_id: + return schemas.Msg(code=-9, msg='报表数据错误', data=None) + + table_data = await crud.api_interview_tables.get_one_table(db, table_id) + if not table_data: + return schemas.Msg(code=-9, msg='报表数据错误', data=None) + for ck_data in data.values(): # 职位id不存在跳过 if ck_data['job_id'] not in job_id_to_name: @@ -924,7 +1116,11 @@ async def stage_success_form( 'offer通过率': chance_4, '待入职通过率': chance_5 }) - return schemas.Msg(code=200, msg='ok', data=res_msg) + res_data = { + 'data': res_msg, + 'table_data': table_data, + } + return schemas.Msg(code=200, msg='ok', data=res_data) # 招聘漏斗报表 @@ -933,6 +1129,7 @@ async def interview_funnel_form( request: Request, interview: InterviewDo = Depends(InterviewDo), ck_db: CKDrive = Depends(get_ck_db), + db: AsyncIOMotorDatabase = Depends(get_database), current_user: schemas.UserDB = Depends(deps.get_current_user) ) -> schemas.Msg: """ 招聘漏斗报表 """ @@ -942,6 +1139,16 @@ async def interview_funnel_form( data = await ck_db.execute(sql) if not data: return schemas.Msg(code=-9, msg='无数据', data=None) + + # 获取报表相关参数 + table_id = interview.data_in.get('table_id', '') + if not table_id: + return schemas.Msg(code=-9, msg='报表数据错误', data=None) + + table_data = await crud.api_interview_tables.get_one_table(db, table_id) + if not table_data: + return schemas.Msg(code=-9, msg='报表数据错误', data=None) + res_msg = { '初筛': 0, '复筛': 0, @@ -965,7 +1172,11 @@ async def interview_funnel_form( if stage >= 7: res_msg['已入职'] += 1 - return schemas.Msg(code=200, msg='ok', data=res_msg) + res_data = { + 'data': res_msg, + 'table_data': table_data + } + return schemas.Msg(code=200, msg='ok', data=res_data) # 渠道质量报表 @@ -973,16 +1184,27 @@ async def interview_funnel_form( async def owner_form( request: Request, interview: InterviewDo = Depends(InterviewDo), - db: CKDrive = Depends(get_ck_db), + ck_db: CKDrive = Depends(get_ck_db), + db: AsyncIOMotorDatabase = Depends(get_database), current_user: schemas.UserDB = Depends(deps.get_current_user) ) -> schemas.Msg: """ 渠道质量报表 """ await interview.init() res = interview.get_owner_form_sql() sql = res['sql'] - data = await db.execute(sql) + data = await ck_db.execute(sql) if not data: return schemas.Msg(code=-9, msg='无数据', data=None) + + # 获取报表相关参数 + table_id = interview.data_in.get('table_id', '') + if not table_id: + return schemas.Msg(code=-9, msg='报表数据错误', data=None) + + table_data = await crud.api_interview_tables.get_one_table(db, table_id) + if not table_data: + return schemas.Msg(code=-9, msg='报表数据错误', data=None) + # 简历渠道 owner_dict = {1: '前程无忧', 2: '人才库', 3: '智联招聘', 4: 'Boss直聘', 5: '58同城', 6: '拉勾'} chk_data = { @@ -1038,8 +1260,11 @@ async def owner_form( res_msg[key]['work_num'] = work_num res_msg[key]['offer_chance'] = offer_chance res_msg[key]['work_chance'] = work_chance - - return schemas.Msg(code=200, msg='ok', data=res_msg) + res_data = { + 'data': res_msg, + 'table_data': table_data + } + return schemas.Msg(code=200, msg='ok', data=res_data) # 渠道质量报表 @@ -1058,6 +1283,16 @@ async def owner_effect( data = await ck_db.execute(sql) if not data: return schemas.Msg(code=-9, msg='无数据', data=None) + + # 获取报表相关参数 + table_id = interview.data_in.get('table_id', '') + if not table_id: + return schemas.Msg(code=-9, msg='报表数据错误', data=None) + + table_data = await crud.api_interview_tables.get_one_table(db, table_id) + if not table_data: + return schemas.Msg(code=-9, msg='报表数据错误', data=None) + # 简历渠道 owner_dict = {1: '前程无忧', 2: '人才库', 3: '智联招聘', 4: 'Boss直聘', 5: '58同城', 6: '拉勾'} chk_data = { @@ -1113,7 +1348,11 @@ async def owner_effect( 'res_msg': res_msg, 'owner_info': owner_info } - return schemas.Msg(code=200, msg='ok', data=res_data) + res_true_data = { + 'data': res_data, + 'table_data': table_data + } + return schemas.Msg(code=200, msg='ok', data=res_true_data) # 招聘趋势分析报表 @@ -1122,6 +1361,7 @@ async def interview_trend_form( request: Request, interview: InterviewDo = Depends(InterviewDo), ck_db: CKDrive = Depends(get_ck_db), + db: AsyncIOMotorDatabase = Depends(get_database), current_user: schemas.UserDB = Depends(deps.get_current_user) ) -> schemas.Msg: """ 招聘趋势分析报表 """ @@ -1131,6 +1371,16 @@ async def interview_trend_form( data = await ck_db.execute(sql) if not data: return schemas.Msg(code=-9, msg='无数据', data=None) + + # 获取报表相关参数 + table_id = interview.data_in.get('table_id', '') + if not table_id: + return schemas.Msg(code=-9, msg='报表数据错误', data=None) + + table_data = await crud.api_interview_tables.get_one_table(db, table_id) + if not table_data: + return schemas.Msg(code=-9, msg='报表数据错误', data=None) + sdate = res['sdate'] edate = res['edate'] days = get_every_days(sdate, edate) @@ -1153,8 +1403,11 @@ async def interview_trend_form( res_msg[chk_date]['初筛'] += 1 * count_num if chk_stage >= 3: res_msg[chk_date]['创建面试的申请数'] += 1 * count_num - - return schemas.Msg(code=200, msg='ok', data=res_msg) + res_data = { + 'data': res_msg, + 'table_data': table_data + } + return schemas.Msg(code=200, msg='ok', data=res_data) # 年度招聘趋势报表 @@ -1163,6 +1416,7 @@ async def year_trend_form( request: Request, interview: InterviewDo = Depends(InterviewDo), ck_db: CKDrive = Depends(get_ck_db), + db: AsyncIOMotorDatabase = Depends(get_database), current_user: schemas.UserDB = Depends(deps.get_current_user) ) -> schemas.Msg: """ 招聘趋势分析报表 """ @@ -1172,6 +1426,16 @@ async def year_trend_form( data = await ck_db.execute(sql) if not data: return schemas.Msg(code=-9, msg='无数据', data=None) + + # 获取报表相关参数 + table_id = interview.data_in.get('table_id', '') + if not table_id: + return schemas.Msg(code=-9, msg='报表数据错误', data=None) + + table_data = await crud.api_interview_tables.get_one_table(db, table_id) + if not table_data: + return schemas.Msg(code=-9, msg='报表数据错误', data=None) + sdate = res['sdate'] edate = res['edate'] months = get_every_months(sdate, edate) @@ -1216,8 +1480,11 @@ async def year_trend_form( if chk_stage == 10: res_msg[chk_date]['离职人数'] += 1 * count_num res_msg[chk_date]['被动离职'] += 1 * count_num - - return schemas.Msg(code=200, msg='ok', data=res_msg) + res_data = { + 'data': res_msg, + 'table_data': table_data + } + return schemas.Msg(code=200, msg='ok', data=res_data) # 年度岗位招聘数据报表 @@ -1236,6 +1503,16 @@ async def year_job_form( data = await ck_db.execute(sql) if not data: return schemas.Msg(code=-9, msg='无数据', data=None) + + # 获取报表相关参数 + table_id = interview.data_in.get('table_id', '') + if not table_id: + return schemas.Msg(code=-9, msg='报表数据错误', data=None) + + table_data = await crud.api_interview_tables.get_one_table(db, table_id) + if not table_data: + return schemas.Msg(code=-9, msg='报表数据错误', data=None) + # 取出job和部门 job_ids = set([j_data['job_id'] for j_data in data.values()]) job_ids = list(job_ids) @@ -1293,7 +1570,11 @@ async def year_job_form( 'res_msg': res_msg, 'job_data': job_dict } - return schemas.Msg(code=200, msg='ok', data=res_data) + res_true_data = { + 'data': res_data, + 'table_data': table_data + } + return schemas.Msg(code=200, msg='ok', data=res_true_data) # 年度入离职数据报表 @@ -1302,6 +1583,7 @@ async def year_in_out( request: Request, interview: InterviewDo = Depends(InterviewDo), ck_db: CKDrive = Depends(get_ck_db), + db: AsyncIOMotorDatabase = Depends(get_database), current_user: schemas.UserDB = Depends(deps.get_current_user) ) -> schemas.Msg: """ 年度入离职数据报表 """ @@ -1313,6 +1595,16 @@ async def year_in_out( data_out = await ck_db.execute(sql_out) if not data_in and data_out: return schemas.Msg(code=-9, msg='无数据', data=None) + + # 获取报表相关参数 + table_id = interview.data_in.get('table_id', '') + if not table_id: + return schemas.Msg(code=-9, msg='报表数据错误', data=None) + + table_data = await crud.api_interview_tables.get_one_table(db, table_id) + if not table_data: + return schemas.Msg(code=-9, msg='报表数据错误', data=None) + sdate = res['sdate'] edate = res['edate'] months = get_every_months(sdate, edate) @@ -1339,5 +1631,8 @@ async def year_in_out( continue value = out_data['value'] res_msg['离职'][out_date] += value - - return schemas.Msg(code=200, msg='ok', data=res_msg) + res_data = { + 'data': res_msg, + 'table_data': table_data + } + return schemas.Msg(code=200, msg='ok', data=res_data)