From b6909387461cb95edd00cc688f7aef8b67ac32b1 Mon Sep 17 00:00:00 2001 From: howec <> Date: Thu, 12 Oct 2023 17:19:34 +0800 Subject: [PATCH] =?UTF-8?q?=E6=99=BA=E8=81=94=E6=8B=9B=E8=81=98=E6=A0=A1?= =?UTF-8?q?=E6=8B=9B=E5=AF=B9=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/weaver/recruit/entity/RecruitAwardExpObj.java | 106 ++ .../java/com/weaver/recruit/entity/RecruitEduExpObj.java | 140 ++ .../java/com/weaver/recruit/entity/RecruitFileObj.java | 49 + .../java/com/weaver/recruit/entity/RecruitJtgxObj.java | 93 ++ .../com/weaver/recruit/entity/RecruitLanguageSkillObj.java | 49 + .../com/weaver/recruit/entity/RecruitProjectExpObj.java | 81 ++ .../java/com/weaver/recruit/entity/RecruitSxjlObj.java | 82 ++ .../java/com/weaver/recruit/entity/RecruitTalentObj.java | 622 +++++++++ .../java/com/weaver/recruit/entity/RecruitWorkExpObj.java | 104 ++ .../main/java/com/weaver/recruit/enums/AbilityEnum.java | 40 + .../main/java/com/weaver/recruit/enums/BooleanEnum.java | 38 + .../main/java/com/weaver/recruit/enums/CadreNameEnum.java | 46 + .../main/java/com/weaver/recruit/enums/CadreRankEnum.java | 41 + .../java/com/weaver/recruit/enums/CertificateTypeEnum.java | 38 + .../src/main/java/com/weaver/recruit/enums/DegreeEnum.java | 43 + .../java/com/weaver/recruit/enums/EducationTypeEnum.java | 44 + .../java/com/weaver/recruit/enums/EnglishLevelEnum.java | 41 + .../main/java/com/weaver/recruit/enums/FdDegreeEnum.java | 43 + .../main/java/com/weaver/recruit/enums/HdDegreeEnum.java | 45 + .../src/main/java/com/weaver/recruit/enums/HealthEnum.java | 38 + .../java/com/weaver/recruit/enums/MaritalStatusEnum.java | 40 + .../java/com/weaver/recruit/enums/PoliticsStatusEnum.java | 41 + .../main/java/com/weaver/recruit/enums/ResumeTypeEnum.java | 38 + .../main/java/com/weaver/recruit/enums/WorkTypeEnum.java | 39 + .../weaver/recruit/rest/RecruitCandidateRemoteService.java | 15 + .../java/com/weaver/sxjg/config/EbDbDataSourceConfig.java | 70 + .../java/com/weaver/sxjg/esb/EsbRpcPositionZhilian.java | 1123 +++++++++++++++++ .../java/com/weaver/sxjg/esb/EsbRpcPositionZhilianSz.java | 642 ++++++++++ .../main/java/com/weaver/sxjg/esb/EsbRpcRemoteSendDx.java | 128 ++ .../src/main/java/com/weaver/sxjg/esb/ExcelUtilHowe.java | 104 ++ .../main/java/com/weaver/sxjg/util/ContentTypeUtil.java | 402 ++++++ .../src/main/java/com/weaver/sxjg/util/SxjgUtil.java | 658 ++++++++++ .../src/main/resources/config/sxjg.properties | 34 + 33 files changed, 5117 insertions(+) create mode 100644 陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/entity/RecruitAwardExpObj.java create mode 100644 陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/entity/RecruitEduExpObj.java create mode 100644 陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/entity/RecruitFileObj.java create mode 100644 陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/entity/RecruitJtgxObj.java create mode 100644 陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/entity/RecruitLanguageSkillObj.java create mode 100644 陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/entity/RecruitProjectExpObj.java create mode 100644 陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/entity/RecruitSxjlObj.java create mode 100644 陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/entity/RecruitTalentObj.java create mode 100644 陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/entity/RecruitWorkExpObj.java create mode 100644 陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/enums/AbilityEnum.java create mode 100644 陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/enums/BooleanEnum.java create mode 100644 陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/enums/CadreNameEnum.java create mode 100644 陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/enums/CadreRankEnum.java create mode 100644 陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/enums/CertificateTypeEnum.java create mode 100644 陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/enums/DegreeEnum.java create mode 100644 陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/enums/EducationTypeEnum.java create mode 100644 陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/enums/EnglishLevelEnum.java create mode 100644 陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/enums/FdDegreeEnum.java create mode 100644 陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/enums/HdDegreeEnum.java create mode 100644 陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/enums/HealthEnum.java create mode 100644 陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/enums/MaritalStatusEnum.java create mode 100644 陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/enums/PoliticsStatusEnum.java create mode 100644 陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/enums/ResumeTypeEnum.java create mode 100644 陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/enums/WorkTypeEnum.java create mode 100644 陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/rest/RecruitCandidateRemoteService.java create mode 100644 陕建智联对接和短信对接源码/src/main/java/com/weaver/sxjg/config/EbDbDataSourceConfig.java create mode 100644 陕建智联对接和短信对接源码/src/main/java/com/weaver/sxjg/esb/EsbRpcPositionZhilian.java create mode 100644 陕建智联对接和短信对接源码/src/main/java/com/weaver/sxjg/esb/EsbRpcPositionZhilianSz.java create mode 100644 陕建智联对接和短信对接源码/src/main/java/com/weaver/sxjg/esb/EsbRpcRemoteSendDx.java create mode 100644 陕建智联对接和短信对接源码/src/main/java/com/weaver/sxjg/esb/ExcelUtilHowe.java create mode 100644 陕建智联对接和短信对接源码/src/main/java/com/weaver/sxjg/util/ContentTypeUtil.java create mode 100644 陕建智联对接和短信对接源码/src/main/java/com/weaver/sxjg/util/SxjgUtil.java create mode 100644 陕建智联对接和短信对接源码/src/main/resources/config/sxjg.properties diff --git a/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/entity/RecruitAwardExpObj.java b/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/entity/RecruitAwardExpObj.java new file mode 100644 index 0000000..28aef7a --- /dev/null +++ b/陕建智联对接和短信对接源码/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/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/entity/RecruitEduExpObj.java b/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/entity/RecruitEduExpObj.java new file mode 100644 index 0000000..c051fc0 --- /dev/null +++ b/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/entity/RecruitEduExpObj.java @@ -0,0 +1,140 @@ +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; + //博士研究生、MBA、硕士研究生、大学本科、大学专科、中专/技校/职高、高中、初中及以下 + //学历(给中文):本科,硕士,博士,大专,高中,中专/中技,初中及以下,其他,不限 + @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/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/entity/RecruitFileObj.java b/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/entity/RecruitFileObj.java new file mode 100644 index 0000000..6746429 --- /dev/null +++ b/陕建智联对接和短信对接源码/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/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/entity/RecruitJtgxObj.java b/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/entity/RecruitJtgxObj.java new file mode 100644 index 0000000..94167eb --- /dev/null +++ b/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/entity/RecruitJtgxObj.java @@ -0,0 +1,93 @@ +package com.weaver.recruit.entity; + +import com.weaver.recruit.enums.PoliticsStatusEnum; +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; + //年龄:数字,非纯数字请转换或不填 + @ApiModelProperty("年龄") + private String relativesAge; + //亲属职位 + @ApiModelProperty("联系电话") + private String relativesPhone; + //政治面貌 + @ApiModelProperty("政治面貌") + private PoliticsStatusEnum relativesPolitics; + + 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; + } + + public String getRelativesAge() { + return relativesAge; + } + + public void setRelativesAge(String relativesAge) { + this.relativesAge = relativesAge; + } + + public String getRelativesPhone() { + return relativesPhone; + } + + public void setRelativesPhone(String relativesPhone) { + this.relativesPhone = relativesPhone; + } + + public PoliticsStatusEnum getRelativesPolitics() { + return relativesPolitics; + } + + public void setRelativesPolitics(PoliticsStatusEnum relativesPolitics) { + this.relativesPolitics = relativesPolitics; + } +} diff --git a/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/entity/RecruitLanguageSkillObj.java b/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/entity/RecruitLanguageSkillObj.java new file mode 100644 index 0000000..a89f8cc --- /dev/null +++ b/陕建智联对接和短信对接源码/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/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/entity/RecruitProjectExpObj.java b/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/entity/RecruitProjectExpObj.java new file mode 100644 index 0000000..a4c0e97 --- /dev/null +++ b/陕建智联对接和短信对接源码/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/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/entity/RecruitSxjlObj.java b/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/entity/RecruitSxjlObj.java new file mode 100644 index 0000000..f3edd98 --- /dev/null +++ b/陕建智联对接和短信对接源码/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/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/entity/RecruitTalentObj.java b/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/entity/RecruitTalentObj.java new file mode 100644 index 0000000..4f12e81 --- /dev/null +++ b/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/entity/RecruitTalentObj.java @@ -0,0 +1,622 @@ +package com.weaver.recruit.entity; + +import com.weaver.recruit.enums.*; +import io.swagger.annotations.ApiModelProperty; + +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 String positionId; + //第一学历 + @ApiModelProperty("第一学历") + private FdDegreeEnum firstDegree; + //第一学历毕业时间:yyyy-MM-dd + @ApiModelProperty("第一学历毕业时间") + private String fdGraduationTime; + //第一学历是否全日制 + @ApiModelProperty("第一学历是否全日制") + private BooleanEnum fdFullTime; + //第一学历毕业院校 + @ApiModelProperty("第一学历毕业院校") + private String fdCollege; + //第一学历专业 + @ApiModelProperty("第一学历专业") + private String fdMajor; + //最高学历 + @ApiModelProperty("最高学历") + private HdDegreeEnum highestDegreeNew; + //最高学历毕业时间:yyyy-MM-dd + @ApiModelProperty("最高学历毕业时间") + private String hdGraduationTime; + //最高学历是否全日制 + @ApiModelProperty("最高学历是否全日制") + private BooleanEnum hdFullTime; + //最高学历毕业院校 + @ApiModelProperty("最高学历毕业院校") + private String hdCollege; + //最高学历专业 + @ApiModelProperty("最高学历专业") + private String hdMajor; + //工作经历 + @ApiModelProperty("工作经历") + private List recruitWorkExpObjList; + //教育背景 + @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 String avatar; + //原始简历附件 + @ApiModelProperty("原始简历附件") + private String originalResume; + //参加工作日期:yyyy-MM-dd + @ApiModelProperty("参加工作日期") + private String joinworkdate; + //现工作单位 + @ApiModelProperty("现工作单位") + private String currentUnit; + //当前职位 + @ApiModelProperty("当前职位") + private String currentPosition; + //职称 + @ApiModelProperty("职称") + private String jobTitle; + //职称专业 + @ApiModelProperty("职称专业") + private String jobMajor; + //职业资格 + @ApiModelProperty("职业资格") + private String jobQualifications; + //出生地 + @ApiModelProperty("出生地") + private String csaddress; + //主要工作业绩 + @ApiModelProperty("主要工作业绩") + private String mainPerformance; + //民族:选项模板的value + @ApiModelProperty("民族") + private String nation; + //批次ID + @ApiModelProperty("批次ID") + private String batchId; + + 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 String getPositionId() { + return positionId; + } + + public void setPositionId(String positionId) { + this.positionId = positionId; + } + + public FdDegreeEnum getFirstDegree() { + return firstDegree; + } + + public void setFirstDegree(FdDegreeEnum firstDegree) { + this.firstDegree = firstDegree; + } + + public String getFdGraduationTime() { + return fdGraduationTime; + } + + public void setFdGraduationTime(String fdGraduationTime) { + this.fdGraduationTime = fdGraduationTime; + } + + public BooleanEnum getFdFullTime() { + return fdFullTime; + } + + public void setFdFullTime(BooleanEnum fdFullTime) { + this.fdFullTime = fdFullTime; + } + + public String getFdCollege() { + return fdCollege; + } + + public void setFdCollege(String fdCollege) { + this.fdCollege = fdCollege; + } + + public String getFdMajor() { + return fdMajor; + } + + public void setFdMajor(String fdMajor) { + this.fdMajor = fdMajor; + } + + public HdDegreeEnum getHighestDegreeNew() { + return highestDegreeNew; + } + + public void setHighestDegreeNew(HdDegreeEnum highestDegreeNew) { + this.highestDegreeNew = highestDegreeNew; + } + + public String getHdGraduationTime() { + return hdGraduationTime; + } + + public void setHdGraduationTime(String hdGraduationTime) { + this.hdGraduationTime = hdGraduationTime; + } + + public BooleanEnum getHdFullTime() { + return hdFullTime; + } + + public void setHdFullTime(BooleanEnum hdFullTime) { + this.hdFullTime = hdFullTime; + } + + public String getHdCollege() { + return hdCollege; + } + + public void setHdCollege(String hdCollege) { + this.hdCollege = hdCollege; + } + + public String getHdMajor() { + return hdMajor; + } + + public void setHdMajor(String hdMajor) { + this.hdMajor = hdMajor; + } + + public List getRecruitWorkExpObjList() { + return recruitWorkExpObjList; + } + + public void setRecruitWorkExpObjList(List recruitWorkExpObjList) { + this.recruitWorkExpObjList = recruitWorkExpObjList; + } + + 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 String getAvatar() { + return avatar; + } + + public void setAvatar(String avatar) { + this.avatar = avatar; + } + + public String getOriginalResume() { + return originalResume; + } + + public void setOriginalResume(String originalResume) { + this.originalResume = originalResume; + } + + public String getJoinworkdate() { + return joinworkdate; + } + + public void setJoinworkdate(String joinworkdate) { + this.joinworkdate = joinworkdate; + } + + public String getCurrentUnit() { + return currentUnit; + } + + public void setCurrentUnit(String currentUnit) { + this.currentUnit = currentUnit; + } + + public String getCurrentPosition() { + return currentPosition; + } + + public void setCurrentPosition(String currentPosition) { + this.currentPosition = currentPosition; + } + + public String getJobTitle() { + return jobTitle; + } + + public void setJobTitle(String jobTitle) { + this.jobTitle = jobTitle; + } + + public String getJobMajor() { + return jobMajor; + } + + public void setJobMajor(String jobMajor) { + this.jobMajor = jobMajor; + } + + public String getJobQualifications() { + return jobQualifications; + } + + public void setJobQualifications(String jobQualifications) { + this.jobQualifications = jobQualifications; + } + + public String getCsaddress() { + return csaddress; + } + + public void setCsaddress(String csaddress) { + this.csaddress = csaddress; + } + + public String getMainPerformance() { + return mainPerformance; + } + + public void setMainPerformance(String mainPerformance) { + this.mainPerformance = mainPerformance; + } + + public String getNation() { + return nation; + } + + public void setNation(String nation) { + this.nation = nation; + } + + public String getBatchId() { + return batchId; + } + + public void setBatchId(String batchId) { + this.batchId = batchId; + } +} diff --git a/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/entity/RecruitWorkExpObj.java b/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/entity/RecruitWorkExpObj.java new file mode 100644 index 0000000..22040c2 --- /dev/null +++ b/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/entity/RecruitWorkExpObj.java @@ -0,0 +1,104 @@ +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/26 + * @description: + */ +public class RecruitWorkExpObj implements Serializable { + private static final long serialVersionUID = -5683061033444439683L; + + //公司名称 + @ApiModelProperty("公司名称") + private String coName; + //入职日期:yyyy-MM-dd + @ApiModelProperty("入职日期") + private String startEndDate0; + //离职日期:yyyy-MM-dd + @ApiModelProperty("离职日期") + private String startEndDate1; + //工作类型:0-全职,1-兼职,2-实习 + @ApiModelProperty("工作类型") + private WorkTypeEnum workType; + //部门 + @ApiModelProperty("部门") + private String workDept; + //职务 + @ApiModelProperty("职务") + private String workPosition; + //工作描述 + @ApiModelProperty("工作描述") + private String workDesc; + //主要工作业绩 + @ApiModelProperty("主要工作业绩") + private String mainPerformance; + + public String getCoName() { + return coName; + } + + public void setCoName(String coName) { + this.coName = coName; + } + + public String getStartEndDate0() { + return startEndDate0; + } + + public void setStartEndDate0(String startEndDate0) { + this.startEndDate0 = startEndDate0; + } + + public String getStartEndDate1() { + return startEndDate1; + } + + public void setStartEndDate1(String startEndDate1) { + this.startEndDate1 = startEndDate1; + } + + public WorkTypeEnum getWorkType() { + return workType; + } + + public void setWorkType(WorkTypeEnum workType) { + this.workType = workType; + } + + public String getWorkDept() { + return workDept; + } + + public void setWorkDept(String workDept) { + this.workDept = workDept; + } + + public String getWorkPosition() { + return workPosition; + } + + public void setWorkPosition(String workPosition) { + this.workPosition = workPosition; + } + + public String getWorkDesc() { + return workDesc; + } + + public void setWorkDesc(String workDesc) { + this.workDesc = workDesc; + } + + public String getMainPerformance() { + return mainPerformance; + } + + public void setMainPerformance(String mainPerformance) { + this.mainPerformance = mainPerformance; + } +} diff --git a/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/enums/AbilityEnum.java b/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/enums/AbilityEnum.java new file mode 100644 index 0000000..79e41f5 --- /dev/null +++ b/陕建智联对接和短信对接源码/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/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/enums/BooleanEnum.java b/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/enums/BooleanEnum.java new file mode 100644 index 0000000..6118917 --- /dev/null +++ b/陕建智联对接和短信对接源码/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/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/enums/CadreNameEnum.java b/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/enums/CadreNameEnum.java new file mode 100644 index 0000000..5565e30 --- /dev/null +++ b/陕建智联对接和短信对接源码/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/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/enums/CadreRankEnum.java b/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/enums/CadreRankEnum.java new file mode 100644 index 0000000..c2973e5 --- /dev/null +++ b/陕建智联对接和短信对接源码/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/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/enums/CertificateTypeEnum.java b/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/enums/CertificateTypeEnum.java new file mode 100644 index 0000000..b270e45 --- /dev/null +++ b/陕建智联对接和短信对接源码/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/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/enums/DegreeEnum.java b/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/enums/DegreeEnum.java new file mode 100644 index 0000000..ca16da3 --- /dev/null +++ b/陕建智联对接和短信对接源码/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/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/enums/EducationTypeEnum.java b/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/enums/EducationTypeEnum.java new file mode 100644 index 0000000..51967ac --- /dev/null +++ b/陕建智联对接和短信对接源码/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/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/enums/EnglishLevelEnum.java b/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/enums/EnglishLevelEnum.java new file mode 100644 index 0000000..368eaa9 --- /dev/null +++ b/陕建智联对接和短信对接源码/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/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/enums/FdDegreeEnum.java b/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/enums/FdDegreeEnum.java new file mode 100644 index 0000000..031d6aa --- /dev/null +++ b/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/enums/FdDegreeEnum.java @@ -0,0 +1,43 @@ +package com.weaver.recruit.enums; + +/** + * @author: YH + * @createDate: 2023/9/20 + * @description: + */ +public enum FdDegreeEnum { + BSYJS("0", "博士研究生"), + MBA("1", "MBA"), + DXBK("2", "大学本科"), + DXZK("3", "大学专科"), + ZZ("4", "中专/技校/职高"), + GZ("5", "高中"), + CZ("6", "初中"); + + private final String Key; + + private final String Name; + + FdDegreeEnum(String key, String name) { + Key = key; + Name = name; + } + + public String getKey() { + return Key; + } + + public String getName() { + return Name; + } + + public static FdDegreeEnum getByName(String name) { + FdDegreeEnum[] selcTypes = values(); + for (FdDegreeEnum selcType : selcTypes) { + if (selcType.getName().equals(name)) { + return selcType; + } + } + return null; + } +} diff --git a/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/enums/HdDegreeEnum.java b/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/enums/HdDegreeEnum.java new file mode 100644 index 0000000..3f47cfe --- /dev/null +++ b/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/enums/HdDegreeEnum.java @@ -0,0 +1,45 @@ +package com.weaver.recruit.enums; + +/** + * @author: YH + * @createDate: 2023/9/20 + * @description: + */ +public enum HdDegreeEnum { + BSYJS("0", "博士研究生"), + MBA("1", "MBA"), + SSYJS("2", "硕士研究生"), + DXBK("3", "大学本科"), + DXZK("4", "大学专科"), + ZZ("5", "中专/技校/职高"), + GZ("6", "高中"), + CZ("7", "初中"), + QT("8", "其他"); + + private final String Key; + + private final String Name; + + HdDegreeEnum(String key, String name) { + Key = key; + Name = name; + } + + public String getKey() { + return Key; + } + + public String getName() { + return Name; + } + + public static HdDegreeEnum getByName(String name) { + HdDegreeEnum[] selcTypes = values(); + for (HdDegreeEnum selcType : selcTypes) { + if (selcType.getName().equals(name)) { + return selcType; + } + } + return null; + } +} diff --git a/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/enums/HealthEnum.java b/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/enums/HealthEnum.java new file mode 100644 index 0000000..8f91f12 --- /dev/null +++ b/陕建智联对接和短信对接源码/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/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/enums/MaritalStatusEnum.java b/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/enums/MaritalStatusEnum.java new file mode 100644 index 0000000..7c490f2 --- /dev/null +++ b/陕建智联对接和短信对接源码/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/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/enums/PoliticsStatusEnum.java b/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/enums/PoliticsStatusEnum.java new file mode 100644 index 0000000..4961298 --- /dev/null +++ b/陕建智联对接和短信对接源码/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/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/enums/ResumeTypeEnum.java b/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/enums/ResumeTypeEnum.java new file mode 100644 index 0000000..6c618b5 --- /dev/null +++ b/陕建智联对接和短信对接源码/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/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/enums/WorkTypeEnum.java b/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/enums/WorkTypeEnum.java new file mode 100644 index 0000000..51da78a --- /dev/null +++ b/陕建智联对接和短信对接源码/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/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/rest/RecruitCandidateRemoteService.java b/陕建智联对接和短信对接源码/src/main/java/com/weaver/recruit/rest/RecruitCandidateRemoteService.java new file mode 100644 index 0000000..401e154 --- /dev/null +++ b/陕建智联对接和短信对接源码/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/陕建智联对接和短信对接源码/src/main/java/com/weaver/sxjg/config/EbDbDataSourceConfig.java b/陕建智联对接和短信对接源码/src/main/java/com/weaver/sxjg/config/EbDbDataSourceConfig.java new file mode 100644 index 0000000..db8ef46 --- /dev/null +++ b/陕建智联对接和短信对接源码/src/main/java/com/weaver/sxjg/config/EbDbDataSourceConfig.java @@ -0,0 +1,70 @@ +package com.weaver.sxjg.config; + +import com.zaxxer.hikari.HikariDataSource; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import org.springframework.stereotype.Component; + +import javax.sql.DataSource; + +/** + * 数据库连接池,单例 + * @author liuhao + */ +@Configuration +@Component +public class EbDbDataSourceConfig { + private static final Logger log = LoggerFactory.getLogger(EbDbDataSourceConfig.class); + + private static String url; + + private static String driverClassName; + + private static String username; + + private static String password; + private volatile static HikariDataSource dataSource; + + public static DataSource dbDataSource() { + if (dataSource ==null){ + synchronized (DataSource.class){ + if (dataSource == null){ + dataSource = new HikariDataSource(); + dataSource.setDriverClassName(driverClassName); + dataSource.setJdbcUrl(url); + dataSource.setUsername(username); + dataSource.setPassword(password); + // 连接池参数 + dataSource.setMaximumPoolSize(8); + dataSource.setPoolName("MyHikariCP"); + dataSource.setConnectionTimeout(30000); + return dataSource; + } + } + } + return dataSource; + } + + @Value("${spring.datasource.urlebdesign}") + public void setUrl(String url) { + EbDbDataSourceConfig.url = url; + } + + @Value("${spring.datasource.driver-class-name}") + public void setDriverClassName(String driverClassName) { + EbDbDataSourceConfig.driverClassName = driverClassName; + } + + @Value("${spring.datasource.username}") + public void setUsername(String username) { + EbDbDataSourceConfig.username = username; + } + + @Value("${spring.datasource.password}") + public void setPassword(String password) { + EbDbDataSourceConfig.password = password; + } + +} diff --git a/陕建智联对接和短信对接源码/src/main/java/com/weaver/sxjg/esb/EsbRpcPositionZhilian.java b/陕建智联对接和短信对接源码/src/main/java/com/weaver/sxjg/esb/EsbRpcPositionZhilian.java new file mode 100644 index 0000000..1a17c58 --- /dev/null +++ b/陕建智联对接和短信对接源码/src/main/java/com/weaver/sxjg/esb/EsbRpcPositionZhilian.java @@ -0,0 +1,1123 @@ +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.eteams.file.client.file.FileObj; +import com.weaver.eteams.file.client.param.RemoteUploadParam; +import com.weaver.file.ud.api.FileUploadService; +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.ContentTypeUtil; +import com.weaver.sxjg.util.SxjgUtil; +import org.apache.commons.configuration.ConfigurationException; +import org.apache.commons.configuration.PropertiesConfiguration; +import org.apache.commons.httpclient.NameValuePair; +import org.apache.commons.httpclient.methods.PostMethod; +import org.junit.Test; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.scheduling.annotation.Async; +import org.springframework.stereotype.Service; + +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.math.BigDecimal; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; +import java.util.concurrent.TimeUnit; + +/** + * @author liuhao + * @use: 职位-新增,修改,发布,下线 接口对接智联招聘(校招) + * @date + */ +@Service("esbRpcPositionZhilian_sj") +public class EsbRpcPositionZhilian implements EsbRpcRemoteInterface { + + private static final Logger log = LoggerFactory.getLogger(EsbRpcPositionZhilian.class); + private JdbcTemplate jdbcTemplate = new JdbcTemplate(EbDbDataSourceConfig.dbDataSource()); + private String zlTokenUrl; + private String clientId; + private String clientSecret; + private String dicturl; + private String jobaddurl; + private String jobupdateurl; + private String jobpublishurl; + private String joboffline; + private String wslburl; + private String wslbxqurl; + + private String annex; + private String secretKey; + private String tenantKey; + private String managerId; + @RpcReference + RecruitCandidateRemoteService recruitCandidateRemoteService; + @Autowired + FileUploadService fileUploadService; + + public EsbRpcPositionZhilian() { + PropertiesConfiguration p = null; + try { + p = new PropertiesConfiguration(); + p.setEncoding("utf-8"); + p.setFileName("config/sxjg.properties"); + p.load(); + this.setClientId(p.getString("sxjg.client_id")); + this.setClientSecret(p.getString("sxjg.client_secret")); + this.setZlTokenUrl(p.getString("sxjg.refreshtokenurl")); + this.setDicturl(p.getString("sxjg.dicturl")); + this.setJobaddurl(p.getString("sxjg.jobadd")); + this.setJobupdateurl(p.getString("sxjg.jobupdate")); + this.setJobpublishurl(p.getString("sxjg.jobpublish")); + 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(p.getString("sxjg.annexurl")); + }catch (ConfigurationException e) { + throw new BusinessException("获取sxjg.properties配置文件失败,", e); + } + } + + @Override + public Map execute(Map params) { + String operate_flag = (String)params.get("operate_flag"); + //1更新字典 + if("1".equals(operate_flag)) { + log.error("定时更新字典启动:>>>>>>>>>>>>>>>>>>>>>>"); + updateRefreshDict(params,jdbcTemplate,"0000"); + return SxjgUtil.ok(); + } + //2 岗位新增,编辑,删除 + else if("2".equals(operate_flag)) { + try { + jobAdd(params,jdbcTemplate); + return SxjgUtil.ok(); + }catch (Exception e){ + e.printStackTrace(); + return SxjgUtil.err(e.getMessage()); + } + } + //3 简历获取 + else if("3".equals(operate_flag)) { + log.error("简历获取:>>>>>>>>>>>>>>>>>>>>>>Thread.currentThread().getName()"+Thread.currentThread().getName()); + Thread t = new Thread(() -> { + synchronJobTitle(jdbcTemplate); + }); + t.start(); + return SxjgUtil.ok(); + } + //4 岗位发布 + else if("4".equals(operate_flag)) { + log.error("职位发布:>>>>>>>>>>>>>>>>>>>>>>"); + try{ + publishjob(params,jdbcTemplate); + return SxjgUtil.ok(); + }catch (Exception e){ + return SxjgUtil.err(e.getMessage()); + } + } + //refresh token 定时 + else if("5".equals(operate_flag)) { + log.error("定时刷新token启动:>>>>>>>>>>>>>>>>>>>>>>"); + refreshToken(jdbcTemplate,"0000"); + return SxjgUtil.ok(); + } + else if("6".equals(operate_flag)) {//职位下线 + try{ + downjob(params,jdbcTemplate); + return SxjgUtil.ok(); + }catch (Exception e){ + return SxjgUtil.err(e.getMessage()); + } + } else { + return SxjgUtil.err("配置不正确,请检查参数:operate_flag"); + } + } + + private void synchronJobTitle(JdbcTemplate jdbcTemplate){ + log.error("定时开始执行,一次只循环一次... ...Thread.currentThread().getName():"+Thread.currentThread().getName()); + List> rs = SxjgUtil.getZlTblist(jdbcTemplate); + int bbb = 0; + if(CollectionUtil.isNotEmpty(rs)) { + for(Map m : rs) { + bbb++; + log.error("循环了次数是:"+bbb); + BigDecimal id = (BigDecimal)m.get("id"); + String zwid = id.toString(); + 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{ + synchronized (this) { + getWsList(zwid, jobNumber, companyId, preTimejk, nowTimejk, jdbcTemplate);//一批量 有任何一次失败,则不更新时间 + SxjgUtil.updateLastTime(id, nowTimeSql, jdbcTemplate); + } + }catch (Exception e){ + e.printStackTrace(); + log.error("根据jobNumber"+jobNumber+"获取网申列表失败,失败原因:"+e.getMessage()+"Thread.currentThread().getName():"+Thread.currentThread().getName()); + } + } + } + } + + private void downjob(Map params, JdbcTemplate jdbcTemplate) throws Exception{ + String id = (String)params.get("id"); + log.error("职位下线,职位id:>>>>>>>>>>>>>>>>>>>>>>"+id); + String jobNumber = SxjgUtil.getJobNumber(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 orgCode = (String)params.get("orgcode"); + String companyId = SxjgUtil.getZlbh(orgCode,jdbcTemplate); + long companyId1 = Long.parseLong(companyId); + if(companyId.length()==0){ + throw new Exception("当前岗位所属组织并未配置,请联系管理员!"); + } + JSONObject jsonObject = new JSONObject(); + jsonObject.put("jobNumber",jobNumber); + jsonObject.put("companyId",companyId1); + String rs = SxjgUtil.doJsonPost(joboffline,this.getClientId(),jsonObject.toJSONString(),jdbcTemplate,"0000"); + if(SxjgUtil.isSuccess(rs)) { + JSONObject r1 =SxjgUtil.getInterfaceData(rs); + SxjgUtil.updateStatus(id,jdbcTemplate,"2"); + }else { + throw new Exception("职位下线失败:"+rs); + } + } + + + private void publishjob(Map params, JdbcTemplate jdbcTemplate) throws Exception{ + String id = (String)params.get("id"); + String jobNumber = SxjgUtil.getJobNumber(id,jdbcTemplate); + if(jobNumber.length()==0) { + log.error("当前职位id:"+id+" 并未找到jobNumber,请先新增职位!"); + throw new Exception("当前职位并未找到jobNumber!"); + } + String orgCode = (String)params.get("orgcode"); + String companyId = SxjgUtil.getZlbh(orgCode,jdbcTemplate); + long companyId1 = Long.parseLong(companyId); + if(companyId.length()==0){ + throw new Exception("当前岗位所属组织并未配置,请联系管理员!"); + } + 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(); + jsonObject.put("jobNumber",jobNumber); + jsonObject.put("intoReview",0); + jsonObject.put("companyId",companyId1); + String rs = SxjgUtil.doJsonPost(jobpublishurl,this.getClientId(),jsonObject.toJSONString(),jdbcTemplate,"0000"); + if(SxjgUtil.isSuccess(rs)) { + SxjgUtil.updateStatus(id,jdbcTemplate,"1"); + }else { + throw new Exception("职位发布失败:"+rs); + } + } + + /** + * isAdd 是新增 ,否更新 + */ + 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.getZlbh(orgCode,jdbcTemplate); + long companyId1 = Long.parseLong(companyId); + if(companyId.length()==0){ + throw new Exception("当前岗位所属组织并未配置,请联系管理员!"); + } + + String jobNumber = SxjgUtil.getJobNumber(id,jdbcTemplate); + if(jobNumber.length()>0) { + isAdd = false; + } + log.error("职位所属公司code对应智联code:"+companyId); + log.error("发布渠道:"+qudao); + String jobNature = (String)params.get("jobNature");//职位属性 + long jobType = SxjgUtil.getLastValuekey((String)params.get("jobType"),"/"); + String jobTitle = (String)params.get("jobTitle");//职位名称 + String city = (String)params.get("city");//工作城市 + if(city.contains("市")) { + city= city.split("市")[0]; + } + String jobAddress = (String)params.get("jobAddress");//工作地址 + BigDecimal maxSalary = new BigDecimal("2"); + BigDecimal minSalary = new BigDecimal("1.5"); + boolean salaryNegotiable = false; + try{ + maxSalary = new BigDecimal((String)params.get("maxSalary"));//最大月薪 + minSalary = new BigDecimal((String)params.get("minSalary"));//最小月薪 + }catch (Exception e){ + salaryNegotiable = true; + } + String quantity1 = (String)params.get("quantity");//招聘人数 + int quantity = Double.valueOf(quantity1).intValue(); + String education = (String)params.get("education");//最低学历 + String workAge = (String)params.get("workAge");//工作年限 + String jobDescription = (String)params.get("jobDescription");//职位描述 + //转换智联 + int jobNature1 = "实习".equals(jobNature) ? 4 : 2; + long cityId = SxjgUtil.getCityId(jdbcTemplate,city); + long maxSalary1 =maxSalary.multiply(new BigDecimal(1000)).longValue(); + long minSalary1 =minSalary.multiply(new BigDecimal(1000)).longValue(); + if((minSalary1*2) < maxSalary1) { + log.error("智联岗位新增:最大薪资不能超过最小薪资的2倍"); + throw new Exception("智联岗位新增:最大薪资不能超过最小薪资的2倍"); + } + if(jobDescription.length()<10) { + throw new Exception("智联岗位新增:岗位描述不能小于十个字"); + } + if(minSalary1<1000l){ + log.error("智联岗位新增:最低薪资不能小于1000"); + throw new Exception("智联岗位新增:最低薪资不能小于1000"); + } + int education1 = SxjgUtil.getEducode(education); + int workAge1 = SxjgUtil.getWordExpCode(workAge); + JSONObject jsonObject = new JSONObject(); + if(!isAdd){ + jsonObject.put("jobNumber",jobNumber); + } + jsonObject.put("jobNature",jobNature1); + jsonObject.put("jobType",jobType); + jsonObject.put("jobTitle",jobTitle); + jsonObject.put("cityId",cityId); + jsonObject.put("jobAddress",jobAddress); + jsonObject.put("maxSalary",maxSalary1); + jsonObject.put("companyId",companyId1); + jsonObject.put("minSalary",minSalary1); + jsonObject.put("quantity",quantity); + jsonObject.put("education",education1); + jsonObject.put("workAge",workAge1); + jsonObject.put("salaryNegotiable",salaryNegotiable); + jsonObject.put("jobDescription",jobDescription); + String url1 = isAdd ? this.getJobaddurl() : this.getJobupdateurl(); + String rs = SxjgUtil.doJsonPost(url1,this.getClientId(),jsonObject.toJSONString(),jdbcTemplate,"0000"); + if(SxjgUtil.isSuccess(rs)) { + if(isAdd) { + JSONObject r1 =SxjgUtil.getInterfaceData(rs); + SxjgUtil.updateZhilianId(id,r1.getString("jobNumber"),jdbcTemplate); + } + }else { + throw new Exception("职位新增接口异常!"); + } + } + + /** + * 更新token,并且更新字典 + */ + private Map updateRefreshDict(Map params,JdbcTemplate jdbcTemplate,String orgcode) { + Map res = new HashMap<>(); + res.put("result",false); + res.put("description",""); + JSONObject json1 = new JSONObject(); + json1.put("dicType","REGIONS"); + json1.put("page",1); + String s1 = SxjgUtil.doJsonPost(getDicturl(),getClientId(),json1.toJSONString(),jdbcTemplate,orgcode); + JSONObject rs1 = JSONObject.parseObject(s1); + JSONObject r11 = rs1.getJSONObject("data"); + int total = r11.getInteger("total"); + int yeshu = 0; + if(total%100 == 0) { + yeshu = total/100; + }else { + yeshu = total/100; + yeshu = yeshu+1; + } + for(int j = 1;j<=yeshu;j++) { + JSONObject json = new JSONObject(); + json.put("dicType","REGIONS"); + json.put("page",j); + String s = SxjgUtil.doJsonPost(getDicturl(),getClientId(),json.toJSONString(),jdbcTemplate,"0000"); + JSONObject rs = JSONObject.parseObject(s); + JSONObject r1 = rs.getJSONObject("data"); + JSONArray r2 = r1.getJSONArray("dataList"); + for(int i = 0; i rs0 = jdbcTemplate.queryForMap(querysql); + long v = (Long) rs0.get("sums"); + if(v==0l) { + String updateSql = "insert into zhilian_zidian(code,cnName,enName,parentCode,pyName," + + "attribute,type)values('"+code+"','"+cnName+"','"+enName+"','"+parentCode+"','"+pyName+"','"+attribute+"','"+"REGIONS"+"')"; + jdbcTemplate.execute(updateSql); + } + } + res.put("result",true); + } + return res; + } + + /** + * use:获取网申列表,自行分页,从第一页开始,每次获取100条 + */ + private synchronized void getWsList(String zwid,String jobNumber,String companyId,String starttime,String endtime,JdbcTemplate jdbcTemplate) throws Exception{ + JSONObject json1 = new JSONObject(); + json1.put("page",1); + json1.put("pageSize",100); + json1.put("dateStart",starttime); + json1.put("dateEnd",endtime); + json1.put("jobNumber",jobNumber); + json1.put("companyId",companyId); + String s1 = SxjgUtil.doJsonPost(getWslburl(),getClientId(),json1.toJSONString(),jdbcTemplate,"0000"); + JSONArray jsonArray = new JSONArray(); + if(SxjgUtil.isSuccess(s1)) { + JSONObject data = SxjgUtil.getInterfaceData(s1); + int total = data.getInteger("total"); + if(total == 0){ + return; + } + int yeshu = 0; + if(total%100 == 0) { + yeshu = total/100; + }else { + yeshu = total/100; + yeshu = yeshu+1; + } + log.error("针对当前岗位:"+zwid+" 存在简历进行拉取,分页:"+yeshu+"Thread.currentThread().getName():"+Thread.currentThread().getName()); + //进入分页 + for(int j = 1;j<=yeshu;j++) { + if(j == 1) { + jsonArray = data.getJSONArray("dataList"); + if(jsonArray!=null && jsonArray.size()>0) { + log.error("执行第一次循环Thread.currentThread().getName():"+Thread.currentThread().getName()); + dealJsonArrayGetDetail(zwid,jsonArray,companyId,jobNumber,jdbcTemplate); + continue; + } + } + json1 = new JSONObject(); + json1.put("page",j); + log.error("执行第"+j+"次循环Thread.currentThread().getName():"+Thread.currentThread().getName()); + json1.put("pageSize",100); + json1.put("dateStart",starttime); + json1.put("dateEnd",endtime); + json1.put("jobNumber",jobNumber); + json1.put("companyId",companyId); + s1 = SxjgUtil.doJsonPost(getWslburl(),getClientId(),json1.toJSONString(),jdbcTemplate,"0000"); + if(SxjgUtil.isSuccess(s1)) { + data = SxjgUtil.getInterfaceData(s1); + jsonArray = data.getJSONArray("dataList"); + if(jsonArray!=null && jsonArray.size()>0) { + dealJsonArrayGetDetail(zwid,jsonArray,companyId,jobNumber,jdbcTemplate); + } + } + } + }else { + throw new Exception("获取网申列表详情失败,失败原因看日志!"); + } + } + + /** + * 获取到时间段内的简历 + */ + public void dealJsonArrayGetDetail(String zwid,JSONArray jsonArray,String companyid,String jobNumber,JdbcTemplate jdbcTemplate) throws Exception{ + for(int i = 0; i < jsonArray.size();i++) { + JSONObject jsonObject = jsonArray.getJSONObject(i); + String jobResumeId = jsonObject.getString("jobResumeId"); + JSONObject json1 = new JSONObject(); + 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); + } + //成功录入批次后 + 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); + log.error("头像简历返回信息:"+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(); + //处理批次,如果存在,则传递 + boolean existpc = SxjgUtil.existPc(jobResumeId,jobNumber,jdbcTemplate); + if(existpc) { + String pcid = SxjgUtil.getPcid(jobResumeId,jobNumber,jdbcTemplate); + recruitTalentObj.setBatchId(pcid); + } + recruitTalentObj.setResumeType(ResumeTypeEnum.XZ); + //职位id + recruitTalentObj.setPositionId(zwid); + //填充简历,头像 + getFileObj(jobResumeId,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)); + //民族 + recruitTalentObj.setNation(SxjgUtil.getNationValue(grxx.getString("民族"))); + 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){ + Map rs1 = (Map) wr.getData(); + Long talentid = (Long) rs1.get("talentId"); + Long batchid = (Long) rs1.get("batchId"); + log.error("talentId:"+talentid); + log.error("batchid:"+batchid); + if(!existpc) { + SxjgUtil.insertSyn(jobResumeId,batchid.toString(),jobNumber,jdbcTemplate); + } + }else { + if (!wr.getMsg().contains("already exist")) { + throw new Exception("录入批次失败!"); + } + } + }else { + throw new Exception("获取简历详情失败!具体明细请看日志"); + } + } + } + + /** + * 填充简历/头像 + */ + private void getFileObj(String jobresumeid,JSONObject rs,RecruitTalentObj recruitTalentObj) throws Exception { + 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 conn = url.openConnection(); + Maprs1 = getFileNameAndTrix(zjz); + String filename = rs1.get("name")+"."+rs1.get("trix"); + log.error(">>>>>>>>>>>trix:"+rs1.get("trix")); + log.error(">>>>>>>>>>>name:"+rs1.get("name")); + Long avatorid = uploadfiletoYc(filename,conn.getInputStream()); + log.error(">>>>>>>>>>>avatorid:"+avatorid); + recruitTalentObj.setAvatar(avatorid.toString()); + } + if(jlfj.length()>0) { + URL url = new URL(jlfj); + URLConnection conn = url.openConnection(); + Map headers = conn.getHeaderFields(); + Mapmap = new HashMap<>(); + Set keys = headers.keySet(); + for( String key : keys ){ + String val = conn.getHeaderField(key); + map.put(key,val); + } + String trixlong = map.get("Content-Disposition"); + String[] trix1= trixlong.split("\\."); + String trix = trix1[trix1.length-1]; + String name = UUID.randomUUID().toString(); + log.error(">>>>>>>>>>>trix:"+trix); + log.error(">>>>>>>>>>>name:"+jobresumeid); + String filename = jobresumeid+"."+trix; + Long fjid = uploadfiletoYc(filename,conn.getInputStream()); + log.error(">>>>>>>>>>>fjid:"+fjid); + recruitTalentObj.setOriginalResume(fjid.toString()); + } + } + } + } + + /** + * 根据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 { + try{ + 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 ""; + } + }catch (Exception e){ + log.error("毕业时间最近--转换异常"); + } + return ""; + } + + /** + * 获取教育经历 + */ + 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); + } + } + + /** + * 获取学历 + */ + public String getEducationTrans(String name) { + //博士研究生、MBA、硕士研究生、大学本科、大学专科、中专/技校/职高、高中、初中及以下 + //学历(给中文):本科,硕士,博士,大专,高中,中专/中技,初中及以下,其他,不限 + if("博士研究生".equals(name)){ + return "博士"; + } else if ("MBA".equals(name)) { + return "硕士"; + }else if ("硕士研究生".equals(name)) { + return "硕士"; + }else if ("大学本科".equals(name)) { + return "本科"; + }else if ("大学专科".equals(name)) { + return "大专"; + }else if ("中专/技校/职高".equals(name)) { + return "中专/中技"; + }else if ("高中".equals(name)) { + return "高中"; + }else if ("初中及以下".equals(name)) { + return "初中及以下"; + }else{ + return "不限"; + } + } + + /** + * + */ + 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 >>>>>>>>>>>>>>>>>>>>>"+result); + Map rs1 = SxjgUtil.parseXmlToToken(result); + SxjgUtil.updateToken(rs1.get("at"),rs1.get("rt"),jdbcTemplate,orgcodes); + flag = true; + } catch (Exception e) { + e.printStackTrace(); + throw new RuntimeException(e.getMessage()); + } + return flag; + } + + /** + * 上传附件 + */ + public Long uploadfiletoYc(String fileName, InputStream inputStream) throws Exception{ + String type = ContentTypeUtil.getContentType(fileName); + FileObj fileObj = null; + log.error("附件上传开始:>>>>>>>>"); + RemoteUploadParam remoteUploadParam = new RemoteUploadParam(fileName,String.valueOf(System.currentTimeMillis()),"recruit"); + remoteUploadParam.setCreateDoc(true); + remoteUploadParam.setSecretLevel(4); + remoteUploadParam.setTenantKey(this.getTenantKey()); + fileObj = fileUploadService.uploadLocalFile(inputStream,Long.parseLong(getManagerId()),type,remoteUploadParam); + Long fieldid = fileObj.getFileid(); + return fieldid; + } + + /** + * 获取字典并更新数据库 + */ + public boolean getDictUp() { + return true; + } + public void setZlTokenUrl(String zlTokenUrl) { + this.zlTokenUrl = zlTokenUrl; + } + + public String getClientId() { + return clientId; + } + + public void setClientId(String clientId) { + this.clientId = clientId; + } + + public String getClientSecret() { + return clientSecret; + } + + public void setClientSecret(String clientSecret) { + this.clientSecret = clientSecret; + } + public String getZlTokenUrl() { + return zlTokenUrl; + } + + public String getDicturl() { + return dicturl; + } + + public void setDicturl(String dicturl) { + this.dicturl = dicturl; + } + + public String getJobaddurl() { + return jobaddurl; + } + + public void setJobaddurl(String jobaddurl) { + this.jobaddurl = jobaddurl; + } + public String getJobupdateurl() { + return jobupdateurl; + } + + public void setJobupdateurl(String jobupdateurl) { + this.jobupdateurl = jobupdateurl; + } + + public String getJobpublishurl() { + return jobpublishurl; + } + + public void setJobpublishurl(String jobpublishurl) { + this.jobpublishurl = jobpublishurl; + } + + public String getJoboffline() { + return joboffline; + } + + public void setJoboffline(String joboffline) { + this.joboffline = joboffline; + } + + public String getWslburl() { + return wslburl; + } + + public void setWslburl(String wslburl) { + this.wslburl = wslburl; + } + + public String getWslbxqurl() { + return wslbxqurl; + } + + public void setWslbxqurl(String wslbxqurl) { + this.wslbxqurl = wslbxqurl; + } + + public String getSecretKey() { + return secretKey; + } + + public void setSecretKey(String secretKey) { + this.secretKey = secretKey; + } + + 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; + } + public String getAnnex() { + return annex; + } + + public void setAnnex(String annex) { + this.annex = annex; + } + +} diff --git a/陕建智联对接和短信对接源码/src/main/java/com/weaver/sxjg/esb/EsbRpcPositionZhilianSz.java b/陕建智联对接和短信对接源码/src/main/java/com/weaver/sxjg/esb/EsbRpcPositionZhilianSz.java new file mode 100644 index 0000000..7f22fd6 --- /dev/null +++ b/陕建智联对接和短信对接源码/src/main/java/com/weaver/sxjg/esb/EsbRpcPositionZhilianSz.java @@ -0,0 +1,642 @@ +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.eteams.file.client.file.FileObj; +import com.weaver.eteams.file.client.param.RemoteUploadParam; +import com.weaver.file.ud.api.FileUploadService; +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.ContentTypeUtil; +import com.weaver.sxjg.util.SxjgUtil; +import org.apache.commons.configuration.ConfigurationException; +import org.apache.commons.configuration.PropertiesConfiguration; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; + +import java.io.InputStream; +import java.math.BigDecimal; +import java.net.URL; +import java.net.URLConnection; +import java.util.*; + +/** + * @author liuhao + * @use: 职位-新增,修改,发布,下线 接口对接智联招聘(社招) + * @date + */ +@Service("esbRpcPositionZhiliansz_sj") +public class EsbRpcPositionZhilianSz implements EsbRpcRemoteInterface { + + private static final Logger log = LoggerFactory.getLogger(EsbRpcPositionZhilianSz.class); + + private static final JdbcTemplate jdbcTemplate = new JdbcTemplate(EbDbDataSourceConfig.dbDataSource()); + private String token; + private String appid; + private String appReferer; + private String jobaddurl; + private String jobsave; + private String listpageurl; + private String resumedetailsurl; + private String tenantKey; + private String managerId; + @Autowired + public EbDbDataSourceConfig ebDbDataSourceConfig; + @RpcReference + RecruitCandidateRemoteService recruitCandidateRemoteService; + @Autowired + FileUploadService fileUploadService; + public EsbRpcPositionZhilianSz() { + PropertiesConfiguration p = null; + try { + p = new PropertiesConfiguration(); + p.setEncoding("utf-8"); + p.setFileName("config/sxjg.properties"); + p.load(); + this.setToken(p.getString("sxjgsz.token")); + this.setJobaddurl(p.getString("sxjgsz.jobadd")); + this.setAppReferer(p.getString("sxjgsz.appReferer")); + this.setJobsave(p.getString("sxjgsz.jobsave")); + this.setAppid(p.getString("sxjgsz.appid")); + this.setListpageurl(p.getString("sxjgsz.listpageurl")); + this.setResumedetailsurl(p.getString("sxjgsz.listpagedetail")); + this.setTenantKey(p.getString("tenantKey")); + this.setManagerId(p.getString("managerid")); + } catch (ConfigurationException e) { + throw new BusinessException("获取sxjg.properties配置文件失败,", e); + } + } + + @Override + public Map execute(Map params) { + String operate_flag = (String) params.get("operate_flag"); + //1 职位新增,编辑 + if ("1".equals(operate_flag)) { + try{ + jobAdd(params,jdbcTemplate); + return SxjgUtil.ok(); + }catch (Exception e){ + e.printStackTrace(); + return SxjgUtil.err(e.getMessage()); + } + } + //3 发布同步下线删除 + else if ("3".equals(operate_flag)) { + try{ + updateJob(params,jdbcTemplate); + return SxjgUtil.ok(); + }catch (Exception e){ + return SxjgUtil.err(e.getMessage()); + } + } + //4 简历获取 + else if ("4".equals(operate_flag)) { + log.error("简历获取:>>>>>>>>>>>>>>>>>>>>>>"); + Thread t = new Thread(() -> { + synchronJobTitle(jdbcTemplate); + }); + t.start(); + 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){ + log.error("定时开始执行,一次只循环一次... ...Thread.currentThread().getName():"+Thread.currentThread().getName()); + List> rs = SxjgUtil.getZlTblistsz(jdbcTemplate); + int bbb = 0; + if(CollectionUtil.isNotEmpty(rs)) { + for(Map m : rs) { + bbb++; + log.error("循环了次数是:"+bbb); + BigDecimal id = (BigDecimal)m.get("id"); + String zwid = id.toString(); + 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(); + //Date now = SxjgUtil.sixDaylater(preTimesql,now1);//判断 大于6天取6天后 + String nowTimeSql = SxjgUtil.getTimeStrByDate(now,"yyyy-MM-dd HH:mm:ss"); + String preTimeSql = SxjgUtil.getTimeStrByDate(preTimesql,"yyyy-MM-dd HH:mm:ss"); + try{ + synchronized (this) { + getWsList(zwid,jobNumber,companyId,preTimeSql,nowTimeSql,jdbcTemplate);//一批量 有任何一次失败,则不更新时间 + SxjgUtil.updateLastTime(id,nowTimeSql,jdbcTemplate); + } + }catch (Exception e){ + log.error("根据jobNumber"+jobNumber+"获取网申列表失败,失败原因:"+e.getMessage()); + } + } + } + } + + /** + * 社招 + * use:报名列表查询,自行分页,从第一页开始,每次获取100条 + */ + private synchronized void getWsList(String zwid,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(zwid); + 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(zwid,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(zwid,jsonArray,companyId,jobNumber,jdbcTemplate); + } + } + } + }else { + throw new Exception("获取网申列表详情失败,失败原因看日志!"); + } + } + + /** + * 社招 + * 获取到时间段内的简历 + */ + public void dealJsonArrayGetDetail(String zwid,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)) { + JSONObject data = SxjgUtil.getInterfaceData(s3); + RecruitTalentObj recruitTalentObj = new RecruitTalentObj(); + //处理批次,如果存在,则传递 + boolean existpc = SxjgUtil.existPc(id,jobNumber,jdbcTemplate); + if(existpc) { + String pcid = SxjgUtil.getPcid(id,jobNumber,jdbcTemplate); + recruitTalentObj.setBatchId(pcid); + } + recruitTalentObj.setResumeType(ResumeTypeEnum.SZ); + recruitTalentObj.setPositionId(zwid); + //填充头像 + String photostr = data.getString("id_photo"); + JSONArray s2 = JSONArray.parseArray(photostr); + String url11 = s2.get(0).toString(); + Map namestr = getFileNameAndTrix(url11); + String name = namestr.get("name"); + String trix = namestr.get("trix"); + log.error("name::::::::"+name); + log.error("trix::::::::"+trix); + String filename = name+"."+trix; + URL url12 = new URL(url11); + URLConnection connection = url12.openConnection(); + Long avatorid = uploadfiletoYc(filename,connection.getInputStream()); + log.error(">>>>>>>>>>>avatorid:"+avatorid); + recruitTalentObj.setAvatar(avatorid.toString()); + //----填充头像完毕----------------- + 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.setPoliticsStatus(PoliticsStatusEnum.getByName(policicsStatus)); + recruitTalentObj.setNativePlace(data.getString("native_place")); + recruitTalentObj.setGraduateDate(data.getString("birthday")); + recruitTalentObj.setEmergencyTelephone(data.getString("emergency_telephone")); + //自我评价 + recruitTalentObj.setSelfDesc(data.getString("textarea_KEY_2023060615242536330B7BCE4A52E292")); + //学历情况 + //第一学历 + String one1 = data.getString("cascader_KEY_D870DFBC4A4D4D13884516D6686CBEC7"); + FdDegreeEnum fdDegreeEnum = FdDegreeEnum.getByName(one1); + if(fdDegreeEnum!=null) { + recruitTalentObj.setFirstDegree(fdDegreeEnum); + }else { + recruitTalentObj.setFirstDegree(FdDegreeEnum.BSYJS); + } + String onttime = data.getString("date_picker_KEY_231D04E925D94F4D9076DEB25FA0B6B0"); + recruitTalentObj.setFdGraduationTime(onttime); + recruitTalentObj.setFdFullTime(BooleanEnum.getByName(data.getString("cascader_KEY_AD4D41FD0CE74212B2FB422F63C076A7"))); + recruitTalentObj.setFdCollege(data.getString("input_KEY_704D8DEFB380461E9FA4BFC4A8D1D3C5")); + recruitTalentObj.setFdMajor(data.getString("input_KEY_08C1B4866A594226BB14C2211A8666AB")); + recruitTalentObj.setHighestDegreeNew(HdDegreeEnum.getByName(data.getString("highest_education"))); + recruitTalentObj.setHdGraduationTime(data.getString("date_picker_KEY_D8FA087958A34D248E0C85F880DA9B47")); + recruitTalentObj.setHdFullTime(BooleanEnum.getByName(data.getString("cascader_KEY_0F4FE6EA573B43F5888705058F507F15"))); + recruitTalentObj.setHdCollege(data.getString("input_KEY_B4314F62BCB54D8A9C4E301DF394CF6A")); + recruitTalentObj.setHdMajor(data.getString("input_KEY_2543D0D96EBB401A8535CEB2EB1E4345")); + recruitTalentObj.setRecruitWorkExpObjList(getRecruitWorkExpObjli(data)); + //家庭关系 + recruitTalentObj.setRecruitJtgxObjList(getRecruitJtgxObjli(data)); + //参加工作日期 + recruitTalentObj.setJoinworkdate(data.getString("date_picker_KEY_202306061524253633034EEE47D3086D")); + //现工作单位 + recruitTalentObj.setCurrentUnit(data.getString("current_work_unit")); + //当前职位 + recruitTalentObj.setCurrentPosition(data.getString("current_position")); + //民族 + recruitTalentObj.setNation(SxjgUtil.getNationValue(data.getString("nation"))); + //职称 + recruitTalentObj.setJobTitle(data.getString("input_KEY_6FC82F3A214D4564811BF33444286A5E")); + //职称专业 + recruitTalentObj.setJobMajor(data.getString("input_KEY_6CFBEC31EDB449C7897963B7E1C38319")); + //职业资格 + recruitTalentObj.setJobQualifications(data.getString("input_KEY_66D714483E3444748826CE72B697E844")); + //出生地 + recruitTalentObj.setCsaddress(data.getString("input_KEY_AD903B9F5DE641168E9737A918458DDE")); + //主要工作业绩 + recruitTalentObj.setMainPerformance(data.getString("textarea_KEY_0080425FAEB04AAF83296CB5D3E409DB")); + 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){ + Map rs1 = (Map) wr.getData(); + Long talentid = (Long) rs1.get("talentId"); + Long batchid = (Long) rs1.get("batchId"); + log.error("talentId:"+talentid); + log.error("batchid:"+batchid); + if(!existpc) { + SxjgUtil.insertSyn(id,batchid.toString(),jobNumber,jdbcTemplate); + } + }else { + log.error("录入批次失败111>>>"); + if(!wr.getMsg().contains("already exist")) { + throw new Exception("录入批次失败!"); + } + } + }else { + throw new Exception("获取简历详情失败!具体明细请看日志"); + } + } + } + + /** + * + */ + public List getRecruitWorkExpObjli(JSONObject data) { + List rs = new ArrayList<>(); + JSONArray rs1 = data.getJSONArray("work_experience"); + if(rs1!=null && rs1.size()>0) { + for(int i = 0;igetRecruitJtgxObjli(JSONObject data) { + List rs = new ArrayList<>(); + JSONArray rs1 = data.getJSONArray("family_member_social_relations"); + if(rs1!=null && rs1.size()>0) { + for(int i = 0;i>>>>>>>"); + RemoteUploadParam remoteUploadParam = new RemoteUploadParam(fileName,String.valueOf(System.currentTimeMillis()),"recruit"); + remoteUploadParam.setCreateDoc(true); + remoteUploadParam.setSecretLevel(4); + remoteUploadParam.setTenantKey(this.getTenantKey()); + fileObj = fileUploadService.uploadLocalFile(inputStream,Long.parseLong(getManagerId()),type,remoteUploadParam); + Long fieldid = fileObj.getFileid(); + return fieldid; + } + + /** + * 社招:家庭关系 + */ + 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; + boolean salaryNegotiable = false; + BigDecimal maxSalary = new BigDecimal("8"); + BigDecimal minSalary = new BigDecimal("5"); + try{ + maxSalary = new BigDecimal((String)params.get("maxSalary"));//最大月薪 + minSalary = new BigDecimal((String)params.get("minSalary"));//最小月薪 + }catch (Exception e){ + salaryNegotiable = true; + } + 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("salaryNegotiable",salaryNegotiable); + 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/陕建智联对接和短信对接源码/src/main/java/com/weaver/sxjg/esb/EsbRpcRemoteSendDx.java b/陕建智联对接和短信对接源码/src/main/java/com/weaver/sxjg/esb/EsbRpcRemoteSendDx.java new file mode 100644 index 0000000..8b9294c --- /dev/null +++ b/陕建智联对接和短信对接源码/src/main/java/com/weaver/sxjg/esb/EsbRpcRemoteSendDx.java @@ -0,0 +1,128 @@ +package com.weaver.sxjg.esb; + +import com.weaver.ebuilder.common.exception.BusinessException; +import com.weaver.esb.api.rpc.EsbRpcRemoteInterface; +import org.apache.commons.configuration.ConfigurationException; +import org.apache.commons.configuration.PropertiesConfiguration; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.stereotype.Service; + +import java.io.*; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLEncoder; +import java.util.HashMap; +import java.util.Map; +/** + * @author liuhao + * @use: 集成短信平台 + * @date + */ +@Service("esbRpcRemoteSendDx_sj") +public class EsbRpcRemoteSendDx implements EsbRpcRemoteInterface { + public EsbRpcRemoteSendDx() { + PropertiesConfiguration p = null; + try { + p = new PropertiesConfiguration(); + p.setEncoding("utf-8"); + p.setFileName("config/sxjg.properties"); + p.load(); + this.setPwd(p.getString("message.Pwd")); + this.setUrl(p.getString("message.url")); + this.setCorpID(p.getString("message.CorpID")); + this.setQm(p.getString("message.qm")); + }catch (ConfigurationException e) { + throw new BusinessException("获取sxjg.properties配置文件失败,", e); + } + } + private static final Logger log = LoggerFactory.getLogger(EsbRpcRemoteSendDx.class); + private String corpID; + private String pwd; + private String url; + private String qm; + @Override + public Map execute(Map params) { + Map rs = new HashMap<>(); + String content1 = (String)params.get("content"); + log.error("sj二开qm配置:"+this.getQm()); + String content = ""; + //处理系统中的签名问题,第三方系统会在短信尾加上签名,这里需要将系统拼接的去掉。 + if(content1.startsWith(this.getQm())) { + content = content1.split(this.getQm(),2)[1].trim(); + }else { + content = content1; + } + String mobile = (String)params.get("mobile"); + String send_time = ""; + String cell = ""; + if(params.get("time")!=null){ + send_time = (String)params.get("time"); + } + if(params.get("cell")!=null){ + cell = (String)params.get("cell"); + } + log.error("sj二开content:"+content); + log.error("sj二开mobile:"+mobile); + log.error("sj二开time:"+send_time); + log.error("sj二开cell:"+cell); + BufferedReader in = null; + int inputLine = 0; + Boolean result = false; + try { + URL url = null; + String send_content = URLEncoder.encode(content.replaceAll("
", " "), "GBK"); + url = new URL(this.getUrl()+"?CorpID="+this.getCorpID()+"&Pwd="+this.getPwd()+"&Mobile="+mobile+"&Content="+send_content+"&Cell="+cell+"&SendTime="+send_time); + log.error("sj二开,开始发送短信手机号码为 :"+mobile); + in = new BufferedReader(new InputStreamReader(url.openStream())); + inputLine = new Integer(in.readLine()).intValue(); + if(inputLine>0) { + result = true; + } + } catch (UnsupportedEncodingException e) { + log.error("sj二开1,error:"+e.getMessage()); + throw new RuntimeException(e); + } catch (MalformedURLException e) { + log.error("sj二开2,error:"+e.getMessage()); + throw new RuntimeException(e); + } catch (IOException e) { + log.error("sj二开3,error:"+e.getMessage()); + throw new RuntimeException(e); + } + rs.put("result",result); + rs.put("description",String.valueOf(inputLine)); + return rs; + } + public String getCorpID() { + return corpID; + } + + public void setCorpID(String corpID) { + this.corpID = corpID; + } + + public String getPwd() { + return pwd; + } + + public void setPwd(String pwd) { + this.pwd = pwd; + } + + public String getUrl() { + return url; + } + + public void setUrl(String url) { + this.url = url; + } + + public String getQm() { + return qm; + } + + public void setQm(String qm1) { + String qm2 = "【"+qm1+"】"; + this.qm = qm2; + } +} diff --git a/陕建智联对接和短信对接源码/src/main/java/com/weaver/sxjg/esb/ExcelUtilHowe.java b/陕建智联对接和短信对接源码/src/main/java/com/weaver/sxjg/esb/ExcelUtilHowe.java new file mode 100644 index 0000000..32396ea --- /dev/null +++ b/陕建智联对接和短信对接源码/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/陕建智联对接和短信对接源码/src/main/java/com/weaver/sxjg/util/ContentTypeUtil.java b/陕建智联对接和短信对接源码/src/main/java/com/weaver/sxjg/util/ContentTypeUtil.java new file mode 100644 index 0000000..2a547cc --- /dev/null +++ b/陕建智联对接和短信对接源码/src/main/java/com/weaver/sxjg/util/ContentTypeUtil.java @@ -0,0 +1,402 @@ + +package com.weaver.sxjg.util; +import com.weaver.common.security.util.StringUtil; + +import java.util.HashMap; +import java.util.Map; + +/** + * 获取文件 content-type工具类 + */ +public class ContentTypeUtil { + + private static Map map = new HashMap(); + + /** + * @param fileName 文件名 + * @return + */ + public static String getContentTypeByFileName(String fileName) { + String result = map.get("anno"); + fileName = StringUtil.null2String(fileName); + int index = fileName.lastIndexOf("."); + if (!fileName.isEmpty() && index != -1) { + result = getContentType(fileName.substring(index).toLowerCase()); + } + return result; + } + + /** + * @param fileExt 文件扩展名 + * @return + */ + public static String getContentType(String fileExt) { + String result = map.get("anno"); + fileExt = StringUtil.null2String(fileExt); + if (!fileExt.isEmpty()) { + fileExt = fileExt.contains(".") ? fileExt : "." + fileExt; + result = map.get(fileExt); + if (result == null) { + result = map.get("anno"); + } + } + return result; + } + + static { + map.put("anno", "application/octet-stream"); + map.put(".tif", "image/tiff"); + map.put("0.001", "application/x-001"); + map.put("0.301", "application/x-301"); + map.put("0.323", "text/h323"); + map.put("0.906", "application/x-906"); + map.put("0.907", "drawing/907"); + + map.put(".a11", "application/x-a11"); + map.put(".acp", "audio/x-mei-aac"); + map.put(".ai", "application/postscript"); + map.put(".aif", "audio/aiff"); + map.put(".aifc", "audio/aiff"); + map.put(".aiff", "audio/aiff"); + map.put(".anv", "application/x-anv"); + map.put(".asa", "text/asa"); + map.put(".asf", "video/x-ms-asf"); + map.put(".asp", "text/asp"); + map.put(".asx", "video/x-ms-asf"); + map.put(".au", "audio/basic"); + map.put(".avi", "video/avi"); + map.put(".awf", "application/vnd.adobe.workflow"); + + map.put(".biz", "text/xml"); + map.put(".bmp", "application/x-bmp"); + map.put(".bot", "application/x-bot"); + + map.put(".c4t", "application/x-c4t"); + map.put(".c90", "application/x-c90"); + map.put(".cal", "application/x-cals"); + map.put(".cat", "application/vnd.ms-pki.seccat"); + map.put(".cdf", "application/x-netcdf"); + map.put(".cdr", "application/x-cdr"); + map.put(".cel", "application/x-cel"); + map.put(".cer", "application/x-x509-ca-cert"); + map.put(".cg4", "application/x-g4"); + map.put(".cgm", "application/x-cgm"); + map.put(".cit", "application/x-cit"); + map.put(".class", "java/"); + map.put(".cml", "text/xml"); + map.put(".cmp", "application/x-cmp"); + map.put(".cmx", "application/x-cmx"); + map.put(".cot", "application/x-cot"); + map.put(".crl", "application/pkix-crl"); + map.put(".crt", "application/x-x509-ca-cert"); + map.put(".csi", "application/x-csi"); + map.put(".css", "text/css"); + map.put(".cut", "application/x-cut"); + + map.put(".dbf", "application/x-dbf"); + map.put(".dbm", "application/x-dbm"); + map.put(".dbx", "application/x-dbx"); + map.put(".dcd", "text/xml"); + map.put(".dcx", "application/x-dcx"); + map.put(".der", "application/x-x509-ca-cert"); + map.put(".dgn", "application/x-dgn"); + map.put(".dib", "application/x-dib"); + map.put(".dll", "application/x-msdownload"); + map.put(".doc", "application/msword"); + map.put(".docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document"); + map.put(".dot", "application/msword"); + map.put(".drw", "application/x-drw"); + map.put(".dtd", "text/xml"); + map.put(".dwf", "Model/vnd.dwf"); + map.put(".dwf", "application/x-dwf"); + map.put(".dwg", "application/x-dwg"); + map.put(".dxb", "application/x-dxb"); + map.put(".dxf", "application/x-dxf"); + map.put(".edn", "application/vnd.adobe.edn"); + + map.put(".emf", "application/x-emf"); + map.put(".eml", "message/rfc822"); + map.put(".ent", "text/xml"); + map.put(".epi", "application/x-epi"); + map.put(".eps", "application/x-ps"); + map.put(".eps", "application/postscript"); + map.put(".etd", "application/x-ebx"); + map.put(".exe", "application/x-msdownload"); + map.put(".fax", "image/fax"); + map.put(".fdf", "application/vnd.fdf"); + map.put(".fif", "application/fractals"); + map.put(".fo", "text/xml"); + map.put(".frm", "application/x-frm"); + map.put(".g4", "application/x-g4"); + map.put(".gbr", "application/x-gbr"); + map.put(".", "application/x-"); + map.put(".gif", "image/gif"); + map.put(".gl2", "application/x-gl2"); + map.put(".gp4", "application/x-gp4"); + map.put(".hgl", "application/x-hgl"); + map.put(".hmr", "application/x-hmr"); + map.put(".hpg", "application/x-hpgl"); + map.put(".hpl", "application/x-hpl"); + map.put(".hqx", "application/mac-binhex40"); + map.put(".hrf", "application/x-hrf"); + map.put(".hta", "application/hta"); + map.put(".htc", "text/x-component"); + map.put(".htm", "text/html"); + map.put(".html", "text/html"); + map.put(".htt", "text/webviewhtml"); + map.put(".htx", "text/html"); + map.put(".icb", "application/x-icb"); + map.put(".ico", "image/x-icon"); + map.put(".ico", "application/x-ico"); + map.put(".iff", "application/x-iff"); + map.put(".ig4", "application/x-g4"); + map.put(".igs", "application/x-igs"); + map.put(".iii", "application/x-iphone"); + map.put(".img", "application/x-img"); + map.put(".ins", "application/x-internet-signup"); + map.put(".isp", "application/x-internet-signup"); + map.put(".IVF", "video/x-ivf"); + map.put(".java", "java/*"); + map.put(".jfif", "image/jpeg"); + map.put(".jpe", "image/jpeg"); + map.put(".jpe", "application/x-jpe"); + map.put(".jpeg", "image/jpeg"); + map.put(".jpg", "image/jpeg"); + map.put(".jpg", "application/x-jpg"); + map.put(".js", "application/x-javascript"); + map.put(".jsp", "text/html"); + map.put(".la1", "audio/x-liquid-file"); + map.put(".lar", "application/x-laplayer-reg"); + map.put(".latex", "application/x-latex"); + map.put(".lavs", "audio/x-liquid-secure"); + map.put(".lbm", "application/x-lbm"); + map.put(".lmsff", "audio/x-la-lms"); + map.put(".ls", "application/x-javascript"); + map.put(".ltr", "application/x-ltr"); + map.put(".m1v", "video/x-mpeg"); + map.put(".m2v", "video/x-mpeg"); + map.put(".m3u", "audio/mpegurl"); + map.put(".m4e", "video/mpeg4"); + map.put(".mac", "application/x-mac"); + map.put(".man", "application/x-troff-man"); + map.put(".math", "text/xml"); + map.put(".mdb", "application/msaccess"); + map.put(".mdb", "application/x-mdb"); + map.put(".mfp", "application/x-shockwave-flash"); + map.put(".mht", "message/rfc822"); + map.put(".mhtml", "message/rfc822"); + map.put(".mi", "application/x-mi"); + map.put(".mid", "audio/mid"); + map.put(".midi", "audio/mid"); + map.put(".mil", "application/x-mil"); + map.put(".mml", "text/xml"); + map.put(".mnd", "audio/x-musicnet-download"); + map.put(".mns", "audio/x-musicnet-stream"); + map.put(".mocha", "application/x-javascript"); + map.put(".movie", "video/x-sgi-movie"); + map.put(".mp1", "audio/mp1"); + map.put(".mp2", "audio/mp2"); + map.put(".mp2v", "video/mpeg"); + map.put(".mp3", "audio/mp3"); + map.put(".mp4", "video/mpeg4"); + map.put(".mpa", "video/x-mpg"); + map.put(".mpd", "application/vnd.ms-project"); + map.put(".mpe", "video/x-mpeg"); + map.put(".mpeg", "video/mpg"); + map.put(".mpg", "video/mpg"); + map.put(".mpga", "audio/rn-mpeg"); + map.put(".mpp", "application/vnd.ms-project"); + map.put(".mps", "video/x-mpeg"); + map.put(".mpt", "application/vnd.ms-project"); + map.put(".mpv", "video/mpg"); + map.put(".mpv2", "video/mpeg"); + map.put(".mpw", "application/vnd.ms-project"); + map.put(".mpx", "application/vnd.ms-project"); + map.put(".mtx", "text/xml"); + map.put(".mxp", "application/x-mmxp"); + map.put(".net", "image/pnetvue"); + map.put(".nrf", "application/x-nrf"); + map.put(".nws", "message/rfc822"); + map.put(".odc", "text/x-ms-odc"); + map.put(".out", "application/x-out"); + map.put(".p10", "application/pkcs10"); + map.put(".p12", "application/x-pkcs12"); + map.put(".p7b", "application/x-pkcs7-certificates"); + map.put(".p7c", "application/pkcs7-mime"); + map.put(".p7m", "application/pkcs7-mime"); + map.put(".p7r", "application/x-pkcs7-certreqresp"); + map.put(".p7s", "application/pkcs7-signature"); + map.put(".pc5", "application/x-pc5"); + map.put(".pci", "application/x-pci"); + map.put(".pcl", "application/x-pcl"); + map.put(".pcx", "application/x-pcx"); + map.put(".pdf", "application/pdf"); + map.put(".pdf", "application/pdf"); + map.put(".pdx", "application/vnd.adobe.pdx"); + map.put(".pfx", "application/x-pkcs12"); + map.put(".pgl", "application/x-pgl"); + map.put(".pic", "application/x-pic"); + map.put(".pko", "application/vnd.ms-pki.pko"); + map.put(".pl", "application/x-perl"); + map.put(".plg", "text/html"); + map.put(".pls", "audio/scpls"); + map.put(".plt", "application/x-plt"); + map.put(".png", "image/png"); + map.put(".png", "application/x-png"); + map.put(".pot", "application/vnd.ms-powerpoint"); + map.put(".ppa", "application/vnd.ms-powerpoint"); + map.put(".ppm", "application/x-ppm"); + map.put(".pps", "application/vnd.ms-powerpoint"); + map.put(".ppt", "application/vnd.ms-powerpoint"); + map.put(".ppt", "application/x-ppt"); + map.put(".pr", "application/x-pr"); + map.put(".prf", "application/pics-rules"); + map.put(".prn", "application/x-prn"); + map.put(".prt", "application/x-prt"); + map.put(".ps", "application/x-ps"); + map.put(".ps", "application/postscript"); + map.put(".ptn", "application/x-ptn"); + map.put(".pwz", "application/vnd.ms-powerpoint"); + map.put(".r3t", "text/vnd.rn-realtext3d"); + map.put(".ra", "audio/vnd.rn-realaudio"); + map.put(".ram", "audio/x-pn-realaudio"); + map.put(".ras", "application/x-ras"); + map.put(".rat", "application/rat-file"); + map.put(".rdf", "text/xml"); + map.put(".rec", "application/vnd.rn-recording"); + map.put(".red", "application/x-red"); + map.put(".rgb", "application/x-rgb"); + map.put(".rjs", "application/vnd.rn-realsystem-rjs"); + map.put(".rjt", "application/vnd.rn-realsystem-rjt"); + map.put(".rlc", "application/x-rlc"); + map.put(".rle", "application/x-rle"); + map.put(".rm", "application/vnd.rn-realmedia"); + map.put(".rmf", "application/vnd.adobe.rmf"); + map.put(".rmi", "audio/mid"); + map.put(".rmj", "application/vnd.rn-realsystem-rmj"); + map.put(".rmm", "audio/x-pn-realaudio"); + map.put(".rmp", "application/vnd.rn-rn_music_package"); + map.put(".rms", "application/vnd.rn-realmedia-secure"); + map.put(".rmvb", "application/vnd.rn-realmedia-vbr"); + map.put(".rmx", "application/vnd.rn-realsystem-rmx"); + map.put(".rnx", "application/vnd.rn-realplayer"); + map.put(".rp", "image/vnd.rn-realpix"); + map.put(".rpm", "audio/x-pn-realaudio-plugin"); + map.put(".rsml", "application/vnd.rn-rsml"); + map.put(".rt", "text/vnd.rn-realtext"); + map.put(".rtf", "application/msword"); + map.put(".rtf", "application/x-rtf"); + map.put(".rv", "video/vnd.rn-realvideo"); + map.put(".sam", "application/x-sam"); + map.put(".sat", "application/x-sat"); + map.put(".sdp", "application/sdp"); + map.put(".sdw", "application/x-sdw"); + map.put(".sit", "application/x-stuffit"); + map.put(".slb", "application/x-slb"); + map.put(".sld", "application/x-sld"); + map.put(".slk", "drawing/x-slk"); + map.put(".smi", "application/smil"); + map.put(".smil", "application/smil"); + map.put(".smk", "application/x-smk"); + map.put(".snd", "audio/basic"); + map.put(".sol", "text/plain"); + map.put(".sor", "text/plain"); + map.put(".spc", "application/x-pkcs7-certificates"); + map.put(".spl", "application/futuresplash"); + map.put(".spp", "text/xml"); + map.put(".ssm", "application/streamingmedia"); + map.put(".sst", "application/vnd.ms-pki.certstore"); + map.put(".stl", "application/vnd.ms-pki.stl"); + map.put(".stm", "text/html"); + map.put(".sty", "application/x-sty"); + map.put(".svg", "text/xml"); + map.put(".swf", "application/x-shockwave-flash"); + map.put(".tdf", "application/x-tdf"); + map.put(".tg4", "application/x-tg4"); + map.put(".tga", "application/x-tga"); + map.put(".tif", "image/tiff"); + map.put(".tif", "application/x-tif"); + map.put(".tiff", "image/tiff"); + map.put(".tld", "text/xml"); + map.put(".top", "drawing/x-top"); + map.put(".torrent", "application/x-bittorrent"); + map.put(".tsd", "text/xml"); + map.put(".txt", "text/plain"); + map.put(".uin", "application/x-icq"); + map.put(".uls", "text/iuls"); + map.put(".vcf", "text/x-vcard"); + map.put(".vda", "application/x-vda"); + map.put(".vdx", "application/vnd.visio"); + map.put(".vml", "text/xml"); + map.put(".vpg", "application/x-vpeg005"); + map.put(".vsd", "application/vnd.visio"); + map.put(".vsd", "application/x-vsd"); + map.put(".vss", "application/vnd.visio"); + map.put(".vst", "application/vnd.visio"); + map.put(".vst", "application/x-vst"); + map.put(".vsw", "application/vnd.visio"); + map.put(".vsx", "application/vnd.visio"); + map.put(".vtx", "application/vnd.visio"); + map.put(".vxml", "text/xml"); + map.put(".wav", "audio/wav"); + map.put(".wax", "audio/x-ms-wax"); + map.put(".wb1", "application/x-wb1"); + map.put(".wb2", "application/x-wb2"); + map.put(".wb3", "application/x-wb3"); + map.put(".wbmp", "image/vnd.wap.wbmp"); + map.put(".wiz", "application/msword"); + map.put(".wk3", "application/x-wk3"); + map.put(".wk4", "application/x-wk4"); + map.put(".wkq", "application/x-wkq"); + map.put(".wks", "application/x-wks"); + map.put(".wm", "video/x-ms-wm"); + map.put(".wma", "audio/x-ms-wma"); + map.put(".wmd", "application/x-ms-wmd"); + map.put(".wmf", "application/x-wmf"); + map.put(".wml", "text/vnd.wap.wml"); + map.put(".wmv", "video/x-ms-wmv"); + map.put(".wmx", "video/x-ms-wmx"); + map.put(".wmz", "application/x-ms-wmz"); + map.put(".wp6", "application/x-wp6"); + map.put(".wpd", "application/x-wpd"); + map.put(".wpg", "application/x-wpg"); + map.put(".wpl", "application/vnd.ms-wpl"); + map.put(".wq1", "application/x-wq1"); + map.put(".wr1", "application/x-wr1"); + map.put(".wri", "application/x-wri"); + map.put(".wrk", "application/x-wrk"); + map.put(".ws", "application/x-ws"); + map.put(".ws2", "application/x-ws"); + map.put(".wsc", "text/scriptlet"); + map.put(".wsdl", "text/xml"); + map.put(".wvx", "video/x-ms-wvx"); + map.put(".xdp", "application/vnd.adobe.xdp"); + map.put(".xdr", "text/xml"); + map.put(".xfd", "application/vnd.adobe.xfd"); + map.put(".xfdf", "application/vnd.adobe.xfdf"); + map.put(".xhtml", "text/html"); + map.put(".xls", "application/vnd.ms-excel"); + map.put(".xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); + map.put(".xlw", "application/x-xlw"); + map.put(".xml", "text/xml"); + map.put(".xpl", "audio/scpls"); + map.put(".xq", "text/xml"); + map.put(".xql", "text/xml"); + map.put(".xquery", "text/xml"); + map.put(".xsd", "text/xml"); + map.put(".xsl", "text/xml"); + map.put(".xslt", "text/xml"); + map.put(".xwd", "application/x-xwd"); + map.put(".x_b", "application/x-x_b"); + map.put(".sis", "application/vnd.symbian.install"); + map.put(".sisx", "application/vnd.symbian.install"); + map.put(".x_t", "application/x-x_t"); + map.put(".ipa", "application/vnd.iphone"); + map.put(".apk", "application/vnd.android.package-archive"); + map.put(".xap", "application/x-silverlight-app"); + } + + public static void main(String[] args) { + //System.out.println(getContentType(".xls")); + } +} diff --git a/陕建智联对接和短信对接源码/src/main/java/com/weaver/sxjg/util/SxjgUtil.java b/陕建智联对接和短信对接源码/src/main/java/com/weaver/sxjg/util/SxjgUtil.java new file mode 100644 index 0000000..d55ad46 --- /dev/null +++ b/陕建智联对接和短信对接源码/src/main/java/com/weaver/sxjg/util/SxjgUtil.java @@ -0,0 +1,658 @@ +package com.weaver.sxjg.util; + +import com.alibaba.fastjson.JSONObject; +import com.weaver.sxjg.config.EbDbDataSourceConfig; +import org.apache.http.HttpResponse; +import org.apache.http.client.methods.HttpPost; +import org.apache.http.entity.StringEntity; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.dom4j.Document; +import org.dom4j.DocumentException; +import org.dom4j.DocumentHelper; +import org.dom4j.Element; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.jdbc.core.JdbcTemplate; + +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; +import java.util.*; + +public class SxjgUtil { + private static final Logger log = LoggerFactory.getLogger(SxjgUtil.class); + + @Autowired + public static EbDbDataSourceConfig ebDbDataSourceConfig; + private static final Map nationMap = new HashMap<>(); + + //56个民族,选项模板-value + static { + nationMap.put("汉族","898246741603844098"); + nationMap.put("壮族","898246741603844099"); + nationMap.put("回族","898246741603844100"); + nationMap.put("满族","898246741603844101"); + nationMap.put("维吾尔族","898246741603844102"); + nationMap.put("苗族","898246741603844103"); + nationMap.put("彝族","898246741603844104"); + nationMap.put("土家族","898246741603844105"); + nationMap.put("藏族","898246741603844106"); + nationMap.put("蒙古族","898246741603844107"); + nationMap.put("侗族","898246741603844108"); + nationMap.put("布依族","898246741603844109"); + nationMap.put("瑶族","898246741603844110"); + nationMap.put("白族","898246741603844111"); + nationMap.put("朝鲜族","898246741603844112"); + nationMap.put("哈尼族","898246741603844113"); + nationMap.put("黎族","898246741603844114"); + nationMap.put("哈萨克族","898246741603844115"); + nationMap.put("傣族","898246741603844116"); + nationMap.put("畲族","898246741603844117"); + nationMap.put("傈僳族","898246741603844118"); + nationMap.put("东乡族","898246741603844119"); + nationMap.put("仡佬族","898246741603844120"); + nationMap.put("拉祜族","898246741603844121"); + nationMap.put("佤族","898246741603844122"); + nationMap.put("水族","898246741603844123"); + nationMap.put("纳西族","898246741603844124"); + nationMap.put("羌族","898246741603844125"); + nationMap.put("土族","898246741603844126"); + nationMap.put("仫佬族","898246741603844127"); + nationMap.put("锡伯族","898246741603844128"); + nationMap.put("柯尔克孜族","898246741603844129"); + nationMap.put("景颇族","898246741603844130"); + nationMap.put("达斡尔族","898246741603844131"); + nationMap.put("撒拉族","898246741603844132"); + nationMap.put("布朗族","898246741603844133"); + nationMap.put("毛南族","898246741603844134"); + nationMap.put("塔吉克族","898246741603844135"); + nationMap.put("普米族","898246741603844136"); + nationMap.put("阿昌族","898246741603844137"); + nationMap.put("怒族","898246741603844138"); + nationMap.put("鄂温克族","898246741603844139"); + nationMap.put("京族","898246741603844140"); + nationMap.put("基诺族","898246741603844141"); + nationMap.put("德昂族","898246741603844142"); + nationMap.put("保安族","898246741603844143"); + nationMap.put("俄罗斯族","898246741603844144"); + nationMap.put("裕固族","898246741603844145"); + nationMap.put("乌孜别克族","898246741603844146"); + nationMap.put("门巴族","898246741603844147"); + nationMap.put("鄂伦春族","898246741603844148"); + nationMap.put("独龙族","898246741603844149"); + nationMap.put("赫哲族","898246741603844150"); + nationMap.put("高山族","898246741603844151"); + nationMap.put("珞巴族","898246741603844152"); + nationMap.put("塔塔尔族","898246741603844153"); + } + /** + * 解析xml获取返回值 + */ + public static Map parseXmlToToken(String xml) throws Exception { + Maprs = new HashMap<>(); + Document document = null; + try { + document = DocumentHelper.parseText(xml); + } catch (DocumentException e) { + e.printStackTrace(); + } + //获取根节点A的下一个子节点B + Element B_element = document.getRootElement().element("data"); + //可判断节点是否存在,存在再去获取节点内容 + if (B_element != null) { + //根据B节点再获取其子节点C + Element rt = B_element.element("rt"); + String rtstr = rt.getText(); + Element at = B_element.element("at"); + String atstr = at.getText(); + rs.put("rt",rtstr); + rs.put("at",atstr); + } else { + throw new Exception("获取失败!"); + } + return rs; + } + + public static String getToken(JdbcTemplate jdbcTemplate,String orgCodes){ + String sql = "select at from zhilian_token where orgcode = '"+orgCodes+"'"; + Map map = jdbcTemplate.queryForMap(sql); + String token = map.get("at").toString(); + return token; + } + + public static String getRt(JdbcTemplate jdbcTemplate,String orgCodes){ + String sql = "select rt from zhilian_token where orgcode = '"+orgCodes+"'"; + Map map = jdbcTemplate.queryForMap(sql); + String rt = map.get("rt").toString(); + 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); + long sums = (long)map.get("sums"); + if(sums==0l) { + return 512l;//其他 + } + sql = "select code from zhilian_zidian where cnName like '%"+name+"%' and type = 'REGIONS' and attribute in ('CITY','DISTRICT') limit 1"; + map = jdbcTemplate.queryForMap(sql); + String code = (String)map.get("code"); + long code1 = Long.parseLong(code); + 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); + String id = map.get("id").toString(); + String updatesql = "update zhilian_token set rt='"+rt1+"',at = '"+at1+"' where id = "+id; + 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(); + HttpPost post = new HttpPost(url); + post.setHeader("Content-Type", "application/json;charset=utf-8"); + post.setHeader("clientId", clientid); + post.setHeader("accessToken",SxjgUtil.getToken(jdbcTemplate,orgcode)); + 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; + } + + /** + * 社招 推送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) { + if("不限".equals(name)) { + return 9;//初中及以下 + } + if("初中及以下".equals(name)) { + return 9; + } + if("中专/中技".equals(name)) { + return 12; + } + 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 9; + } + return 9; + } + + /** + * 社招 + * 智联字典 [{"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){ + if("不限".equals(name)) { + return 0000; + } + if("应届毕业生".equals(name)) { + return 0000; + } + if("一年以内".equals(name)) { + return 0001; + } + if("1~3年".equals(name)) { + return 0103; + } + if("3~5年".equals(name)) { + return 0305; + } + if("5~10年".equals(name)) { + return 0510; + } + if("10年以上".equals(name)) { + return 1099; + } + return 0000; + } + + public static Map ok() { + Map rs = new HashMap<>(); + rs.put("result",true); + rs.put("description",""); + return rs; + } + + public static Map err(String msg) { + Map rs = new HashMap<>(); + rs.put("result",false); + rs.put("description",msg); + return rs; + } + + public static JSONObject getInterfaceData(String s) { + JSONObject r1 = JSONObject.parseObject(s); + return r1.getJSONObject("data"); + } + public static boolean isSuccess(String s) { + if(s.length()==0)return false; + 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; + jdbcTemplate.execute(sql); + } + + public static long getLastValuekey(String str,String spe) { + String[] res = str.split(spe); + String rs = res[res.length-1]; + 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 recruit_type = '840768530055184391' 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 ""; + } + } + + /** + * 社招 + * 获取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 { + Map rs = jdbcTemplate.queryForMap(sql); + String zlbh = (String)rs.get("zlbh"); + return zlbh; + }catch (Exception e){ + 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 { + SecretKey decryptKey = new SecretKeySpec(Base64.getDecoder().decode(secretKey), "aes"); + Cipher aesCipher = Cipher.getInstance("aes"); + aesCipher.init(Cipher.DECRYPT_MODE, decryptKey); + byte[] result = aesCipher.doFinal(code); + return new String(result, "UTF-8"); + } catch (NoSuchPaddingException | NoSuchAlgorithmException | InvalidKeyException | + UnsupportedEncodingException | IllegalBlockSizeException | BadPaddingException e) { + throw new RuntimeException(); + } + } + + //1已发布 2已下架 + public static void updateStatus(String id, JdbcTemplate jdbcTemplate,String status) { + String sql = ""; + if("1".equals(status)) {//更新发布时间和状态 + String nowTime = getTimeStrByDate(new Date(),"yyyy-MM-dd HH:mm:ss"); + sql = "update uf_rcrt_position set jobsyctime = '"+nowTime+"',sfyfbzl = '"+status+"' where id = "+id; + }else { + sql = "update uf_rcrt_position set sfyfbzl = '"+status+"' where id = "+id; + } + 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' 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; + } + + +// public static void main(String[] args) { +// DataSource db = DataSourceBuilder.create().driverClassName("com.mysql.cj.jdbc.Driver").username("ecology").password("uxJhLJn4%NpWxujAYyKsTpxP").url("jdbc:mysql://10.70.11.12:3306/ec_ebuilder_designer?characterEncoding=utf8&useSSL=false&autoReconnect=true&failOverReadOnly=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&allowMultiQueries=true").build(); +// JdbcTemplate jdbcTemplate = new JdbcTemplate(db); +// List> rs = getZlTblist(jdbcTemplate); +// for(Map a1 : rs) { +// BigDecimal id = (BigDecimal)a1.get("id"); +// String jobNumber = (String)a1.get("zlzwid"); +// String company = (String)a1.get("sub_company"); +// System.out.println(id); +// System.out.println(jobNumber); +// System.out.println(company); +// } +// } + + /** + * 字符串转时间 + */ + public static Date getDateByTimestr(String datatime,String format) { + SimpleDateFormat sdf2 = new SimpleDateFormat(format); + Date myDate2 = null; + try { + myDate2 = sdf2.parse(datatime); + return myDate2; + }catch (Exception e){ + return null; + } + } + + /** + * 如果当前时间大于上一次时间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; + } + } + /** + * 日期转换字符串,formate为格式 + */ + public static String getTimeStrByDate(Date date,String formate) { + SimpleDateFormat sdf2 = new SimpleDateFormat(formate); + String strDate2 = sdf2.format(date); + return strDate2; + } + + /** + * 更新最后同步时间 + */ + public static void updateLastTime(BigDecimal id, String nowTimeSql,JdbcTemplate jdbcTemplate) { + String sql = "update uf_rcrt_position set jobsyctime = '"+nowTimeSql+"' where id = "+id; + jdbcTemplate.execute(sql); + } + + /** + * 新增同步记录 + */ + public static void insertSyn(String jobResumeId1, String pcid1, String jobNumber1,JdbcTemplate jdbcTemplate) { + String sql = "INSERT INTO zhilian_jianlisyn(jobResumeId,pcid,jobNumber) VALUES ('"+jobResumeId1+"', '"+pcid1+"', '"+jobNumber1+"')"; + jdbcTemplate.execute(sql); + } + + /** + * 判断是否已经同步 + */ + public static boolean existPc(String jobResumeId,String jobNumber,JdbcTemplate jdbcTemplate) { + String sql = "select count(id) as nums from zhilian_jianlisyn where jobResumeId = '"+jobResumeId+"' and jobNumber = '"+jobNumber+"'"; + Map rs = jdbcTemplate.queryForMap(sql); + long sums = (long)rs.get("nums"); + log.error("syn表中存在已经同步数据:sums:"+sums+"Thread.currentThread().getName():"+Thread.currentThread().getName()); + return sums>0l; + } + + /** + *根据简历id和jobnumber获取批次id + */ + public static String getPcid(String jobResumeId,String jobNumber,JdbcTemplate jdbcTemplate) { + String sql = "select pcid from zhilian_jianlisyn where jobResumeId = '"+jobResumeId+"' and jobNumber = '"+jobNumber+"' limit 1"; + Map rs = jdbcTemplate.queryForMap(sql); + String pcid = (String)rs.get("pcid"); + log.error("syn表中存在已经同步数据:pcid:"+pcid+"Thread.currentThread().getName():"+Thread.currentThread().getName()); + return pcid; + } + + + /** + * 根据民族获取招聘系统对应value + */ + public static String getNationValue(String name) { + if(nationMap.containsKey(name)) { + return nationMap.get(name); + }else { + return nationMap.get("汉族"); + } + } +} diff --git a/陕建智联对接和短信对接源码/src/main/resources/config/sxjg.properties b/陕建智联对接和短信对接源码/src/main/resources/config/sxjg.properties new file mode 100644 index 0000000..7eec181 --- /dev/null +++ b/陕建智联对接和短信对接源码/src/main/resources/config/sxjg.properties @@ -0,0 +1,34 @@ +#短信平台配置信息 +message.CorpID=XAJT002089 +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 +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