华为云和解析

This commit is contained in:
Àî×ÚÕñ 2022-08-10 11:46:40 +08:00
parent 3d4add27e4
commit 73d76d56c6
3 changed files with 162 additions and 50 deletions

View File

@ -2,6 +2,7 @@ import operator
import os import os
import re import re
from typing import Any from typing import Any
from obs import ObsClient
import pandas as pd import pandas as pd
import pymongo import pymongo
@ -16,6 +17,7 @@ from core.config import settings
from core.security import get_password_hash from core.security import get_password_hash
from utils.dingding import * from utils.dingding import *
from utils.jianli import get_resume from utils.jianli import get_resume
from utils.func import get_uid
import crud, schemas import crud, schemas
from datetime import datetime from datetime import datetime
from core.configuration import * from core.configuration import *
@ -27,6 +29,13 @@ from utils import get_time, qujian_time, Download_xlsx, send_str_mail
router = APIRouter() router = APIRouter()
# 创建ObsClient实例
obsClient = ObsClient(
access_key_id='UPEO770G619UPU8TU61Y',
secret_access_key='M7zVRT1pjRtGSZ2TOZwKBRoVJLeWAOf633kHaNcu',
server='obs.cn-east-2.myhuaweicloud.com'
)
# 面试查询 # 面试查询
@router.post("/interview_find") @router.post("/interview_find")
@ -164,25 +173,118 @@ async def interview_insert(
return schemas.Msg(code=200, msg='ok', data=data) return schemas.Msg(code=200, msg='ok', data=data)
# 导入面试数据 # 转存简历到华为云
@router.post("/interview_file_insert") @router.post("/file_to_hw")
async def interview_file_insert( async def file_to_hw(
request: Request, request: Request,
file: UploadFile = File(...), file: UploadFile = File(...),
db: CKDrive = Depends(get_ck_db)
) -> schemas.Msg: ) -> schemas.Msg:
""" interview面试数据导入 """ """ 简历上传到华为云 """
path_data = os.getcwd() + '/jianli/' # 当前文件所在的目录 path_data = os.getcwd() + '/jianli' # 当前文件所在的目录
if not os.path.exists(path_data): if not os.path.exists(path_data):
os.makedirs(path_data) os.makedirs(path_data)
contents = await file.read() contents = await file.read()
filename = file.filename filename = file.filename
try: try:
with open(path_data + filename, "wb") as f: with open(path_data + '/' + filename, "wb") as f:
# 将获取的file文件内容写入到新文件中 # 将获取的file文件内容写入到新文件中
f.write(contents) f.write(contents)
f.close() f.close()
except: except:
return schemas.Msg(code=400, msg='上传文件有误', data=None) return schemas.Msg(code=400, msg='上传文件有误', data=None)
try:
res = obsClient.putFile('legu-cdn-source', 'hrms/' + filename, path_data + '/' + filename)
if res.status < 300:
# 地址
url = res.body.objectUrl
# 简历初始文档
data_mode = {
"interview_name": "",
"interview_type": 1,
"interview_sign": 0,
"hope_money": "",
"feedback": 0,
"interview_round": 0,
"event_time": datetime.now(),
"name": "",
"phone": "",
"job_name": "",
"hr_name": "",
"work_exp": 0,
"interview_stage": 1,
"owner_name": 2,
"education": 1,
"work_undergo": [],
"project_undergo": [],
"work_list": [],
"school": "",
"at_school": "",
"specialty": "",
"specialty_do": [],
"mmended_state": 0,
"mail": "",
"account": "",
"id_card": "",
"gender": "",
"age": 0,
"gam": "",
"interview_state": 1,
"counts": 1,
"nation": "",
"review": [],
"upgrade": [],
"come_time": "",
"now_money": "",
"men_state": 1,
"teacher_state": 1,
"teacher_back": 1,
"offer_state": 1,
"offer_exam_state": 1,
"notice_state": 1,
"pass_why": 0,
"pass_text": [],
"file_url": url,
}
uid = get_uid()
data_mode['uid'] = uid
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," \
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, file_url) values"
# 存数据
await db.execute_dict(sql, [data_mode])
resData = {'file_url': url, 'filename': 'hrms/' + filename, 'uid': uid}
return schemas.Msg(code=0, msg='ok', data=resData)
else:
print('errorCode:', res.errorCode)
print('errorMessage:', res.errorMessage)
return schemas.Msg(code=400, msg='上传华为云失败', data=None)
except:
import traceback
print(traceback.format_exc())
return schemas.Msg(code=400, msg='上传华为云失败', data=None)
# 导入面试数据
@router.post("/interview_file_insert")
async def interview_file_insert(
request: Request,
filenames: str,
) -> schemas.Msg:
""" interview面试数据导入 """
path_data = os.getcwd() + '/jianli' # 当前文件所在的目录
if not os.path.exists(path_data):
os.makedirs(path_data)
filename = filenames.split('/')[-1]
try:
res = obsClient.getObject('legu-cdn-source', filenames, path_data + '/' + filename)
if res.status < 300:
data = get_resume(filename, path_data) data = get_resume(filename, path_data)
education = data['education'] education = data['education']
# 学历int转化 # 学历int转化
@ -217,6 +319,8 @@ async def interview_file_insert(
data['work_exp'] = float(true_work_exp.group()) data['work_exp'] = float(true_work_exp.group())
print(data) print(data)
return schemas.Msg(code=200, msg='ok', data=data) return schemas.Msg(code=200, msg='ok', data=data)
except:
return schemas.Msg(code=400, msg='解析失败', data=None)
@router.post("/add_job") @router.post("/add_job")
@ -1059,6 +1163,7 @@ async def add_policy(
await crud.api_module.update_one_module(db, res) await crud.api_module.update_one_module(db, res)
return schemas.Msg(code=0, msg='修改成功', data='') return schemas.Msg(code=0, msg='修改成功', data='')
@router.get("/api_module") @router.get("/api_module")
async def domain_list( async def domain_list(
request: Request, request: Request,
@ -1069,10 +1174,10 @@ async def domain_list(
角色管理创建角色时显示的各个模块 角色管理创建角色时显示的各个模块
""" """
res = await crud.api_module.get_api_module(db) res = await crud.api_module.get_api_module(db)
api_module=[] api_module = []
for i in res: for i in res:
if i['path_name'] !='root': if i['path_name'] != 'root':
data=[] data = []
data.append(i['auth_id']) data.append(i['auth_id'])
data.append(i['path_name']) data.append(i['path_name'])
api_module.append(data) api_module.append(data)

View File

@ -68,7 +68,7 @@ class InterviewDo:
def insert_interview_sql(self): def insert_interview_sql(self):
# 简历初始文档 # 简历初始文档
data_mode = { data_mode = {
"interview_name": "吴操", "interview_name": "",
"interview_type": 1, "interview_type": 1,
"interview_sign": 0, "interview_sign": 0,
"hope_money": "", "hope_money": "",
@ -78,7 +78,7 @@ class InterviewDo:
"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,
@ -112,6 +112,7 @@ class InterviewDo:
"notice_state": 1, "notice_state": 1,
"pass_why": 0, "pass_why": 0,
"pass_text": [], "pass_text": [],
"file_url": '',
} }
insert_data = [] insert_data = []
@ -126,7 +127,7 @@ class InterviewDo:
f" education, work_undergo, project_undergo, work_list, school, at_school, specialty, specialty_do, " \ 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"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" review, upgrade, now_money, men_state, teacher_state, teacher_back, offer_state, offer_exam_state," \
f" notice_state, pass_why, pass_text) values" f" notice_state, pass_why, pass_text, file_url) values"
now_time = datetime.datetime.now() now_time = datetime.datetime.now()
for data in insert_data: for data in insert_data:
s1 = data['event_time'] s1 = data['event_time']

View File

@ -20,7 +20,7 @@ schema_dict = {'姓名': 'name', '所在地': 'account', '户口所在地': 'acc
# 简历初始文档 # 简历初始文档
data_mode = { data_mode = {
"interview_name": "吴操", "interview_name": "",
"interview_type": 1, "interview_type": 1,
"interview_sign": 0, "interview_sign": 0,
"hope_money": "", "hope_money": "",
@ -30,7 +30,7 @@ data_mode = {
"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,
@ -64,6 +64,7 @@ data_mode = {
"notice_state": 1, "notice_state": 1,
"pass_why": 0, "pass_why": 0,
"pass_text": [], "pass_text": [],
"file_url": '',
} }
@ -140,8 +141,10 @@ def pdf_docx(url, filename):
docx_name = url + f"/{file_name}.docx" docx_name = url + f"/{file_name}.docx"
# 加载pdf文档 # 加载pdf文档
cv = Converter(pdf_name) cv = Converter(pdf_name)
cv.convert(docx_name, start=0, end=12) cv.convert(docx_name, start=0, end=None)
cv.close() cv.close()
# comand = f'$ pdf2docx convert {pdf_name} {docx_name}'
# os.system(comand)
def getText_pdf(filename): def getText_pdf(filename):
@ -477,4 +480,7 @@ def get_resume(file, path_data):
if __name__ == '__main__': if __name__ == '__main__':
get_resume(file, path_data) path_data = "D:\wokerplay\面试简历1"
for _, _, files in os.walk(path_data):
for file in files:
print(get_resume(file, path_data))