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 = { '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)