Commit ea1abbcd by 284718418@qq.com

百度简历解析TIC

parent 9d942a37
......@@ -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("导入简历失败,请检查是否为简历文件~");
}
......
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;
import java.io.Serializable;
/**
* 教育信息
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022/3/30
......@@ -16,6 +18,15 @@ import java.io.Serializable;
@Builder
@NoArgsConstructor
@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;
import java.io.Serializable;
/**
* 其他信息
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022/3/30
......@@ -16,6 +18,11 @@ import java.io.Serializable;
@Builder
@NoArgsConstructor
@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;
import java.io.Serializable;
/**
* 项目信息
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022/3/30
......@@ -16,5 +18,13 @@ import java.io.Serializable;
@Builder
@NoArgsConstructor
@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;
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;
}
......@@ -8,6 +8,8 @@ import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* 工作信息
*
* @author wuqingjun
* @email 284718418@qq.com
* @date 2022/3/30
......@@ -16,6 +18,14 @@ import java.io.Serializable;
@Builder
@NoArgsConstructor
@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