报表
This commit is contained in:
parent
bfda4c0e6e
commit
36b29c4b35
@ -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)
|
||||
|
@ -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:
|
||||
|
Loading…
Reference in New Issue
Block a user