prs_server/models/interview_zsgc.py
2022-07-12 16:55:54 +08:00

145 lines
5.1 KiB
Python

import re
from typing import Tuple
import datetime
import arrow
import sqlalchemy as sa
import json
from fastapi import Depends
import pandas as pd
import numpy as np
from utils.func import get_uid
from sqlalchemy import func, or_, and_, not_
from copy import deepcopy
import crud
import schemas
from dateutil import parser
from core.config import settings
from db import get_database
from db.redisdb import get_redis_pool, RedisDrive
from models.user_label import UserClusterDef
# 面试数据ck增删改查
class InterviewDo:
def __init__(self, query_in: schemas.InterviewQuery):
self.query_in = query_in
self.find_column = set()
self.data_in = {}
self.where = {}
async def init(self, *args, **kwargs):
self.find_column = self.query_in.find_column
self.data_in = self.query_in.data_in
self.where = self.query_in.interview_query
def insert_interview_sql(self):
insert_data = []
res_data = []
if isinstance(self.data_in, dict):
insert_data = [self.data_in]
if isinstance(self.data_in, list):
insert_data = self.data_in
sql = f"insert into HR.resumes(interview_name, interview_type, interview_sign, feedback, interview_round, star_time, end_time, event_time, uid, name, phone, job_name, hr_name, work_exp, interview_stage, owner_name, education, work_undergo, project_undergo, work_list, school, at_school, specialty, specialty_do, mmended_state, mail, account, id_card, gender, age, gam, interview_state, graduate_time, counts, nation, come_time, review, upgrade) values"
now_time = datetime.datetime.now()
for data in insert_data:
s1 = data['star_time']
s2 = data['end_time']
s3 = data['event_time']
s4 = data['graduate_time']
if not s1:
data['star_time'] = None
else:
data['star_time'] = parser.parse(s1)
if not s2:
data['end_time'] = None
else:
data['end_time'] = parser.parse(s2)
if not s3:
data['event_time'] = now_time
else:
data['event_time'] = parser.parse(s3)
if not s4:
data['graduate_time'] = None
else:
data['graduate_time'] = parser.parse(s4)
data_true = deepcopy(data)
data_true['uid'] = get_uid()
education = data_true['education']
# 学历int转化
education_int = {
'大专': 1,
'本科': 2,
'研究生': 3,
'博士': 4,
'硕士': 5,
}
if education and isinstance(education, str):
data_true['education'] = education_int.get(education, 1)
age = data_true['age']
# 年龄int转化
if age and isinstance(age, str):
true_age = re.search(r"\d+\.?\d*", age)
if len(true_age.group()) > 2:
data_true['age'] = 20
else:
data_true['age'] = int(true_age.group())
work_exp = data_true['work_exp']
# 工作经验float转化
if work_exp and isinstance(work_exp, str):
true_work_exp = re.search(r"\d+\.?\d*", work_exp)
if len(true_work_exp.group()) > 3:
data_true['work_exp'] = 1.0
else:
data_true['work_exp'] = float(true_work_exp.group())
res_data.append(data_true)
print(sql)
return {'sql': sql,
'insert_data': res_data
}
def update_interview_sql(self):
updateStr = ''
whereStr = ''
for key, value in self.data_in.items():
if isinstance(value, str):
updateStr += str(key) + ' = ' + "'" + value + "'" + ' '
continue
updateStr += str(key) + ' = ' + str(value) + ' '
for key, value in self.where.items():
if isinstance(value, str):
whereStr += str(key) + ' = ' + "'" + value + "'" + ' '
continue
whereStr += str(key) + ' = ' + str(value) + ' '
updateStr.strip()
whereStr.strip()
sql = f"alter table HR.resumes update {updateStr} where {whereStr}"
print(sql)
return {'sql': sql,
}
def find_interview_sql(self):
whereStr = ''
findStr = ''
for fstr in self.find_column:
findStr += fstr + ', '
for key, value in self.where.items():
if isinstance(value, str):
whereStr += str(key) + ' = ' + "'" + value + "'" + ' '
continue
whereStr += str(key) + ' = ' + str(value) + ' '
whereStr = whereStr.strip()
findStr = findStr.strip().strip(',')
# sql = f"select {findStr} from HR.resumes where {whereStr}"
sql = f"select * from HR.resumes where {whereStr}"
print(sql)
return {'sql': sql,
}
if __name__ == '__main__':
find = re.search(r"\d+\.?\d*", "18岁")
print(len(find.group()))