From d499cf4f96a738551e4eb4a805121bb7df522fcf Mon Sep 17 00:00:00 2001 From: 284718418@qq.com <youlinrc321> Date: Wed, 30 Mar 2022 18:15:16 +0800 Subject: [PATCH] 百度简历解析TIC --- src/main/java/cn/timer/api/controller/zpgl/ZpglController.java | 22 ++++++++++++++++------ src/main/java/cn/timer/api/dto/baidu/BasicInfo.java | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ src/main/java/cn/timer/api/dto/baidu/BasicInfos.java | 21 --------------------- src/main/java/cn/timer/api/dto/baidu/EducationInfo.java | 32 ++++++++++++++++++++++++++++++++ src/main/java/cn/timer/api/dto/baidu/EducationInfos.java | 20 -------------------- src/main/java/cn/timer/api/dto/baidu/ElseInfo.java | 28 ++++++++++++++++++++++++++++ src/main/java/cn/timer/api/dto/baidu/ProjectInfo.java | 30 ++++++++++++++++++++++++++++++ src/main/java/cn/timer/api/dto/baidu/ProjectInfos.java | 21 --------------------- src/main/java/cn/timer/api/dto/baidu/ResumeExtract.java | 9 +++++++++ src/main/java/cn/timer/api/dto/baidu/WorkInfo.java | 31 +++++++++++++++++++++++++++++++ src/main/java/cn/timer/api/dto/baidu/WorkInfos.java | 21 --------------------- 11 files changed, 199 insertions(+), 89 deletions(-) create mode 100644 src/main/java/cn/timer/api/dto/baidu/BasicInfo.java delete mode 100644 src/main/java/cn/timer/api/dto/baidu/BasicInfos.java create mode 100644 src/main/java/cn/timer/api/dto/baidu/EducationInfo.java delete mode 100644 src/main/java/cn/timer/api/dto/baidu/EducationInfos.java create mode 100644 src/main/java/cn/timer/api/dto/baidu/ElseInfo.java create mode 100644 src/main/java/cn/timer/api/dto/baidu/ProjectInfo.java delete mode 100644 src/main/java/cn/timer/api/dto/baidu/ProjectInfos.java create mode 100644 src/main/java/cn/timer/api/dto/baidu/WorkInfo.java delete mode 100644 src/main/java/cn/timer/api/dto/baidu/WorkInfos.java diff --git a/src/main/java/cn/timer/api/controller/zpgl/ZpglController.java b/src/main/java/cn/timer/api/controller/zpgl/ZpglController.java index f8d78f1..42652d9 100644 --- a/src/main/java/cn/timer/api/controller/zpgl/ZpglController.java +++ b/src/main/java/cn/timer/api/controller/zpgl/ZpglController.java @@ -23,7 +23,6 @@ import cn.timer.api.dao.qyzx.QyzxEmpLoginMapper; import cn.timer.api.dao.yggl.YgglMainEmpMapper; import cn.timer.api.dao.zpgl.ZpglRcxxMapper; import cn.timer.api.dto.baidu.BaiduTicResumeDto; -import cn.timer.api.dto.baidu.BasicInfos; import cn.timer.api.dto.zpgl.ZpglRcxxDto; import cn.timer.api.dto.zpgl.ZpglRcxxEntryDto; import cn.timer.api.utils.Md5; @@ -57,7 +56,6 @@ import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.client.RestTemplate; import org.springframework.web.multipart.MultipartFile; -import sun.misc.BASE64Encoder; import javax.servlet.http.HttpServletRequest; import javax.transaction.Transactional; @@ -440,15 +438,27 @@ public class ZpglController { public Result<Object> resumeImportCandidate(@CurrentUser UserBean userBean, @RequestParam(required = true) MultipartFile file, HttpServletRequest request) { try { - BaiduTicResumeDto baiduTicResumeDto = BaiduTicResumeDto.builder().filename("邓志鸿.docx").filetype("docx").filedata(Base64.getStrFromPath(file)).build(); + // 获取文件 文档类型,目前支持pdf,doc,docx,wps,txt,jpg,jpeg,png,bmp,tif格式 + String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1); + if(StringUtils.isEmpty(suffix)){ + return ResultUtil.error("导入简历失败,请检查是否为简历文件~"); + } + if("pdf,doc,docx,wps,txt,jpg,jpeg,png,bmp,tif".indexOf(suffix) == -1){ + return ResultUtil.error("导入简历失败,目前支持pdf,doc,docx,wps,txt,jpg,jpeg,png,bmp,tif格式~"); + } + BaiduTicResumeDto baiduTicResumeDto = BaiduTicResumeDto.builder().filename(file.getOriginalFilename()).filetype(suffix).filedata(Base64.getStrFromPath(file)).build(); ResponseEntity<String> resumeString = baiduTicUtil.getResumeByCvParser(baiduTicResumeDto); - log.info("resumeString:{}",resumeString.getBody()); JSONObject json = (JSONObject) JSONObject.parse(resumeString.getBody()); + log.info("招聘-导入候选人简历{}",resumeString.getBody()); if("success".equals(json.get("error_msg"))){ - BasicInfos asicInfos = JSONObject.toJavaObject(JSONObject.parse(json.get("results").toString()), BasicInfos.class); + if("results".equals(json.get("results"))){ + ResumeExtract resumeExtract = JSONObject.toJavaObject(JSONObject.parse(json.get("results").toString()), ResumeExtract.class); + }else { + return ResultUtil.error("导入简历失败,请检查是否为简历文件~"); + } }else { - return ResultUtil.error("操作失败"); + return ResultUtil.error("导入简历失败,请检查是否为简历文件~"); } diff --git a/src/main/java/cn/timer/api/dto/baidu/BasicInfo.java b/src/main/java/cn/timer/api/dto/baidu/BasicInfo.java new file mode 100644 index 0000000..bedf1fc --- /dev/null +++ b/src/main/java/cn/timer/api/dto/baidu/BasicInfo.java @@ -0,0 +1,53 @@ +package cn.timer.api.dto.baidu; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * 基本信息 + * + * @author wuqingjun + * @email 284718418@qq.com + * @date 2022/3/30 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class BasicInfo implements Serializable { + + private String name; // 姓名:中文姓名 + private String gender; // 性别:男/女 + private String age; // 年龄:当前年龄,整数 + private String cur_duration; // 工作年限:当前工作年限,整数,多段工作年限会累加并向下取整 + private String highest_degree; // 学历:最高学历(包括在读),格式统一为博士/硕士/学士 + private String work_begin_year; // 开始工作年限:第一份工作的开始年份,四位数年份,如2013 + private String id_number; // 身份证号:中国居民身份证号码,纯数字 + private String birth_date; // 生日:出生日期,格式化为 年-月,如2000-01,若只有年,则只显示年,如2000 + private String nation; // 民族:中国56个民族, 如 汉族,壮族 + private String location; // 所在地:所在地城市或区域,如 深圳市,深圳市南山区 + private String home_location; // 详细地址:具体家庭居住地,如 深圳市南山区华联花园6栋2-224 + private String cur_company; // 当前公司 + private String cur_job; // 当前职位 + private String school; // 毕业学校:最高学历学校 + private String major; // 专业:最高学历对应的专业 + private String job_intention; // 求职意向 + private String cur_package; // 当前薪水:当前工资或当前工资范围,如10-20万人民币等,以简历为准 + private String desire_package; // 期望薪水:期望工资或期望工资范围,如20k-30k等,以简历为准 + private String industry; // 所属行业:最新工作的所属行业 + private String job_status; // 求职状态:在职/正在找工作(在职)/考虑好的职业机会(在职)/已离职/暂不考虑其他机会/应届生,输出为原文 + private String politic; // 政治面貌:党员/团员/群众,输出为原文 + private String marriage; // 婚姻状况:未婚/已婚,输出为原文 + private String birth_place; // 籍贯:籍贯地区,如 广东汕头,上海,江苏南通。以简历描述为准,输出为原文 + private String desire_loc; // 期望工作地区:期望工作城市或区域,多个地区则以英文逗号分隔,如 北京,上海,广州,深圳,输出为原文 + private String phone_numbers; // 联系方式:国内11位手机号,格式化为纯数字 + private String email_address; // 邮箱:合格邮箱地址 + private String landline; // 固定电话:国内8位座机号 + private String qq; // QQ号:QQ号码 + private String wechat; // 微信号:微信账号 + +} diff --git a/src/main/java/cn/timer/api/dto/baidu/BasicInfos.java b/src/main/java/cn/timer/api/dto/baidu/BasicInfos.java deleted file mode 100644 index dcf883e..0000000 --- a/src/main/java/cn/timer/api/dto/baidu/BasicInfos.java +++ /dev/null @@ -1,21 +0,0 @@ -package cn.timer.api.dto.baidu; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.io.Serializable; - -/** - * @author wuqingjun - * @email 284718418@qq.com - * @date 2022/3/30 - */ -@Data -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class BasicInfos implements Serializable { - -} diff --git a/src/main/java/cn/timer/api/dto/baidu/EducationInfo.java b/src/main/java/cn/timer/api/dto/baidu/EducationInfo.java new file mode 100644 index 0000000..a3f9bcb --- /dev/null +++ b/src/main/java/cn/timer/api/dto/baidu/EducationInfo.java @@ -0,0 +1,32 @@ +package cn.timer.api.dto.baidu; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * 教育信息 + * + * @author wuqingjun + * @email 284718418@qq.com + * @date 2022/3/30 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class EducationInfo implements Serializable { + private String school; // 学校 + private String college; // 学院 + private String major; // 专业 + private String schooling_record; // 学历,输出统一为:博士研究生/硕士研究生/本科/专科/高中/中专/初中 + private String degree; // 学位,输出统一为:博士/硕士/学士 + private String start_time; // 开始年份-月份,若只有年则只输出年。如2019-10或2019 + private String end_time; // 结束年份-月份,若只有年则只输出年。如2019-10或2019 + private String is_in; // 是否仍在校:1表示在,0表示不在 + private String gpa; // Gpa + private String rank; // 排名 +} diff --git a/src/main/java/cn/timer/api/dto/baidu/EducationInfos.java b/src/main/java/cn/timer/api/dto/baidu/EducationInfos.java deleted file mode 100644 index 02c0095..0000000 --- a/src/main/java/cn/timer/api/dto/baidu/EducationInfos.java +++ /dev/null @@ -1,20 +0,0 @@ -package cn.timer.api.dto.baidu; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.io.Serializable; - -/** - * @author wuqingjun - * @email 284718418@qq.com - * @date 2022/3/30 - */ -@Data -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class EducationInfos implements Serializable { -} diff --git a/src/main/java/cn/timer/api/dto/baidu/ElseInfo.java b/src/main/java/cn/timer/api/dto/baidu/ElseInfo.java new file mode 100644 index 0000000..d8ebeb9 --- /dev/null +++ b/src/main/java/cn/timer/api/dto/baidu/ElseInfo.java @@ -0,0 +1,28 @@ +package cn.timer.api.dto.baidu; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * 其他信息 + * + * @author wuqingjun + * @email 284718418@qq.com + * @date 2022/3/30 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ElseInfo implements Serializable { + private String self_evaluation; // 个人评价 + private String skills; // 技能:掌握技能列表,用竖线分隔 + private String honor; // 所获奖项:用竖线分隔 + private String lang; // 外语:掌握外语水平,用竖线分隔 + private String lang_level; // 外语水平,格式为 语言-水平:分数,如 英语-CET4:502,英语-雅思:6.5,用竖线分隔 + private String certificate; // 获得证书,用竖线分隔 +} diff --git a/src/main/java/cn/timer/api/dto/baidu/ProjectInfo.java b/src/main/java/cn/timer/api/dto/baidu/ProjectInfo.java new file mode 100644 index 0000000..a2e643d --- /dev/null +++ b/src/main/java/cn/timer/api/dto/baidu/ProjectInfo.java @@ -0,0 +1,30 @@ +package cn.timer.api.dto.baidu; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * 项目信息 + * + * @author wuqingjun + * @email 284718418@qq.com + * @date 2022/3/30 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class ProjectInfo implements Serializable { + private String project_name; // 项目名称 + private String job; // 项目角色:职位名称/职位名 + private String describe; // 工作描述:项目详情介绍 + private String duty; // 个人在该项目负责的具体工作详情 + private String location; // 项目地点城市或区域 + private String start_time; // 开始年份-月份,若只有年则只输出年。如2019-10或2019 + private String end_time; // 结束年份-月份,若只有年则只输出年。如2019-10或2019 + private String is_in; // 是否仍在:1表示在,0表示不在 +} diff --git a/src/main/java/cn/timer/api/dto/baidu/ProjectInfos.java b/src/main/java/cn/timer/api/dto/baidu/ProjectInfos.java deleted file mode 100644 index cac6875..0000000 --- a/src/main/java/cn/timer/api/dto/baidu/ProjectInfos.java +++ /dev/null @@ -1,21 +0,0 @@ -package cn.timer.api.dto.baidu; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.io.Serializable; - -/** - * @author wuqingjun - * @email 284718418@qq.com - * @date 2022/3/30 - */ -@Data -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ProjectInfos implements Serializable { - -} diff --git a/src/main/java/cn/timer/api/dto/baidu/ResumeExtract.java b/src/main/java/cn/timer/api/dto/baidu/ResumeExtract.java index 4c0a9c1..ad015b6 100644 --- a/src/main/java/cn/timer/api/dto/baidu/ResumeExtract.java +++ b/src/main/java/cn/timer/api/dto/baidu/ResumeExtract.java @@ -6,8 +6,11 @@ import lombok.Data; import lombok.NoArgsConstructor; import java.io.Serializable; +import java.util.List; /** + * 简历摘录 + * * @author wuqingjun * @email 284718418@qq.com * @date 2022/3/30 @@ -18,4 +21,10 @@ import java.io.Serializable; @AllArgsConstructor public class ResumeExtract implements Serializable { + private BasicInfo basic_infos; + private List<EducationInfo> education_infos; + private ElseInfo else_infos; + private List<ProjectInfo> project_infos; + private List<WorkInfo> work_infos; + } diff --git a/src/main/java/cn/timer/api/dto/baidu/WorkInfo.java b/src/main/java/cn/timer/api/dto/baidu/WorkInfo.java new file mode 100644 index 0000000..79189bd --- /dev/null +++ b/src/main/java/cn/timer/api/dto/baidu/WorkInfo.java @@ -0,0 +1,31 @@ +package cn.timer.api.dto.baidu; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.io.Serializable; + +/** + * 工作信息 + * + * @author wuqingjun + * @email 284718418@qq.com + * @date 2022/3/30 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class WorkInfo implements Serializable { + private String company; // 公司名称 + private String department; // 部门名称/所在部门 + private String location; // 工作城市/工作地点 + private String job; // 职位名称 + private String package; // 该岗位工资水平,如,3000-5000元/月,输出为原文 + private String start_time; // 开始年份-月份,若只有年则只输出年。如2019-10或2019 + private String end_time; // 结束年份-月份,若只有年则只输出年。如2019-10或2019 + private String is_in; // 是否仍在:1表示在,0表示不在 + private String describe; // 工作内容 +} diff --git a/src/main/java/cn/timer/api/dto/baidu/WorkInfos.java b/src/main/java/cn/timer/api/dto/baidu/WorkInfos.java deleted file mode 100644 index 228f7ef..0000000 --- a/src/main/java/cn/timer/api/dto/baidu/WorkInfos.java +++ /dev/null @@ -1,21 +0,0 @@ -package cn.timer.api.dto.baidu; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.io.Serializable; - -/** - * @author wuqingjun - * @email 284718418@qq.com - * @date 2022/3/30 - */ -@Data -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class WorkInfos implements Serializable { - -} -- libgit2 0.26.0