转推其他职位、加入黑名单

This commit is contained in:
dxfeng 2023-10-19 18:13:58 +08:00
parent d2ee88918f
commit 6184dc3da7
10 changed files with 229 additions and 20 deletions

View File

@ -1,10 +1,15 @@
#\u805A\u624D\u6797\u62DB\u8058\u6D88\u606F\u63D0\u9192\uFF0C\u6D88\u606F\u6765\u6E90
RECRUIT_MESSAGE_TYPE=2022061063
#\u9762\u8BD5\u76F8\u5173\u6D88\u606F\u63D0\u9192\uFF0C\u6D88\u606F\u6765\u6E90
INTERVIEW_MESSAGE_TYPE=85
#\u6DFB\u52A0\u9762\u8BD5\u6D88\u606F\u63D0\u9192\u8868\u5F1F
INTERVIEW_MESSAGE_TYPE=2022061063
#\u6DFB\u52A0\u9762\u8BD5\u6D88\u606F\u63D0\u9192\u6807\u9898
INTERVIEW_ADD_MESSAGE_TITLE=\u9762\u8BD5\u5B89\u6392\u63D0\u9192
#\u53D6\u6D88\u9762\u8BD5\u6D88\u606F\u63D0\u9192\u8868\u5F1F
#\u53D6\u6D88\u9762\u8BD5\u6D88\u606F\u63D0\u9192\u6807\u9898
INTERVIEW_CANCEL_MESSAGE_TITLE=\u53D6\u6D88\u9762\u8BD5\u63D0\u9192
#\u9762\u8BD5\u8BC4\u4EF7\u6D88\u606F\u63D0\u9192\u6807\u9898
INTERVIEW_EVALUATE_MESSAGE_TITLE=\u9762\u8BD5\u8BC4\u4EF7\u63D0\u9192
#\u4EBA\u624D\u9ED1\u540D\u5355\u901A\u77E5
JOIN_BLACKLIST_MESSAGE_TITLE=\u4EBA\u624D\u9ED1\u540D\u5355\u901A\u77E5
#\u5E94\u8058\u8005\u7B80\u5386\u5B58\u653E\u76EE\u5F55ID
APPLICANTS_RESUMES_CATEGORY=110

View File

@ -0,0 +1,29 @@
package com.engine.recruit.conn;
import java.util.HashMap;
/**
* 聚才林数据集合
* </p>
* key忽略大小写
*
* @author:dxfeng
* @createTime: 2023/10/19
* @version: 1.0
*/
public class RecruitDataMap<V> extends HashMap<String, V> {
@Override
public V get(Object key) {
if (key instanceof String) {
// 将键转为小写形式再进行查找
return super.get(((String) key).toLowerCase());
}
return null;
}
@Override
public V put(String key, V value) {
// 将键转为小写形式后作为真正的键
return super.put(key.toLowerCase(), value);
}
}

View File

@ -0,0 +1,56 @@
package com.engine.recruit.conn;
import org.apache.commons.lang3.StringUtils;
import weaver.conn.RecordSet;
import weaver.formmode.recruit.modeexpand.util.RecruitModeUtil;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* @author:dxfeng
* @createTime: 2023/10/19
* @version: 1.0
*/
public class RecruitRecordSet {
/**
* 获取单个记录映射
*
* @param rs RecordSet
* @return
*/
public static Map<String, Object> getSingleRecordMap(RecordSet rs) {
Map<String, Object> dataMap = new RecruitDataMap<>();
if (rs.next()) {
String[] columnNames = rs.getColumnName();
for (String columnName : columnNames) {
dataMap.put(columnName.toLowerCase(), RecruitModeUtil.parseBlankToNull(rs.getString(columnName)));
}
}
return dataMap;
}
/**
* 插入数据
*
* @param dataMap 数据集合
* @param tableName 表名
*/
public static void insertData(Map<String, Object> dataMap, String tableName) {
List<String> fieldList = new ArrayList<>();
List<Object> dataList = new ArrayList<>();
List<String> paramList = new ArrayList<>();
dataMap.forEach((key, value) -> {
fieldList.add(key);
dataList.add(value);
paramList.add("?");
});
String insertSql = " insert into " + tableName + "(" + StringUtils.join(fieldList, ",") + ") values (" + StringUtils.join(paramList, ",") + ")";
RecordSet rs = new RecordSet();
rs.executeUpdate(insertSql, dataList);
}
}

View File

@ -2,6 +2,7 @@ package com.engine.recruit.service.impl;
import cn.hutool.core.convert.Convert;
import com.engine.core.impl.Service;
import com.engine.recruit.conn.RecruitRecordSet;
import com.engine.recruit.enums.ApplicantOperateEnum;
import com.engine.recruit.enums.ApplicationStatusEnum;
import com.engine.recruit.service.ApplicantResumeService;
@ -174,11 +175,60 @@ public class ApplicantResumeServiceImpl extends Service implements ApplicantResu
rs.executeUpdate("update uf_jcl_yppc set gdyy = ?,gdxxyy = ? where id = ? ", gdyy, gdxxyy, id);
// 建模推送建模
archiveTalentPool(id, false);
// 更新应聘状态为已归档
rs.executeUpdate("update uf_jcl_yppc set zt = ? where id = ? ", ApplicationStatusEnum.ARCHIVED.getValue(), id);
}
} else {
returnMap.put("msg", "请至少选择一条数据");
}
} else if (ApplicantOperateEnum.REFERRAL.getOperateType().equals(operateType)) {
// 转推其他职位
String sourceId = Util.null2String(params.get("sourceId"));
String ypzw = Util.null2String(params.get("ypzw"));
String zplc = null;
rs.executeQuery("select zplc from uf_jcl_zp_zpzw where id = ?", ypzw);
if (rs.next()) {
zplc = rs.getString("zplc");
}
rs.executeQuery("select * from uf_jcl_yppc where id = ?", sourceId);
Map<String, Object> mainDataMap = RecruitRecordSet.getSingleRecordMap(rs);
// 构建新数据
mainDataMap.put("ypzw", ypzw);
mainDataMap.put("zplc", zplc);
mainDataMap.put("zpjd", null);
mainDataMap.put("dqypjd", null);
mainDataMap.put("zt", ApplicationStatusEnum.CANDIDATE.getValue());
buildBaseFields(mainDataMap);
String uuid = UUID.randomUUID().toString();
mainDataMap.put("modeuuid", uuid);
// 移除不需要插入的字段
mainDataMap.remove("id");
mainDataMap.remove("requestId");
mainDataMap.remove("form_biz_id");
// 插入数据
RecruitRecordSet.insertData(mainDataMap, "uf_jcl_yppc");
// 权限重构
rs.executeQuery("select id,formmodeid from uf_jcl_yppc where modeuuid='" + uuid + "'");
if (rs.next()) {
//建模数据的id
int targetId = Util.getIntValue(rs.getString("id"));
int formModeId = Util.getIntValue(rs.getString("formmodeid"));
ModeRightInfo modeRightInfo = new ModeRightInfo();
modeRightInfo.setNewRight(true);
//新建的时候添加共享
modeRightInfo.editModeDataShare(1, formModeId, targetId);
// 复制明细表数据
rs.executeUpdate("insert into uf_jcl_yppc_dt1 (mainid,xxmc,xl,zy,kssj,jssj) select ?,xxmc,xl,zy,kssj,jssj from uf_jcl_yppc_dt1 where mainid = ?", targetId, sourceId);
rs.executeUpdate("insert into uf_jcl_yppc_dt2 (mainid,gsmc,kssj,jssj,gw,sqyxk,lzyy,gzzz) select ?,gsmc,kssj,jssj,gw,sqyxk,lzyy,gzzz from uf_jcl_yppc_dt2 where mainid = ?", targetId, sourceId);
rs.executeUpdate("insert into uf_jcl_yppc_dt3 (mainid,xmmc,kssj,jssj,drjs,xmms) select ?,xmmc,kssj,jssj,drjs,xmms from uf_jcl_yppc_dt3 where mainid = ?", targetId, sourceId);
rs.executeUpdate("insert into uf_jcl_yppc_dt4 (mainid,yylx,zwcd) select ?,yylx,zwcd from uf_jcl_yppc_dt4 where mainid = ?", targetId, sourceId);
}
}
return returnMap;
}
@ -192,7 +242,7 @@ public class ApplicantResumeServiceImpl extends Service implements ApplicantResu
try {
int docId = RecruitModeUtil.createDocId(secCategory, imageFileId, user);
// 更新原始简历信息设置应聘状态未待分配
rs.executeUpdate("update uf_jcl_yppc set ysjl=?,zt=? where id = ?", docId, 0, resumeId);
rs.executeUpdate("update uf_jcl_yppc set ysjl=?,zt=? where id = ?", docId, ApplicationStatusEnum.DISTRIBUTION.getValue(), resumeId);
} catch (Exception e) {
throw new RuntimeException(e);
@ -299,12 +349,12 @@ public class ApplicantResumeServiceImpl extends Service implements ApplicantResu
* @param applicantId 应聘者ID
* @param joinBlacklist 是否加入黑名单
*/
private void archiveTalentPool(String applicantId, boolean joinBlacklist) {
public void archiveTalentPool(String applicantId, boolean joinBlacklist) {
RecordSet rs = new RecordSet();
String name = "";
String mobile = "";
String talentPoolId = "";
rs.executeQuery("select xm,sjhm from uf_jcl_yppc");
rs.executeQuery("select xm,sjhm from uf_jcl_yppc where id = ?", applicantId);
if (rs.next()) {
name = rs.getString("xm");
mobile = rs.getString("sjhm");
@ -319,7 +369,6 @@ public class ApplicantResumeServiceImpl extends Service implements ApplicantResu
String insertSql = "insert into uf_jcl_rck (modeuuid, formmodeid, modedatacreater, modedatacreatedate, modedatacreatetime, modedatamodifier, modedatamodifydatetime, modedatacreatertype," +
"sfz,jlzp,zhypzw,ysjl,jlly,xm,xb,sjhm,dzyx,csrq,nl,zgxl,zgxw,byyx,zy,hyzk,gzjy,zzzt,dqszd,zhtdsj,cjr,zwpj,mz,jg,zzmm,sgcm,tzkg,gdjd,gdyy,gdxxyy,lstdcs,sfjrhmd)" +
" values (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
rs.executeQuery("select * from uf_jcl_yppc where id = ?", applicantId);
List<Object> mainDataList = new ArrayList<>();
String uuid = UUID.randomUUID().toString();
mainDataList.add(uuid);
@ -331,6 +380,7 @@ public class ApplicantResumeServiceImpl extends Service implements ApplicantResu
mainDataList.add(formModeId);
// 构建建模表基本数据
buildBaseFields(mainDataList);
rs.executeQuery("select * from uf_jcl_yppc where id = ?", applicantId);
if (rs.next()) {
mainDataList.add(RecruitModeUtil.parseBlankToNull(rs.getString("sfz")));
mainDataList.add(RecruitModeUtil.parseBlankToNull(rs.getString("jlzp")));
@ -378,6 +428,10 @@ public class ApplicantResumeServiceImpl extends Service implements ApplicantResu
// 删除人才库原来的数据
rs.executeUpdate("delete from uf_jcl_rck where id = ? ", talentPoolId);
rs.executeUpdate("delete from uf_jcl_rck_dt1 where mainid = ? ", talentPoolId);
rs.executeUpdate("delete from uf_jcl_rck_dt2 where mainid = ? ", talentPoolId);
rs.executeUpdate("delete from uf_jcl_rck_dt3 where mainid = ? ", talentPoolId);
rs.executeUpdate("delete from uf_jcl_rck_dt4 where mainid = ? ", talentPoolId);
}
/**
@ -402,6 +456,22 @@ public class ApplicantResumeServiceImpl extends Service implements ApplicantResu
mainDataList.add("0");
}
/**
* 构建建模表基本数据
*
* @param mainDataMap 参数集合
*/
private void buildBaseFields(Map<String, Object> mainDataMap) {
String dateTime = DateUtil.getFullDate();
String[] dateSplit = dateTime.split(" ");
mainDataMap.put("modedatacreater", user.getUID());
mainDataMap.put("modedatacreatedate", dateSplit[0]);
mainDataMap.put("modedatacreatetime", dateSplit[1]);
mainDataMap.put("modedatamodifier", user.getUID());
mainDataMap.put("modedatamodifydatetime", dateTime);
mainDataMap.put("modedatacreatertype", "0");
}
/**
* 权限重构
*

View File

@ -1,9 +1,18 @@
package com.engine.recruit.service.impl;
import com.engine.common.util.ServiceUtil;
import com.engine.core.impl.Service;
import com.engine.recruit.enums.ApplicationStatusEnum;
import com.engine.recruit.service.RecruitButtonService;
import weaver.conn.RecordSet;
import weaver.formmode.recruit.modeexpand.util.ApplicantCommonInfo;
import weaver.formmode.recruit.modeexpand.util.RecruitModeUtil;
import weaver.general.Util;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
/**
* <p>聚才林招聘</p>
@ -16,6 +25,46 @@ import java.util.Map;
public class JoinBlacklistServiceImpl extends Service implements RecruitButtonService {
@Override
public Map<String, Object> execute(Map<String, Object> params) {
// 当前应聘者ID
String billId = Util.null2String(params.get("billId"));
RecordSet rs = new RecordSet();
// 推人才表建模推建模更新人才表数据是否加入黑名单字段值变更为
ServiceUtil.getService(ApplicantResumeServiceImpl.class, user).archiveTalentPool(billId, true);
// 更新当前应聘者关联的所有简历状态为已淘汰
String name = "";
String mobile = "";
String positionId = "";
rs.executeQuery("select xm, sjhm, ypzw from uf_jcl_yppc where id = ? ", billId);
if (rs.next()) {
name = rs.getString("xm");
mobile = rs.getString("sjhm");
positionId = rs.getString("ypzw");
}
rs.executeUpdate("update uf_jcl_yppc set zt = ? where xm = ? and sjhm = ?", ApplicationStatusEnum.OBSOLETE.getValue(), name, mobile);
// 消息提醒当前人员简历的跟进者应聘职位的负责人/协助人
String messageType = RecruitModeUtil.getRecruitPropValue("RECRUIT_MESSAGE_TYPE");
String messageTitle = RecruitModeUtil.getRecruitPropValue("JOIN_BLACKLIST_MESSAGE_TITLE");
String applicantName = ApplicantCommonInfo.getApplicantName(billId);
String operatorName = RecruitModeUtil.getResourceNames(String.valueOf(user.getUID()));
String messageContent = "应聘者:【" + applicantName + "】,已被【" + operatorName + "】加入黑名单,相关投递已自动淘汰,请知悉。";
// 消息提醒当前人员简历的跟进者应聘职位的负责人/协助人
String zpzwfzr = "";
String zpxzr = "";
rs.executeQuery("select zpzwfzr , zpxzr from uf_jcl_zp_zpzw where id = ?", positionId);
if (rs.next()) {
zpzwfzr = rs.getString("zpzwfzr");
zpxzr = rs.getString("zpxzr");
}
Set<String> userIdSet = new HashSet<>();
userIdSet.addAll(Arrays.asList(zpzwfzr.split(",")));
userIdSet.addAll(Arrays.asList(zpxzr.split(",")));
RecruitModeUtil.messagePush(messageType, messageTitle, messageContent, userIdSet, user.getUID());
return null;
}
}

View File

@ -1,7 +1,6 @@
package weaver.formmode.recruit.modeexpand.entrymanager;
import com.engine.recruit.enums.EntryStatusEnum;
import org.apache.commons.lang3.StringUtils;
import weaver.conn.RecordSet;
import weaver.formmode.customjavacode.AbstractModeExpandJavaCodeNew;
import weaver.general.Util;
@ -52,11 +51,11 @@ public class AddEntryModeExpand extends AbstractModeExpandJavaCodeNew {
return result;
}
}
// 更新应聘者当前应聘阶段
String dqypjd = Util.null2String(param.get("dqypjd"));
if (StringUtils.isNotBlank(dqypjd)) {
rs.executeUpdate("update uf_jcl_yppc set dqypjd = ? where id = ?", dqypjd, pcid);
}
//// 更新应聘者当前应聘阶段
//String dqypjd = Util.null2String(param.get("dqypjd"));
//if (StringUtils.isNotBlank(dqypjd)) {
// rs.executeUpdate("update uf_jcl_yppc set dqypjd = ? where id = ?", dqypjd, pcid);
//}
}
}
} catch (Exception e) {

View File

@ -38,7 +38,7 @@ public class BatchAddInterviewResultModeExpand extends AbstractModeExpandJavaCod
public BatchAddInterviewResultModeExpand() throws UnsupportedEncodingException {
super();
messageType = RecruitModeUtil.getRecruitPropValue("INTERVIEW_MESSAGE_TYPE");
messageType = RecruitModeUtil.getRecruitPropValue("RECRUIT_MESSAGE_TYPE");
title = RecruitModeUtil.getRecruitPropValue("INTERVIEW_ADD_MESSAGE_TITLE");
}

View File

@ -61,7 +61,7 @@ public class CreateInterviewModeExpand extends AbstractModeExpandJavaCodeNew {
InterviewOperateTypeEnum operateTypeEnum = InterviewOperateTypeEnum.getOperateType(operateType);
switch (operateTypeEnum) {
case ARRANGE:
messageType = RecruitModeUtil.getRecruitPropValue("INTERVIEW_MESSAGE_TYPE");
messageType = RecruitModeUtil.getRecruitPropValue("RECRUIT_MESSAGE_TYPE");
title = RecruitModeUtil.getRecruitPropValue("INTERVIEW_ADD_MESSAGE_TITLE");
arrangeInterview(user, mainDataMap);
default:

View File

@ -63,13 +63,13 @@ public class UpdateInterviewModeExpand extends AbstractModeExpandJavaCodeNew {
switch (operateTypeEnum) {
case EVALUATE:
// 面试评价
messageType = RecruitModeUtil.getRecruitPropValue("INTERVIEW_MESSAGE_TYPE");
messageType = RecruitModeUtil.getRecruitPropValue("RECRUIT_MESSAGE_TYPE");
title = RecruitModeUtil.getRecruitPropValue("INTERVIEW_EVALUATE_MESSAGE_TITLE");
evaluateInterview(params, requestInfo.getCreatorid(), mainDataMap);
break;
case CANCEL:
// 面试取消
messageType = RecruitModeUtil.getRecruitPropValue("INTERVIEW_MESSAGE_TYPE");
messageType = RecruitModeUtil.getRecruitPropValue("RECRUIT_MESSAGE_TYPE");
title = RecruitModeUtil.getRecruitPropValue("INTERVIEW_CANCEL_MESSAGE_TITLE");
cancelInterView(params, requestInfo, billId, mainDataMap);
break;

View File

@ -2,6 +2,7 @@ package weaver.formmode.recruit.modeexpand.position;
import cn.hutool.core.convert.Convert;
import com.engine.recruit.constant.ModeTable;
import com.engine.recruit.enums.ApplicationStatusEnum;
import com.engine.recruit.enums.CommonBrowserTypeEnum;
import com.engine.recruit.enums.HighestDegreeEnum;
import com.weaver.rpa.sdk.clients.application.resume.ERPAResumeSDKClient;
@ -78,7 +79,7 @@ public class ResumeSavedThread extends LocalRunnable {
// 千里聆简历ID
params.put("qlljl", resumeId);
// 状态指定待分配
params.put("zt", "0");
params.put("zt", ApplicationStatusEnum.DISTRIBUTION.getValue());
// 填充建模数据基本信息
int formModeId = ApplicantCommonInfo.getModeIdByTableName(ModeTable.UF_JCL_YPPC);