From c6fd194614287ea1fd0e332f85ea696eaa2e9012 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=80=C3=AE=C3=97=C3=9A=C3=95=C3=B1?= Date: Tue, 12 Jul 2022 11:52:02 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AF=BC=E5=85=A5=E5=80=99=E9=80=89=E4=BA=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/api_v1/endpoints/interview.py | 11 +++--- models/interview_zsgc.py | 2 +- utils/jianli.py | 62 ++++++++++++++++++++++++------- 接口文档/导入候选人接口文档.txt | 49 +++++++++++++++++++++++- 4 files changed, 103 insertions(+), 21 deletions(-) diff --git a/api/api_v1/endpoints/interview.py b/api/api_v1/endpoints/interview.py index b08d991..1385f56 100644 --- a/api/api_v1/endpoints/interview.py +++ b/api/api_v1/endpoints/interview.py @@ -87,8 +87,8 @@ async def interview_insert( file: UploadFile = File(...), db: CKDrive = Depends(get_ck_db), ) -> schemas.Msg: - """ interview面试数据写入 """ - path_data = os.getcwd() + '/jianli' # 当前文件所在的目录 + """ interview面试数据导入 """ + path_data = os.getcwd() + '/jianli/' # 当前文件所在的目录 contents = await file.read() filename = file.filename try: @@ -98,9 +98,8 @@ async def interview_insert( f.close() except: return schemas.Msg(code=400, msg='上传文件有误', data=None) - insert_data = get_resume(filename, path_data) - 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, school, specialty, mmended_state, mail, account, id_card, gender, interview_state, graduate_time, counts) values" - data = await db.execute_dict(sql, insert_data) + data = get_resume(filename, path_data) + print(data) return schemas.Msg(code=200, msg='ok', data=data) @@ -127,4 +126,4 @@ async def event_edit( ) -> schemas.Msg: """新增职位""" await crud.jobs.insert_job(db, data_in) - return schemas.Msg(code=200, msg='ok', data='') \ No newline at end of file + return schemas.Msg(code=200, msg='ok', data='') diff --git a/models/interview_zsgc.py b/models/interview_zsgc.py index 6ee67dd..b2b4f55 100644 --- a/models/interview_zsgc.py +++ b/models/interview_zsgc.py @@ -43,7 +43,7 @@ class InterviewDo: 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, school, specialty, mmended_state, mail, account, id_card, gender, interview_state, graduate_time, counts) values" + 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" for data in insert_data: s1 = data['star_time'] s2 = data['end_time'] diff --git a/utils/jianli.py b/utils/jianli.py index f0d38f5..fac7499 100644 --- a/utils/jianli.py +++ b/utils/jianli.py @@ -9,13 +9,52 @@ from win32com import client as wc from pdf2docx import Converter # 文件路径 -schema = ['姓名', '所在地', '户口所在地', '籍贯', '婚姻状况', '民族', '身高', '电话', 'tel', '应聘职位', '到岗时间', '学历', '毕业学校', '专业', - '期望薪资', '在校时间', '电子邮箱', '工作经验', 'Email', '性别', '年龄' +schema = ['姓名', '所在地', '户口所在地', '籍贯', '婚姻状况', '民族', '电话', 'tel', '应聘职位', '到岗时间', '学历', '毕业学校', '专业', '期望薪资', + '在校时间', '电子邮箱', '工作经验', 'Email', '性别', '年龄', '身份证号', '技能特长' ] -schema_dict = {'姓名': 'name', '所在地': 'location', '户口所在地': 'account', '婚姻状况': 'gam', '民族': 'nation', '身高': 'height', - '电话': 'phone', '应聘职位': 'job', '到岗时间': 'come_time', '学历': 'education', '毕业学校': 'school', '专业': 'career', - '期望薪资': 'money', '在校时间': 'at_school', '电子邮箱': 'mail', '工作经验': 'work_exp', 'Email': 'mails', - '性别': 'gender', '年龄': 'age', '籍贯': 'accounts', 'tel': 'tels'} +schema_dict = {'姓名': 'name', '所在地': 'account', '户口所在地': 'accounts', '婚姻状况': 'gam', '民族': 'nation', + '电话': 'phone', '应聘职位': 'job_name', '到岗时间': 'come_time', '学历': 'education', '毕业学校': 'school', + '专业': 'specialty', '期望薪资': 'hope_money', '在校时间': 'at_school', '电子邮箱': 'mail', '工作经验': 'work_exp', + 'Email': 'mails', '性别': 'gender', '年龄': 'age', '籍贯': 'account', 'tel': 'tels', '身份证号': 'id_card', + '技能特长': 'specialty_do'} + +# 简历初始文档 +data_mode = { + "interview_name": "", + "interview_type": 1, + "interview_sign": 0, + "hope_money": 10000, + "feedback": 0, + "interview_round": 0, + "star_time": "", + "end_time": "", + "event_time": "", + "name": "", + "phone": "", + "job_name": "", + "hr_name": "", + "work_exp": "", + "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": "", + "gam": "", + "interview_state": 1, + "graduate_time": "", + "counts": 1 +} def chkworlkandtime(listdata): @@ -145,7 +184,7 @@ def get_date(schema, dates, schema_dict): :param schema_dict:对应中文的英文 :return: 返回取出概率最大的基本信息数据 """ - date = {} + date = data_mode for i in schema: text = dates[0].get(i, '') # 如果数据中没有搜到对应的键,返回空字符串 @@ -352,20 +391,17 @@ def fmtList(txtlist, dates): # review自我评价, project项目经验,work工作经验,work具体工作的公司和时间,upgrade教育经历,specialty技能特长 dates.update({ 'review': review, - 'project': project, - 'work': work, + 'project_undergo': project, + 'work_undergo': work, 'work_list': work_list, 'upgrade': upgrade, - 'specialty': specialty, + 'specialty_do': specialty, }) return dates def get_resume(file, path_data): - # for root, dirs, files in os.walk(PATH_DATA): - # for file in files: # 一个file就是一份简历 - url = path_data + f"/{file}" if os.path.splitext(file)[1] == '.pdf': pdf_docx(path_data, file) # 转为docx diff --git a/接口文档/导入候选人接口文档.txt b/接口文档/导入候选人接口文档.txt index b38050a..0c4f6fc 100644 --- a/接口文档/导入候选人接口文档.txt +++ b/接口文档/导入候选人接口文档.txt @@ -8,5 +8,52 @@ { "code": 200, "msg": "ok", - "data": 1 # ɹӵ + "data": { + "interview_name": "", + "interview_type": 1, + "interview_sign": 0, + "hope_money": "", + "feedback": 0, + "interview_round": 0, + "star_time": "", + "end_time": "", + "event_time": "", + "name": "ƹɭ", + "phone": "18771072415", + "job_name": "androidʦ", + "hr_name": "", + "work_exp": "6", + "interview_stage": 1, + "owner_name": 2, + "education": "", + "work_undergo": [ + "ְλandroidʦ ˾Ӫƽ̨Ŀͻ˲֣sdkκAPPַSDKְߵȡ ְλandroidʦ AndroidӦõĿҪͻ˿ܴ⣬Լ쵼Ŀ " + ], + "project_undergo": [ + "Ŀ˾(人Ƽ޹˾) Ŀ ȡϷ¼ʵʱҷijɾͣ ¼Ļȡ TCPԶЭ NettyʵʱϢ ͵˾(人Ƽ޹˾) Ŀ ̵sdkӦгϼܳӲϼܣͶʹãַںϹijɾͣ Ŀķַϵƣд߿ϼάµ˾(人Ƽ޹˾) Ŀ Ϸƽ̨ӪAPPϷַӪ״̬ijɾͣ ȫµά˾(人Ƽ޹˾) Ŀ ṩγ̺˵SDKijɾͣ ƿµά˾(人Ƽ޹˾) Ŀ Ӫͺ̹ϷϢԣͳƵȵĹ̨ijɾͣ ͳƷתܶƣʻԣĿ ֻдԼС˵ʱشС˵ ֧ߺĶС˵ֵ֧뱾С˵Ķijɾͣ ܵĴд顢ܡģĿ app֪֪֪£¡ȨѶƽ̨Լţרľ1ʽԶľʵѶݡijɾͣ ܵĴĻƣʹSQLiteݿʵȤ" + ], + "work_list": [], + "school": "ʦѧ", + "at_school": "", + "specialty": "Ϣ", + "specialty_do": [], + "mmended_state": 0, + "mail": "18771072415", + "account": "", + "id_card": "", + "gender": "", + "age": "27", + "gam": "", + "interview_state": 1, + "graduate_time": "", + "counts": 1, + "nation": "", + "come_time": "", + "review": [ + "ۺ ִ | ѹ | ͨЭ | Ӧ | ڹͨܰչͨؼṩרעԵоԼգAndroidշ๤AndroidKillerʹãĽոʹEclipseAndroid StudioIDEAȣܶάAndroid Ŀ,ոģıдά\n" + ], + "upgrade": [ + "" + ] + } } \ No newline at end of file