默认待筛选

This commit is contained in:
Àî×ÚÕñ 2022-09-16 18:24:34 +08:00
parent 8b7b7fd807
commit 87327d36e9
2 changed files with 283 additions and 2 deletions

View File

@ -1235,6 +1235,230 @@ async def interview_funnel_form(
return schemas.Msg(code=200, msg='ok', data=res_data)
# 初筛数量
@router.post("/interview_start_form")
async def interview_start_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:
""" 初筛 """
await interview.init()
res = interview.get_hr_works_form_sql()
sql = res['sql']
data = await ck_db.execute(sql)
# 获取报表相关参数
table_id = interview.data_in.get('table_id', '')
if not table_id:
return schemas.Msg(code=200, msg='报表数据错误', data={})
table_data = await crud.api_interview_tables.get_one_table(db, table_id)
if not table_data:
return schemas.Msg(code=200, msg='报表数据错误', data={})
res_msg = {
'value': 0,
}
for i_data in data.values():
stage = i_data['interview_stage']
if stage >= 1:
res_msg['value'] += 1
res_data = {
'data': res_msg,
'table_data': table_data
}
return schemas.Msg(code=200, msg='ok', data=res_data)
# 面试数量
@router.post("/interview_exam_form")
async def interview_exam_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:
""" 安排面试总次数 """
await interview.init()
res = interview.get_hr_works_form_sql()
sql = res['sql']
data = await ck_db.execute(sql)
# 获取报表相关参数
table_id = interview.data_in.get('table_id', '')
if not table_id:
return schemas.Msg(code=200, msg='报表数据错误', data={})
table_data = await crud.api_interview_tables.get_one_table(db, table_id)
if not table_data:
return schemas.Msg(code=200, msg='报表数据错误', data={})
res_msg = {
'value': 0,
}
for i_data in data.values():
stage = i_data['interview_stage']
if stage >= 3:
res_msg['value'] += 1
res_data = {
'data': res_msg,
'table_data': table_data
}
return schemas.Msg(code=200, msg='ok', data=res_data)
# 待入职数量
@router.post("/interview_wait_in_form")
async def interview_wait_in_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:
""" 待入职 """
await interview.init()
res = interview.get_hr_works_form_sql()
sql = res['sql']
data = await ck_db.execute(sql)
# 获取报表相关参数
table_id = interview.data_in.get('table_id', '')
if not table_id:
return schemas.Msg(code=200, msg='报表数据错误', data={})
table_data = await crud.api_interview_tables.get_one_table(db, table_id)
if not table_data:
return schemas.Msg(code=200, msg='报表数据错误', data={})
res_msg = {
'value': 0,
}
for i_data in data.values():
stage = i_data['interview_stage']
if stage >= 5:
res_msg['value'] += 1
res_data = {
'data': res_msg,
'table_data': table_data
}
return schemas.Msg(code=200, msg='ok', data=res_data)
# 初筛渠道
@router.post("/interview_stage1_owner_form")
async def interview_stage1_owner_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:
""" 初筛阶段渠道 """
await interview.init()
res = interview.get_owner_stage1_form_sql()
sql = res['sql']
data = await ck_db.execute(sql)
# 获取报表相关参数
table_id = interview.data_in.get('table_id', '')
if not table_id:
return schemas.Msg(code=200, msg='报表数据错误', data={})
table_data = await crud.api_interview_tables.get_one_table(db, table_id)
if not table_data:
return schemas.Msg(code=200, msg='报表数据错误', data={})
# 简历渠道
owner_dict = {1: '前程无忧', 2: '人才库', 3: '智联招聘', 4: 'Boss直聘', 5: '58同城', 6: '拉勾'}
chk_data = {
'前程无忧': [],
'人才库': [],
'智联招聘': [],
'Boss直聘': [],
'58同城': [],
'拉勾': []
}
for i in data.values():
owner_name = owner_dict[i['owner_name']]
i_data = deepcopy(i)
chk_data[owner_name].append(i_data)
res_data = {
'data': chk_data,
'table_data': table_data,
}
return schemas.Msg(code=200, msg='ok', data=res_data)
# 招聘职位数
@router.post("/interview_job_num_form")
async def interview_job_num_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:
""" 开放中的职位 """
job_data = await crud.jobs.all_some_field
value = list(set([i['job_name'] for i in job_data]))
# 获取报表相关参数
table_id = interview.data_in.get('table_id', '')
if not table_id:
return schemas.Msg(code=200, msg='报表数据错误', data={})
table_data = await crud.api_interview_tables.get_one_table(db, table_id)
if not table_data:
return schemas.Msg(code=200, msg='报表数据错误', data={})
res_msg = {
'value': len(value)
}
# 简历渠道
res_data = {
'data': res_msg,
'table_data': table_data
}
return schemas.Msg(code=200, msg='ok', data=res_data)
# 招聘职位总人数数
@router.post("/interview_job_need_num_form")
async def interview_job_need_num_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:
""" 职位招聘人数 """
job_data = await crud.jobs.all_some_field
value = [i['job_num'] for i in job_data]
# 获取报表相关参数
table_id = interview.data_in.get('table_id', '')
if not table_id:
return schemas.Msg(code=200, msg='报表数据错误', data={})
table_data = await crud.api_interview_tables.get_one_table(db, table_id)
if not table_data:
return schemas.Msg(code=200, msg='报表数据错误', data={})
res_msg = {
'value': sum(value)
}
# 简历渠道
res_data = {
'data': res_msg,
'table_data': table_data
}
return schemas.Msg(code=200, msg='ok', data=res_data)
# 渠道质量报表
@router.post("/owner_form")
async def owner_form(

View File

@ -30,13 +30,13 @@ class InterviewDo:
self.find_column = set()
self.data_in = {}
self.where = {}
self.data={}
self.data = {}
async def init(self, *args, **kwargs):
self.find_column = self.query_in.find_column
self.data_in = self.query_in.data_in
self.where = self.query_in.interview_query
self.data=self.query_in.data
self.data = self.query_in.data
def handler_filts(self, where):
"""
@ -759,6 +759,63 @@ class InterviewDo:
'sql': sql
}
# 初筛渠道质量sql
def get_owner_stage1_form_sql(self):
findStr = ''
whereStr = ''
# 查询字段
self.find_column = ["name", "owner_name", "interview_stage"]
for fstr in self.find_column:
findStr += fstr + ', '
is_date = 0
self.where.update({
'interview_stage': 1
})
if self.where:
for key, value in self.where.items():
if isinstance(value, str):
if not value.strip():
continue
if whereStr:
whereStr += 'and ' + str(key) + ' = ' + "'" + value + "'" + ' '
else:
whereStr += str(key) + ' = ' + "'" + value + "'" + ' '
continue
if whereStr:
whereStr += 'and ' + str(key) + ' = ' + str(value) + ' '
else:
whereStr += str(key) + ' = ' + str(value) + ' '
whereStr = whereStr.strip()
findStr = findStr.strip().strip(',')
# 有日期条件
if is_date:
start_time = self.where.get('start_time', '')
end_time = self.where.get('end_time', '')
if whereStr:
sql = f"select {findStr} from HR.resumes where {whereStr}"
else:
sql = f"select {findStr} from HR.resumes"
if start_time or end_time:
sql += f" where"
if start_time:
if whereStr:
sql += f" and toDate(addHours(`event_time`, 0)) >= '{start_time}'"
else:
sql += f" toDate(addHours(`event_time`, 0)) >= '{start_time}'"
if end_time:
sql += f" and toDate(addHours(`event_time`, 0)) <= '{end_time}'"
# 没有日期条件
else:
if whereStr:
sql = f"select {findStr} from HR.resumes where {whereStr}"
else:
sql = f"select {findStr} from HR.resumes"
print(sql)
return {
'sql': sql
}
# 阶段数据sql
def get_every_stage_form_sql(self, job_ids):
findStr = ''