prs_server/api/api_v1/endpoints/worker_info.py
2022-09-15 11:21:50 +08:00

165 lines
5.1 KiB
Python

import operator
import os
import re
import pandas as pd
from copy import deepcopy
from fastapi import APIRouter, Depends, Request, File, UploadFile
from motor.motor_asyncio import AsyncIOMotorDatabase
from utils.dingding import get_redis_alluid, send_dates
from utils.jianli import get_resume
import crud, schemas
from datetime import datetime
from core.configuration import *
from db import get_database
from db.ckdb import get_ck_db, CKDrive
from models.interview_zsgc import InterviewDo
from utils import get_time, qujian_time, Download_xlsx, send_str_mail
router = APIRouter()
# 增加入职人员
@router.post("/add_worker")
async def add_worker(
request: Request,
data_in: schemas.InWorkerQuery,
db: AsyncIOMotorDatabase = Depends(get_database)
) -> schemas.Msg:
""" 增加入职人员信息 """
insert_data = data_in.data_in
insert_data.update({
'worker_id': data_in.worker_id
})
data = await crud.worker_info.insert_worker(db, insert_data)
return schemas.Msg(code=200, msg='ok', data=data)
# 增加渠道
@router.post("/add_owner")
async def add_owner(
request: Request,
data_in: schemas.InOwnerQuery,
db: AsyncIOMotorDatabase = Depends(get_database)
) -> schemas.Msg:
""" 增加渠道信息 """
insert_data = data_in.data_in
insert_data.update({
'owner_id': data_in.owner_id
})
data = await crud.owner_info.insert_owner(db, insert_data)
return schemas.Msg(code=200, msg='ok', data=data)
# 查询入职人员信息
@router.post("/find_worker")
async def find_worker(
request: Request,
data_in: schemas.WorkerQuery,
db: AsyncIOMotorDatabase = Depends(get_database)
) -> schemas.Msg:
""" 查询入职人员信息 """
data = await crud.worker_info.find_worker_some(db, findlist=data_in.find_filed)
if not data:
return schemas.Msg(code=-9, msg='无数据', data=None)
return schemas.Msg(code=200, msg='ok', data=data)
# 查询入职人员信息
@router.post("/find_worker_form")
async def find_worker_form(
request: Request,
data_in: schemas.WorkerQuery,
db: AsyncIOMotorDatabase = Depends(get_database)
) -> schemas.Msg:
""" 查询入职人员信息 """
data = await crud.worker_info.find_worker_some(db, findlist=data_in.find_filed)
if not data:
return schemas.Msg(code=-9, msg='无数据', data=None)
res_msg = {
'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)
}
return schemas.Msg(code=200, msg='ok', data=res_msg)
# 修改入职人员信息
@router.post("/update_worker")
async def update_worker(
request: Request,
data_in: schemas.WorkerQuery,
db: AsyncIOMotorDatabase = Depends(get_database)
) -> schemas.Msg:
""" 修改入职人员信息 """
data = await crud.worker_info.update_worker(db, data_in.worker_query, data_in.data_in)
return schemas.Msg(code=200, msg='ok', data=data)
# 添加统计数据
@router.post("/add_count_info")
async def add_count_info(
request: Request,
data_in: schemas.CountInWorkerQuery,
db: AsyncIOMotorDatabase = Depends(get_database)
) -> schemas.Msg:
""" 增加一条统计数据 """
count_id = data_in.count_id
in_data = await crud.count_in_worker.find_one_count(db, count_id)
# 本月数据已添加
if in_data:
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:
worker_in = chk_data['work_in']
key = str(datetime.strptime(worker_in, '%Y-%m-%d').year)
if key not in insert_data:
insert_data[key] = 1
continue
insert_data[key] += 1
data = await crud.count_in_worker.insert_count_info(db, insert_data)
return schemas.Msg(code=200, msg='ok', data=data)
# 查询统计数据
@router.post("/find_count_info")
async def find_count_info(
request: Request,
db: AsyncIOMotorDatabase = Depends(get_database)
) -> schemas.Msg:
""" 查询所有统计数据 """
data = await crud.count_in_worker.find_count_some(db)
return schemas.Msg(code=200, msg='ok', data=data)