简历兼容1

This commit is contained in:
Àî×ÚÕñ 2022-09-27 18:22:31 +08:00
parent 2dbee1e6e2
commit 05bb7e1102

View File

@ -461,252 +461,252 @@ async def file_to_hw(
except: except:
return schemas.Msg(code=400, msg='上传文件有误', data=None) return schemas.Msg(code=400, msg='上传文件有误', data=None)
# try: try:
fn = path_data + '/' + filename fn = path_data + '/' + filename
if not fn.endswith('pdf'): # pdf正常上传到华为云 if not fn.endswith('pdf'): # pdf正常上传到华为云
# res = obsClient.putFile('legu-cdn-source', 'hrms/' + filename, path_data + '/' + filename) # res = obsClient.putFile('legu-cdn-source', 'hrms/' + filename, path_data + '/' + filename)
# doc/docx则转化为pdf上传到华为云 # doc/docx则转化为pdf上传到华为云
fn, fil = doc2pdf(fn, path_data, filename) fn, fil = doc2pdf(fn, path_data, filename)
filename = fil filename = fil
# 简历初始文档 # 简历初始文档
data_mode = { data_mode = {
"interview_name": "", "interview_name": "",
"interview_type": 1, "interview_type": 1,
"interview_sign": 0, "interview_sign": 0,
"hope_money": "", "hope_money": "",
"feedback": 0, "feedback": 0,
"interview_round": 0, "interview_round": 0,
"event_time": datetime.now(), "event_time": datetime.now(),
"name": "", "name": "",
"phone": "", "phone": "",
"job_name": "", "job_name": "",
"hr_name": "", "hr_name": "",
"work_exp": 0, "work_exp": 0,
"interview_stage": 1, "interview_stage": 1,
"owner_name": 2, "owner_name": 2,
"education": 1, "education": 1,
"work_undergo": [], "work_undergo": [],
"project_undergo": [], "project_undergo": [],
"work_list": [], "work_list": [],
"school": "", "school": "",
"at_school": "", "at_school": "",
"specialty": "", "specialty": "",
"specialty_do": [], "specialty_do": [],
"mmended_state": 0, "mmended_state": 0,
"mail": "", "mail": "",
"account": "", "account": "",
"id_card": "", "id_card": "",
"gender": "", "gender": "",
"age": 0, "age": 0,
"gam": "", "gam": "",
"interview_state": 1, "interview_state": 1,
"counts": 1, "counts": 1,
"nation": "", "nation": "",
"review": "", "review": "",
"upgrade": [], "upgrade": [],
"come_time": "", "come_time": "",
"now_money": "", "now_money": "",
"men_state": 1, "men_state": 1,
"teacher_state": 1, "teacher_state": 1,
"teacher_back": 1, "teacher_back": 1,
"offer_state": 1, "offer_state": 1,
"offer_exam_state": 1, "offer_exam_state": 1,
"notice_state": 1, "notice_state": 1,
"pass_why": 0, "pass_why": 0,
"pass_text": "", "pass_text": "",
"now_address": "", "now_address": "",
"language": [], "language": [],
"remembrance": [], "remembrance": [],
"file_url": '', "file_url": '',
"hr_manner": 2, "hr_manner": 2,
} }
uid = get_uid() uid = get_uid()
data_mode['uid'] = uid data_mode['uid'] = uid
# 存数据 # 存数据
chk_txt = getText_pdf(path_data + '/' + filename) chk_txt = getText_pdf(path_data + '/' + filename)
data = fmt_txt(chk_txt) data = fmt_txt(chk_txt)
education = data['education'] education = data['education']
# 学历int转化 # 学历int转化
education_int = { education_int = {
'大专': 1, '大专': 1,
'本科': 2, '本科': 2,
'研究生': 3, '研究生': 3,
'博士': 4, '博士': 4,
'硕士': 5, '硕士': 5,
} }
if education and isinstance(education, str): if education and isinstance(education, str):
data['education'] = education_int.get(education, 1) data['education'] = education_int.get(education, 1)
age = data['age'] age = data['age']
if not age: if not age:
data['age'] = 20
# 年龄int转化
if age and isinstance(age, str):
true_age = re.search(r"\d+\.?\d*", age)
if len(true_age.group()) > 2:
data['age'] = 20 data['age'] = 20
else: # 年龄int转化
data['age'] = int(true_age.group()) if age and isinstance(age, str):
work_exp = data['work_exp'] true_age = re.search(r"\d+\.?\d*", age)
if not work_exp: if len(true_age.group()) > 2:
data['work_exp'] = 0 data['age'] = 20
# 工作经验float转化 else:
if work_exp and isinstance(work_exp, str): data['age'] = int(true_age.group())
true_work_exp = re.search(r"\d+\.?\d*", work_exp) work_exp = data['work_exp']
if len(true_work_exp.group()) > 3: if not work_exp:
data['work_exp'] = 0 data['work_exp'] = 0
else: # 工作经验float转化
data['work_exp'] = float(true_work_exp.group()) 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['work_exp'] = 0
else:
data['work_exp'] = float(true_work_exp.group())
data_mode.update(data) data_mode.update(data)
# 转json字符串 # 转json字符串
if 'remembrance_list' in data_mode: if 'remembrance_list' in data_mode:
remembrance = data_mode.pop('remembrance_list') remembrance = data_mode.pop('remembrance_list')
data_mode['remembrance'] = remembrance data_mode['remembrance'] = remembrance
if 'language_list' in data_mode: if 'language_list' in data_mode:
language = data_mode.pop('language_list') language = data_mode.pop('language_list')
data_mode['language'] = language data_mode['language'] = language
# if 'project_undergo' in data_mode: if 'project_undergo' in data_mode:
# if data_mode.get('project_undergo', []): if data_mode.get('project_undergo', []):
# data_mode['project_undergo'] = [json.dumps(i) for i in data_mode['project_undergo']] data_mode['project_undergo'] = [json.dumps(i) for i in data_mode['project_undergo']]
# else: else:
# data_mode['project_undergo'] = [] data_mode['project_undergo'] = []
# if 'work_list' in data_mode: if 'work_list' in data_mode:
# if data_mode.get('work_list', []): if data_mode.get('work_list', []):
# data_mode['work_list'] = [json.dumps(i) for i in data_mode['work_list']] data_mode['work_list'] = [json.dumps(i) for i in data_mode['work_list']]
# else: else:
# data_mode['work_list'] = [] data_mode['work_list'] = []
# if 'language' in data_mode: if 'language' in data_mode:
# if data_mode.get('language', []): if data_mode.get('language', []):
# data_mode['language'] = [json.dumps(i) for i in data_mode['language']] data_mode['language'] = [json.dumps(i) for i in data_mode['language']]
# else: else:
# data_mode['language'] = [] data_mode['language'] = []
# if 'remembrance' in data_mode: if 'remembrance' in data_mode:
# if data_mode.get('remembrance', []): if data_mode.get('remembrance', []):
# data_mode['remembrance'] = [json.dumps(i) for i in data_mode['remembrance']] data_mode['remembrance'] = [json.dumps(i) for i in data_mode['remembrance']]
# else: else:
# data_mode['remembrance'] = [] data_mode['remembrance'] = []
# 字符串转datetime # 字符串转datetime
if data_mode.get('in_time', ''):
chk_in_time = data_mode['in_time'].replace('-', '/').replace('.', '/')
if len(chk_in_time.split('/')) == 2:
data_mode['in_time'] = str(datetime.strptime(chk_in_time, "%Y/%m").date())
if len(chk_in_time.split('/')) == 3:
data_mode['in_time'] = str(datetime.strptime(chk_in_time, "%Y/%m/%d").date())
if data_mode.get('in_time', ''): if data_mode.get('out_time', ''):
chk_in_time = data_mode['in_time'].replace('-', '/').replace('.', '/') chk_out_time = data_mode['out_time'].replace('-', '/').replace('.', '/')
if len(chk_in_time.split('/')) == 2: if len(chk_out_time.split('/')) == 2:
data_mode['in_time'] = str(datetime.strptime(chk_in_time, "%Y/%m").date()) data_mode['out_time'] = str(datetime.strptime(chk_out_time, "%Y/%m").date())
if len(chk_in_time.split('/')) == 3: if len(chk_out_time.split('/')) == 3:
data_mode['in_time'] = str(datetime.strptime(chk_in_time, "%Y/%m/%d").date()) data_mode['out_time'] = str(datetime.strptime(chk_out_time, "%Y/%m/%d").date())
if data_mode.get('out_time', ''): if data_mode.get('birthday', ''):
chk_out_time = data_mode['out_time'].replace('-', '/').replace('.', '/') chk_birthday = data_mode['birthday'].replace('-', '/').replace('.', '/')
if len(chk_out_time.split('/')) == 2: if len(chk_birthday.split('/')) == 2:
data_mode['out_time'] = str(datetime.strptime(chk_out_time, "%Y/%m").date()) data_mode['birthday'] = str(datetime.strptime(chk_birthday, "%Y/%m").date())
if len(chk_out_time.split('/')) == 3: if len(chk_birthday.split('/')) == 3:
data_mode['out_time'] = str(datetime.strptime(chk_out_time, "%Y/%m/%d").date()) data_mode['birthday'] = str(datetime.strptime(chk_birthday, "%Y/%m/%d").date())
if data_mode.get('birthday', ''): if data_mode.get('star_time', ''):
chk_birthday = data_mode['birthday'].replace('-', '/').replace('.', '/') chk_star_time = data_mode['star_time'].replace('-', '/').replace('.', '/')
if len(chk_birthday.split('/')) == 2: if len(chk_star_time.split('/')) == 2:
data_mode['birthday'] = str(datetime.strptime(chk_birthday, "%Y/%m").date()) data_mode['star_time'] = str(datetime.strptime(chk_star_time, "%Y/%m").date())
if len(chk_birthday.split('/')) == 3: if len(chk_star_time.split('/')) == 3:
data_mode['birthday'] = str(datetime.strptime(chk_birthday, "%Y/%m/%d").date()) data_mode['star_time'] = str(datetime.strptime(chk_star_time, "%Y/%m/%d").date())
if data_mode.get('star_time', ''): if data_mode.get('end_time', ''):
chk_star_time = data_mode['star_time'].replace('-', '/').replace('.', '/') chk_end_time = data_mode['end_time'].replace('-', '/').replace('.', '/')
if len(chk_star_time.split('/')) == 2: if len(chk_end_time.split('/')) == 2:
data_mode['star_time'] = str(datetime.strptime(chk_star_time, "%Y/%m").date()) data_mode['end_time'] = str(datetime.strptime(chk_end_time, "%Y/%m").date())
if len(chk_star_time.split('/')) == 3: if len(chk_end_time.split('/')) == 3:
data_mode['star_time'] = str(datetime.strptime(chk_star_time, "%Y/%m/%d").date()) data_mode['end_time'] = str(datetime.strptime(chk_end_time, "%Y/%m/%d").date())
if data_mode.get('end_time', ''): if data_mode.get('graduate_time', ''):
chk_end_time = data_mode['end_time'].replace('-', '/').replace('.', '/') chk_graduate = data_mode['graduate_time'].replace('-', '/').replace('.', '/')
if len(chk_end_time.split('/')) == 2: if len(chk_graduate.split('/')) == 2:
data_mode['end_time'] = str(datetime.strptime(chk_end_time, "%Y/%m").date()) data_mode['graduate_time'] = str(datetime.strptime(chk_graduate, "%Y/%m").date())
if len(chk_end_time.split('/')) == 3: if len(chk_graduate.split('/')) == 3:
data_mode['end_time'] = str(datetime.strptime(chk_end_time, "%Y/%m/%d").date()) data_mode['graduate_time'] = str(datetime.strptime(chk_graduate, "%Y/%m/%d").date())
if data_mode.get('graduate_time', ''): work_list = data['work_list']
chk_graduate = data_mode['graduate_time'].replace('-', '/').replace('.', '/') language = data['language']
if len(chk_graduate.split('/')) == 2: project_undergo = data['project_undergo']
data_mode['graduate_time'] = str(datetime.strptime(chk_graduate, "%Y/%m").date()) remembrance = data['remembrance']
if len(chk_graduate.split('/')) == 3:
data_mode['graduate_time'] = str(datetime.strptime(chk_graduate, "%Y/%m/%d").date())
work_list = data_mode['work_list'] # 简历查重,姓名,手机号,性别name,phone,gender
language = data_mode['language'] find_name = data['name']
project_undergo = data_mode['project_undergo'] find_phone = data['phone']
remembrance = data_mode['remembrance'] find_gender = data['gender']
where = {}
# 简历查重,姓名,手机号,性别name,phone,gender if find_name:
find_name = data_mode['name'] where.update({
find_phone = data_mode['phone'] 'name': find_name
find_gender = data_mode['gender'] })
where = {} if find_phone:
if find_name: where.update({
where.update({ 'phone': find_phone
'name': find_name })
}) if find_gender:
if find_phone: where.update({
where.update({ 'gender': find_gender
'phone': find_phone })
}) whereStr = ''
if find_gender: for key, value in where.items():
where.update({ if isinstance(value, str):
'gender': find_gender if not value.strip():
}) continue
whereStr = '' if whereStr:
for key, value in where.items(): whereStr += 'and ' + str(key) + ' = ' + "'" + value + "'" + ' '
if isinstance(value, str): else:
if not value.strip(): whereStr += str(key) + ' = ' + "'" + value + "'" + ' '
continue continue
if whereStr: if whereStr:
whereStr += 'and ' + str(key) + ' = ' + "'" + value + "'" + ' ' whereStr += 'and ' + str(key) + ' = ' + str(value) + ' '
else: else:
whereStr += str(key) + ' = ' + "'" + value + "'" + ' ' whereStr += str(key) + ' = ' + str(value) + ' '
continue whereStr = whereStr.strip()
if whereStr: sql = f"select uid from HR.resumes where {whereStr}"
whereStr += 'and ' + str(key) + ' = ' + str(value) + ' ' is_in_data = await db.execute(sql)
else: exist = 0
whereStr += str(key) + ' = ' + str(value) + ' ' if is_in_data:
whereStr = whereStr.strip() exist = 1
sql = f"select uid from HR.resumes where {whereStr}" uid = list(is_in_data.values())[0]['uid']
is_in_data = await db.execute(sql) # os.rename(path_data + '/' + filename, path_data + '/' + find_phone + '.pdf')
exist = 0 res = obsClient.putFile('legu-cdn-source', 'hrms/' + uid + '.pdf', fn)
if is_in_data: if res.status < 300:
exist = 1 # 地址
uid = list(is_in_data.values())[0]['uid'] url = res.body.objectUrl
# os.rename(path_data + '/' + filename, path_data + '/' + find_phone + '.pdf') data_mode['file_url'] = url
res = obsClient.putFile('legu-cdn-source', 'hrms/' + uid + '.pdf', fn) data['file_url'] = url
if res.status < 300: res_data = {
# 地址 'data': data,
url = res.body.objectUrl 'file_url': url,
data_mode['file_url'] = url 'uid': uid,
res_data = { 'exist': exist,
'data': data_mode, 'project_undergo': project_undergo,
'file_url': url, 'work_list': work_list,
'uid': uid, 'language_list': language,
'exist': exist, 'remembrance_list': remembrance
'project_undergo': project_undergo, }
'work_list': work_list, if exist:
'language_list': language, return schemas.Msg(code=0, msg='ok', data=res_data)
'remembrance_list': remembrance sql = f"insert into HR.resumes(interview_name, interview_type, interview_sign, hope_money, feedback," \
} f" interview_round, event_time, uid, name, phone, job_name, hr_name, work_exp, interview_stage, owner_name," \
if exist: f" education, work_undergo, project_undergo, work_list, school, at_school, specialty, specialty_do, " \
return schemas.Msg(code=0, msg='ok', data=res_data) f"mmended_state, mail, account, id_card, gender, age, gam, interview_state, counts, nation, come_time," \
sql = f"insert into HR.resumes(interview_name, interview_type, interview_sign, hope_money, feedback," \ f" review, upgrade, now_money, men_state, teacher_state, teacher_back, offer_state, offer_exam_state," \
f" interview_round, event_time, uid, name, phone, job_name, hr_name, work_exp, interview_stage, owner_name," \ f" notice_state, pass_why, pass_text, now_address,language,remembrance, file_url, hr_manner) values"
f" education, work_undergo, project_undergo, work_list, school, at_school, specialty, specialty_do, " \
f"mmended_state, mail, account, id_card, gender, age, gam, interview_state, counts, nation, come_time," \
f" review, upgrade, now_money, men_state, teacher_state, teacher_back, offer_state, offer_exam_state," \
f" notice_state, pass_why, pass_text, now_address,language,remembrance, file_url, hr_manner) values"
await db.execute_dict(sql, [data_mode]) await db.execute_dict(sql, [data_mode])
return schemas.Msg(code=0, msg='ok', data=res_data) return schemas.Msg(code=0, msg='ok', data=res_data)
else: else:
print('errorCode:', res.errorCode) print('errorCode:', res.errorCode)
print('errorMessage:', res.errorMessage) print('errorMessage:', res.errorMessage)
return schemas.Msg(code=400, msg='上传华为云失败', data=None) return schemas.Msg(code=400, msg='上传华为云失败', data=None)
# except: except:
# return schemas.Msg(code=400, msg='上传华为云失败或者解析失败', data=None) return schemas.Msg(code=400, msg='上传华为云失败或者解析失败', data=None)
# 导入面试数据 # 导入面试数据