This commit is contained in:
Àî×ÚÕñ 2022-09-15 11:21:50 +08:00
parent bfda4c0e6e
commit 36b29c4b35
2 changed files with 152 additions and 0 deletions

View File

@ -1777,3 +1777,140 @@ async def year_in_out(
'table_data': table_data
}
return schemas.Msg(code=200, msg='ok', data=res_data)
# 查询入职人员信息
@router.post("/find_worker_form")
async def find_worker_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()
# 获取报表相关参数
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={})
data = await crud.worker_info.find_worker_some(db, findlist=interview.find_column)
if not data:
return schemas.Msg(code=-9, msg='无数据', data=None)
res_msg = {
'未评级': [i['name'] for i in data if i['job_level'] == '未评级'],
'p1-p3': [i['name'] for i in data if i['job_level'] in ['p1', 'p2', 'p3']],
'p4': [i['name'] for i in data if i['job_level'] == 'p4'],
'p5': [i['name'] for i in data if i['job_level'] == 'p5'],
'p6': [i['name'] for i in data if i['job_level'] == 'p6'],
'p7': [i['name'] for i in data if i['job_level'] == 'p7'],
'p8': [i['name'] for i in data if i['job_level'] == 'p8'],
'm1': [i['name'] for i in data if i['job_level'] == 'm1'],
'm2': [i['name'] for i in data if i['job_level'] == 'm2'],
'm3': [i['name'] for i in data if i['job_level'] == 'm3'],
'm4': [i['name'] for i in data if i['job_level'] == 'm4'],
'总人数': len(data)
}
res_data = []
res_msg1 = {
'title': '数量',
'未评级': len(res_msg['未评级']),
'p1-p3': len(res_msg['p1-p3']),
'p4': len(res_msg['p4']),
'p5': len(res_msg['p5']),
'p6': len(res_msg['p6']),
'p7': len(res_msg['p7']),
'p8': len(res_msg['p8']),
'm1': len(res_msg['m1']),
'm2': len(res_msg['m2']),
'm3': len(res_msg['m3']),
'm4': len(res_msg['m4']),
}
res_data.append(res_msg1)
res_msg2 = {
'title': '占比',
'未评级': round(res_msg1['未评级'] / res_msg['总人数'], 2),
'p1-p3': round(res_msg1['p1-p3'] / res_msg['总人数'], 2),
'p4': round(res_msg1['p4'] / res_msg['总人数'], 2),
'p5': round(res_msg1['p5'] / res_msg['总人数'], 2),
'p6': round(res_msg1['p6'] / res_msg['总人数'], 2),
'p7': round(res_msg1['p7'] / res_msg['总人数'], 2),
'p8': round(res_msg1['p8'] / res_msg['总人数'], 2),
'm1': round(res_msg1['m1'] / res_msg['总人数'], 2),
'm2': round(res_msg1['m2'] / res_msg['总人数'], 2),
'm3': round(res_msg1['m3'] / res_msg['总人数'], 2),
'm4': round(res_msg1['m4'] / res_msg['总人数'], 2),
}
res_data.append(res_msg2)
level_list = {
'title': '职级',
'未评级': '未评级',
'p1-p3': 'p1-p3',
'p4': 'p4',
'p5': 'p5',
'p6': 'p6',
'p7': 'p7',
'p8': 'p8',
'm1': 'm1',
'm2': 'm2',
'm3': 'm3',
'm4': 'm4'
}
res_true_msg = {
'data': res_data,
'level_list': level_list
}
res_true_data = {
'data': res_true_msg,
'table_data': table_data
}
return schemas.Msg(code=200, msg='ok', data=res_true_data)
# 查询统计数据
@router.post("/find_count_info")
async def find_count_info(
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()
# 获取报表相关参数
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={})
data = await crud.count_in_worker.find_count_some(db)
true_index = 0
max_num = 0
for index, i in enumerate(data):
if len(i.keys()) > max_num:
true_index = index
index_key = [k for k in data[true_index].keys()]
level_list = {i: i for i in index_key}
level_list.update({
'count_id': '月份'
})
res_msg = {
'data': data,
'level_list': level_list
}
res_data = {
'data': res_msg,
'table_data': table_data
}
return schemas.Msg(code=200, msg='ok', data=res_data)

View File

@ -124,6 +124,21 @@ async def add_count_info(
return schemas.Msg(code=-10, msg='本月数据已添加', data=None)
worker_data = await crud.worker_info.find_worker_some(db, findlist=['name', 'work_in'])
insert_data = {
'2008': 0,
'2009': 0,
'2010': 0,
'2011': 0,
'2012': 0,
'2013': 0,
'2014': 0,
'2015': 0,
'2016': 0,
'2017': 0,
'2018': 0,
'2019': 0,
'2020': 0,
'2021': 0,
'2022': 0,
'count_id': count_id
}
for chk_data in worker_data: