From 3a8db1d1349f2b64b20f997e48b8297e4244628b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E4=BC=9F?= <250213850@qq.com> Date: Tue, 8 Nov 2022 11:45:46 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=BF=AE=E6=94=B9=E7=AE=80=E5=8E=86=E7=AD=9B?= =?UTF-8?q?=E9=80=89=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/api_v1/endpoints/interview.py | 113 +++++++++++++++++++++--------- models/interview_zsgc.py | 4 +- schemas/interview_plan.py | 4 ++ 3 files changed, 86 insertions(+), 35 deletions(-) diff --git a/api/api_v1/endpoints/interview.py b/api/api_v1/endpoints/interview.py index 7e0eb7b..d913e51 100644 --- a/api/api_v1/endpoints/interview.py +++ b/api/api_v1/endpoints/interview.py @@ -124,7 +124,8 @@ def chkData(data): if '—' in work_list[true_index]['time']: split_str2 = '—' if int(i['time'].split(split_str1)[0].replace('.', '').replace('/', '')) > int( - work_list[true_index]['time'].split(split_str2)[0].replace('.', '').replace('/', '')): + work_list[true_index]['time'].split(split_str2)[0].replace('.', '').replace('/', + '')): true_index = index work_dict = work_list[true_index] work_list = [work_dict] @@ -218,36 +219,82 @@ async def interview_find( # 面试查询 +# @router.post("/interview_manner_num") +# async def interview_find( +# request: Request, +# interview: InterviewDo = Depends(InterviewDo), +# db: CKDrive = Depends(get_ck_db), +# current_user: schemas.UserDB = Depends(deps.get_current_user) +# ) -> schemas.Msg: +# """ interview面试数据查询 """ +# await interview.init() +# res = interview.find_interview_every_sql() +# sql = res['sql'] +# print(sql) +# data = await db.execute(sql) +# if not data: +# res_msg = { +# 'manner_2_num': 0, +# 'manner_01_num': 0, +# } +# return schemas.Msg(code=200, msg='无数据', data=res_msg) +# # 格式化数据 +# res_data = chkData(data) +# +# # 统计数量 +# manner_2_num = len([1 for i in res_data if i['hr_manner'] == 2]) +# manner_01_num = len([1 for i in res_data if i['hr_manner'] in [0, 1]]) +# +# res_msg = { +# 'manner_2_num': manner_2_num, +# 'manner_01_num': manner_01_num, +# } +# return schemas.Msg(code=200, msg='ok', data=res_msg) @router.post("/interview_manner_num") async def interview_find( request: Request, - interview: InterviewDo = Depends(InterviewDo), - db: CKDrive = Depends(get_ck_db), + data_in: schemas.num, + ckdb: CKDrive = Depends(get_ck_db), current_user: schemas.UserDB = Depends(deps.get_current_user) ) -> schemas.Msg: """ interview面试数据查询 """ - await interview.init() - res = interview.find_interview_every_sql() - sql = res['sql'] + strs = [] + for k, v in data_in.data.items(): + if v != '': + if k == 'name': + str_s = f"{k} like '%{v}%'" + elif isinstance(v, int): + str_s = f"{k} = {v}" + else: + str_s = f"{k} = '{v}'" + strs.append(str_s) + where = ' and '.join(strs) + # 待筛选候选人 + + sql = f"""select count(*) as v from HR.resumes where interview_stage = 1 and {where}""" print(sql) - data = await db.execute(sql) - if not data: - res_msg = { - 'manner_2_num': 0, - 'manner_01_num': 0, - } - return schemas.Msg(code=200, msg='无数据', data=res_msg) - # 格式化数据 - res_data = chkData(data) + manner_2_num = await ckdb.execute(sql) + # 筛选记录 + a = 0 + for k, v in data_in.data.items(): + if k == 'hr_manner' and v != '' and v != 2: + a += 1 + break - # 统计数量 - manner_2_num = len([1 for i in res_data if i['hr_manner'] == 2]) - manner_01_num = len([1 for i in res_data if i['hr_manner'] in [0, 1]]) + if a == 0: # 不存在hr_manner筛选 + s_sql = f"""select count(*) as va from HR.resumes where hr_manner in (0,1) and {where}""" + s_sql = s_sql.replace("hr_manner = 2 and", ' ', 1) + else: + s_sql = f"""select count(*) as va from HR.resumes where {where}""" + s_sql = s_sql.replace("hr_manner = 2 and", ' ', 1) + print(s_sql) + manner_01_num = await ckdb.execute(s_sql) res_msg = { - 'manner_2_num': manner_2_num, - 'manner_01_num': manner_01_num, + 'manner_2_num': manner_2_num[0]['v'], + 'manner_01_num': manner_01_num[0]['va'], } + return schemas.Msg(code=200, msg='ok', data=res_msg) @@ -487,19 +534,19 @@ async def file_to_hw( # 简历初始文档 data_mode = { - "interview_name": "", #面试官姓名 - "interview_type": 1,#面试类型 - "interview_sign": 0,#面试签到 - "hope_money": "",#期望薪资 - "feedback": 0,#面试反馈 - "interview_round": 0,#面试轮次 - "event_time": datetime.now(),#投递简历时间 - "name": "",#求职者姓名 - "phone": "",#求职者电话 - "job_name": "",#应聘职位 - "hr_name": "",#hr姓名 - "work_exp": 0,#工作经验 - "interview_stage": 1,# + "interview_name": "", # 面试官姓名 + "interview_type": 1, # 面试类型 + "interview_sign": 0, # 面试签到 + "hope_money": "", # 期望薪资 + "feedback": 0, # 面试反馈 + "interview_round": 0, # 面试轮次 + "event_time": datetime.now(), # 投递简历时间 + "name": "", # 求职者姓名 + "phone": "", # 求职者电话 + "job_name": "", # 应聘职位 + "hr_name": "", # hr姓名 + "work_exp": 0, # 工作经验 + "interview_stage": 1, # "owner_name": 2, "education": 1, "work_undergo": [], diff --git a/models/interview_zsgc.py b/models/interview_zsgc.py index 4169172..c6d173b 100644 --- a/models/interview_zsgc.py +++ b/models/interview_zsgc.py @@ -339,10 +339,10 @@ class InterviewDo: if key == 'hr_manner': if value == '': if whereStr: - whereStr += 'and ' + str(key) + ' = ' + str(0) + ' ' + whereStr += 'and ' + '(' + str(key) + ' = ' + str(0) + ' ' else: whereStr += str(key) + ' = ' + str(0) + ' ' - whereStr += 'or ' + str(key) + ' = ' + str(1) + ' ' + whereStr += 'or ' + str(key) + ' = ' + str(1) + ') ' if isinstance(value, str): if not value.strip(): continue diff --git a/schemas/interview_plan.py b/schemas/interview_plan.py index 0c7ba3f..76d9687 100644 --- a/schemas/interview_plan.py +++ b/schemas/interview_plan.py @@ -187,3 +187,7 @@ class find(BaseModel): class send_list(BaseModel): send:List[dict] + +class num(BaseModel): + data:dict + types:bool # true 为待筛选 \ No newline at end of file