Commit d499cf4f by 284718418@qq.com

百度简历解析TIC

parent 67d7798f
...@@ -23,7 +23,6 @@ import cn.timer.api.dao.qyzx.QyzxEmpLoginMapper; ...@@ -23,7 +23,6 @@ import cn.timer.api.dao.qyzx.QyzxEmpLoginMapper;
import cn.timer.api.dao.yggl.YgglMainEmpMapper; import cn.timer.api.dao.yggl.YgglMainEmpMapper;
import cn.timer.api.dao.zpgl.ZpglRcxxMapper; import cn.timer.api.dao.zpgl.ZpglRcxxMapper;
import cn.timer.api.dto.baidu.BaiduTicResumeDto; 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.ZpglRcxxDto;
import cn.timer.api.dto.zpgl.ZpglRcxxEntryDto; import cn.timer.api.dto.zpgl.ZpglRcxxEntryDto;
import cn.timer.api.utils.Md5; import cn.timer.api.utils.Md5;
...@@ -57,7 +56,6 @@ import org.springframework.validation.annotation.Validated; ...@@ -57,7 +56,6 @@ import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import org.springframework.web.client.RestTemplate; import org.springframework.web.client.RestTemplate;
import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartFile;
import sun.misc.BASE64Encoder;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.transaction.Transactional; import javax.transaction.Transactional;
...@@ -440,15 +438,27 @@ public class ZpglController { ...@@ -440,15 +438,27 @@ public class ZpglController {
public Result<Object> resumeImportCandidate(@CurrentUser UserBean userBean, @RequestParam(required = true) MultipartFile file, public Result<Object> resumeImportCandidate(@CurrentUser UserBean userBean, @RequestParam(required = true) MultipartFile file,
HttpServletRequest request) { HttpServletRequest request) {
try { 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); ResponseEntity<String> resumeString = baiduTicUtil.getResumeByCvParser(baiduTicResumeDto);
log.info("resumeString:{}",resumeString.getBody());
JSONObject json = (JSONObject) JSONObject.parse(resumeString.getBody()); JSONObject json = (JSONObject) JSONObject.parse(resumeString.getBody());
log.info("招聘-导入候选人简历{}",resumeString.getBody());
if("success".equals(json.get("error_msg"))){ 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 { }else {
return ResultUtil.error("操作失败"); return ResultUtil.error("导入简历失败,请检查是否为简历文件~");
} }
......
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; // 微信号:微信账号
}
...@@ -8,6 +8,8 @@ import lombok.NoArgsConstructor; ...@@ -8,6 +8,8 @@ import lombok.NoArgsConstructor;
import java.io.Serializable; import java.io.Serializable;
/** /**
* 教育信息
*
* @author wuqingjun * @author wuqingjun
* @email 284718418@qq.com * @email 284718418@qq.com
* @date 2022/3/30 * @date 2022/3/30
...@@ -16,6 +18,15 @@ import java.io.Serializable; ...@@ -16,6 +18,15 @@ import java.io.Serializable;
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
public class WorkInfos implements Serializable { 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; // 排名
} }
...@@ -8,6 +8,8 @@ import lombok.NoArgsConstructor; ...@@ -8,6 +8,8 @@ import lombok.NoArgsConstructor;
import java.io.Serializable; import java.io.Serializable;
/** /**
* 其他信息
*
* @author wuqingjun * @author wuqingjun
* @email 284718418@qq.com * @email 284718418@qq.com
* @date 2022/3/30 * @date 2022/3/30
...@@ -16,6 +18,11 @@ import java.io.Serializable; ...@@ -16,6 +18,11 @@ import java.io.Serializable;
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
public class BasicInfos implements Serializable { 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; // 获得证书,用竖线分隔
} }
...@@ -8,6 +8,8 @@ import lombok.NoArgsConstructor; ...@@ -8,6 +8,8 @@ import lombok.NoArgsConstructor;
import java.io.Serializable; import java.io.Serializable;
/** /**
* 项目信息
*
* @author wuqingjun * @author wuqingjun
* @email 284718418@qq.com * @email 284718418@qq.com
* @date 2022/3/30 * @date 2022/3/30
...@@ -16,5 +18,13 @@ import java.io.Serializable; ...@@ -16,5 +18,13 @@ import java.io.Serializable;
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
public class EducationInfos implements Serializable { 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表示不在
} }
...@@ -6,8 +6,11 @@ import lombok.Data; ...@@ -6,8 +6,11 @@ import lombok.Data;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import java.io.Serializable; import java.io.Serializable;
import java.util.List;
/** /**
* 简历摘录
*
* @author wuqingjun * @author wuqingjun
* @email 284718418@qq.com * @email 284718418@qq.com
* @date 2022/3/30 * @date 2022/3/30
...@@ -18,4 +21,10 @@ import java.io.Serializable; ...@@ -18,4 +21,10 @@ import java.io.Serializable;
@AllArgsConstructor @AllArgsConstructor
public class ResumeExtract implements Serializable { 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;
} }
...@@ -8,6 +8,8 @@ import lombok.NoArgsConstructor; ...@@ -8,6 +8,8 @@ import lombok.NoArgsConstructor;
import java.io.Serializable; import java.io.Serializable;
/** /**
* 工作信息
*
* @author wuqingjun * @author wuqingjun
* @email 284718418@qq.com * @email 284718418@qq.com
* @date 2022/3/30 * @date 2022/3/30
...@@ -16,6 +18,14 @@ import java.io.Serializable; ...@@ -16,6 +18,14 @@ import java.io.Serializable;
@Builder @Builder
@NoArgsConstructor @NoArgsConstructor
@AllArgsConstructor @AllArgsConstructor
public class ProjectInfos implements Serializable { 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; // 工作内容
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment