From 89667d16a050f6fe90cb08d0fbfb68b91da95908 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=8E=E4=BC=9F?= <250213850@qq.com> Date: Tue, 25 Oct 2022 15:48:27 +0800 Subject: [PATCH] =?UTF-8?q?1.=E8=8E=B7=E5=8F=96=E4=BA=BA=E6=89=8D=E5=BA=93?= =?UTF-8?q?=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/api_v1/endpoints/interview.py | 93 +++++++++++++++++++++++++------ schemas/interview_plan.py | 5 ++ 2 files changed, 82 insertions(+), 16 deletions(-) diff --git a/api/api_v1/endpoints/interview.py b/api/api_v1/endpoints/interview.py index b891d75..11de902 100644 --- a/api/api_v1/endpoints/interview.py +++ b/api/api_v1/endpoints/interview.py @@ -403,12 +403,15 @@ async def interview_update( user_ids1 = ','.join(user_id1) sql = sql.replace('interview_stage = 1 ,', f"interview_stage = 1 ,hr_name = '{nicknames1}',hr_id = '{user_ids1}',", 1) + interviews = int(interview.data.get('interview_stage', '0')) # 当前简历阶段 + if interview.data_in.get('interview_stage', '') == 11: # 当是淘汰时则把淘汰的时间,阶段等都记录下来 + now = str(datetime.datetime.now()).split('.')[0] + sql = sql.replace("interview_stage = 11", f"interview_stage = 11,ago={interviews},pass_time='{now}'") data = await ckdb.execute(sql) print(sql) # except: # return schemas.Msg(code=-9, msg='数据有误', data=None) - interviews = int(interview.data.get('interview_stage', '0')) # 简历阶段 - if interview.data_in.get('interview_stage', '') == 11 and interviews > 2: # 淘汰的时候发送钉钉消息通知面试官该求职者被淘汰 + if interview.data_in.get('interview_stage', '') == 11 and interviews > 2: # 淘汰的时候发送钉钉消息通知面试官该求职者被淘汰(面试之后的阶段才会发通知) send_sql = f""" select interview_id,name,job_names from HR.resumes where uid = '{interview.where.get('uid')}' limit 1 """ @@ -1503,7 +1506,7 @@ async def get_str_mail( async def send_mail( request: Request, data_in: schemas.send_str_mail, - #file: List[UploadFile] = File(...), + # file: List[UploadFile] = File(...), db: AsyncIOMotorDatabase = Depends(get_database), current_user: schemas.UserDB = Depends(deps.get_current_user) ) -> schemas.Msg: @@ -1521,14 +1524,14 @@ async def send_mail( now_time = str(datetime.now()).split('.')[0] await crud.email_record.create(db, schemas.email_record(user_id=data_in.user_id, text=data_in.email_str, times=now_time, name=name, state=1, - read_status=0, type='email',mail_affix=data_in.file)) + read_status=0, type='email', mail_affix=data_in.file)) return schemas.Msg(code=200, msg='邮件发送成功', data='') except Exception as e: print(e) now_time = str(datetime.now()).split('.')[0] await crud.email_record.create(db, schemas.email_record(user_id=data_in.user_id, text=data_in.email_str, times=now_time, name=name, state=0, - read_status=0, type='email',mail_affix=data_in.file)) + read_status=0, type='email', mail_affix=data_in.file)) return schemas.Msg(code=200, msg='邮件发送失败', data='') @@ -2477,6 +2480,7 @@ async def add_interviewee( ckdb: CKDrive = Depends(get_ck_db), current_user: schemas.UserDB = Depends(deps.get_current_user) ) -> schemas.Msg: + """添加面试""" name = await crud.user.get_users(db, data_in.user_id) name_list = [i['nickname'] for i in name] interview_name = ','.join(name_list) @@ -2807,6 +2811,7 @@ async def interviews( return schemas.Msg(code=200, msg='ok', data=datas) +# 废除了,有默认加反馈模版的地方 @router.post("/interview_teacher") async def interview_teacher( request: Request, @@ -2840,17 +2845,12 @@ async def interview_teacher( data['survey'][k]['type'] = True await crud.feedback.up_feedback(db, schemas.Feedback(uid=data_in.uid, survey=data['survey'])) - a = 1 - # user_list=list(data_in.survey.keys()) - # sql = f"""select hr_id,interview_id from HR.resumes WHERE uid = '{data_in.uid}' limit 1""" - # res=await ckdb.query_dataframe(sql) - # res_list=res.values.tolist() - # # 判断是否所有人都反馈完成,全部反馈完整则修改反馈状态 - # d = [False for c in res_list if c not in user_list] - # if not d: - # up_sql = f"""ALTER TABLE HR.resumes update teacher_state = 2 WHERE uid = '{data_in.uid}'""" - # await ckdb.execute(up_sql) - + res = await crud.feedback.one_feedback(db, {'uid': data_in.uid}) + teacher_back = [v['teacher_back'] for v in res['survey'].values()] + types = [v['type'] for v in res['survey'].values()] + if 0 not in teacher_back and False not in types: # 当所有的反馈都处理完后,修改简历状态 + up_sql = f"""ALTER TABLE HR.resumes update teacher_state = 2 WHERE uid = '{data_in.uid}'""" + await ckdb.execute(up_sql) return schemas.Msg(code=200, msg='ok', data='') @@ -2882,3 +2882,64 @@ async def hint( res.append(i) data = sorted(res, key=operator.itemgetter('times')) return schemas.Msg(code=200, msg='ok', data=data) + + +@router.post("/talent_pool") +async def talent_pool( + request: Request, + data_in: schemas.find, + ckdb: CKDrive = Depends(get_ck_db), + db: AsyncIOMotorDatabase = Depends(get_database), + current_user: schemas.UserDB = Depends(deps.get_current_user) +) -> schemas.Msg: + """获取人才库数据,分页查询""" + find_column = ["uid", "gender", "at_school", "name", "event_time", "education", "school", "specialty", + "work_exp", "job_id", "job_names", "ago", "pass_time""job_name", "pass_why", "pass_text"] + find_columns = ','.join(find_column) + if data_in.date != {}: + strs = [] + for k, v in data_in.date.items(): + if v != '': + str_s = f"{k} like '%{v}%'" + strs.append(str_s) + where = ' and '.join(strs) + sql = f""" + select {find_columns} from HR.resumes where interview_stage = -1 and {where} ORDER BY event_time + LIMIT 10 OFFSET {(data_in.pages - 1) * 10} + """ + else: + sql = f""" + select {find_columns} from HR.resumes where interview_stage = -1 ORDER BY event_time + LIMIT 10 OFFSET {(data_in.pages - 1) * 10} + """ + data = await ckdb.execute(sql) + if not data: + return schemas.Msg(code=-9, msg='无数据', data='') + res = chkData(data) + return schemas.Msg(code=200, msg='ok', data=res) + + +@router.post("/talent_pool_nu") +async def talent_pool_nu( + request: Request, + data_in: schemas.find, + ckdb: CKDrive = Depends(get_ck_db), + db: AsyncIOMotorDatabase = Depends(get_database), + current_user: schemas.UserDB = Depends(deps.get_current_user) +) -> schemas.Msg: + """获取人才库数据数量""" + if data_in.date != {}: + strs = [] + for k, v in data_in.date.items(): + if v != '': + str_s = f"{k} like '%{v}%'" + strs.append(str_s) + where = ' and '.join(strs) + sql = f"""select count(*) from HR.resumes where interview_stage = -1 and {where}""" + else: + sql = f"""select count(*) from HR.resumes where interview_stage = -1""" + data = await ckdb.query_dataframe(sql) + if not data: + return schemas.Msg(code=-9, msg='无数据', data='') + res = len(data) + return schemas.Msg(code=200, msg='ok', data=res) diff --git a/schemas/interview_plan.py b/schemas/interview_plan.py index 5bf8fad..de2c95b 100644 --- a/schemas/interview_plan.py +++ b/schemas/interview_plan.py @@ -178,3 +178,8 @@ class get_teacher(BaseModel): class record(BaseModel): uid: str # 求职者唯一id + + +class find(BaseModel): + date: dict={} # 查询条件 + pages: int = 1 # 分页的当前页