默认待筛选
This commit is contained in:
parent
8b7b7fd807
commit
87327d36e9
@ -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(
|
||||
|
@ -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 = ''
|
||||
|
Loading…
Reference in New Issue
Block a user