招聘职位 支持丁香园人才网

This commit is contained in:
dxfeng 2025-02-06 16:44:40 +08:00
parent f15bd4403b
commit 87c8cb6a82
7 changed files with 195 additions and 142 deletions

Binary file not shown.

View File

@ -25,6 +25,11 @@ public class PositionSdkInstance {
private List<ResumeJobDynamicField.Item> lagou_type;
private List<ResumeJobDynamicField.Item> job51_type;
private List<ResumeJobDynamicField.Item> zhilian_type;
private List<ResumeJobDynamicField.Item> dxrcw_zwfl;
private List<ResumeJobDynamicField.Item> dxrcw_major;
private List<ResumeJobDynamicField.Item> dxrcw_type;
private List<ResumeJobDynamicField.Item> dxrcw_yydj;
private List<ResumeJobDynamicField.Item> dxrcw_zdzc;
// BOSS直聘 是否外驻
private List<ResumeJobDynamicField.Item> boss_resident;
@ -92,6 +97,11 @@ public class PositionSdkInstance {
positionSdkInstance.setLagou_type(resumeJobDynamicField.getLagou_type());
positionSdkInstance.setJob51_type(resumeJobDynamicField.getJob51_type());
positionSdkInstance.setZhilian_type(resumeJobDynamicField.getZhilian_type());
positionSdkInstance.setDxrcw_type(resumeJobDynamicField.getDxrcw_type());
positionSdkInstance.setDxrcw_major(resumeJobDynamicField.getDxrcw_major());
positionSdkInstance.setDxrcw_yydj(resumeJobDynamicField.getDxrcw_yydj());
positionSdkInstance.setDxrcw_zdzc(resumeJobDynamicField.getDxrcw_zdzc());
positionSdkInstance.setDxrcw_zwfl(resumeJobDynamicField.getDxrcw_zwfl());
}
}
}
@ -224,4 +234,47 @@ public class PositionSdkInstance {
public void setJob51_industry(List<ResumeJobDynamicField.Item> job51_industry) {
this.job51_industry = job51_industry;
}
public List<ResumeJobDynamicField.Item> getDxrcw_zwfl() {
return dxrcw_zwfl;
}
public void setDxrcw_zwfl(List<ResumeJobDynamicField.Item> dxrcw_zwfl) {
this.dxrcw_zwfl = dxrcw_zwfl;
}
public List<ResumeJobDynamicField.Item> getDxrcw_major() {
return dxrcw_major;
}
public void setDxrcw_major(List<ResumeJobDynamicField.Item> dxrcw_major) {
this.dxrcw_major = dxrcw_major;
}
public List<ResumeJobDynamicField.Item> getDxrcw_type() {
return dxrcw_type;
}
public void setDxrcw_type(List<ResumeJobDynamicField.Item> dxrcw_type) {
this.dxrcw_type = dxrcw_type;
}
public List<ResumeJobDynamicField.Item> getDxrcw_yydj() {
dxrcw_yydj.removeIf(item -> "不限".equals(item.getLabel()));
return dxrcw_yydj;
}
public void setDxrcw_yydj(List<ResumeJobDynamicField.Item> dxrcw_yydj) {
this.dxrcw_yydj = dxrcw_yydj;
}
public List<ResumeJobDynamicField.Item> getDxrcw_zdzc() {
dxrcw_zdzc.removeIf(item -> "不限".equals(item.getLabel()));
return dxrcw_zdzc;
}
public void setDxrcw_zdzc(List<ResumeJobDynamicField.Item> dxrcw_zdzc) {
this.dxrcw_zdzc = dxrcw_zdzc;
}
}

View File

@ -18,7 +18,8 @@ public enum PositionThirdChannelEnum {
ZHILIANZHAOPIN("1", "智联招聘", ResumePlatform.ZHILIANZHAOPIN),
QIANCHENGWUYOU("2", "前程无忧", ResumePlatform.QIANCHENGWUYOU),
LAGO("3", "拉勾", ResumePlatform.LAGO),
LIEPIN("4", "猎聘", ResumePlatform.LIEPIN);
LIEPIN("4", "猎聘", ResumePlatform.LIEPIN),
DXY("5", "丁香人才网", ResumePlatform.DXY);
PositionThirdChannelEnum(String value, String desc, int resumePlatformId) {
this.value = value;

View File

@ -102,6 +102,17 @@ public class RecruitPositionServiceImpl extends Service implements RecruitPositi
if ("multiSelect".equals(conditionType)) {
getMultiSelect(apidatas, positionSdkInstance);
}
// 专业要求
if("dxyMajor".equals(conditionType)){
getDxyMajor(selectValue, apidatas, positionSdkInstance);
}
// 丁香园职位福利
if("jobBenefits".equals(conditionType)){
getJobBenefits(selectValue, apidatas, positionSdkInstance);
}
return apidatas;
}
@ -276,8 +287,17 @@ public class RecruitPositionServiceImpl extends Service implements RecruitPositi
}
jobId = Long.parseLong(qllgwid);
}
List<Integer> platformList = new ArrayList<>();
String platformIds = Util.null2String(param.get("platformIds"));
if (StringUtils.isNotBlank(platformIds)) {
String[] split = platformIds.split(",");
for (String platformId : split) {
platformList.add(Convert.toInt(platformId, 0));
}
}
ERPAResumeSDKClient client = PositionSdkInstance.getPositionSdkInstance().getResumeSDKClient();
ResumeTaskResult result = client.refreshResumeJob(String.valueOf(user.getUID()), jobId);
ResumeTaskResult result = client.refreshResumeJob(String.valueOf(user.getUID()), jobId, platformList);
String msg = "";
TaskResult current = result.getResult();
@ -423,12 +443,15 @@ public class RecruitPositionServiceImpl extends Service implements RecruitPositi
apidatas.put("job51_value", StringUtils.isBlank(job51_value) ? null : Arrays.asList(job51_value.split("-")));
String zhilian_value = selectValueMap.get("智联");
apidatas.put("zhilian_value", StringUtils.isBlank(zhilian_value) ? null : Arrays.asList(zhilian_value.split("-")));
String dxy_value = selectValueMap.get("丁香人才网");
apidatas.put("dxy_value", StringUtils.isBlank(dxy_value) ? null : Arrays.asList(dxy_value.split("-")));
boolean bossShow = false;
boolean liepinShow = false;
boolean lagouShow = false;
boolean job51Show = false;
boolean zhilianShow = false;
boolean dxyShow = false;
if (dsfqd.contains("0")) {
List<ResumeJobDynamicField.Item> boss_type = positionSdkInstance.getBoss_type();
apidatas.put("boss", boss_type);
@ -457,13 +480,34 @@ public class RecruitPositionServiceImpl extends Service implements RecruitPositi
apidatas.put("zhilian", zhilian_type);
zhilianShow = true;
}
if (dsfqd.contains("5")) {
List<ResumeJobDynamicField.Item> dxy_type = positionSdkInstance.getDxrcw_type();
dealResumeJobDynamicField(dxy_type);
apidatas.put("dxy", dxy_type);
dxyShow = true;
}
apidatas.put("bossShow", bossShow);
apidatas.put("liepinShow", liepinShow);
apidatas.put("lagouShow", lagouShow);
apidatas.put("job51Show", job51Show);
apidatas.put("zhilianShow", zhilianShow);
apidatas.put("dxyShow", dxyShow);
}
void dealResumeJobDynamicField(List<ResumeJobDynamicField.Item> dxy_type){
if(CollectionUtils.isNotEmpty(dxy_type)) {
for (ResumeJobDynamicField.Item item : dxy_type) {
item.setValue(item.getLabel());
List<ResumeJobDynamicField.Item> children = item.getChildren();
if(CollectionUtils.isNotEmpty(children)) {
dealResumeJobDynamicField(children);
}
}
}
}
/**
* 获取发布城市
*
@ -508,6 +552,46 @@ public class RecruitPositionServiceImpl extends Service implements RecruitPositi
apidatas.put("job51IndustryValue", valueList);
}
/**
* 丁香园 专业要求
* @param selectValue
* @param apidatas
* @param positionSdkInstance
*/
private void getDxyMajor(String selectValue, Map<String, Object> apidatas, PositionSdkInstance positionSdkInstance) {
List<List<String>> valueList = new ArrayList<>();
if (StringUtils.isNotBlank(selectValue)) {
String[] split = selectValue.split("#");
for (String s : split) {
String[] split1 = s.split("-");
valueList.add(Arrays.asList(split1));
}
}
List<ResumeJobDynamicField.Item> dxy_major = positionSdkInstance.getDxrcw_major();
dealResumeJobDynamicField(dxy_major);
apidatas.put("dxy_major", dxy_major);
apidatas.put("dxyMajorValue", valueList);
}
/**
* 驻外语言要求
*
* @param selectValue
* @param apidatas
* @param positionSdkInstance
*/
private void getJobBenefits(String selectValue, Map<String, Object> apidatas, PositionSdkInstance positionSdkInstance) {
List<String> valueList = new ArrayList<>();
if (StringUtils.isNotBlank(selectValue)) {
String[] split = selectValue.split(",");
valueList = Arrays.asList(split);
}
List<ResumeJobDynamicField.Item> job_benefits = positionSdkInstance.getDxrcw_zwfl();
apidatas.put("job_benefits", job_benefits);
apidatas.put("jobBenefitsValue", valueList);
}
/**
* 驻外语言要求
@ -560,6 +644,11 @@ public class RecruitPositionServiceImpl extends Service implements RecruitPositi
//apidatas.put("boss_resident_language", PositionSelectItem.convertDynamicFieldItem(positionSdkInstance.getBoss_resident_language()));
apidatas.put("boss_resident_time", PositionSelectItem.convertDynamicFieldItem(positionSdkInstance.getBoss_resident_time()));
apidatas.put("boss_resident_time_2", PositionSelectItem.convertDynamicFieldItem(positionSdkInstance.getBoss_resident_time_2()));
List<ResumeJobDynamicField.Item> dxrcw_zdzc = positionSdkInstance.getDxrcw_zdzc();
apidatas.put("dxy_zdzc", PositionSelectItem.convertDynamicFieldItem(dxrcw_zdzc));
List<ResumeJobDynamicField.Item> dxrcw_yydj = positionSdkInstance.getDxrcw_yydj();
apidatas.put("dxy_yydj", PositionSelectItem.convertDynamicFieldItem(dxrcw_yydj));
//apidatas.put("job51_city", PositionSelectItem.convertDynamicFieldItem(positionSdkInstance.getJob51_city()));
}

View File

@ -1,138 +0,0 @@
package weaver.formmode.recruit.modeexpand.position;
import com.alibaba.fastjson.JSON;
import com.engine.recruit.entity.position.PositionSdkInstance;
import com.weaver.rpa.sdk.clients.application.resume.ERPAResumeSDKClient;
import com.weaver.rpa.sdk.clients.application.resume.entity.ResumeJobV2Dto;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeanUtils;
import weaver.conn.RecordSet;
import weaver.erpa.apps.entity.application.resume.dto.ResumeTaskResult;
import weaver.erpa.apps.entity.application.resume.enums.TaskResult;
import weaver.formmode.customjavacode.AbstractModeExpandJavaCodeNew;
import weaver.formmode.recruit.modeexpand.util.RecruitPositionUtil;
import weaver.general.BaseBean;
import weaver.general.Util;
import weaver.hrm.User;
import weaver.soa.workflow.request.MainTableInfo;
import weaver.soa.workflow.request.Property;
import weaver.soa.workflow.request.RequestInfo;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* 新版职位发布调用接口分渠道发布该页面拓展已废弃
*
* @author:dxfeng
* @createTime: 2023/10/07
* @version: 1.0
*/
@Deprecated
public class ReleasePositionModeExpand extends AbstractModeExpandJavaCodeNew {
@Override
public Map<String, String> doModeExpand(Map<String, Object> param) {
String tableName = "uf_jcl_zp_zpzw";
Map<String, String> resultMap = new HashMap<>(16);
BaseBean baseBean = new BaseBean();
try {
User user = (User) param.get("user");
int billId;
int modeId;
RequestInfo requestInfo = (RequestInfo) param.get("RequestInfo");
if (requestInfo != null) {
billId = Util.getIntValue(requestInfo.getRequestid());
modeId = Util.getIntValue(requestInfo.getWorkflowid());
if (billId > 0 && modeId > 0) {
RecordSet rs = new RecordSet();
boolean enableSdkClient = PositionSdkInstance.enableSdkClient();
if (enableSdkClient) {
long jobId = -1;
rs.executeQuery("select qllgwid from " + tableName + " where id = ?", billId);
if (rs.next()) {
String qllgwid = rs.getString("qllgwid");
if (StringUtils.isNotBlank(qllgwid)) {
jobId = Long.parseLong(qllgwid);
}
}
ERPAResumeSDKClient client = PositionSdkInstance.getPositionSdkInstance().getResumeSDKClient();
Map<String, Object> map = new HashMap<>(16);
MainTableInfo mainTableInfo = requestInfo.getMainTableInfo();
Property[] properties = mainTableInfo.getProperty();
for (Property property : properties) {
map.put(property.getName(), property.getValue());
}
ResumeJobV2Dto resumeJobDto = RecruitPositionUtil.convertMap2ResumeJobV2Dto(user, map);
String userId = String.valueOf(user.getUID());
// 未创建职位则先创建职位
if (jobId == -1) {
baseBean.writeLog("【创建职位】,[id=" + billId + "],resumeJobDto=" + JSON.toJSONString(resumeJobDto));
// 创建千里聆职位
jobId = client.addResumeJobV2(userId, resumeJobDto);
// 更新千里聆ID到建模表单
rs.executeUpdate("update " + tableName + " set qllgwid = ? where id = ?", jobId, billId);
} else {
baseBean.writeLog("【更新职位】,[id=" + billId + "],[qllgwid=" + jobId + "],resumeJobDto=" + JSON.toJSONString(resumeJobDto));
// 已发布的职位更新职位信息
client.editResumeJobV2(userId, jobId, jobDto -> {
new BaseBean().writeLog("职位更新前:" + JSON.toJSONString(jobDto));
BeanUtils.copyProperties(resumeJobDto, jobDto);
new BaseBean().writeLog("职位更新后:" + JSON.toJSONString(jobDto));
});
}
List<Integer> platformIds;
platformIds = resumeJobDto.getPlatformList();
String errorMsg = "";
for (Integer platformId : platformIds) {
ResumeTaskResult result = client.releaseResumeJob(userId, jobId, platformId);
// 直接查看结果正在执行中会返回PENGING成功后会返回SUCCEED失败后会返回FAILED
TaskResult current = result.getResult();
baseBean.writeLog(current);
// 使用回调函数获取成功或者失败时的消息
result.onResult(() -> {
baseBean.writeLog("执行成功回调");
}, (reason) -> {
baseBean.writeLog("执行失败回调,原因:" + reason);
});
// 等待直到状态不再是PENDING
TaskResult taskResult = result.waitResult();
baseBean.writeLog(taskResult);
if (taskResult == TaskResult.SUCCEED) {
baseBean.writeLog("执行成功");
} else {
errorMsg = "执行失败,原因:" + result.getFailReason();
baseBean.writeLog(errorMsg);
break;
}
}
if (StringUtils.isNotBlank(errorMsg)) {
// 发布失败下架职位
client.closeResumeJob(userId, jobId);
// 更新状态为发布失败
rs.executeUpdate("update " + tableName + " set qdfbzt = ? where id = ?", 3, billId);
resultMap.put("errmsg", errorMsg);
resultMap.put("flag", "false");
return resultMap;
}
} else {
resultMap.put("errmsg", "未配置发布插件,第三方平台请至各招聘网站自行发布");
}
// 更新状态为已发布
rs.executeUpdate("update " + tableName + " set qdfbzt = ? where id = ?", 2, billId);
}
}
} catch (Exception e) {
baseBean.writeLog(e);
resultMap.put("errmsg", e.getMessage());
resultMap.put("flag", "false");
}
return resultMap;
}
}

View File

@ -329,7 +329,7 @@ public class RecruitPositionUtil {
String zwfl = Util.null2String(map.get("zwfl"));
List<String> zwflList = new ArrayList<>();
if (StringUtils.isNotBlank(zwfl)) {
zwflList.addAll(Arrays.asList(zwfl.split("")));
zwflList.addAll(Arrays.asList(zwfl.split(",")));
}
resumeJobV2Dto.setZwfl(zwflList);
@ -367,6 +367,51 @@ public class RecruitPositionUtil {
resumeJobV2Dto.setShareThirdUserList(userList);
// 丁香园字段
resumeJobV2Dto.setDxy_jzsj(stringTurnLong(finishTime));
// 英语等级
String yydj = Util.null2String(map.get("yydj"));
if(StringUtils.isNotBlank(yydj)) {
ResumeJobDynamicField.Item itemByValue = PositionSelectItem.getItemByValue(positionSdkInstance.getDxrcw_yydj(), yydj);
if (null != itemByValue) {
resumeJobV2Dto.setDxy_yydj(Convert.toInt(itemByValue.getValue(), -1));
}
}
// 最低职称
String zdzc = Util.null2String(map.get("zdzc"));
if(StringUtils.isNotBlank(zdzc)) {
ResumeJobDynamicField.Item itemByValue = PositionSelectItem.getItemByValue(positionSdkInstance.getDxrcw_zdzc(), zdzc);
if (null != itemByValue) {
resumeJobV2Dto.setDxy_zdzc(Convert.toInt(itemByValue.getValue(), -1));
}
}
// 职位福利
String dxyzwfl = Util.null2String(map.get("dxyzwfl"));
if(StringUtils.isNotBlank(dxyzwfl)) {
List<ResumeJobDynamicField.Item> itemsByValues = PositionSelectItem.getItemsByValues(positionSdkInstance.getDxrcw_zwfl(), dxyzwfl);
if (CollectionUtils.isNotEmpty(itemsByValues)) {
List<Integer> collect = itemsByValues.stream().map(ResumeJobDynamicField.Item::getValue).map(Integer::parseInt).collect(Collectors.toList());
resumeJobV2Dto.setDxy_zwfl(collect);
}
}
// 专业要求
String zyyq = Util.null2String(map.get("zyyq"));
if(StringUtils.isNotBlank(zyyq)) {
List<List<String>> zyyqList = new ArrayList<>();
String[] split = zyyq.split("\n");
for (String s : split) {
if (StringUtils.isNotBlank(s)) {
String[] strings = s.split("-");
List<String> strings1 = Arrays.asList(strings);
zyyqList.add(strings1);
}
}
resumeJobV2Dto.setDxy_zyyq(zyyqList);
}
return resumeJobV2Dto;
}
@ -381,7 +426,7 @@ public class RecruitPositionUtil {
if (CollectionUtils.isNotEmpty(platformList)) {
List<ResumeJobDynamicField.Item> jobType = resumeJobV2Dto.getJobType();
if (CollectionUtils.isNotEmpty(jobType)) {
Map<String, String> map = jobType.stream().collect(Collectors.toMap(ResumeJobDynamicField.Item::getLabel, ResumeJobDynamicField.Item::getLabel));
Map<String, String> map = jobType.stream().collect(Collectors.toMap(ResumeJobDynamicField.Item::getLabel, ResumeJobDynamicField.Item::getValue));
for (Integer integer : platformList) {
String s = map.get(String.valueOf(integer));
if (StringUtils.isBlank(s)) {
@ -456,6 +501,9 @@ public class RecruitPositionUtil {
case "猎聘":
platId = ResumePlatform.LIEPIN;
break;
case "丁香人才网":
platId = ResumePlatform.DXY;
break;
default:
break;
}