Commit 0e213661 by 284718418@qq.com

添加项目信息表

parent 96b9e70e
......@@ -66,9 +66,9 @@ public class ZpglRcxxExperience extends Model<ZpglRcxxExperience> {
@ApiModelProperty(value = "职位名称")
private String jobName;
/**
* 单位名称
* 所在部门
*/
@ApiModelProperty(value = "单位名称")
@ApiModelProperty(value = "所在部门")
private String department;
/**
* 薪水(单位元/月)
......
......@@ -68,7 +68,7 @@ public class ZpglRcxxProject extends Model<ZpglRcxxProject> {
* 工作描述:项目详情介绍
*/
@ApiModelProperty(value = "工作描述:项目详情介绍")
private String describe;
private String projectDescribe;
/**
* 个人在该项目负责的具体工作详情
*/
......
......@@ -61,9 +61,9 @@ public class ZpglRcxxStudy extends Model<ZpglRcxxStudy> {
@ApiModelProperty(value = "学校名称")
private String schoolName;
/**
* 学历0:未知 1:小学以下 2:小学 3:初中 4:高中 5:中专 6:大专 7:本科 8:硕士 9:博士
* 学历 1:小学;2:初中;3:高中;4:中专;5:大专;6:本科;7:研究生;8:硕士;9:博士
*/
@ApiModelProperty(value = "学历0:未知 1:小学以下 2:小学 3:初中 4:高中 5:中专 6:大专 7:本科 8:硕士 9:博士 ")
@ApiModelProperty(value = "学历 1:小学;2:初中;3:高中;4:中专;5:大专;6:本科;7:研究生;8:硕士;9:博士")
private Integer education;
/**
* 专业名称
......
......@@ -49,6 +49,11 @@ public class ZpglWxgzptEmpRcxx extends Model<ZpglWxgzptEmpRcxx> {
@ApiModelProperty(value = "员工档案表ID")
private Integer ygglMainEmpId;
/**
* 手机号
*/
@ApiModelProperty(value = "手机号")
private String mobile;
/**
* 微信openid
*/
@ApiModelProperty(value = "微信openid")
......
......@@ -7,6 +7,7 @@ import cn.timer.api.bean.qyzx.QyzxEmpEntAsso;
import cn.timer.api.bean.qyzx.QyzxEmpLogin;
import cn.timer.api.bean.yggl.YgglMainEmp;
import cn.timer.api.bean.zpgl.ZpglRcxx;
import cn.timer.api.bean.zpgl.ZpglRcxxProject;
import cn.timer.api.bean.zpgl.ZpglZwxx;
import cn.timer.api.config.annotation.CurrentUser;
import cn.timer.api.config.annotation.UserBean;
......@@ -23,6 +24,7 @@ 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.ProjectInfo;
import cn.timer.api.dto.baidu.ResumeExtract;
import cn.timer.api.dto.zpgl.ImportCandidateDto;
import cn.timer.api.dto.zpgl.ZpglRcxxDto;
......@@ -452,8 +454,7 @@ public class ZpglController {
return ResultUtil.error("导入简历失败,目前支持pdf,doc,docx,wps,txt,jpg,jpeg,png,bmp,tif格式~");
}
importCandidateDto.setSuffix(suffix);
boolean flag = zpglService.addResumeImportCandidate(userBean, file, importCandidateDto);
return flag?ResultUtil.success("操作成功"):ResultUtil.error("操作失败");
return zpglService.addResumeImportCandidate(userBean, file, importCandidateDto);
} catch (CustomException e) {
e.printStackTrace();
throw e;
......
......@@ -5,6 +5,7 @@ import cn.timer.api.bean.clazz.SysRegion;
import cn.timer.api.config.annotation.UserBean;
import cn.timer.api.dto.zpgl.ImportCandidateDto;
import cn.timer.api.dto.zpgl.ZpglRcxxDto;
import cn.timer.api.utils.Result;
import org.springframework.web.multipart.MultipartFile;
/**
......@@ -33,7 +34,7 @@ public interface ZpglService {
* @param file
* @return
*/
boolean addResumeImportCandidate(UserBean userBean, MultipartFile file, ImportCandidateDto importCandidateDto);
Result<Object> addResumeImportCandidate(UserBean userBean, MultipartFile file, ImportCandidateDto importCandidateDto);
}
......@@ -2,18 +2,17 @@ package cn.timer.api.controller.zpgl.sevice;
import cn.timer.api.bean.clazz.SysRegion;
import cn.timer.api.bean.yggl.YgglMainEmp;
import cn.timer.api.bean.zpgl.ZpglFail;
import cn.timer.api.bean.zpgl.ZpglMslcLog;
import cn.timer.api.bean.zpgl.ZpglRcxx;
import cn.timer.api.bean.zpgl.*;
import cn.timer.api.config.annotation.UserBean;
import cn.timer.api.config.enuminterface.JxglEnumInterface;
import cn.timer.api.config.exception.CustomException;
import cn.timer.api.controller.kqgl.ClockInTool;
import cn.timer.api.dto.baidu.BaiduTicResumeDto;
import cn.timer.api.dto.baidu.ResumeExtract;
import cn.timer.api.dto.baidu.*;
import cn.timer.api.bean.clazz.NationClass;
import cn.timer.api.dto.zpgl.ImportCandidateDto;
import cn.timer.api.dto.zpgl.ZpglRcxxDto;
import cn.timer.api.utils.Result;
import cn.timer.api.utils.ResultUtil;
import cn.timer.api.utils.ZpglMessageTemplate;
import cn.timer.api.utils.baidu.BaiduTicUtil;
import cn.timer.api.utils.baidu.Base64;
......@@ -30,6 +29,7 @@ import org.springframework.web.multipart.MultipartFile;
import javax.transaction.Transactional;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
/**
* @author wuqingjun
......@@ -156,7 +156,7 @@ public class ZpglServiceImpl implements ZpglService {
}
@Override
public boolean addResumeImportCandidate(UserBean userBean, MultipartFile file, ImportCandidateDto importCandidateDto) {
public Result<Object> addResumeImportCandidate(UserBean userBean, MultipartFile file, ImportCandidateDto importCandidateDto) {
BaiduTicResumeDto baiduTicResumeDto = BaiduTicResumeDto.builder().filename(file.getOriginalFilename()).filetype(importCandidateDto.getSuffix()).filedata(Base64.getStrFromPath(file)).build();
ResponseEntity<String> resumeString = baiduTicUtil.getResumeByCvParser(baiduTicResumeDto);
JSONObject json = (JSONObject) JSONObject.parse(resumeString.getBody());
......@@ -165,23 +165,22 @@ public class ZpglServiceImpl implements ZpglService {
if("success".equals(json.get("error_msg"))){
if(StringUtils.isEmpty(json.get("results"))){
log.info("招聘-导入候选人简历:results is null");
throw new CustomException("导入简历失败,请检查是否为简历文件~");
return ResultUtil.error("导入简历失败,请检查是否为简历文件~");
}
JSONArray array = (JSONArray)json.get("results");
if(StringUtils.isEmpty(array.get(0))){
log.info("招聘-导入候选人简历:results is null");
throw new CustomException("导入简历失败,请检查是否为简历文件~");
return ResultUtil.error("导入简历失败,请检查是否为简历文件~");
}
JSONObject resultsJsonObject = (JSONObject) array.get(0);
resumeExtract = JSONObject.toJavaObject((JSONObject)resultsJsonObject.get("extract"), ResumeExtract.class);
}else {
throw new CustomException("导入简历失败,请检查是否为简历文件~");
return ResultUtil.error("导入简历失败,请检查是否为简历文件~");
}
if(StringUtils.isEmpty(resumeExtract) || StringUtils.isEmpty(resumeExtract.getBasic_infos())){
throw new CustomException("导入简历失败,请检查是否为简历文件~");
return ResultUtil.error("导入简历失败,请检查是否为简历文件~");
}
this.addZpglRcxx(userBean, resumeExtract, importCandidateDto);
return true;
return this.addZpglRcxx(userBean, resumeExtract, importCandidateDto);
}
/**
......@@ -190,15 +189,26 @@ public class ZpglServiceImpl implements ZpglService {
* @param resumeExtract
* @param importCandidateDto
*/
private void addZpglRcxx(UserBean userBean,ResumeExtract resumeExtract, ImportCandidateDto importCandidateDto){
private Result<Object> addZpglRcxx(UserBean userBean,ResumeExtract resumeExtract, ImportCandidateDto importCandidateDto){
ZpglRcxx zpglRcxx = ZpglRcxx.builder().build();
zpglRcxx.setZpglZwxxId(importCandidateDto.getZpglZwxxId());
zpglRcxx.setStatus(importCandidateDto.getStatus());
zpglRcxx.setZpglZpqdId(importCandidateDto.getZpglZpqdId());
zpglRcxx.setOrgCode(userBean.getOrgCode().toString());
Integer highesteducation = null;
// 添加人才信息
if(!StringUtils.isEmpty(resumeExtract.getBasic_infos())){
zpglRcxx.setName(resumeExtract.getBasic_infos().getName());
zpglRcxx.setMobile(resumeExtract.getBasic_infos().getPhone_numbers());
String phone = resumeExtract.getBasic_infos().getPhone_numbers();
if(StringUtils.isEmpty(phone)){
return ResultUtil.error("导入简历失败,手机号码不存在~");
}
// 查询简历是否重复导入
ZpglRcxx zpglRcxxEntiyt= ZpglRcxx.builder().build().selectOne(new QueryWrapper<ZpglRcxx>().lambda().eq(ZpglRcxx::getMobile,phone).eq(ZpglRcxx::getDeleteFlag,0));
if(!StringUtils.isEmpty(zpglRcxxEntiyt)){
return ResultUtil.error("简历已入库,请勿重复导入");
}
zpglRcxx.setMobile(phone);
zpglRcxx.setMail(resumeExtract.getBasic_infos().getEmail_address());
zpglRcxx.setWeixin(resumeExtract.getBasic_infos().getWechat());
zpglRcxx.setIdCard(resumeExtract.getBasic_infos().getId_number());
......@@ -207,18 +217,8 @@ public class ZpglServiceImpl implements ZpglService {
}
//出生日期,格式化为 年-月,如2000-01,若只有年,则只显示年,如2000
if(!StringUtils.isEmpty(resumeExtract.getBasic_infos().getBirth_date())&&resumeExtract.getBasic_infos().getBirth_date().length() > 0){
String datebirth = "";
String[] num = resumeExtract.getBasic_infos().getBirth_date().split("-");
if(num.length == 1){
datebirth = num[0]+"-1-1";
}else if(num.length == 2){
datebirth = num[0]+"-"+num[1]+"-1";
}
if(datebirth.length()>0){
zpglRcxx.setDatebirth(ClockInTool.strToDateLong(datebirth));
}
zpglRcxx.setDatebirth(this.getDate(resumeExtract.getBasic_infos().getBirth_date()));
}
//nation_class_id
if(!StringUtils.isEmpty(resumeExtract.getBasic_infos().getNation())){
NationClass nationClass = NationClass.builder().build().selectOne(new QueryWrapper<NationClass>().lambda().like(NationClass::getName,resumeExtract.getBasic_infos().getNation()));
if(!StringUtils.isEmpty(nationClass)){
......@@ -233,5 +233,113 @@ public class ZpglServiceImpl implements ZpglService {
zpglRcxx.setCompany(resumeExtract.getBasic_infos().getCur_company());
zpglRcxx.insert();
}
if(!StringUtils.isEmpty(zpglRcxx.getId()) ){
// 添加教育经历
if(!StringUtils.isEmpty(resumeExtract.getEducation_infos())){
ZpglRcxxStudy zpglRcxxStudy = ZpglRcxxStudy.builder().zpglRcxxId(zpglRcxx.getId()).build();
List<EducationInfo> list = resumeExtract.getEducation_infos();
for (EducationInfo entity : list ) {
if(!StringUtils.isEmpty(entity.getStart_time()) && entity.getStart_time().length() > 0) {
zpglRcxxStudy.setStartTime(this.getDate(entity.getStart_time()));
}
if(!StringUtils.isEmpty(entity.getEnd_time()) && entity.getEnd_time().length() > 0) {
zpglRcxxStudy.setEndTime(this.getDate(entity.getEnd_time()));
}
zpglRcxxStudy.setSubject(entity.getMajor());
zpglRcxxStudy.setSchoolName(StringUtils.isEmpty(entity.getSchool())?entity.getCollege():entity.getSchool());
zpglRcxxStudy.setEducation(this.getEducation(entity.getSchooling_record()));
highesteducation = zpglRcxxStudy.getEducation();
zpglRcxxStudy.insert();
}
}
// 添加工作经验
if(!StringUtils.isEmpty(resumeExtract.getWork_infos())){
ZpglRcxxExperience zpglRcxxExperience = ZpglRcxxExperience.builder().zpglRcxxId(zpglRcxx.getId()).build();
List<WorkInfo> list = resumeExtract.getWork_infos();
for (WorkInfo entity : list ) {
zpglRcxxExperience.setCompany(entity.getCompany());
zpglRcxxExperience.setJobName(entity.getJob());
zpglRcxxExperience.setDepartment(entity.getDepartment());
zpglRcxxExperience.setWorkContent(entity.getDescribe());
if(!StringUtils.isEmpty(entity.getEnd_time()) && entity.getEnd_time().length() > 0) {
zpglRcxxExperience.setEndTime(this.getDate(entity.getEnd_time()));
}
if(!StringUtils.isEmpty(entity.getStart_time()) && entity.getStart_time().length() > 0) {
zpglRcxxExperience.setStartTime(this.getDate(entity.getStart_time()));
}
zpglRcxxExperience.insert();
}
}
// 添加项目信息
if(!StringUtils.isEmpty(resumeExtract.getProject_infos())){
ZpglRcxxProject zpglRcxxProject = ZpglRcxxProject.builder().zpglRcxxId(zpglRcxx.getId()).build();
List<ProjectInfo> list = resumeExtract.getProject_infos();
for (ProjectInfo entity : list ) {
zpglRcxxProject.setProjectDescribe(entity.getDescribe());
zpglRcxxProject.setDuty(entity.getDuty());
zpglRcxxProject.setJob(entity.getJob());
zpglRcxxProject.setLocation(entity.getLocation());
zpglRcxxProject.setProjectName(entity.getProject_name());
if(!StringUtils.isEmpty(entity.getStart_time()) && entity.getStart_time().length() > 0) {
zpglRcxxProject.setStartTime(this.getDate(entity.getStart_time()));
}
if(!StringUtils.isEmpty(entity.getEnd_time()) && entity.getEnd_time().length() > 0) {
zpglRcxxProject.setEndTime(this.getDate(entity.getEnd_time()));
}
zpglRcxxProject.insert();
}
}
if(!StringUtils.isEmpty(highesteducation)){
ZpglRcxx.builder().id(zpglRcxx.getId()).highesteducation(highesteducation.toString()).build().updateById();
}
}
return ResultUtil.success();
}
/**
* 根据string时间获取date(2019-10或2019)
* @param date
* @return
*/
private Date getDate(String date){
String datebirth = "";
String[] num = date.split("-");
if(num.length == 1){
datebirth = num[0]+"-1-1";
}else if(num.length == 2){
datebirth = num[0]+"-"+num[1]+"-1";
}
return datebirth.length()>0?ClockInTool.strToDateLong(datebirth):null;
}
/**
* 获取学历类型
* @param str
* @return
*/
private Integer getEducation(String str){
Integer education = null;
if(StringUtils.isEmpty(str)){
return education;
}
// 博士研究生/硕士研究生/本科/专科/高中/中专/初中
if(str.indexOf("初中")!=-1){
education = 2;
}else if(str.indexOf("中专")!=-1){
education = 4;
}else if(str.indexOf("高中")!=-1){
education = 3;
}else if(str.indexOf("专科")!=-1){
education = 5;
}else if(str.indexOf("本科")!=-1){
education = 6;
}else if(str.indexOf("硕士研究生")!=-1){
education = 7;
}else if(str.indexOf("博士研究生")!=-1){
education = 8;
}
return education;
}
}
......@@ -55,7 +55,8 @@ public class BasicInfo implements Serializable {
private String marriage; // 婚姻状况:未婚/已婚,输出为原文
private String birth_place; // 籍贯:籍贯地区,如 广东汕头,上海,江苏南通。以简历描述为准,输出为原文
private String desire_loc; // 期望工作地区:期望工作城市或区域,多个地区则以英文逗号分隔,如 北京,上海,广州,深圳,输出为原文
private String phone_numbers; // 联系方式:国内11位手机号,格式化为纯数字
// 联系方式:国内11位手机号,格式化为纯数字
private String phone_numbers;
// 邮箱:合格邮箱地址
private String email_address;
private String landline; // 固定电话:国内8位座机号
......
......@@ -19,13 +19,19 @@ import java.io.Serializable;
@NoArgsConstructor
@AllArgsConstructor
public class WorkInfo implements Serializable {
private String company; // 公司名称
private String department; // 部门名称/所在部门
// 公司名称
private String company;
// 部门名称/所在部门
private String department;
private String location; // 工作城市/工作地点
private String job; // 职位名称
// 职位名称
private String job;
//private String package; // 该岗位工资水平,如,3000-5000元/月,输出为原文
private String start_time; // 开始年份-月份,若只有年则只输出年。如2019-10或2019
private String end_time; // 结束年份-月份,若只有年则只输出年。如2019-10或2019
// 开始年份-月份,若只有年则只输出年。如2019-10或2019
private String start_time;
// 结束年份-月份,若只有年则只输出年。如2019-10或2019
private String end_time;
private String is_in; // 是否仍在:1表示在,0表示不在
private String describe; // 工作内容
// 工作内容
private String describe;
}
......@@ -7,15 +7,15 @@
<resultMap type="cn.timer.api.bean.zpgl.ZpglRcxxProject" id="zpglRcxxProjectMap">
<result property="id" column="id"/>
<result property="zpglRcxxId" column="zpgl_rcxx_id"/>
<result property="startTime" column="start_time"/>
<result property="endTime" column="end_time"/>
<result property="projectName" column="project_name"/>
<result property="job" column="job"/>
<result property="describe" column="describe"/>
<result property="projectDescribe" column="project_describe"/>
<result property="duty" column="duty"/>
<result property="createTime" column="create_time"/>
<result property="location" column="location"/>
<result property="startTime" column="start_time"/>
<result property="endTime" column="end_time"/>
<result property="deleteFlag" column="delete_flag"/>
<result property="createTime" column="create_time"/>
</resultMap>
</mapper>
\ No newline at end of file
......@@ -8,6 +8,7 @@
<result property="id" column="id"/>
<result property="zpglRcxxId" column="zpgl_rcxx_id"/>
<result property="ygglMainEmpId" column="yggl_main_emp_id"/>
<result property="mobile" column="mobile"/>
<result property="openid" column="openid"/>
<result property="unionid" column="unionid"/>
<result property="orgCode" column="org_code"/>
......
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