From 04410771e18bd5e4f142da90f58c79e972d56784 Mon Sep 17 00:00:00 2001 From: howec <> Date: Tue, 26 Sep 2023 18:00:28 +0800 Subject: [PATCH] =?UTF-8?q?=E9=99=95=E8=A5=BF=E5=BB=BA=E5=B7=A5---?= =?UTF-8?q?=E6=99=BA=E8=81=94=E6=8B=9B=E8=81=98=E5=AF=B9=E6=8E=A5=EF=BC=9B?= =?UTF-8?q?=E6=A0=A1=E6=8B=9B=EF=BC=8C=E7=A4=BE=E6=8B=9B=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../recruit/entity/RecruitAwardExpObj.java | 106 ++++ .../recruit/entity/RecruitEduExpObj.java | 139 +++++ .../weaver/recruit/entity/RecruitFileObj.java | 49 ++ .../weaver/recruit/entity/RecruitJtgxObj.java | 59 ++ .../entity/RecruitLanguageSkillObj.java | 49 ++ .../recruit/entity/RecruitProjectExpObj.java | 81 +++ .../weaver/recruit/entity/RecruitSxjlObj.java | 82 +++ .../recruit/entity/RecruitTalentObj.java | 381 ++++++++++++ .../com/weaver/recruit/enums/AbilityEnum.java | 40 ++ .../com/weaver/recruit/enums/BooleanEnum.java | 38 ++ .../weaver/recruit/enums/CadreNameEnum.java | 46 ++ .../weaver/recruit/enums/CadreRankEnum.java | 41 ++ .../recruit/enums/CertificateTypeEnum.java | 38 ++ .../com/weaver/recruit/enums/DegreeEnum.java | 43 ++ .../recruit/enums/EducationTypeEnum.java | 44 ++ .../recruit/enums/EnglishLevelEnum.java | 41 ++ .../com/weaver/recruit/enums/HealthEnum.java | 38 ++ .../recruit/enums/MaritalStatusEnum.java | 40 ++ .../recruit/enums/PoliticsStatusEnum.java | 41 ++ .../weaver/recruit/enums/ResumeTypeEnum.java | 38 ++ .../weaver/recruit/enums/WorkTypeEnum.java | 39 ++ .../rest/RecruitCandidateRemoteService.java | 15 + .../rest/RecruitESearchRemoteService.java | 69 +++ .../sxjg/esb/EsbRpcPositionZhilian.java | 576 ++++++++++++++++-- .../sxjg/esb/EsbRpcPositionZhilianSz.java | 537 ++++++++++++++++ .../com/weaver/sxjg/esb/ExcelUtilHowe.java | 104 ++++ .../java/com/weaver/sxjg/util/SxjgUtil.java | 230 ++++++- .../src/main/resources/config/sxjg.properties | 21 +- 28 files changed, 2984 insertions(+), 41 deletions(-) create mode 100644 e10dev/src/main/java/com/weaver/recruit/entity/RecruitAwardExpObj.java create mode 100644 e10dev/src/main/java/com/weaver/recruit/entity/RecruitEduExpObj.java create mode 100644 e10dev/src/main/java/com/weaver/recruit/entity/RecruitFileObj.java create mode 100644 e10dev/src/main/java/com/weaver/recruit/entity/RecruitJtgxObj.java create mode 100644 e10dev/src/main/java/com/weaver/recruit/entity/RecruitLanguageSkillObj.java create mode 100644 e10dev/src/main/java/com/weaver/recruit/entity/RecruitProjectExpObj.java create mode 100644 e10dev/src/main/java/com/weaver/recruit/entity/RecruitSxjlObj.java create mode 100644 e10dev/src/main/java/com/weaver/recruit/entity/RecruitTalentObj.java create mode 100644 e10dev/src/main/java/com/weaver/recruit/enums/AbilityEnum.java create mode 100644 e10dev/src/main/java/com/weaver/recruit/enums/BooleanEnum.java create mode 100644 e10dev/src/main/java/com/weaver/recruit/enums/CadreNameEnum.java create mode 100644 e10dev/src/main/java/com/weaver/recruit/enums/CadreRankEnum.java create mode 100644 e10dev/src/main/java/com/weaver/recruit/enums/CertificateTypeEnum.java create mode 100644 e10dev/src/main/java/com/weaver/recruit/enums/DegreeEnum.java create mode 100644 e10dev/src/main/java/com/weaver/recruit/enums/EducationTypeEnum.java create mode 100644 e10dev/src/main/java/com/weaver/recruit/enums/EnglishLevelEnum.java create mode 100644 e10dev/src/main/java/com/weaver/recruit/enums/HealthEnum.java create mode 100644 e10dev/src/main/java/com/weaver/recruit/enums/MaritalStatusEnum.java create mode 100644 e10dev/src/main/java/com/weaver/recruit/enums/PoliticsStatusEnum.java create mode 100644 e10dev/src/main/java/com/weaver/recruit/enums/ResumeTypeEnum.java create mode 100644 e10dev/src/main/java/com/weaver/recruit/enums/WorkTypeEnum.java create mode 100644 e10dev/src/main/java/com/weaver/recruit/rest/RecruitCandidateRemoteService.java create mode 100644 e10dev/src/main/java/com/weaver/recruit/rest/RecruitESearchRemoteService.java create mode 100644 e10dev/src/main/java/com/weaver/sxjg/esb/EsbRpcPositionZhilianSz.java create mode 100644 e10dev/src/main/java/com/weaver/sxjg/esb/ExcelUtilHowe.java diff --git a/e10dev/src/main/java/com/weaver/recruit/entity/RecruitAwardExpObj.java b/e10dev/src/main/java/com/weaver/recruit/entity/RecruitAwardExpObj.java new file mode 100644 index 0000000..28aef7a --- /dev/null +++ b/e10dev/src/main/java/com/weaver/recruit/entity/RecruitAwardExpObj.java @@ -0,0 +1,106 @@ +package com.weaver.recruit.entity; + +import com.weaver.recruit.enums.BooleanEnum; +import com.weaver.recruit.enums.CadreNameEnum; +import com.weaver.recruit.enums.CadreRankEnum; +import io.swagger.annotations.ApiModelProperty; + +import java.io.Serializable; + +/** + * @author: YH + * @createDate: 2023/9/19 + * @description: + */ +public class RecruitAwardExpObj implements Serializable { + private static final long serialVersionUID = 8086695384387011716L; + + //是否学生干部:0-否,1-是 + @ApiModelProperty("是否学生干部") + private BooleanEnum studentLeader; + //干部级别:0-团委,1-校学生会,2-院学生会,3-学生社团,4-班级 + @ApiModelProperty("干部级别") + private CadreRankEnum cadreRank; + //干部名称(给数字):0-主席,1-副主席,2-主席助理,3-秘书长,4-书记,5-社长,6-部长,7-班长,8-干事,9-其他 + @ApiModelProperty("干部名称") + private CadreNameEnum cadreName; + //开始时间:yyyy-MM-dd + @ApiModelProperty("开始时间") + private String startDate; + //结束时间:yyyy-MM-dd + @ApiModelProperty("结束时间") + private String endDate; + //受到奖励 + @ApiModelProperty("受到奖励") + private String awarded; + //专业资格证书 + @ApiModelProperty("专业资格证书") + private String credentials; + //校内活动 + @ApiModelProperty("校内活动") + private String schoolActivities; + + public BooleanEnum getStudentLeader() { + return studentLeader; + } + + public void setStudentLeader(BooleanEnum studentLeader) { + this.studentLeader = studentLeader; + } + + public CadreRankEnum getCadreRank() { + return cadreRank; + } + + public void setCadreRank(CadreRankEnum cadreRank) { + this.cadreRank = cadreRank; + } + + public CadreNameEnum getCadreName() { + return cadreName; + } + + public void setCadreName(CadreNameEnum cadreName) { + this.cadreName = cadreName; + } + + public String getStartDate() { + return startDate; + } + + public void setStartDate(String startDate) { + this.startDate = startDate; + } + + public String getEndDate() { + return endDate; + } + + public void setEndDate(String endDate) { + this.endDate = endDate; + } + + public String getAwarded() { + return awarded; + } + + public void setAwarded(String awarded) { + this.awarded = awarded; + } + + public String getCredentials() { + return credentials; + } + + public void setCredentials(String credentials) { + this.credentials = credentials; + } + + public String getSchoolActivities() { + return schoolActivities; + } + + public void setSchoolActivities(String schoolActivities) { + this.schoolActivities = schoolActivities; + } +} diff --git a/e10dev/src/main/java/com/weaver/recruit/entity/RecruitEduExpObj.java b/e10dev/src/main/java/com/weaver/recruit/entity/RecruitEduExpObj.java new file mode 100644 index 0000000..3906a62 --- /dev/null +++ b/e10dev/src/main/java/com/weaver/recruit/entity/RecruitEduExpObj.java @@ -0,0 +1,139 @@ +package com.weaver.recruit.entity; + +import com.weaver.recruit.enums.BooleanEnum; +import com.weaver.recruit.enums.DegreeEnum; +import com.weaver.recruit.enums.EducationTypeEnum; +import io.swagger.annotations.ApiModelProperty; + +import java.io.Serializable; + +/** + * @author: YH + * @createDate: 2023/9/18 + * @description: + */ +public class RecruitEduExpObj implements Serializable { + private static final long serialVersionUID = 3777759458061614452L; + + //学校名称 + @ApiModelProperty("学校名称") + private String school; + //入学时间:yyyy-MM-dd + @ApiModelProperty("入学时间") + private String studyDate0; + //毕业时间:yyyy-MM-dd + @ApiModelProperty("毕业时间") + private String studyDate1; + //受教育类型:0-全日制统分招聘,1-海外留学,2-成人教育,3-定向,4-非定向,5-委培,6-自费,7-其他 + @ApiModelProperty("受教育类型") + private EducationTypeEnum educationType; + //学历(给中文):本科,硕士,博士,大专,高中,中专/中技,初中及以下,其他,不限 + @ApiModelProperty("学历") + private String eduEducation; + //学位:0-博士,1-MBA,2-硕士,3-双学士,4-学士,5-其他,6-无 + @ApiModelProperty("学位") + private DegreeEnum degree; + //研究方向 + @ApiModelProperty("研究方向") + private String researchDirection; + //院系 + @ApiModelProperty("院系") + private String faculty; + //专业名称 + @ApiModelProperty("专业名称") + private String eduMajor; + //专业课程 + @ApiModelProperty("专业课程") + private String majorCourses; + //海外工作/学历经历:0-否,1-是 + @ApiModelProperty("海外工作/学历经历") + private BooleanEnum overseasExperience; + + public String getSchool() { + return school; + } + + public void setSchool(String school) { + this.school = school; + } + + public String getStudyDate0() { + return studyDate0; + } + + public void setStudyDate0(String studyDate0) { + this.studyDate0 = studyDate0; + } + + public String getStudyDate1() { + return studyDate1; + } + + public void setStudyDate1(String studyDate1) { + this.studyDate1 = studyDate1; + } + + public EducationTypeEnum getEducationType() { + return educationType; + } + + public void setEducationType(EducationTypeEnum educationType) { + this.educationType = educationType; + } + + public String getEduEducation() { + return eduEducation; + } + + public void setEduEducation(String eduEducation) { + this.eduEducation = eduEducation; + } + + public DegreeEnum getDegree() { + return degree; + } + + public void setDegree(DegreeEnum degree) { + this.degree = degree; + } + + public String getResearchDirection() { + return researchDirection; + } + + public void setResearchDirection(String researchDirection) { + this.researchDirection = researchDirection; + } + + public String getFaculty() { + return faculty; + } + + public void setFaculty(String faculty) { + this.faculty = faculty; + } + + public String getEduMajor() { + return eduMajor; + } + + public void setEduMajor(String eduMajor) { + this.eduMajor = eduMajor; + } + + public String getMajorCourses() { + return majorCourses; + } + + public void setMajorCourses(String majorCourses) { + this.majorCourses = majorCourses; + } + + public BooleanEnum getOverseasExperience() { + return overseasExperience; + } + + public void setOverseasExperience(BooleanEnum overseasExperience) { + this.overseasExperience = overseasExperience; + } +} diff --git a/e10dev/src/main/java/com/weaver/recruit/entity/RecruitFileObj.java b/e10dev/src/main/java/com/weaver/recruit/entity/RecruitFileObj.java new file mode 100644 index 0000000..6746429 --- /dev/null +++ b/e10dev/src/main/java/com/weaver/recruit/entity/RecruitFileObj.java @@ -0,0 +1,49 @@ +package com.weaver.recruit.entity; + +import io.swagger.annotations.ApiModelProperty; + +import java.io.InputStream; +import java.io.Serializable; + +/** + * @author: YH + * @createDate: 2023/9/25 + * @description: + */ +public class RecruitFileObj implements Serializable { + private static final long serialVersionUID = -5640565905520711005L; + + //文件流 + @ApiModelProperty("文件流") + private InputStream inputStream; + //文件后缀名 + @ApiModelProperty("文件后缀名") + private String extName; + //附件名 + @ApiModelProperty("附件名") + private String fileName; + + public InputStream getInputStream() { + return inputStream; + } + + public void setInputStream(InputStream inputStream) { + this.inputStream = inputStream; + } + + public String getExtName() { + return extName; + } + + public void setExtName(String extName) { + this.extName = extName; + } + + public String getFileName() { + return fileName; + } + + public void setFileName(String fileName) { + this.fileName = fileName; + } +} diff --git a/e10dev/src/main/java/com/weaver/recruit/entity/RecruitJtgxObj.java b/e10dev/src/main/java/com/weaver/recruit/entity/RecruitJtgxObj.java new file mode 100644 index 0000000..c05243d --- /dev/null +++ b/e10dev/src/main/java/com/weaver/recruit/entity/RecruitJtgxObj.java @@ -0,0 +1,59 @@ +package com.weaver.recruit.entity; + +import io.swagger.annotations.ApiModelProperty; + +import java.io.Serializable; + +/** + * @author: YH + * @createDate: 2023/9/19 + * @description: + */ +public class RecruitJtgxObj implements Serializable { + private static final long serialVersionUID = -7947025861540179649L; + + //亲属姓名 + @ApiModelProperty("亲属姓名") + private String relativesName; + //亲属关系 + @ApiModelProperty("亲属关系") + private String kinship; + //亲属工作单位 + @ApiModelProperty("亲属工作单位") + private String relativesWork; + //亲属职位 + @ApiModelProperty("亲属职位") + private String relativesPosition; + + public String getRelativesName() { + return relativesName; + } + + public void setRelativesName(String relativesName) { + this.relativesName = relativesName; + } + + public String getKinship() { + return kinship; + } + + public void setKinship(String kinship) { + this.kinship = kinship; + } + + public String getRelativesWork() { + return relativesWork; + } + + public void setRelativesWork(String relativesWork) { + this.relativesWork = relativesWork; + } + + public String getRelativesPosition() { + return relativesPosition; + } + + public void setRelativesPosition(String relativesPosition) { + this.relativesPosition = relativesPosition; + } +} diff --git a/e10dev/src/main/java/com/weaver/recruit/entity/RecruitLanguageSkillObj.java b/e10dev/src/main/java/com/weaver/recruit/entity/RecruitLanguageSkillObj.java new file mode 100644 index 0000000..a89f8cc --- /dev/null +++ b/e10dev/src/main/java/com/weaver/recruit/entity/RecruitLanguageSkillObj.java @@ -0,0 +1,49 @@ +package com.weaver.recruit.entity; + +import com.weaver.recruit.enums.AbilityEnum; +import io.swagger.annotations.ApiModelProperty; + +import java.io.Serializable; + +/** + * @author: YH + * @createDate: 2023/9/19 + * @description: + */ +public class RecruitLanguageSkillObj implements Serializable { + private static final long serialVersionUID = -400072739456492098L; + + //语言类型 + @ApiModelProperty("语言类型") + private String languageType; + //听说能力:840812592208560134-一般,840812592208560133-良好,840812592208560132-熟练,840812592208560130-精通 + @ApiModelProperty("听说能力") + private AbilityEnum lsAbility; + //读写能力:840812592208560134-一般,840812592208560133-良好,840812592208560132-熟练,840812592208560130-精通 + @ApiModelProperty("读写能力") + private AbilityEnum literacy; + + public String getLanguageType() { + return languageType; + } + + public void setLanguageType(String languageType) { + this.languageType = languageType; + } + + public AbilityEnum getLsAbility() { + return lsAbility; + } + + public void setLsAbility(AbilityEnum lsAbility) { + this.lsAbility = lsAbility; + } + + public AbilityEnum getLiteracy() { + return literacy; + } + + public void setLiteracy(AbilityEnum literacy) { + this.literacy = literacy; + } +} diff --git a/e10dev/src/main/java/com/weaver/recruit/entity/RecruitProjectExpObj.java b/e10dev/src/main/java/com/weaver/recruit/entity/RecruitProjectExpObj.java new file mode 100644 index 0000000..a4c0e97 --- /dev/null +++ b/e10dev/src/main/java/com/weaver/recruit/entity/RecruitProjectExpObj.java @@ -0,0 +1,81 @@ +package com.weaver.recruit.entity; + +import io.swagger.annotations.ApiModelProperty; + +import java.io.Serializable; + +/** + * @author: YH + * @createDate: 2023/9/18 + * @description: + */ +public class RecruitProjectExpObj implements Serializable { + private static final long serialVersionUID = 5189605766194953108L; + + //项目名称 + @ApiModelProperty("项目名称") + private String pjName; + //开始时间:yyyy-MM-dd + @ApiModelProperty("开始时间") + private String pjDate0; + //结束时间:yyyy-MM-dd + @ApiModelProperty("结束时间") + private String pjDate1; + //项目描述 + @ApiModelProperty("项目描述") + private String pjIntroduction; + //担任角色 + @ApiModelProperty("担任角色") + private String pjDuty; + //项目职责 + @ApiModelProperty("项目职责") + private String pjRole; + + public String getPjName() { + return pjName; + } + + public void setPjName(String pjName) { + this.pjName = pjName; + } + + public String getPjDate0() { + return pjDate0; + } + + public void setPjDate0(String pjDate0) { + this.pjDate0 = pjDate0; + } + + public String getPjDate1() { + return pjDate1; + } + + public void setPjDate1(String pjDate1) { + this.pjDate1 = pjDate1; + } + + public String getPjIntroduction() { + return pjIntroduction; + } + + public void setPjIntroduction(String pjIntroduction) { + this.pjIntroduction = pjIntroduction; + } + + public String getPjDuty() { + return pjDuty; + } + + public void setPjDuty(String pjDuty) { + this.pjDuty = pjDuty; + } + + public String getPjRole() { + return pjRole; + } + + public void setPjRole(String pjRole) { + this.pjRole = pjRole; + } +} diff --git a/e10dev/src/main/java/com/weaver/recruit/entity/RecruitSxjlObj.java b/e10dev/src/main/java/com/weaver/recruit/entity/RecruitSxjlObj.java new file mode 100644 index 0000000..f3edd98 --- /dev/null +++ b/e10dev/src/main/java/com/weaver/recruit/entity/RecruitSxjlObj.java @@ -0,0 +1,82 @@ +package com.weaver.recruit.entity; + +import com.weaver.recruit.enums.WorkTypeEnum; +import io.swagger.annotations.ApiModelProperty; + +import java.io.Serializable; + +/** + * @author: YH + * @createDate: 2023/9/18 + * @description: + */ +public class RecruitSxjlObj implements Serializable { + private static final long serialVersionUID = -1971858435809274749L; + + //工作单位 + @ApiModelProperty("工作单位") + private String sxCoName; + //入职时间 + @ApiModelProperty("入职时间") + private String entryTime; + //工作类型:0-全职,1-兼职,2-实习 + @ApiModelProperty("工作类型") + private WorkTypeEnum sxWorkType; + //职位月薪(税前):数字,非纯数字请转换或不填 + @ApiModelProperty("职位月薪(税前)") + private String sxWorkSalary; + //职务 + @ApiModelProperty("职务") + private String positionJob; + //工作描述 + @ApiModelProperty("工作描述") + private String jobDescription; + + public String getSxCoName() { + return sxCoName; + } + + public void setSxCoName(String sxCoName) { + this.sxCoName = sxCoName; + } + + public String getEntryTime() { + return entryTime; + } + + public void setEntryTime(String entryTime) { + this.entryTime = entryTime; + } + + public WorkTypeEnum getSxWorkType() { + return sxWorkType; + } + + public void setSxWorkType(WorkTypeEnum sxWorkType) { + this.sxWorkType = sxWorkType; + } + + public String getSxWorkSalary() { + return sxWorkSalary; + } + + public void setSxWorkSalary(String sxWorkSalary) { + this.sxWorkSalary = sxWorkSalary; + } + + public String getPositionJob() { + return positionJob; + } + + public void setPositionJob(String positionJob) { + this.positionJob = positionJob; + } + + public String getJobDescription() { + return jobDescription; + } + + public void setJobDescription(String jobDescription) { + this.jobDescription = jobDescription; + } +} diff --git a/e10dev/src/main/java/com/weaver/recruit/entity/RecruitTalentObj.java b/e10dev/src/main/java/com/weaver/recruit/entity/RecruitTalentObj.java new file mode 100644 index 0000000..d7569bc --- /dev/null +++ b/e10dev/src/main/java/com/weaver/recruit/entity/RecruitTalentObj.java @@ -0,0 +1,381 @@ +package com.weaver.recruit.entity; + +import com.weaver.recruit.enums.*; +import io.swagger.annotations.ApiModelProperty; + +import java.io.InputStream; +import java.io.Serializable; +import java.util.List; + +/** + * @author: YH + * @createDate: 2023/9/18 + * @description: + */ +public class RecruitTalentObj implements Serializable { + private static final long serialVersionUID = -2549512332086297351L; + + //姓名 + @ApiModelProperty("姓名") + private String candidateName; + //手机号码 + @ApiModelProperty("手机号码") + private String telephone; + //邮箱 + @ApiModelProperty("邮箱") + private String email; + //性别(给中文):男,女 + @ApiModelProperty("性别") + private String gender; + //证件号码类型:0-其他,1-身份证 + @ApiModelProperty("证件号码类型") + private CertificateTypeEnum certificateType; + //证件号码 + @ApiModelProperty("证件号码") + private String certificateNum; + //出生日期:yyyy-MM-dd + @ApiModelProperty("出生日期") + private String birthday; + //健康状况:0-健康,1-其他 + @ApiModelProperty("健康状况") + private HealthEnum health; + //婚姻状况:0-未婚,1-已婚,2-离异,3-保密 + @ApiModelProperty("婚姻状况") + private MaritalStatusEnum maritalStatus; + //政治面貌:0-团员,1-中共党员(含预备党员),2-民主党派,3-无党派人士,4-群众 + @ApiModelProperty("政治面貌") + private PoliticsStatusEnum politicsStatus; + //籍贯 + @ApiModelProperty("籍贯") + private String nativePlace; + //出生日期:yyyy-MM-dd + @ApiModelProperty("出生日期") + private String graduateDate; + //身高(cm) + @ApiModelProperty("身高(cm)") + private String sgcm; + //体重(kg) + @ApiModelProperty("体重(kg)") + private String weight; + //通信地址 + @ApiModelProperty("通信地址") + private String communicationAdr; + //通信地址 + @ApiModelProperty("紧急联系电话") + private String emergencyTelephone; + //意向工作地点 + @ApiModelProperty("意向工作地点") + private String intendedWorkplace; + //期望薪资(千):数字,非纯数字请转换或不填 + @ApiModelProperty("期望薪资(千)") + private String expectSalary; + //自我评价 + @ApiModelProperty("自我评价") + private String selfDesc; + //英语等级:0-CET4,1-TEM4,2-CET6,3-TEM8,4-未参加 + @ApiModelProperty("英语等级") + private EnglishLevelEnum englishLevel; + //英语分数 + @ApiModelProperty("英语分数") + private String englishScore; + //其他技能 + @ApiModelProperty("其他技能") + private String otherSkills; + //个人爱好 + @ApiModelProperty("个人爱好") + private String personalHobby; + //意向职位 + @ApiModelProperty("意向职位") + private String intendPosition; + //简历类型 + @ApiModelProperty("简历类型") + private ResumeTypeEnum resumeType; + //教育背景 + @ApiModelProperty("教育背景") + private List recruitEduExpObjList; + //实习经历 + @ApiModelProperty("实习经历") + private List recruitSxjlObjList; + //项目经验 + @ApiModelProperty("项目经验") + private List recruitProjectExpObjList; + //获奖经历 + @ApiModelProperty("获奖经历") + private List recruitAwardExpObjList; + //语言能力 + @ApiModelProperty("语言能力") + private List recruitLanguageSkillObjList; + //家庭关系 + @ApiModelProperty("家庭关系") + private List recruitJtgxObjList; + //头像 + @ApiModelProperty("头像") + private RecruitFileObj avatar; + //原始简历附件 + @ApiModelProperty("原始简历附件") + private RecruitFileObj originalResume; + + public String getCandidateName() { + return candidateName; + } + + public void setCandidateName(String candidateName) { + this.candidateName = candidateName; + } + + public String getTelephone() { + return telephone; + } + + public void setTelephone(String telephone) { + this.telephone = telephone; + } + + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + } + + public String getGender() { + return gender; + } + + public void setGender(String gender) { + this.gender = gender; + } + + public CertificateTypeEnum getCertificateType() { + return certificateType; + } + + public void setCertificateType(CertificateTypeEnum certificateType) { + this.certificateType = certificateType; + } + + public String getCertificateNum() { + return certificateNum; + } + + public void setCertificateNum(String certificateNum) { + this.certificateNum = certificateNum; + } + + public String getBirthday() { + return birthday; + } + + public void setBirthday(String birthday) { + this.birthday = birthday; + } + + public HealthEnum getHealth() { + return health; + } + + public void setHealth(HealthEnum health) { + this.health = health; + } + + public MaritalStatusEnum getMaritalStatus() { + return maritalStatus; + } + + public void setMaritalStatus(MaritalStatusEnum maritalStatus) { + this.maritalStatus = maritalStatus; + } + + public PoliticsStatusEnum getPoliticsStatus() { + return politicsStatus; + } + + public void setPoliticsStatus(PoliticsStatusEnum politicsStatus) { + this.politicsStatus = politicsStatus; + } + + public String getNativePlace() { + return nativePlace; + } + + public void setNativePlace(String nativePlace) { + this.nativePlace = nativePlace; + } + + public String getGraduateDate() { + return graduateDate; + } + + public void setGraduateDate(String graduateDate) { + this.graduateDate = graduateDate; + } + + public String getSgcm() { + return sgcm; + } + + public void setSgcm(String sgcm) { + this.sgcm = sgcm; + } + + public String getWeight() { + return weight; + } + + public void setWeight(String weight) { + this.weight = weight; + } + + public String getCommunicationAdr() { + return communicationAdr; + } + + public void setCommunicationAdr(String communicationAdr) { + this.communicationAdr = communicationAdr; + } + + public String getEmergencyTelephone() { + return emergencyTelephone; + } + + public void setEmergencyTelephone(String emergencyTelephone) { + this.emergencyTelephone = emergencyTelephone; + } + + public String getIntendedWorkplace() { + return intendedWorkplace; + } + + public void setIntendedWorkplace(String intendedWorkplace) { + this.intendedWorkplace = intendedWorkplace; + } + + public String getExpectSalary() { + return expectSalary; + } + + public void setExpectSalary(String expectSalary) { + this.expectSalary = expectSalary; + } + + public String getSelfDesc() { + return selfDesc; + } + + public void setSelfDesc(String selfDesc) { + this.selfDesc = selfDesc; + } + + public EnglishLevelEnum getEnglishLevel() { + return englishLevel; + } + + public void setEnglishLevel(EnglishLevelEnum englishLevel) { + this.englishLevel = englishLevel; + } + + public String getEnglishScore() { + return englishScore; + } + + public void setEnglishScore(String englishScore) { + this.englishScore = englishScore; + } + + public String getOtherSkills() { + return otherSkills; + } + + public void setOtherSkills(String otherSkills) { + this.otherSkills = otherSkills; + } + + public String getPersonalHobby() { + return personalHobby; + } + + public void setPersonalHobby(String personalHobby) { + this.personalHobby = personalHobby; + } + + public String getIntendPosition() { + return intendPosition; + } + + public void setIntendPosition(String intendPosition) { + this.intendPosition = intendPosition; + } + + public ResumeTypeEnum getResumeType() { + return resumeType; + } + + public void setResumeType(ResumeTypeEnum resumeType) { + this.resumeType = resumeType; + } + + public List getRecruitEduExpObjList() { + return recruitEduExpObjList; + } + + public void setRecruitEduExpObjList(List recruitEduExpObjList) { + this.recruitEduExpObjList = recruitEduExpObjList; + } + + public List getRecruitSxjlObjList() { + return recruitSxjlObjList; + } + + public void setRecruitSxjlObjList(List recruitSxjlObjList) { + this.recruitSxjlObjList = recruitSxjlObjList; + } + + public List getRecruitProjectExpObjList() { + return recruitProjectExpObjList; + } + + public void setRecruitProjectExpObjList(List recruitProjectExpObjList) { + this.recruitProjectExpObjList = recruitProjectExpObjList; + } + + public List getRecruitAwardExpObjList() { + return recruitAwardExpObjList; + } + + public void setRecruitAwardExpObjList(List recruitAwardExpObjList) { + this.recruitAwardExpObjList = recruitAwardExpObjList; + } + + public List getRecruitLanguageSkillObjList() { + return recruitLanguageSkillObjList; + } + + public void setRecruitLanguageSkillObjList(List recruitLanguageSkillObjList) { + this.recruitLanguageSkillObjList = recruitLanguageSkillObjList; + } + + public List getRecruitJtgxObjList() { + return recruitJtgxObjList; + } + + public void setRecruitJtgxObjList(List recruitJtgxObjList) { + this.recruitJtgxObjList = recruitJtgxObjList; + } + + public RecruitFileObj getAvatar() { + return avatar; + } + + public void setAvatar(RecruitFileObj avatar) { + this.avatar = avatar; + } + + public RecruitFileObj getOriginalResume() { + return originalResume; + } + + public void setOriginalResume(RecruitFileObj originalResume) { + this.originalResume = originalResume; + } +} diff --git a/e10dev/src/main/java/com/weaver/recruit/enums/AbilityEnum.java b/e10dev/src/main/java/com/weaver/recruit/enums/AbilityEnum.java new file mode 100644 index 0000000..79e41f5 --- /dev/null +++ b/e10dev/src/main/java/com/weaver/recruit/enums/AbilityEnum.java @@ -0,0 +1,40 @@ +package com.weaver.recruit.enums; + +/** + * @author: YH + * @createDate: 2023/9/19 + * @description: + */ +public enum AbilityEnum { + NORMAL("840812592208560134", "一般"), + GOOD("840812592208560133", "良好"), + PRACTISED("840812592208560132", "熟练"), + PROFICIENT("840812592208560130", "精通"); + + private final String Key; + + private final String Name; + + AbilityEnum(String key, String name) { + this.Key = key; + this.Name = name; + } + + public String getKey() { + return Key; + } + + public String getName() { + return Name; + } + + public static AbilityEnum getByName(String name) { + AbilityEnum[] selcTypes = values(); + for (AbilityEnum selcType : selcTypes) { + if (selcType.getName().equals(name)) { + return selcType; + } + } + return null; + } +} diff --git a/e10dev/src/main/java/com/weaver/recruit/enums/BooleanEnum.java b/e10dev/src/main/java/com/weaver/recruit/enums/BooleanEnum.java new file mode 100644 index 0000000..6118917 --- /dev/null +++ b/e10dev/src/main/java/com/weaver/recruit/enums/BooleanEnum.java @@ -0,0 +1,38 @@ +package com.weaver.recruit.enums; + +/** + * @author: YH + * @createDate: 2023/9/19 + * @description: + */ +public enum BooleanEnum { + TRUE("1", "是"), + FALSE("0", "否"); + + private final String Key; + + private final String Name; + + BooleanEnum(String key, String name) { + this.Key = key; + this.Name = name; + } + + public String getKey() { + return Key; + } + + public String getName() { + return Name; + } + + public static BooleanEnum getByName(String name) { + BooleanEnum[] selcTypes = values(); + for (BooleanEnum selcType : selcTypes) { + if (selcType.getName().equals(name)) { + return selcType; + } + } + return null; + } +} diff --git a/e10dev/src/main/java/com/weaver/recruit/enums/CadreNameEnum.java b/e10dev/src/main/java/com/weaver/recruit/enums/CadreNameEnum.java new file mode 100644 index 0000000..5565e30 --- /dev/null +++ b/e10dev/src/main/java/com/weaver/recruit/enums/CadreNameEnum.java @@ -0,0 +1,46 @@ +package com.weaver.recruit.enums; + +/** + * @author: YH + * @createDate: 2023/9/20 + * @description: + */ +public enum CadreNameEnum { + ZX("0", "主席"), + FZX("1", "副主席"), + ZXZL("2", "主席助理"), + MSZ("3", "秘书长"), + SJ("4", "书记"), + SZ("5", "社长"), + XSHBZ("6", "部长"), + BZ("7", "班长"), + GS("8", "干事"), + QT("9", "其他"); + + private final String Key; + + private final String Name; + + CadreNameEnum(String key, String name) { + Key = key; + Name = name; + } + + public String getKey() { + return Key; + } + + public String getName() { + return Name; + } + + public static CadreNameEnum getByName(String name) { + CadreNameEnum[] selcTypes = values(); + for (CadreNameEnum selcType : selcTypes) { + if (selcType.getName().equals(name)) { + return selcType; + } + } + return null; + } +} diff --git a/e10dev/src/main/java/com/weaver/recruit/enums/CadreRankEnum.java b/e10dev/src/main/java/com/weaver/recruit/enums/CadreRankEnum.java new file mode 100644 index 0000000..c2973e5 --- /dev/null +++ b/e10dev/src/main/java/com/weaver/recruit/enums/CadreRankEnum.java @@ -0,0 +1,41 @@ +package com.weaver.recruit.enums; + +/** + * @author: YH + * @createDate: 2023/9/20 + * @description: + */ +public enum CadreRankEnum { + TW("0", "团委"), + XXSH("1", "校学生会"), + YXSH("2", "院学生会"), + XSST("3", "学生社团"), + BJ("4", "班级"); + + private final String Key; + + private final String Name; + + CadreRankEnum(String key, String name) { + Key = key; + Name = name; + } + + public String getKey() { + return Key; + } + + public String getName() { + return Name; + } + + public static CadreRankEnum getByName(String name) { + CadreRankEnum[] selcTypes = values(); + for (CadreRankEnum selcType : selcTypes) { + if (selcType.getName().equals(name)) { + return selcType; + } + } + return null; + } +} diff --git a/e10dev/src/main/java/com/weaver/recruit/enums/CertificateTypeEnum.java b/e10dev/src/main/java/com/weaver/recruit/enums/CertificateTypeEnum.java new file mode 100644 index 0000000..b270e45 --- /dev/null +++ b/e10dev/src/main/java/com/weaver/recruit/enums/CertificateTypeEnum.java @@ -0,0 +1,38 @@ +package com.weaver.recruit.enums; + +/** + * @author: YH + * @createDate: 2023/9/20 + * @description: + */ +public enum CertificateTypeEnum { + SFZ("1", "身份证"), + QT("0", "其他"); + + private final String Key; + + private final String Name; + + CertificateTypeEnum(String key, String name) { + this.Key = key; + this.Name = name; + } + + public String getKey() { + return Key; + } + + public String getName() { + return Name; + } + + public static CertificateTypeEnum getByName(String name) { + CertificateTypeEnum[] selcTypes = values(); + for (CertificateTypeEnum selcType : selcTypes) { + if (selcType.getName().equals(name)) { + return selcType; + } + } + return null; + } +} diff --git a/e10dev/src/main/java/com/weaver/recruit/enums/DegreeEnum.java b/e10dev/src/main/java/com/weaver/recruit/enums/DegreeEnum.java new file mode 100644 index 0000000..ca16da3 --- /dev/null +++ b/e10dev/src/main/java/com/weaver/recruit/enums/DegreeEnum.java @@ -0,0 +1,43 @@ +package com.weaver.recruit.enums; + +/** + * @author: YH + * @createDate: 2023/9/20 + * @description: + */ +public enum DegreeEnum { + BS("0", "博士"), + MBA("1", "MBA"), + SS("2", "硕士"), + SXS("3", "双学士"), + XS("4", "学士"), + QT("5", "其他"), + W("6", "无"); + + private final String Key; + + private final String Name; + + DegreeEnum(String key, String name) { + Key = key; + Name = name; + } + + public String getKey() { + return Key; + } + + public String getName() { + return Name; + } + + public static DegreeEnum getByName(String name) { + DegreeEnum[] selcTypes = values(); + for (DegreeEnum selcType : selcTypes) { + if (selcType.getName().equals(name)) { + return selcType; + } + } + return null; + } +} diff --git a/e10dev/src/main/java/com/weaver/recruit/enums/EducationTypeEnum.java b/e10dev/src/main/java/com/weaver/recruit/enums/EducationTypeEnum.java new file mode 100644 index 0000000..51967ac --- /dev/null +++ b/e10dev/src/main/java/com/weaver/recruit/enums/EducationTypeEnum.java @@ -0,0 +1,44 @@ +package com.weaver.recruit.enums; + +/** + * @author: YH + * @createDate: 2023/9/20 + * @description: + */ +public enum EducationTypeEnum { + QRZTFZP("0", "全日制统分招聘"), + HWLX("1", "海外留学"), + CRJY("2", "成人教育"), + DX("3", "定向"), + FDX("4", "非定向"), + WP("5", "委培"), + ZF("6", "自费"), + QT("7", "其他"); + + private final String Key; + + private final String Name; + + EducationTypeEnum(String key, String name) { + Key = key; + Name = name; + } + + public String getKey() { + return Key; + } + + public String getName() { + return Name; + } + + public static EducationTypeEnum getByName(String name) { + EducationTypeEnum[] selcTypes = values(); + for (EducationTypeEnum selcType : selcTypes) { + if (selcType.getName().equals(name)) { + return selcType; + } + } + return null; + } +} diff --git a/e10dev/src/main/java/com/weaver/recruit/enums/EnglishLevelEnum.java b/e10dev/src/main/java/com/weaver/recruit/enums/EnglishLevelEnum.java new file mode 100644 index 0000000..368eaa9 --- /dev/null +++ b/e10dev/src/main/java/com/weaver/recruit/enums/EnglishLevelEnum.java @@ -0,0 +1,41 @@ +package com.weaver.recruit.enums; + +/** + * @author: YH + * @createDate: 2023/9/20 + * @description: + */ +public enum EnglishLevelEnum { + CET4("0", "CET4"), + TEM4("1", "TEM4"), + CET6("2", "CET6"), + TEM8("3", "TEM8"), + WCJ("4", "未参加"); + + private final String Key; + + private final String Name; + + EnglishLevelEnum(String key, String name) { + Key = key; + Name = name; + } + + public String getKey() { + return Key; + } + + public String getName() { + return Name; + } + + public static EnglishLevelEnum getByName(String name) { + EnglishLevelEnum[] selcTypes = values(); + for (EnglishLevelEnum selcType : selcTypes) { + if (selcType.getName().equals(name)) { + return selcType; + } + } + return null; + } +} diff --git a/e10dev/src/main/java/com/weaver/recruit/enums/HealthEnum.java b/e10dev/src/main/java/com/weaver/recruit/enums/HealthEnum.java new file mode 100644 index 0000000..8f91f12 --- /dev/null +++ b/e10dev/src/main/java/com/weaver/recruit/enums/HealthEnum.java @@ -0,0 +1,38 @@ +package com.weaver.recruit.enums; + +/** + * @author: YH + * @createDate: 2023/9/20 + * @description: + */ +public enum HealthEnum { + JK("0", "健康"), + QT("1", "其他"); + + private final String Key; + + private final String Name; + + HealthEnum(String key, String name) { + Key = key; + Name = name; + } + + public String getKey() { + return Key; + } + + public String getName() { + return Name; + } + + public static HealthEnum getByName(String name) { + HealthEnum[] selcTypes = values(); + for (HealthEnum selcType : selcTypes) { + if (selcType.getName().equals(name)) { + return selcType; + } + } + return null; + } +} diff --git a/e10dev/src/main/java/com/weaver/recruit/enums/MaritalStatusEnum.java b/e10dev/src/main/java/com/weaver/recruit/enums/MaritalStatusEnum.java new file mode 100644 index 0000000..7c490f2 --- /dev/null +++ b/e10dev/src/main/java/com/weaver/recruit/enums/MaritalStatusEnum.java @@ -0,0 +1,40 @@ +package com.weaver.recruit.enums; + +/** + * @author: YH + * @createDate: 2023/9/20 + * @description: + */ +public enum MaritalStatusEnum { + WH("0", "未婚"), + YH("1", "已婚"), + LY("2", "离异"), + BM("3", "保密"); + + private final String Key; + + private final String Name; + + MaritalStatusEnum(String key, String name) { + Key = key; + Name = name; + } + + public String getKey() { + return Key; + } + + public String getName() { + return Name; + } + + public static MaritalStatusEnum getByName(String name) { + MaritalStatusEnum[] selcTypes = values(); + for (MaritalStatusEnum selcType : selcTypes) { + if (selcType.getName().equals(name)) { + return selcType; + } + } + return null; + } +} diff --git a/e10dev/src/main/java/com/weaver/recruit/enums/PoliticsStatusEnum.java b/e10dev/src/main/java/com/weaver/recruit/enums/PoliticsStatusEnum.java new file mode 100644 index 0000000..4961298 --- /dev/null +++ b/e10dev/src/main/java/com/weaver/recruit/enums/PoliticsStatusEnum.java @@ -0,0 +1,41 @@ +package com.weaver.recruit.enums; + +/** + * @author: YH + * @createDate: 2023/9/20 + * @description: + */ +public enum PoliticsStatusEnum { + TY("0", "团员"), + ZGDY("1", "中共党员(含预备党员)"), + MZDP("2", "民主党派"), + WDPRS("3", "无党派人士"), + QZ("4", "群众"); + + private final String Key; + + private final String Name; + + PoliticsStatusEnum(String key, String name) { + Key = key; + Name = name; + } + + public String getKey() { + return Key; + } + + public String getName() { + return Name; + } + + public static PoliticsStatusEnum getByName(String name) { + PoliticsStatusEnum[] selcTypes = values(); + for (PoliticsStatusEnum selcType : selcTypes) { + if (selcType.getName().equals(name)) { + return selcType; + } + } + return null; + } +} diff --git a/e10dev/src/main/java/com/weaver/recruit/enums/ResumeTypeEnum.java b/e10dev/src/main/java/com/weaver/recruit/enums/ResumeTypeEnum.java new file mode 100644 index 0000000..6c618b5 --- /dev/null +++ b/e10dev/src/main/java/com/weaver/recruit/enums/ResumeTypeEnum.java @@ -0,0 +1,38 @@ +package com.weaver.recruit.enums; + +/** + * @author: YH + * @createDate: 2023/9/25 + * @description: + */ +public enum ResumeTypeEnum { + SZ("0", "社招"), + XZ("1", "校招"); + + private final String Key; + + private final String Name; + + ResumeTypeEnum(String key, String name) { + Key = key; + Name = name; + } + + public String getKey() { + return Key; + } + + public String getName() { + return Name; + } + + public static ResumeTypeEnum getByName(String name) { + ResumeTypeEnum[] selcTypes = values(); + for (ResumeTypeEnum selcType : selcTypes) { + if (selcType.getName().equals(name)) { + return selcType; + } + } + return null; + } +} diff --git a/e10dev/src/main/java/com/weaver/recruit/enums/WorkTypeEnum.java b/e10dev/src/main/java/com/weaver/recruit/enums/WorkTypeEnum.java new file mode 100644 index 0000000..51da78a --- /dev/null +++ b/e10dev/src/main/java/com/weaver/recruit/enums/WorkTypeEnum.java @@ -0,0 +1,39 @@ +package com.weaver.recruit.enums; + +/** + * @author: YH + * @createDate: 2023/9/20 + * @description: + */ +public enum WorkTypeEnum { + QZ("0", "全职"), + JZ("1", "兼职"), + SX("2", "实习"); + + private final String Key; + + private final String Name; + + WorkTypeEnum(String key, String name) { + Key = key; + Name = name; + } + + public String getKey() { + return Key; + } + + public String getName() { + return Name; + } + + public static WorkTypeEnum getByName(String name) { + WorkTypeEnum[] selcTypes = values(); + for (WorkTypeEnum selcType : selcTypes) { + if (selcType.getName().equals(name)) { + return selcType; + } + } + return null; + } +} diff --git a/e10dev/src/main/java/com/weaver/recruit/rest/RecruitCandidateRemoteService.java b/e10dev/src/main/java/com/weaver/recruit/rest/RecruitCandidateRemoteService.java new file mode 100644 index 0000000..401e154 --- /dev/null +++ b/e10dev/src/main/java/com/weaver/recruit/rest/RecruitCandidateRemoteService.java @@ -0,0 +1,15 @@ +package com.weaver.recruit.rest; + +import com.weaver.common.base.entity.result.WeaResult; +import com.weaver.recruit.entity.RecruitTalentObj; + +/** + * @author: YH + * @createDate: 2023/9/18 + * @description: + */ +public interface RecruitCandidateRemoteService { + + WeaResult createCandidateByThird(String tenantKey, String operatorId, RecruitTalentObj obj); + +} diff --git a/e10dev/src/main/java/com/weaver/recruit/rest/RecruitESearchRemoteService.java b/e10dev/src/main/java/com/weaver/recruit/rest/RecruitESearchRemoteService.java new file mode 100644 index 0000000..b1ffcb9 --- /dev/null +++ b/e10dev/src/main/java/com/weaver/recruit/rest/RecruitESearchRemoteService.java @@ -0,0 +1,69 @@ +package com.weaver.recruit.rest; + +import com.weaver.esearch.data.api.annotation.ESearchModuleRegister; +import com.weaver.esearch.data.api.constant.Constant; +import com.weaver.esearch.data.api.service.ESearchDataService; + +import java.util.Collection; +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * @author: wangt + * @createDate: 2023/1/4 + * @description: + */ +@ESearchModuleRegister(tenantKey = Constant.COMMON_TKEY, moduleKey = "recruit", queues = "recruit_resume_fullsearch") +public interface RecruitESearchRemoteService extends ESearchDataService { + /** + * 全量分页获取数据接口 + * + * @param tenantKey 租户key + * @param pageNum 第几页 + * @param pageSize 分页大小 + * @param obj 预留参数 + * @return + */ + @Override + List> collectAllByLastId(String tenantKey, Integer pageNum, Integer pageSize, Object... obj); + + /** + * 根据创建时间获取数据分页接口 + * + * @param tenantKey 租户key + * @param startTime 开始时间 + * @param endTime 结束时间 + * @param pageNum 第几页 + * @param pageSize 分页大小 + * @param obj 预留参数 + * @return + */ + @Override + List> collectByDate(String tenantKey, Date startTime, Date endTime, Integer pageNum, Integer pageSize, + Object... obj); + + /** + * 根据主键ID获取数据接口 + * + * @param tenantKey 租户key + * @param ids 主键集合 + * @param obj 预留参数 + * @return + */ + @Override + List> collectByIds(String tenantKey, Collection ids, Object... obj); + + /** + * 构建模块权限数据 + * + * @param tenantKey 租户key + * @param employeeId 人员ID + * @param ids 主键集合 + * @param obj 预留参数 + * @return + */ + @Override + Map>> buildRight(String tenantKey, Long employeeId, Collection ids, Object... obj); + +} diff --git a/e10dev/src/main/java/com/weaver/sxjg/esb/EsbRpcPositionZhilian.java b/e10dev/src/main/java/com/weaver/sxjg/esb/EsbRpcPositionZhilian.java index 99750f0..591e430 100644 --- a/e10dev/src/main/java/com/weaver/sxjg/esb/EsbRpcPositionZhilian.java +++ b/e10dev/src/main/java/com/weaver/sxjg/esb/EsbRpcPositionZhilian.java @@ -3,10 +3,17 @@ package com.weaver.sxjg.esb; import cn.hutool.core.collection.CollectionUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.weaver.common.base.entity.result.WeaResult; import com.weaver.ebuilder.common.exception.BusinessException; import com.weaver.esb.api.rpc.EsbRpcRemoteInterface; +import com.weaver.framework.rpc.annotation.RpcReference; +import com.weaver.recruit.entity.*; +import com.weaver.recruit.enums.*; +import com.weaver.recruit.rest.RecruitCandidateRemoteService; import com.weaver.sxjg.config.EbDbDataSourceConfig; import com.weaver.sxjg.util.SxjgUtil; +import org.apache.commons.collections.list.AbstractLinkedList; import org.apache.commons.configuration.ConfigurationException; import org.apache.commons.configuration.PropertiesConfiguration; import org.apache.commons.httpclient.NameValuePair; @@ -15,20 +22,21 @@ import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.jdbc.DataSourceBuilder; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; -import javax.sql.DataSource; +import java.io.IOException; +import java.io.InputStream; import java.math.BigDecimal; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; +import java.net.URL; +import java.net.URLConnection; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; /** * @author liuhao - * @use: 职位-新增,修改,发布,下线 接口对接智联招聘 + * @use: 职位-新增,修改,发布,下线 接口对接智联招聘(校招) * @date */ @Service("esbRpcPositionZhilian_sj") @@ -45,9 +53,17 @@ public class EsbRpcPositionZhilian implements EsbRpcRemoteInterface { private String joboffline; private String wslburl; private String wslbxqurl; + + private String annex; + private String secretKey; + private String tenantKey; + private String managerId; @Autowired public EbDbDataSourceConfig ebDbDataSourceConfig; + @RpcReference + RecruitCandidateRemoteService recruitCandidateRemoteService; + public EsbRpcPositionZhilian() { PropertiesConfiguration p = null; try { @@ -65,6 +81,10 @@ public class EsbRpcPositionZhilian implements EsbRpcRemoteInterface { this.setJoboffline(p.getString("sxjg.joboffline")); this.setWslburl(p.getString("sxjg.wslburl")); this.setWslbxqurl(p.getString("sxjg.wslbxqurl")); + this.setSecretKey(p.getString("sxjg.secretkey")); + this.setTenantKey(p.getString("tenantKey")); + this.setManagerId(p.getString("managerid")); + this.setAnnex("sxjg.annexurl"); }catch (ConfigurationException e) { throw new BusinessException("获取sxjg.properties配置文件失败,", e); } @@ -133,25 +153,27 @@ public class EsbRpcPositionZhilian implements EsbRpcRemoteInterface { private void synchronJobTitle(JdbcTemplate jdbcTemplate){ List> rs = SxjgUtil.getZlTblist(jdbcTemplate); if(CollectionUtil.isNotEmpty(rs)) { - for(Map m : rs) { - BigDecimal id = (BigDecimal)m.get("id"); - String jobNumber = (String)m.get("zlzwid"); - String subcompany = (String)m.get("sub_company"); - String companyId = SxjgUtil.getZlbh(subcompany,jdbcTemplate); - String jobsyctime = (String)m.get("jobsyctime");//上一次更新时间 - Date preTimesql = SxjgUtil.getDateByTimestr(jobsyctime,"yyyy-MM-dd HH:mm:ss"); - String preTimejk = SxjgUtil.getTimeStrByDate(preTimesql,"yyyy/MM/dd HH:mm"); - Date now = new Date(); - String nowTimejk = SxjgUtil.getTimeStrByDate(now,"yyyy/MM/dd HH:mm"); - String nowTimeSql = SxjgUtil.getTimeStrByDate(now,"yyyy-MM-dd HH:mm:ss"); - try{ - getWsList(jobNumber,companyId,preTimejk,nowTimejk,jdbcTemplate);//一批量 有任何一次失败,则不更新时间 - //更新该岗位的最后获取时间 - SxjgUtil.updateLastTime(id,nowTimeSql,jdbcTemplate); - }catch (Exception e){ + for(Map m : rs) { + BigDecimal id = (BigDecimal)m.get("id"); + String jobNumber = (String)m.get("zlzwid"); + String subcompany = (String)m.get("sub_company"); + String companyId = SxjgUtil.getZlbh(subcompany,jdbcTemplate); + String jobsyctime = (String)m.get("jobsyctime");//上一次更新时间 + Date preTimesql = SxjgUtil.getDateByTimestr(jobsyctime,"yyyy-MM-dd HH:mm:ss"); + String preTimejk = SxjgUtil.getTimeStrByDate(preTimesql,"yyyy/MM/dd HH:mm"); + //判断如果大于6天 则当前时间取6天后 + Date now1 = new Date(); + Date now = SxjgUtil.sixDaylater(preTimesql,now1);//判断 大于6天取6天后 + String nowTimejk = SxjgUtil.getTimeStrByDate(now,"yyyy/MM/dd HH:mm"); + String nowTimeSql = SxjgUtil.getTimeStrByDate(now,"yyyy-MM-dd HH:mm:ss"); + try{ + getWsList(jobNumber,companyId,preTimejk,nowTimejk,jdbcTemplate);//一批量 有任何一次失败,则不更新时间 + //更新该岗位的最后获取时间 + SxjgUtil.updateLastTime(id,nowTimeSql,jdbcTemplate); + }catch (Exception e){ log.error("根据jobNumber"+jobNumber+"获取网申列表失败,失败原因:"+e.getMessage()); - } - } + } + } } } @@ -163,6 +185,10 @@ public class EsbRpcPositionZhilian implements EsbRpcRemoteInterface { log.error("当前职位id:"+id+" 并未找到jobNumber,请先新增职位!"); throw new Exception("当前职位并未找到jobNumber!"); } + String qudao = (String)params.get("qudao"); + if(!qudao.contains("智联招聘")){ + throw new Exception("没有勾选智联招聘,当前数据不走下线接口"); + } String orgCode = (String)params.get("orgcode"); String companyId = SxjgUtil.getZlbh(orgCode,jdbcTemplate); long companyId1 = Long.parseLong(companyId); @@ -187,7 +213,7 @@ public class EsbRpcPositionZhilian implements EsbRpcRemoteInterface { String jobNumber = SxjgUtil.getJobNumber(id,jdbcTemplate); if(jobNumber.length()==0) { log.error("当前职位id:"+id+" 并未找到jobNumber,请先新增职位!"); - throw new Exception("当前职位并未找到jobNumber!"); + throw new Exception("当前职位并未找到jobNumber!"); } String orgCode = (String)params.get("orgcode"); String companyId = SxjgUtil.getZlbh(orgCode,jdbcTemplate); @@ -197,6 +223,12 @@ public class EsbRpcPositionZhilian implements EsbRpcRemoteInterface { } String qudao = (String)params.get("qudao"); if(!qudao.contains("智联招聘")) { + log.error("发布职位,智联:并未勾选智联招聘"); + return; + } + String zpfs = (String)params.get("typezhaopin"); + if(!zpfs.contains("校园")) { + log.error("发布职位,智联:并未勾选校园招聘"); return; } JSONObject jsonObject = new JSONObject(); @@ -222,6 +254,10 @@ public class EsbRpcPositionZhilian implements EsbRpcRemoteInterface { if(!qudao.contains("智联招聘")){ throw new Exception("没有勾选智联招聘,当前数据不走同步接口"); } + String jhzpfs = (String)params.get("typezhaopin"); + if(!jhzpfs.contains("校园")){ + throw new Exception("不是校园招聘,当前数据不走同步接口"); + } String orgCode = (String)params.get("orgcode"); log.error("职位id:"+id); log.error("职位所属公司code:"+orgCode); @@ -377,10 +413,12 @@ public class EsbRpcPositionZhilian implements EsbRpcRemoteInterface { } //进入分页 for(int j = 1;j<=yeshu;j++) { - if(yeshu == 1) { + if(j == 1) { jsonArray = data.getJSONArray("dataList"); - dealJsonArrayGetDetail(jsonArray,companyId,jobNumber,jdbcTemplate); - continue; + if(jsonArray!=null && jsonArray.size()>0) { + dealJsonArrayGetDetail(jsonArray,companyId,jobNumber,jdbcTemplate); + continue; + } } json1 = new JSONObject(); json1.put("page",j); @@ -393,7 +431,9 @@ public class EsbRpcPositionZhilian implements EsbRpcRemoteInterface { if(SxjgUtil.isSuccess(s1)) { data = SxjgUtil.getInterfaceData(s1); jsonArray = data.getJSONArray("dataList"); - dealJsonArrayGetDetail(jsonArray,companyId,jobNumber,jdbcTemplate); + if(jsonArray!=null && jsonArray.size()>0) { + dealJsonArrayGetDetail(jsonArray,companyId,jobNumber,jdbcTemplate); + } } } }else { @@ -412,14 +452,121 @@ public class EsbRpcPositionZhilian implements EsbRpcRemoteInterface { json1.put("jobResumeId",jobResumeId); json1.put("companyId",companyid); String s1 = SxjgUtil.doJsonPost(getWslbxqurl(),getClientId(),json1.toJSONString(),jdbcTemplate,"0000"); + //根据jobResumeId获取简历附件 + JSONObject jsonObject1 = new JSONObject(); + jsonObject1.put("jobResumeId",jobResumeId); + String s2 = SxjgUtil.doJsonPost(getAnnex(),getClientId(),json1.toJSONString(),jdbcTemplate,"0000"); if(SxjgUtil.isSuccess(s1)) { + if(!SxjgUtil.isSuccess(s2)){ + throw new Exception("简历,头像获取失败!jobResumeId:"+jobResumeId); + } //处理批次 if(!SxjgUtil.existPc(jobResumeId,jobNumber,jdbcTemplate)) { //成功录入批次后 - // TODO: 2023/9/15 需要调用批次录用,成功后处理 - String pcid = ""; - //录入中间表,将已经成功同步的批次记录 记录批次编号,简历编号(智联) - SxjgUtil.insertSyn(jobResumeId,pcid,jobNumber,jdbcTemplate); + JSONObject rs = SxjgUtil.getInterfaceData(s1); + JSONObject rs2 = SxjgUtil.getInterfaceData(s2); + String encrystr1 = rs2.getString("annex"); + String encrystr = rs.getString("detail"); + String detailstr = SxjgUtil.decrypt(this.getSecretKey(),encrystr); + String detailstr1 = SxjgUtil.decrypt(this.getSecretKey(),encrystr1); + JSONObject detailObj = JSONObject.parseObject(detailstr); + JSONObject detailObj1 = JSONObject.parseObject(detailstr1); + //个人信息 + JSONObject grxx = detailObj.getJSONArray("个人信息").getJSONObject(0); + //联系方式 + JSONObject lxfs = detailObj.getJSONArray("联系方式").getJSONObject(0); + //教育经历 + JSONArray jyjl = detailObj.getJSONArray("教育经历"); + //求职意向 + JSONObject qzyx = detailObj.getJSONArray("求职意向").getJSONObject(0); + //实习经历 + JSONArray sxjl = detailObj.getJSONArray("实习经历"); + //项目经验 + JSONArray xmjy = detailObj.getJSONArray("项目经验"); + //奖励活动 + JSONArray jlhd = detailObj.getJSONArray("奖励活动"); + //自我评价 + JSONObject zwpj = detailObj.getJSONArray("自我评价").getJSONObject(0); + //技能/爱好 + JSONObject jnah = detailObj.getJSONArray("技能/爱好").getJSONObject(0); + //家庭关系 + JSONArray jtgx = detailObj.getJSONArray("家庭关系"); + //附件 + JSONArray fj = detailObj.getJSONArray("附件"); + //志愿信息 + JSONObject zyxx = detailObj.getJSONObject("志愿信息"); + RecruitTalentObj recruitTalentObj = new RecruitTalentObj(); + recruitTalentObj.setResumeType(ResumeTypeEnum.XZ); + //填充简历,头像 + getFileObj(detailObj1,recruitTalentObj); + recruitTalentObj.setCandidateName(grxx.getString("姓名")); + recruitTalentObj.setTelephone(lxfs.getString("手机号码")); + recruitTalentObj.setEmail(lxfs.getString("电子邮箱")); + recruitTalentObj.setGender(grxx.getString("性别")); + if(grxx.getString("证件号码类型").equals("身份证")) { + recruitTalentObj.setCertificateType(CertificateTypeEnum.SFZ); + }else { + recruitTalentObj.setCertificateType(CertificateTypeEnum.QT); + } + recruitTalentObj.setCertificateNum(grxx.getString("证件号码")); + recruitTalentObj.setBirthday(grxx.getString("出生日期")); + String health =grxx.getString("健康状况"); + if("良好".equals(health) || "健康".equals(health)) { + recruitTalentObj.setHealth(HealthEnum.JK); + }else { + recruitTalentObj.setHealth(HealthEnum.QT); + } + String maritalstatus = grxx.getString("婚姻状况"); + String policicsStatus = grxx.getString("政治面貌"); + recruitTalentObj.setMaritalStatus(getMaritalStatusEnum(maritalstatus)); + recruitTalentObj.setPoliticsStatus(getPoliticsStatusEnum(policicsStatus)); + recruitTalentObj.setNativePlace(grxx.getString("籍贯")); + //毕业日期 + recruitTalentObj.setGraduateDate(getEduDate(jyjl)); + recruitTalentObj.setSgcm(grxx.getString("身高(cm)")); + recruitTalentObj.setWeight(grxx.getString("体重(kg)")); + recruitTalentObj.setCommunicationAdr(lxfs.getString("通信地址")); + recruitTalentObj.setEmergencyTelephone(lxfs.getString("紧急联系电话")); + recruitTalentObj.setIntendedWorkplace(qzyx.getString("期望工作城市")); + recruitTalentObj.setExpectSalary(getExceptSalary(qzyx.getString("期望月薪(税前)"))); + //自我评价 + recruitTalentObj.setSelfDesc(zwpj.getString("内容")); + recruitTalentObj.setEnglishLevel(EnglishLevelEnum.getByName(jnah.getString("英语等级"))); + recruitTalentObj.setEnglishScore(jnah.getString("英语分数")); + recruitTalentObj.setOtherSkills(jnah.getString("其它技能")); + recruitTalentObj.setPersonalHobby(jnah.getString("个人爱好")); + recruitTalentObj.setIntendPosition(zyxx.getString("职位名称")); + //教育背景 + recruitTalentObj.setRecruitEduExpObjList(getEdugroudlist(jyjl)); + //实习经历 + recruitTalentObj.setRecruitSxjlObjList(getSxjllist(sxjl)); + //项目经验 + recruitTalentObj.setRecruitProjectExpObjList(getRecruitProjectExpObj(xmjy)); + //获奖经历 + recruitTalentObj.setRecruitAwardExpObjList(getRecruitAwardExpObj(jlhd)); + //语言能力 + recruitTalentObj.setRecruitLanguageSkillObjList(geRecruitLanguageSkillObj(jnah)); + //家庭关系 + recruitTalentObj.setRecruitJtgxObjList(geRecruitJtgxObj(jtgx)); + ObjectMapper objectMapper = new ObjectMapper(); + String jsonString = objectMapper.writeValueAsString(recruitTalentObj); + log.error("推送对象:"+jsonString); + WeaResult wr = recruitCandidateRemoteService.createCandidateByThird(this.getTenantKey(),this.getManagerId(),recruitTalentObj); + log.error("1111111111111111111111:"+wr.getCode()); + log.error("1111111111111111111111:"+wr.getMsg()); + log.error("1111111111111111111111:"+wr.isStatus()); + if(wr.getCode() == 200){ + JSONObject rs1 = (JSONObject) wr.getData(); + Long talentid = rs1.getLong("talentId"); + Long batchid = rs1.getLong("batchId"); + log.error("talentId:"+talentid); + log.error("batchid:"+batchid); + SxjgUtil.insertSyn(jobResumeId,batchid.toString(),jobNumber,jdbcTemplate); + }else { + if(!wr.getMsg().contains("already exist")) { + throw new Exception("录入批次失败!"); + } + } } }else { throw new Exception("获取简历详情失败!具体明细请看日志"); @@ -427,13 +574,339 @@ public class EsbRpcPositionZhilian implements EsbRpcRemoteInterface { } } - @Test + /** + * 填充简历/头像 + */ + private void getFileObj(JSONObject rs,RecruitTalentObj recruitTalentObj) throws IOException { + if(rs.containsKey("附件")) { + JSONArray jsonArray = rs.getJSONArray("附件"); + if(jsonArray.size()>0) { + JSONObject jsonObject = jsonArray.getJSONObject(0); + String zjz = jsonObject.getString("证件照"); + String jlfj = jsonObject.getString("简历附件"); + if(zjz.length()>0) { + URL url = new URL(zjz); + URLConnection connection = url.openConnection(); + InputStream i = connection.getInputStream(); + Maprs1 = getFileNameAndTrix(zjz); + RecruitFileObj avator = new RecruitFileObj(); + avator.setExtName(rs1.get("trix")); + avator.setFileName(rs1.get("name")); + avator.setInputStream(i); + recruitTalentObj.setAvatar(avator); + } + if(jlfj.length()>0) { + URL url = new URL(zjz); + URLConnection connection = url.openConnection(); + InputStream i = connection.getInputStream(); + Maprs2 =getFileNameAndTrix(jlfj); + RecruitFileObj originalResume = new RecruitFileObj(); + originalResume.setExtName(rs2.get("trix")); + originalResume.setFileName(rs2.get("name")); + originalResume.setInputStream(i); + recruitTalentObj.setOriginalResume(originalResume); + } + } + } + } + + /** + * 根据url地址获取文件名称和后缀 + */ + private MapgetFileNameAndTrix(String url) { + Map re = new HashMap<>(); + String[] rs = url.split("/"); + String str = rs[rs.length-1]; + String[] result = str.split("\\."); + String filename = result[0]; + String filetrix = result[1]; + re.put("name",filename); + re.put("trix",filetrix); + return re; + } + /** + * 获取婚姻状况枚举 + */ + private MaritalStatusEnum getMaritalStatusEnum(String name) { + if("未婚".equals(name)) { + return MaritalStatusEnum.WH; + }else if("已婚".equals(name)) { + return MaritalStatusEnum.YH; + }else if("离异".equals(name)) { + return MaritalStatusEnum.LY; + }else if("保密".equals(name)) { + return MaritalStatusEnum.BM; + }else{ + return MaritalStatusEnum.BM; + } + } + /** + *获取期望薪资 区间内一律取期望起始值 + * 请选择#Please Select + * 1000元/月以下#Below 1000RMB/Month + * 1000~2000元/月#1000~2000 RMB/Month + * 2000~4000元/月#2000~4000 RMB/Month + * 4000~6000元/月#4000~6000 RMB/Month + * 6000~8000元/月#6000~8000 RMB/Month + * 8000~10000元/月#8000~10000 RMB/Month + * 10000~15000元/月#10000~15000 RMB/Month + * 15000~25000元/月#15000~25000 RMB/Month + * 25000元/月以上#Above 25000 RMB/Month + */ + private String getExceptSalary(String s) { + String finstr = ""; + if(s.contains("元/月")){ + String s1 = s.split("元/月")[0]; + if(s1.contains("~")) { + finstr = s1.split("~")[0]; + }else { + finstr = s1; + } + } + if(finstr.length()>0) { + try{ + BigDecimal q1 = new BigDecimal(finstr); + BigDecimal q2 = q1.divide(new BigDecimal("1000")); + return q2.toString(); + }catch (Exception e){ return "";} + }else { + return ""; + } + } + /** + * 获取婚姻状况枚举 + */ + private PoliticsStatusEnum getPoliticsStatusEnum(String name) { + if("团员".equals(name)) { + return PoliticsStatusEnum.TY; + }else if("中共党员(含预备党员)".equals(name)) { + return PoliticsStatusEnum.ZGDY; + }else if("民主党派".equals(name)) { + return PoliticsStatusEnum.MZDP; + }else if("无党派人士".equals(name)) { + return PoliticsStatusEnum.WDPRS; + }else if("群众".equals(name)) { + return PoliticsStatusEnum.QZ; + }else{ + return PoliticsStatusEnum.QZ; + } + } + + /** + *根据教育经历获取最高毕业时间 + */ + public String getEduDate(JSONArray rs) throws ParseException { + if(rs != null && rs.size() > 0) { + SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); + Listli = new ArrayList(); + for(int i = 0; i < rs.size(); i++) { + JSONObject obj = rs.getJSONObject(i); + String date = obj.getString("毕业时间"); + Date r = sdf.parse(date); + li.add(r.getTime()); + } + long t = Collections.max(li); + Date s = new Date(t); + return sdf.format(s); + }else { + return null; + } + } + + /** + * 获取教育经历 + */ + private List getEdugroudlist(JSONArray rs) { + Listlist = new ArrayList<>(); + if(rs != null && rs.size() > 0) { + + for(int i = 0; i < rs.size(); i++) { + RecruitEduExpObj recruitEduExpObj = new RecruitEduExpObj(); + JSONObject obj = rs.getJSONObject(i); + recruitEduExpObj.setSchool(obj.getString("学校名称")); + recruitEduExpObj.setStudyDate0(obj.getString("入学时间")); + recruitEduExpObj.setStudyDate1(obj.getString("毕业时间")); + if(EducationTypeEnum.getByName(obj.getString("受教育类型"))==null) { + recruitEduExpObj.setEducationType(EducationTypeEnum.QRZTFZP); + }else { + recruitEduExpObj.setEducationType(EducationTypeEnum.getByName(obj.getString("受教育类型"))); + } + recruitEduExpObj.setEduEducation(getEducationTrans(obj.getString("学历"))); + recruitEduExpObj.setDegree(getdegreenum(obj.getString("学位"))); + recruitEduExpObj.setResearchDirection(obj.getString("研究方向")); + recruitEduExpObj.setFaculty(obj.getString("院系")); + recruitEduExpObj.setEduMajor(obj.getString("专业")); + recruitEduExpObj.setMajorCourses(obj.getString("专业课程")); + if(obj.containsKey("海外工作/学习经历")&&obj.getString("海外工作/学习经历").length()>0) { + if("是".equals(obj.getString("海外工作/学习经历"))) { + recruitEduExpObj.setOverseasExperience(BooleanEnum.TRUE); + }else { + recruitEduExpObj.setOverseasExperience(BooleanEnum.FALSE); + } + } + list.add(recruitEduExpObj); + } + return list; + }else { + return null; + } + } + + /** + *获取学位枚举 + */ + private DegreeEnum getdegreenum(String name) { + if(DegreeEnum.getByName(name)==null){ + return DegreeEnum.W; + }else { + return DegreeEnum.getByName(name); + } + } + + /** + * 获取学历学位:0-博士,1-MBA,2-硕士,3-双学士,4-学士,5-其他,6-无 + */ + public String getEducationTrans(String name) { + if("博士".equals(name)){ + return "0"; + } else if ("MBA".equals(name)) { + return "1"; + }else if ("硕士".equals(name)) { + return "2"; + }else if ("双学士".equals(name)) { + return "3"; + }else if ("学士".equals(name)) { + return "4"; + }else if ("其他".equals(name)) { + return "5"; + }else if ("无".equals(name)) { + return "6"; + }else{ + return "5"; + } + } + + /** + * + */ + private ListgetSxjllist(JSONArray jsonArray) { + List list = new ArrayList<>(); + if(jsonArray!=null && jsonArray.size()>0) { + for(int i = 0; i getRecruitProjectExpObj(JSONArray jsonArray) { + List list = new ArrayList<>(); + if(jsonArray!=null && jsonArray.size()>0) { + for(int i = 0; i getRecruitAwardExpObj(JSONArray jsonArray) { + List list = new ArrayList<>(); + if(jsonArray!=null && jsonArray.size()>0) { + for(int i = 0; i geRecruitLanguageSkillObj(JSONObject jsonobj) { + JSONArray jsonArray = jsonobj.getJSONArray("语言能力"); + List list = new ArrayList<>(); + if(jsonArray!=null && jsonArray.size()>0) { + for(int i = 0; i geRecruitJtgxObj(JSONArray jsonArray) { + List list = new ArrayList<>(); + if(jsonArray!=null && jsonArray.size()>0) { + for(int i = 0; i execute(Map params) { + String operate_flag = (String) params.get("operate_flag"); + //1 职位新增,编辑 + if ("1".equals(operate_flag)) { + JdbcTemplate jdbcTemplate = new JdbcTemplate(ebDbDataSourceConfig.dbDataSource()); + try{ + jobAdd(params,jdbcTemplate); + return SxjgUtil.ok(); + }catch (Exception e){ + e.printStackTrace(); + return SxjgUtil.err(e.getMessage()); + } + } + //3 发布同步下线删除 + else if ("3".equals(operate_flag)) { + JdbcTemplate jdbcTemplate = new JdbcTemplate(ebDbDataSourceConfig.dbDataSource()); + try{ + updateJob(params,jdbcTemplate); + return SxjgUtil.ok(); + }catch (Exception e){ + return SxjgUtil.err(e.getMessage()); + } + } + //4 简历获取 + else if ("4".equals(operate_flag)) { + log.error("简历获取:>>>>>>>>>>>>>>>>>>>>>>"); + JdbcTemplate jdbcTemplate = new JdbcTemplate(ebDbDataSourceConfig.dbDataSource()); + synchronJobTitle(jdbcTemplate); + return SxjgUtil.ok(); + }else { + return SxjgUtil.err("配置不正确,请检查参数:operate_flag"); + } + } + + private void updateJob(Map params, JdbcTemplate jdbcTemplate) throws Exception{ + String id = (String)params.get("id"); + log.error("职位下线社招,职位id:>>>>>>>>>>>>>>>>>>>>>>"+id); + String jobNumber = SxjgUtil.getJobNumbersz(id,jdbcTemplate); + if(jobNumber.length()==0) { + log.error("当前职位id:"+id+" 并未找到jobNumber,请先新增职位!"); + throw new Exception("当前职位并未找到jobNumber!"); + } + String qudao = (String)params.get("qudao"); + if(!qudao.contains("智联招聘")){ + throw new Exception("没有勾选智联招聘,当前数据不走下线接口"); + } + String jhzpfs = (String)params.get("typezhaopin"); + if(!jhzpfs.contains("社会")){ + throw new Exception("不是社会招聘,当前数据不走同步接口"); + } + String orgCode = (String)params.get("orgcode"); + String companyId = SxjgUtil.getZlbhSz(orgCode,jdbcTemplate); + if(companyId.length()==0){ + throw new Exception("当前岗位所属组织并未配置,请联系管理员!"); + } + String status = (String)params.get("status"); + JSONObject jsonObject = new JSONObject(); + List rs1 = new ArrayList<>(); + rs1.add(id); + jsonObject.put("jobNumbers",rs1); + jsonObject.put("status",Integer.parseInt(status)); + String rs = SxjgUtil.doJsonPostSz(this.getJobsave(),this.getAppid(),this.getAppReferer(),this.getToken(),jsonObject.toJSONString(),jdbcTemplate); + if(SxjgUtil.isSuccessSz(rs)) { + log.error("职位操作flag:"+status+">>>操作成功"); + if("1".equals(status)) {//发布 + SxjgUtil.updateStatus(id,jdbcTemplate,"1"); + } + if("3".equals(status)) {//下线 + SxjgUtil.updateStatus(id,jdbcTemplate,"2"); + } + }else { + throw new Exception("职位新增接口异常!"); + } + } + + /** + * 定时同步简历 + */ + private void synchronJobTitle(JdbcTemplate jdbcTemplate){ + List> rs = SxjgUtil.getZlTblistsz(jdbcTemplate); + if(CollectionUtil.isNotEmpty(rs)) { + for(Map m : rs) { + BigDecimal id = (BigDecimal)m.get("id"); + String jobNumber = (String)m.get("zlzwid"); + String subcompany = (String)m.get("sub_company"); + String companyId = SxjgUtil.getZlbh(subcompany,jdbcTemplate); + String jobsyctime = (String)m.get("jobsyctime");//上一次更新时间 + Date preTimesql = SxjgUtil.getDateByTimestr(jobsyctime,"yyyy-MM-dd HH:mm:ss"); + Date now = new Date(); + String nowTimeSql = SxjgUtil.getTimeStrByDate(now,"yyyy-MM-dd HH:mm:ss"); + String preTimeSql = SxjgUtil.getTimeStrByDate(preTimesql,"yyyy-MM-dd HH:mm:ss"); + try{ + getWsList(jobNumber,companyId,preTimeSql,nowTimeSql,jdbcTemplate);//一批量 有任何一次失败,则不更新时间 + //更新该岗位的最后获取时间 + SxjgUtil.updateLastTime(id,nowTimeSql,jdbcTemplate); + }catch (Exception e){ + log.error("根据jobNumber"+jobNumber+"获取网申列表失败,失败原因:"+e.getMessage()); + } + } + } + } + + /** + * 社招 + * use:报名列表查询,自行分页,从第一页开始,每次获取100条 + */ + private void getWsList(String jobNumber,String companyId,String applyStartTime,String applyEndTime,JdbcTemplate jdbcTemplate) throws Exception{ + JSONObject json1 = new JSONObject(); + json1.put("page",1); + json1.put("size",100); + json1.put("applyStartTime",applyStartTime); + json1.put("applyEndTime",applyEndTime); + Listjobids = new ArrayList<>(); + jobids.add(jobNumber); + json1.put("jobIds",jobids); + String s1 = SxjgUtil.doJsonPostSz(getListpageurl(),getAppid(),getAppReferer(),getToken(),json1.toJSONString(),jdbcTemplate); + JSONArray jsonArray = new JSONArray(); + if(SxjgUtil.isSuccessSz(s1)) { + JSONObject data = SxjgUtil.getInterfaceData(s1); + int total = data.getInteger("total"); + if(total == 0){ + return; + } + int yeshu = data.getInteger("pages"); + //进入分页 + for(int j = 1;j<=yeshu;j++) { + if(j == 1) { + jsonArray = data.getJSONArray("records"); + if(jsonArray!=null && jsonArray.size()>0) { + dealJsonArrayGetDetail(jsonArray,companyId,jobNumber,jdbcTemplate); + continue; + } + } + json1 = new JSONObject(); + json1.put("page",j); + json1.put("size",100); + json1.put("applyStartTime",applyStartTime); + json1.put("applyEndTime",applyEndTime); + jobids = new ArrayList<>(); + jobids.add(jobNumber); + json1.put("jobIds",jobids); + s1 = SxjgUtil.doJsonPostSz(getListpageurl(),getAppid(),getAppReferer(),getToken(),json1.toJSONString(),jdbcTemplate); + if(SxjgUtil.isSuccessSz(s1)) { + data = SxjgUtil.getInterfaceData(s1); + jsonArray = data.getJSONArray("records"); + if(jsonArray!=null && jsonArray.size()>0) { + dealJsonArrayGetDetail(jsonArray,companyId,jobNumber,jdbcTemplate); + } + } + } + }else { + throw new Exception("获取网申列表详情失败,失败原因看日志!"); + } + } + + /** + * 社招 + * 获取到时间段内的简历 + */ + public void dealJsonArrayGetDetail(JSONArray jsonArray,String companyid,String jobNumber,JdbcTemplate jdbcTemplate) throws Exception{ + for(int i = 0; i < jsonArray.size();i++) { + JSONObject jsonObject = jsonArray.getJSONObject(i); + String id = jsonObject.getString("id"); + String s3 = SxjgUtil.getMethodForsz(getResumedetailsurl(),getAppid(),getAppReferer(),getToken(),id); + if(SxjgUtil.isSuccessSz(s3)) { + if(!SxjgUtil.existPc(id,jobNumber,jdbcTemplate)) { + JSONObject data = SxjgUtil.getInterfaceData(s3); + RecruitTalentObj recruitTalentObj = new RecruitTalentObj(); + recruitTalentObj.setResumeType(ResumeTypeEnum.SZ); + //填充头像 + RecruitFileObj avator = new RecruitFileObj(); + String photostr = data.getString("id_photo"); + JSONArray s2 = JSONArray.parseArray(photostr); + String url11 = s2.get(0).toString(); + Map namestr = getFileNameAndTrix(url11); + avator.setFileName(namestr.get("name")); + avator.setExtName(namestr.get("trix")); + URL url12 = new URL(url11); + URLConnection connection = url12.openConnection(); + InputStream inputStream = connection.getInputStream(); + avator.setInputStream(inputStream); + recruitTalentObj.setAvatar(avator); + //----填充头像完毕----------------- + recruitTalentObj.setCandidateName(data.getString("name")); + recruitTalentObj.setTelephone(data.getString("mobile")); + recruitTalentObj.setEmail(data.getString("mail")); + recruitTalentObj.setGender(data.getString("sex")); + //类型 固定身份证 + recruitTalentObj.setCertificateType(CertificateTypeEnum.SFZ); + recruitTalentObj.setCertificateNum(data.getString("id_card")); + recruitTalentObj.setBirthday(data.getString("birthday")); + String health =data.getString("health_condition"); + if("良好".equals(health) || "健康".equals(health)) { + recruitTalentObj.setHealth(HealthEnum.JK); + }else { + recruitTalentObj.setHealth(HealthEnum.QT); + } + String policicsStatus = data.getString("political_status"); + //婚姻状况 + //recruitTalentObj.setMaritalStatus(getMaritalStatusEnum(maritalstatus)); + recruitTalentObj.setPoliticsStatus(PoliticsStatusEnum.getByName(policicsStatus)); + recruitTalentObj.setNativePlace(data.getString("native_place")); + recruitTalentObj.setGraduateDate(data.getString("birthday")); + //recruitTalentObj.setSgcm(grxx.getString("身高(cm)")); + //recruitTalentObj.setWeight(grxx.getString("体重(kg)")); + //recruitTalentObj.setCommunicationAdr(lxfs.getString("通信地址")); + recruitTalentObj.setEmergencyTelephone(data.getString("emergency_telephone")); + //recruitTalentObj.setIntendedWorkplace(qzyx.getString("期望工作城市")); + //recruitTalentObj.setExpectSalary(getExceptSalary(qzyx.getString("期望月薪(税前)"))); + //自我评价 + recruitTalentObj.setSelfDesc(data.getString("textarea_KEY_2023060615242536330B7BCE4A52E292")); + + //recruitTalentObj.setEnglishLevel(EnglishLevelEnum.getByName(jnah.getString("英语等级"))); + //recruitTalentObj.setEnglishScore(jnah.getString("英语分数")); + //recruitTalentObj.setOtherSkills(jnah.getString("其它技能")); + //recruitTalentObj.setPersonalHobby(jnah.getString("个人爱好")); + //recruitTalentObj.setIntendPosition(zyxx.getString("职位名称")); + //教育背景 + recruitTalentObj.setRecruitEduExpObjList(getEdugroudlist(data)); + //实习经历 + //recruitTalentObj.setRecruitSxjlObjList(getSxjllist(sxjl)); + //项目经验 + //recruitTalentObj.setRecruitProjectExpObjList(getRecruitProjectExpObj(xmjy)); + //获奖经历 + //recruitTalentObj.setRecruitAwardExpObjList(getRecruitAwardExpObj(jlhd)); + //语言能力 + //recruitTalentObj.setRecruitLanguageSkillObjList(geRecruitLanguageSkillObj(jnah)); + //家庭关系 + recruitTalentObj.setRecruitJtgxObjList(geRecruitJtgxObj(data)); + ObjectMapper objectMapper = new ObjectMapper(); + String jsonString = objectMapper.writeValueAsString(recruitTalentObj); + log.error("推送对象:"+jsonString); + WeaResult wr = recruitCandidateRemoteService.createCandidateByThird(this.getTenantKey(),this.getManagerId(),recruitTalentObj); + log.error("1111111111111111111111:"+wr.getCode()); + log.error("1111111111111111111111:"+wr.getMsg()); + log.error("1111111111111111111111:"+wr.isStatus()); + if(wr.getCode() == 200){ + JSONObject rs1 = (JSONObject) wr.getData(); + Long talentid = rs1.getLong("talentId"); + Long batchid = rs1.getLong("batchId"); + log.error("talentId:"+talentid); + log.error("batchid:"+batchid); + SxjgUtil.insertSyn(id,batchid.toString(),jobNumber,jdbcTemplate); + }else { + if(!wr.getMsg().contains("already exist")) { + throw new Exception("录入批次失败!"); + } + } + } + }else { + throw new Exception("获取简历详情失败!具体明细请看日志"); + } + } + } + + /** + * 教育背景填充 + */ + + private List getEdugroudlist(JSONObject data) { + List rs = new ArrayList<>(); + //第一学历 + // TODO: 2023/9/26 + return null; + } + + /** + * 社招:家庭关系 + */ + private List geRecruitJtgxObj(JSONObject data) { + List rs = new ArrayList<>(); + JSONArray jsonArray = data.getJSONArray("family_member_social_relations"); + if(jsonArray!=null && jsonArray.size()>0) { + for(int i = 0; i getFileNameAndTrix(String url1) { + String url = url1.split("\\?")[0]; + Map re = new HashMap<>(); + String[] rs = url.split("/"); + String str = rs[rs.length-1]; + String[] result = str.split("\\."); + String filename = result[0]; + String filetrix = result[1]; + re.put("name",filename); + re.put("trix",filetrix); + return re; + } + + /** + * 职位新增/编辑 + */ + private void jobAdd(Map params, JdbcTemplate jdbcTemplate) throws Exception{ + boolean isAdd = true; + Map res = new HashMap<>(); + String id = (String)params.get("id"); + String qudao = (String)params.get("qudao"); + if(!qudao.contains("智联招聘")){ + throw new Exception("没有勾选智联招聘,当前数据不走同步接口"); + } + String jhzpfs = (String)params.get("typezhaopin"); + if(!jhzpfs.contains("社会")){ + throw new Exception("不是社会招聘,当前数据不走同步接口"); + } + String orgCode = (String)params.get("orgcode"); + log.error("职位id:"+id); + log.error("职位所属公司code:"+orgCode); + String companyId = SxjgUtil.getZlbhSz(orgCode,jdbcTemplate); + long companyId1 = Long.parseLong(companyId); + if(companyId.length()==0){ + throw new Exception("当前岗位所属组织并未配置,请联系管理员!"); + } + String ZLID = SxjgUtil.getJobNumbersz(id,jdbcTemplate); + if(ZLID.length()>0) { + isAdd = false; + } + log.error("职位所属公司code对应智联code:"+companyId); + log.error("发布渠道:"+qudao); + + String jobTitle = (String)params.get("jobTitle");//职位名称 + String quantity1 = (String)params.get("quantity");//招聘人数 + int quantity = Double.valueOf(quantity1).intValue(); + String education = (String)params.get("education");//最低学历 + int education1 = SxjgUtil.getEducodesz(education); + String city = (String)params.get("city");//工作城市 + if(city.contains("市")) { + city= city.split("市")[0]; + } + long cityId = SxjgUtil.getCityIdsz(jdbcTemplate,city); + String jobAddress = (String)params.get("jobAddress");//工作地址 + String jobType = SxjgUtil.getTypeList((String)params.get("jobType"),"/"); + String workAge = (String)params.get("workAge");//工作年限 + int workAge1 = SxjgUtil.getWordExpCode(workAge); + String jobNature = (String)params.get("jobNature");//职位属性 + //转换智联 + int jobNature1 = "实习".equals(jobNature) ? 4 : 2; + BigDecimal maxSalary = new BigDecimal((String)params.get("maxSalary"));//最大月薪 + BigDecimal minSalary = new BigDecimal((String)params.get("minSalary"));//最小月薪 + long maxSalary1 =maxSalary.multiply(new BigDecimal(1000)).longValue(); + long minSalary1 =minSalary.multiply(new BigDecimal(1000)).longValue(); + maxSalary1 = maxSalary1>210000l ? 210000l :maxSalary1; + minSalary1 = minSalary1>210000l ? 210000l :minSalary1; + String monthsalary1 = (String)params.get("monthsalary");//招聘人数 + int monthsalary = Double.valueOf(monthsalary1).intValue(); + monthsalary = monthsalary >22 ? 22 : monthsalary; + monthsalary = monthsalary <12 ? 12 : monthsalary; + String jobDescription = (String)params.get("jobDescription");//职位描述 + JSONObject jsonObject = new JSONObject(); + jsonObject.put("jobName",jobTitle); + jsonObject.put("deptId",companyId1); + jsonObject.put("jobNumber",id); + jsonObject.put("enrollmentPlaces",quantity); + jsonObject.put("eduRecord",education1); + jsonObject.put("cityCode",cityId); + jsonObject.put("address",jobAddress); + jsonObject.put("positionType",jobType); + jsonObject.put("workYear",workAge1); + jsonObject.put("employmentType",jobNature1); + jsonObject.put("salaryMin",minSalary1); + jsonObject.put("salaryMax",maxSalary1); + jsonObject.put("salaryMonth",monthsalary); + jsonObject.put("jobDescription",jobDescription); + String rs = SxjgUtil.doJsonPostSz(this.getJobaddurl(),this.getAppid(),this.getAppReferer(),this.getToken(),jsonObject.toJSONString(),jdbcTemplate); + if(SxjgUtil.isSuccessSz(rs)) { + if(isAdd) { + log.error("jobnumber:"+ZLID); + //更新zlzwid 社招不反jobnumber,固定写值,用来判断岗位是否已经新增 + SxjgUtil.updateZhilianId(id,"szylu",jdbcTemplate); + } + }else { + throw new Exception("职位新增接口异常!"); + } + } + + public String getToken() { + return token; + } + + public void setToken(String token) { + this.token = token; + } + + public String getAppReferer() { + return appReferer; + } + + public void setAppReferer(String appReferer) { + this.appReferer = appReferer; + } + + public String getJobaddurl() { + return jobaddurl; + } + + public void setJobaddurl(String jobaddurl) { + this.jobaddurl = jobaddurl; + } + + public String getJobsave() { + return jobsave; + } + + public void setJobsave(String jobsave) { + this.jobsave = jobsave; + } + + public String getAppid() { + return appid; + } + + public void setAppid(String appid) { + this.appid = appid; + } + + public String getListpageurl() { + return listpageurl; + } + + public void setListpageurl(String listpageurl) { + this.listpageurl = listpageurl; + } + + public String getResumedetailsurl() { + return resumedetailsurl; + } + + public void setResumedetailsurl(String resumedetailsurl) { + this.resumedetailsurl = resumedetailsurl; + } + + public String getTenantKey() { + return tenantKey; + } + + public void setTenantKey(String tenantKey) { + this.tenantKey = tenantKey; + } + + public String getManagerId() { + return managerId; + } + + public void setManagerId(String managerId) { + this.managerId = managerId; + } +} \ No newline at end of file diff --git a/e10dev/src/main/java/com/weaver/sxjg/esb/ExcelUtilHowe.java b/e10dev/src/main/java/com/weaver/sxjg/esb/ExcelUtilHowe.java new file mode 100644 index 0000000..32396ea --- /dev/null +++ b/e10dev/src/main/java/com/weaver/sxjg/esb/ExcelUtilHowe.java @@ -0,0 +1,104 @@ +//package com.weaver.sxjg.esb; +// +//import org.apache.poi.hssf.usermodel.HSSFWorkbook; +//import org.apache.poi.ss.usermodel.Cell; +//import org.apache.poi.ss.usermodel.Row; +//import org.apache.poi.ss.usermodel.Sheet; +//import org.apache.poi.ss.usermodel.Workbook; +//import org.apache.poi.xssf.usermodel.XSSFWorkbook; +//import org.junit.Test; +//import org.springframework.boot.jdbc.DataSourceBuilder; +//import org.springframework.jdbc.core.JdbcTemplate; +// +//import javax.sql.DataSource; +//import java.io.File; +//import java.io.FileInputStream; +//import java.io.InputStream; +//import java.math.BigDecimal; +//import java.math.BigInteger; +//import java.util.ArrayList; +//import java.util.List; +//import java.util.Map; +// +//public class ExcelUtilHowe { +// +// @Test +// public void test1() throws Exception { +// DataSource db = DataSourceBuilder.create().driverClassName("com.mysql.cj.jdbc.Driver").username("ecology").password("uxJhLJn4%NpWxujAYyKsTpxP").url("jdbc:mysql://10.70.11.12:3306/ec_weaver_authresp?characterEncoding=utf8&useSSL=false&autoReconnect=true&failOverReadOnly=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&allowMultiQueries=true").build(); +// JdbcTemplate jdbcTemplate = new JdbcTemplate(db); +// File f = new File("D:\\fanwei\\作业\\E10\\陕建\\E10招聘\\社招对接智联招聘\\字典附件-职位类别字典.xls"); +// List l = readExcel(f,jdbcTemplate); +// } +// //读取excel函数: +// public List readExcel(File file,JdbcTemplate jdbcTemplate) throws Exception { //读取excel函数 +// //获取文件名字 +// String fileName = file.getName(); +// //获取文件类型 +// String fileType = fileName.substring(fileName.lastIndexOf(".") + 1); +// System.out.println(" **** fileType:" + fileType); +// //获取输入流 +// InputStream stream = new FileInputStream(file); +// //获取工作薄 +// Workbook xssfWorkbook = null; +// if (fileType.equals("xls")) { +// xssfWorkbook = new HSSFWorkbook(stream); +// } else if (fileType.equals("xlsx")) { +// xssfWorkbook = new XSSFWorkbook(stream); +// } else { +// System.out.println("您输入的excel格式不正确"); +// } +// // TranTaskDao a = null; +// List aList = new ArrayList(); +// // Read the Sheet +// Sheet Sheet = xssfWorkbook.getSheetAt(0); +// // Read the Row 从0开始 +// for (int rowNum = 1; rowNum <= Sheet.getLastRowNum(); rowNum++) { +// Row Row = Sheet.getRow(rowNum); +// if (Row != null) { +// //判断这行记录是否存在 +// if (Row.getLastCellNum() < 1 || "".equals(Row.getCell(0))) { +// continue; +// } +// //获取每一行封装成对象 +// List rowList = new ArrayList(); +// System.out.println("1111111"); +// String value_key = ""; +// String name = ""; +// String parentvaluekey = ""; +// String level = ""; +// for(int colNum=0;colNum os = jdbcTemplate.queryForMap(sql); +// long numb = (long)os.get("numb"); +// numb = numb +1; +// +// if("-".equals(parentvaluekey)) { +// String sql2 = "INSERT INTO `ec_weaver_authresp`.`formdata_template_details`(`ID`, `TEMPLATE_ID`, `ORDER`, `NAME`, `PARENT_ID`, `IS_DELETE`, `CREATOR`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DETAILS_LEVEL`, `style_config`, `archive`, `def_option`, `extra`, `value_key`, `label_id`, `tenant_key`, `other`, `score`, `delete_type`) VALUES ("+numb+", 910080699339833344, 0, '"+name+"', NULL, '0', 894092486124650497, '2023-09-19 11:37:55', NULL, NULL, '"+level+"', '{}', 0, 0, NULL, '"+value_key+"', NULL, 'tl2qvzz346', 0, 0, 0)"; +// jdbcTemplate.execute(sql2); +// }else { +// String sql1 = "select id from formdata_template_details where value_key = '"+parentvaluekey+"' and template_id = 910080699339833344"; +// long parentid = (long) (jdbcTemplate.queryForMap(sql1).get("id")); +// String sql2 = "INSERT INTO `ec_weaver_authresp`.`formdata_template_details`(`ID`, `TEMPLATE_ID`, `ORDER`, `NAME`, `PARENT_ID`, `IS_DELETE`, `CREATOR`, `CREATE_TIME`, `UPDATE_USER`, `UPDATE_TIME`, `DETAILS_LEVEL`, `style_config`, `archive`, `def_option`, `extra`, `value_key`, `label_id`, `tenant_key`, `other`, `score`, `delete_type`) VALUES ("+numb+", 910080699339833344, 0, '"+name+"', "+parentid+", '0', 894092486124650497, '2023-09-19 11:37:55', NULL, NULL, '"+level+"', '{}', 0, 0, NULL, '"+value_key+"', NULL, 'tl2qvzz346', 0, 0, 0)"; +// jdbcTemplate.execute(sql2); +// } +// } +// } +// return aList; +// } +//} diff --git a/e10dev/src/main/java/com/weaver/sxjg/util/SxjgUtil.java b/e10dev/src/main/java/com/weaver/sxjg/util/SxjgUtil.java index b3d0799..b109377 100644 --- a/e10dev/src/main/java/com/weaver/sxjg/util/SxjgUtil.java +++ b/e10dev/src/main/java/com/weaver/sxjg/util/SxjgUtil.java @@ -20,6 +20,8 @@ import javax.crypto.*; import javax.crypto.spec.SecretKeySpec; import java.io.*; import java.math.BigDecimal; +import java.net.HttpURLConnection; +import java.net.URL; import java.security.InvalidKeyException; import java.security.NoSuchAlgorithmException; import java.text.SimpleDateFormat; @@ -72,6 +74,10 @@ public class SxjgUtil { return rt; } + /** + * 校招 + * 根据城市名称获取城市code + */ public static long getCityId(JdbcTemplate jdbcTemplate,String name){ String sql = "select count(id) as sums from zhilian_zidian where cnName like '%"+name+"%' and type='REGIONS' and attribute in ('CITY','DISTRICT')"; Map map = jdbcTemplate.queryForMap(sql); @@ -86,6 +92,24 @@ public class SxjgUtil { return code1; } + /** + * 社招 + * 根据城市名称获取城市code + */ + public static long getCityIdsz(JdbcTemplate jdbcTemplate,String name1){ + String sql = "select count(id) as sums from zhilian_zidiansz where name like '%"+name1+"%' and is_delete = '0' and type = 'city'"; + Map map = jdbcTemplate.queryForMap(sql); + long sums = (long)map.get("sums"); + if(sums==0l) { + return 512l;//其他 + } + sql = "select code from zhilian_zidiansz where name like '%"+name1+"%' and is_delete = '0' and type = 'city' limit 1"; + map = jdbcTemplate.queryForMap(sql); + String code = (String)map.get("code"); + long code1 = Long.parseLong(code); + return code1; + } + public static void updateToken(String at1,String rt1,JdbcTemplate jdbcTemplate,String orgCodes){ String sql = "select id from zhilian_token where orgcode = '"+orgCodes+"' limit 1"; Map map = jdbcTemplate.queryForMap(sql); @@ -94,6 +118,9 @@ public class SxjgUtil { jdbcTemplate.execute(updatesql); } + /** + * 校招 推送post接口,content-type:application/json + */ public static String doJsonPost(String url,String clientid,String json,JdbcTemplate jdbcTemplate,String orgcode) { log.error("智联接口"+url+",推送报文:>>>>>>>>>>>>>>>>>>>>>>"+json); CloseableHttpClient client = HttpClients.createDefault(); @@ -128,6 +155,78 @@ public class SxjgUtil { } /** + * 社招 推送post接口,content-type:application/json + */ + public static String doJsonPostSz(String url,String appId,String appReferer,String accessToken,String json,JdbcTemplate jdbcTemplate) { + log.error("智联接口"+url+",推送报文:>>>>>>>>>>>>>>>>>>>>>>"+json); + CloseableHttpClient client = HttpClients.createDefault(); + HttpPost post = new HttpPost(url); + post.setHeader("Content-Type", "application/json;charset=utf-8"); + post.setHeader("appId", appId); + post.setHeader("appReferer",appReferer); + post.setHeader("accessToken",accessToken); + String result=""; + try { + StringEntity s = new StringEntity(json,"UTF-8"); + s.setContentEncoding("utf-8"); + s.setContentType("application/json"); + post.setEntity(s); + // 发送请求 + HttpResponse httpResponse = client.execute(post); + // 获取响应输入流 + InputStream inStream = httpResponse.getEntity().getContent(); + BufferedReader reader = new BufferedReader(new InputStreamReader( + inStream,"utf-8")); + StringBuilder strber = new StringBuilder(); + String line; + while ((line = reader.readLine()) != null) + strber.append(line + "\n"); + inStream.close(); + result = strber.toString(); + log.error("智联接口"+url+",返回值:>>>>>>>>>>>>>>>>>>>>>>"+result); + } catch (Exception e) { + log.error("智联接口"+url+",返回值:>>>>>>>>>>>>>>>>>>>>>>"+e.getMessage()); + e.printStackTrace(); + } + return result; + } + + /** + * 社招 get推送接口 + */ + public static String getMethodForsz(String urls,String appId,String appReferer,String accessToken,String id) { + try { + urls = urls+"?id="+id; + // 1. 创建URL对象 + URL url = new URL(urls); + HttpURLConnection connection = (HttpURLConnection) url.openConnection(); + // 3. 设置请求方法 + connection.setRequestMethod("GET"); + // 4. 设置Header + connection.setRequestProperty("Content-Type", "application/json;charset=UTF-8"); + connection.setRequestProperty("appId", appId); + connection.setRequestProperty("appReferer", appReferer); + connection.setRequestProperty("accessToken", accessToken); + // 5. 发送请求 + int responseCode = connection.getResponseCode(); + // 6. 处理响应 + BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream())); + String response; + StringBuilder responseBuilder = new StringBuilder(); + while ((response = reader.readLine()) != null) { + responseBuilder.append(response); + } + reader.close(); + String responseBody = responseBuilder.toString(); + return responseBody; + } catch (IOException e) { + e.printStackTrace(); + } + return ""; + } + + /** + * 校招 * 智联字典 [{"attribute":"11","cnName":"博士","code":"1","enName":"Doctor","parentCode":"0","pyName":"boshi"},{"attribute":"8","cnName":"硕士","code":"3","enName":"Master","parentCode":"0","pyName":"shuoshi"},{"attribute":"7","cnName":"本科","code":"4","enName":"Bachelor","parentCode":"0","pyName":"benke"},{"attribute":"5","cnName":"大专","code":"5","enName":"Associate","parentCode":"0","pyName":"dazhuan"},{"attribute":"3","cnName":"高中","code":"7","enName":" Senior High","parentCode":"0","pyName":"gaozhong"},{"attribute":"1","cnName":"初中及以下","code":"9","enName":"junior high","parentCode":"0","pyName":"chuzhongjiyixia"},{"attribute":"9","cnName":"MBA/EMBA","code":"10","enName":"MBA/EMBA","parentCode":"0","pyName":"MBA/EMBA"},{"attribute":"4","cnName":"中专/中技","code":"12","enName":"Secondary Specialized/Skilled Workers Training","parentCode":"0","pyName":"zhongzhuan/zhongji"}] */ public static int getEducode(String name) { @@ -165,6 +264,45 @@ public class SxjgUtil { } /** + * 社招 + * 智联字典 [{"attribute":"11","cnName":"博士","code":"1","enName":"Doctor","parentCode":"0","pyName":"boshi"},{"attribute":"8","cnName":"硕士","code":"3","enName":"Master","parentCode":"0","pyName":"shuoshi"},{"attribute":"7","cnName":"本科","code":"4","enName":"Bachelor","parentCode":"0","pyName":"benke"},{"attribute":"5","cnName":"大专","code":"5","enName":"Associate","parentCode":"0","pyName":"dazhuan"},{"attribute":"3","cnName":"高中","code":"7","enName":" Senior High","parentCode":"0","pyName":"gaozhong"},{"attribute":"1","cnName":"初中及以下","code":"9","enName":"junior high","parentCode":"0","pyName":"chuzhongjiyixia"},{"attribute":"9","cnName":"MBA/EMBA","code":"10","enName":"MBA/EMBA","parentCode":"0","pyName":"MBA/EMBA"},{"attribute":"4","cnName":"中专/中技","code":"12","enName":"Secondary Specialized/Skilled Workers Training","parentCode":"0","pyName":"zhongzhuan/zhongji"}] + */ + public static int getEducodesz(String name) { + if("不限".equals(name)) { + return -1;//初中及以下 + } + if("初中及以下".equals(name)) { + return 9; + } + if("中专/中技".equals(name)) { + return 13; + } + if("高中".equals(name)) { + return 7; + } + if("大专".equals(name)) { + return 5; + } + if("本科".equals(name)) { + return 4; + } + if("硕士".equals(name)) { + return 3; + } + if("博士".equals(name)) { + return 1; + } + if("MBA".equals(name)) { + return 10; + } + if("其他".equals(name)) { + return 8; + } + return 8; + } + + /** + * 校招,社招 * 智联字典:[{"cnName":"无经验","code":"0000","enName":"No experience","parentCode":"0","pyName":"wujingyan"},{"cnName":"1年以下","code":"0001","enName":"Below 1 Year","parentCode":"0","pyName":"nianyixia"},{"cnName":"1-3年","code":"0103","enName":"1-3 Year","parentCode":"0","pyName":"nian"},{"cnName":"3-5年","code":"0305","enName":"3-5 Year","parentCode":"0","pyName":"nian"},{"cnName":"5-10年","code":"0510","enName":"5-10 Year","parentCode":"0","pyName":"nian"},{"cnName":"10年以上","code":"1099","enName":"Above 10 Year","parentCode":"0","pyName":"nianyishang"}] */ public static int getWordExpCode(String name){ @@ -215,6 +353,11 @@ public class SxjgUtil { JSONObject r1 = JSONObject.parseObject(s); return "成功".equals(r1.getString("message")) ? true : false; } + public static boolean isSuccessSz(String s) { + if(s.length()==0)return false; + JSONObject r1 = JSONObject.parseObject(s); + return r1.getBoolean("success"); + } public static void updateZhilianId(String id1,String zwid1,JdbcTemplate jdbcTemplate) { String sql = "update uf_rcrt_position set zlzwid = '"+zwid1+"' where id = "+id1; @@ -227,8 +370,17 @@ public class SxjgUtil { return Long.parseLong(rs); } + public static String getTypeList(String str,String spe) { + String[] res = str.split(spe); + String s = "[\""+res[0]+"\",\""+res[1]+"\",\""+res[2]+"\"]"; + return s; + } + /** + * 校招 + * 获取jobnumber + */ public static String getJobNumber(String id1, JdbcTemplate jdbcTemplate) { - String sql = "select zlzwid from uf_rcrt_position where id = "+id1; + String sql = "select zlzwid from uf_rcrt_position where recruit_type = '840768530055184391' and id = "+id1; try { Map rs = jdbcTemplate.queryForMap(sql); if(rs.get("zlzwid")==null) { @@ -241,6 +393,26 @@ public class SxjgUtil { } } + /** + * 社招 + * 获取jobnumber + */ + public static String getJobNumbersz(String id1, JdbcTemplate jdbcTemplate) { + String sql = "select zlzwid from uf_rcrt_position where recruit_type = '840768530055184389' and id = "+id1; + try { + Map rs = jdbcTemplate.queryForMap(sql); + if(rs.get("zlzwid")==null) { + return ""; + } + String jobNumber = (String)rs.get("zlzwid"); + return jobNumber; + }catch (Exception e){ + return ""; + } + } + /** + * 校招:根据组织获取智联对应机构编码 + */ public static String getZlbh(String orgcode,JdbcTemplate jdbcTemplate) { String sql = "select zlbh from uf_rcrt_zhilianzh where ssfb = '"+orgcode+"' and IS_DELETE = 0 and qyzt = '1' limit 1"; try { @@ -251,7 +423,24 @@ public class SxjgUtil { return ""; } } - + /** + * 社招:根据组织获取智联对应机构编码 + */ + public static String getZlbhSz(String orgcode,JdbcTemplate jdbcTemplate) { + String sql = "select zljgbh from uf_rcrt_zhiliansz where ssfb = '"+orgcode+"' and IS_DELETE = 0 and qyzt = '1' limit 1"; + try { + Map rs = jdbcTemplate.queryForMap(sql); + String zljgbh = (String)rs.get("zljgbh"); + return zljgbh; + }catch (Exception e){ + e.printStackTrace(); + return ""; + } + } + /** + * 校招 + * 解密详情 + */ public static String decrypt(String secretKey, String content) { byte[] code = Base64.getDecoder().decode(content); try { @@ -278,8 +467,23 @@ public class SxjgUtil { jdbcTemplate.execute(sql); } + /** + * 校招 + * 获取简历发布列表 + * 840768530055184391校园招聘 + */ public static List> getZlTblist(JdbcTemplate jdbcTemplate) { - String sql = "select id,zlzwid,sub_company,jobsyctime from uf_rcrt_position where zlzwid is not null and sfyfbzl = '1'"; + String sql = "select id,zlzwid,sub_company,jobsyctime from uf_rcrt_position where zlzwid is not null and sfyfbzl = '1' and recruit_type = '840768530055184391'"; + List> rs = jdbcTemplate.queryForList(sql); + return rs; + } + /** + * 社招 + * 获取简历发布列表 + * 840768530055184389 社会招聘 + */ + public static List> getZlTblistsz(JdbcTemplate jdbcTemplate) { + String sql = "select id,zlzwid,sub_company,jobsyctime from uf_rcrt_position where zlzwid is not null and sfyfbzl = '1' and recruit_type = '840768530055184389'"; List> rs = jdbcTemplate.queryForList(sql); return rs; } @@ -309,6 +513,25 @@ public class SxjgUtil { } } + /** + * 如果当前时间大于上一次时间6天,则返回上一次时间的6天后 + */ + public static Date sixDaylater(Date pre,Date now) { + SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + long time2 = pre.getTime(); + long time1 = now.getTime(); + long diff = Math.abs(time1 - time2); + long days = 24 * 60 * 60 * 1000 * 6; + if(diff > days){ + Calendar calendar = Calendar.getInstance(); + calendar.setTime(pre); + calendar.add(Calendar.DAY_OF_MONTH, 6); + Date date = calendar.getTime(); + return date; + }else { + return now; + } + } public static String getTimeStrByDate(Date date,String formate) { SimpleDateFormat sdf2 = new SimpleDateFormat(formate); String strDate2 = sdf2.format(date); @@ -331,4 +554,5 @@ public class SxjgUtil { long sums = (long)rs.get("nums"); return sums>0l; } + } diff --git a/e10dev/src/main/resources/config/sxjg.properties b/e10dev/src/main/resources/config/sxjg.properties index f4afc2a..7eec181 100644 --- a/e10dev/src/main/resources/config/sxjg.properties +++ b/e10dev/src/main/resources/config/sxjg.properties @@ -4,14 +4,31 @@ message.Pwd=8EB31B message.url=https://sdk3.028lk.com:9988/BatchSend2.aspx message.qm=陕西建工集团 -#对接智联招聘 +#陕建配置信息 +#租户key +tenantKey=tl2qvzz346 +#管理员ID(张志东) +managerid=891584027606974465 + +#对接智联招聘(校招) sxjg.refreshtokenurl=https://passport.zhaopin.com/oauth2/refresh sxjg.client_id=qhtckatltjpqirtdfnsppqbupiawbsxx sxjg.client_secret=f84143451273b860f3bfe5a5e94dc25f +sxjg.secretkey=6rd5K2zbmk6B83r9dPn8lA== sxjg.dicturl=https://api.zhaopin.com/api/basedata/dicList?scene=scdr&version=1.0.0 sxjg.jobadd=https://api.zhaopin.com/api/job/create?scene=scdr&version=1.0.0 sxjg.jobupdate=https://api.zhaopin.com/api/job/update?scene=scdr&version=1.0.0 sxjg.jobpublish=https://api.zhaopin.com/api/job/publish?scene=scdr&version=1.0.0 sxjg.joboffline=https://api.zhaopin.com/api/job/offline?scene=scdr&version=1.0.0 sxjg.wslburl=https://api.zhaopin.com/api/resume/list?scene=scdr&version=1.0.0 -sxjg.wslbxqurl=https://api.zhaopin.com/api/resume/secretDetail?scene=scdr&version=1.0.0 \ No newline at end of file +sxjg.wslbxqurl=https://api.zhaopin.com/api/resume/secretDetail?scene=scdr&version=1.0.0 +sxjg.annexurl=https://api.zhaopin.com/api/resume/getResumeAnnex?scene=scdr&version=1.0.0 + +#对接智联招聘(社招) +sxjgsz.appid=ddfe4ed897a55342306e76cf7861f78f +sxjgsz.token=36fc45dcA6A440d79EE144Eb29f5b4db641E506dd72A46008673d1cd05775d32 +sxjgsz.appReferer=https://sxjgjt2023.zhaopin.com +sxjgsz.jobadd=https://zkapi.zhaopin.com/openapi/ats/job/save +sxjgsz.jobsave=https://zkapi.zhaopin.com/openapi/ats/job/batchUpdateStatus +sxjgsz.listpageurl=https://zkapi.zhaopin.com/openapi/ats/applyInfo/listPage +sxjgsz.listpagedetail=https://zkapi.zhaopin.com/openapi/ats/applyInfo/detail \ No newline at end of file