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