165 lines
5.1 KiB
Python
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)
|