weaver-hrm-recruit/src/com/engine/recruit/service/impl/ApplicantResumeServiceImpl....

815 lines
38 KiB
Java
Raw Normal View History

package com.engine.recruit.service.impl;
import com.engine.core.impl.Service;
2023-11-16 17:02:34 +08:00
import com.engine.recruit.conn.*;
2024-08-05 14:28:01 +08:00
import com.engine.recruit.entity.card.EduInfo;
import com.engine.recruit.entity.card.ResumeCardInfo;
import com.engine.recruit.entity.card.Tags;
import com.engine.recruit.entity.card.WorkInfo;
2023-11-03 14:22:47 +08:00
import com.engine.recruit.entity.record.ApplicantRecordPo;
2023-09-28 09:11:08 +08:00
import com.engine.recruit.enums.ApplicantOperateEnum;
import com.engine.recruit.enums.ApplicationStatusEnum;
2023-11-02 14:26:03 +08:00
import com.engine.recruit.enums.RecordOperateEnum;
import com.engine.recruit.exception.CustomizeRunTimeException;
import com.engine.recruit.service.ApplicantResumeService;
2023-11-13 15:21:35 +08:00
import org.apache.commons.collections.CollectionUtils;
2023-09-25 16:35:14 +08:00
import org.apache.commons.lang3.StringUtils;
2024-08-05 14:28:01 +08:00
import org.apache.poi.util.IOUtils;
2023-11-02 14:26:03 +08:00
import weaver.common.DateUtil;
import weaver.conn.RecordSet;
2024-08-05 14:28:01 +08:00
import weaver.file.ImageFileManager;
2023-10-17 15:18:53 +08:00
import weaver.formmode.recruit.modeexpand.util.RecruitModeUtil;
import weaver.formmode.setup.ModeRightInfo;
2023-09-26 15:21:59 +08:00
import weaver.general.Util;
2023-09-25 16:35:14 +08:00
import weaver.hrm.resource.ResourceComInfo;
2024-08-05 14:28:01 +08:00
import java.io.InputStream;
import java.util.*;
/**
* @author:dxfeng
* @createTime: 2023/09/20
* @version: 1.0
*/
public class ApplicantResumeServiceImpl extends Service implements ApplicantResumeService {
2023-11-02 14:26:03 +08:00
@Override
public Map<String, Object> getApplicantsName(String ids) {
2023-09-25 16:35:14 +08:00
Map<String, Object> returnMap = new HashMap<>(1);
RecordSet rs = new RecordSet();
String[] split = ids.split(",");
List<Map<String, Object>> list = new ArrayList<>();
for (String id : split) {
rs.executeQuery("select xm from uf_jcl_yppc where id = ?", id);
if (rs.next()) {
Map<String, Object> rowMap = new HashMap<>();
rowMap.put("id", id);
rowMap.put("name", rs.getString("xm"));
list.add(rowMap);
}
}
returnMap.put("rows", list);
return returnMap;
}
2023-09-25 16:35:14 +08:00
@Override
public Map<String, Object> getInterviewInfoById(String id) {
Map<String, Object> returnMap = new HashMap<>(16);
String sql = "select a.ypz,b.xm,a.ypzw,b.tdsj,b.sjhm,b.dzyx,a.msfs,a.mshj ,a.msc,a.msg ,a.ptmsg,a.msrq,a.msdd ,a.msfkr from uf_jcl_ms a inner join uf_jcl_yppc b on a.ypz = b.id where a.id = ?";
RecordSet rs = new RecordSet();
rs.executeQuery(sql, id);
if (rs.next()) {
// 应聘者
returnMap.put("ypz", createApplicantBrowserMap(rs.getString("ypz"), rs.getString("xm")));
// 应聘职位
returnMap.put("ypzw", createAppliedPositionBrowserMap(rs.getString("ypzw")));
// 投递时间
returnMap.put("tdsj", createApplicantBrowserMap(rs.getString("tdsj")));
// 手机号码
returnMap.put("sjhm", createApplicantBrowserMap(rs.getString("sjhm")));
// 电子邮箱
returnMap.put("dzyx", createApplicantBrowserMap(rs.getString("dzyx")));
// 面试方式
returnMap.put("msfs", createApplicantBrowserMap(rs.getString("msfs")));
// 面试环节
returnMap.put("mshj", createApplicantBrowserMap(rs.getString("mshj")));
// 面试轮次
returnMap.put("msc", createApplicantBrowserMap(rs.getString("msc")));
// 面试官
returnMap.put("msg", createResourceBrowserMap(rs.getString("msg")));
// 陪同面试官
returnMap.put("ptmsg", createResourceBrowserMap(rs.getString("ptmsg")));
// 面试日期
returnMap.put("msrq", createApplicantBrowserMap(rs.getString("msrq")));
// 面试地址
returnMap.put("msdd", createApplicantBrowserMap(rs.getString("msdd")));
}
return returnMap;
}
2023-09-26 15:21:59 +08:00
@Override
public Map<String, Object> getDisplayLayoutId(Map<String, Object> params) {
Map<String, Object> returnMap = new HashMap<>();
String layoutId = Util.null2String(params.get("layoutid"));
String modeId = Util.null2String(params.get("modeId"));
returnMap.put("layoutId", layoutId);
RecordSet rs = new RecordSet();
rs.executeQuery("select layoutname from modehtmllayout where modeid = ? and id = ?", modeId, layoutId);
if (rs.next()) {
String layoutName = rs.getString("layoutname");
// 获取相同名称的显示布局ID
rs.executeQuery("select id from modehtmllayout where type = 0 and modeid = ? and layoutname =?", modeId, layoutName);
if (rs.next()) {
returnMap.put("layoutId", rs.getString("id"));
}
}
return returnMap;
}
@Override
public Map<String, Object> getTabCount(Map<String, Object> params) {
Map<String, Object> returnMap = new HashMap<>();
String billId = Util.null2String(params.get("billid"));
List<Integer> countList = new ArrayList<>();
RecordSet rs = new RecordSet();
// 部门筛选反馈
rs.executeQuery("select count(id) as num from uf_jcl_bmsxfk where ypz = ?", billId);
if (rs.next()) {
countList.add(rs.getInt("num"));
}
// 笔试
rs.executeQuery("select count(id) as num from uf_jcl_bs where ypz = ?", billId);
if (rs.next()) {
countList.add(rs.getInt("num"));
}
// 面试
rs.executeQuery("select count(id) as num from uf_jcl_ms where ypz = ?", billId);
if (rs.next()) {
countList.add(rs.getInt("num"));
}
// 背调
rs.executeQuery("select count(id) as num from uf_jcl_bd where ypz = ?", billId);
if (rs.next()) {
countList.add(rs.getInt("num"));
}
// 薪酬谈判
rs.executeQuery("select count(id) as num from uf_jcl_xctp where ypz = ?", billId);
if (rs.next()) {
countList.add(rs.getInt("num"));
}
// 历史投递记录
rs.executeQuery("select xm,sjhm from uf_jcl_yppc where id = ?", billId);
if (rs.next()) {
rs.executeQuery("select count(id) as num from uf_jcl_yppc where xm=? and sjhm =?", rs.getString("xm"), rs.getString("sjhm"));
if (rs.next()) {
countList.add(rs.getInt("num"));
}
2023-09-28 09:11:08 +08:00
} else {
countList.add(0);
}
returnMap.put("countList", countList);
return returnMap;
}
2023-09-28 09:11:08 +08:00
@Override
public Map<String, Object> updateApplicantsInfo(Map<String, Object> params) {
Map<String, Object> returnMap = new HashMap<>();
String operateType = Util.null2String(params.get("operateType"));
RecordSet rs = new RecordSet();
if (ApplicantOperateEnum.ELIMINATE.getOperateType().equals(operateType)) {
// 淘汰
2023-09-28 15:14:32 +08:00
String ids = Util.null2String(params.get("ids"));
2023-10-10 09:27:46 +08:00
rs.executeUpdate("update uf_jcl_yppc set zt = ? where id in (" + ids + ")", ApplicationStatusEnum.OBSOLETE.getValue());
2023-11-03 14:22:47 +08:00
// 插入应聘过程
2023-11-02 14:26:03 +08:00
String dateTime = DateUtil.getDateTime();
for (String s : ids.split(",")) {
2023-11-03 14:22:47 +08:00
ApplicantRecordPo recordPo = ApplicantRecordPo.builder()
.billId(s)
.operateTime(dateTime)
.user(user)
.recordOperateType(RecordOperateEnum.ELIMINATE)
.build();
recordPo.execute();
2023-11-02 14:26:03 +08:00
}
returnMap.put("msg", "操作成功");
} else if (ApplicantOperateEnum.TRANSFER.getOperateType().equals(operateType)) {
// 转移阶段
2023-09-28 15:14:32 +08:00
String dqypjd = Util.null2String(params.get("dqypjd"));
String billid = Util.null2String(params.get("billid"));
2023-11-03 14:22:47 +08:00
Map<String, Object> otherParam = new HashMap<>();
otherParam.put("sourceStep", ApplicantCommonInfo.getCurrentStep(billid).getDescription());
// 查询当前阶段的阶段类型
rs.executeQuery("select jdlx from uf_jcl_zpjdsz where id = ?", dqypjd);
if (rs.next()) {
String jdlx = rs.getString("jdlx");
rs.executeUpdate("update uf_jcl_yppc set zpjd = ?,dqypjd = ? where id = ?", dqypjd, jdlx, billid);
returnMap.put("msg", "操作成功");
} else {
throw new CustomizeRunTimeException("转移阶段失败");
}
2023-11-03 14:22:47 +08:00
otherParam.put("targetStep", ApplicantCommonInfo.getCurrentStep(billid).getDescription());
// 插入应聘过程
ApplicantRecordPo recordPo = ApplicantRecordPo.builder()
.billId(billid)
.operateTime(DateUtil.getDateTime())
.user(user)
.recordOperateType(RecordOperateEnum.TRANSFER_STAGE)
.otherParam(otherParam)
.build();
recordPo.execute();
} else if (ApplicantOperateEnum.ASSIGN.getOperateType().equals(operateType)) {
// 分配职位
2024-06-28 14:02:21 +08:00
String billid = Util.null2String(params.get("billid"));
if (StringUtils.isNotBlank(billid)) {
// 兼容V1版本分配职位操作
String ypzw = Util.null2String(params.get("ypzw"));
if (StringUtils.isBlank(ypzw)) {
throw new CustomizeRunTimeException("应聘职位不可为空");
}
String flowId = PositionCommonInfo.getRecruitFlowId(ypzw);
Map<String, String> initialStage = ApplicantCommonInfo.getInitialStage(flowId);
String zpjd = "";
String dqypjd = "";
if (null != initialStage) {
zpjd = initialStage.get("zpjd");
dqypjd = initialStage.get("jdlx");
}
rs.executeUpdate("update uf_jcl_yppc set ypzw = ? , zplc = ? , zpjd = ? , dqypjd = ?, zt = 1 where id = ?", ypzw, flowId, zpjd, dqypjd, billid);
} else {
String ids = Util.null2String(params.get("ids"));
// 校验所选
rs.executeQuery("select id from uf_jcl_yppc where zt != 0 and id in(" + ids + ")");
if (rs.next()) {
throw new CustomizeRunTimeException("操作失败,当前存在非待分配简历数据,请刷新后重试");
}
String ypzw = Util.null2String(params.get("ypzw"));
String zplc = Util.null2String(params.get("zplc"));
String zpjd = Util.null2String(params.get("zpjd"));
String dqypjd = Util.null2String(params.get("dqypjd"));
if (StringUtils.isBlank(ypzw)) {
throw new CustomizeRunTimeException("应聘职位不可为空");
}
if (StringUtils.isBlank(zplc)) {
throw new CustomizeRunTimeException("未获取到招聘流程,请检查招聘职位配置");
}
if (StringUtils.isBlank(zpjd)) {
throw new CustomizeRunTimeException("未获取到招聘阶段,请检查招聘流程配置");
}
if (StringUtils.isBlank(dqypjd)) {
throw new CustomizeRunTimeException("当前应聘阶段获取失败");
}
rs.executeUpdate("update uf_jcl_yppc set ypzw = ? , zplc = ? , zpjd = ? , dqypjd = ?, zt = 1 where id in(" + ids + ")", ypzw, zplc, zpjd, dqypjd);
2024-02-04 15:50:43 +08:00
}
returnMap.put("msg", "操作成功");
} else if (ApplicantOperateEnum.ARCHIVE.getOperateType().equals(operateType)) {
// 归档人才库
String gdyy = Util.null2String(params.get("gdyy"));
String gdxxyy = Util.null2String(params.get("gdxxyy"));
String ids = Util.null2String(params.get("ids"));
if (StringUtils.isNotBlank(ids)) {
String[] split = ids.split(",");
2023-11-03 14:22:47 +08:00
String dateTime = DateUtil.getDateTime();
for (String id : split) {
rs.executeUpdate("update uf_jcl_yppc set gdyy = ?,gdxxyy = ? where id = ? ", gdyy, gdxxyy, id);
// 建模推送建模
2023-11-20 18:33:57 +08:00
archiveTalentPool(id, false, "");
2023-10-19 18:13:58 +08:00
// 更新应聘状态为已归档
rs.executeUpdate("update uf_jcl_yppc set zt = ? where id = ? ", ApplicationStatusEnum.ARCHIVED.getValue(), id);
2023-11-03 14:22:47 +08:00
// 插入应聘过程
Map<String, Object> otherParam = new HashMap<>();
otherParam.put("gdyy", gdyy);
otherParam.put("gdxxyy", gdxxyy);
ApplicantRecordPo recordPo = ApplicantRecordPo.builder()
.billId(id)
.operateTime(dateTime)
.user(user)
.recordOperateType(RecordOperateEnum.ARCHIVE_TALENT_POOL)
.otherParam(otherParam)
.build();
recordPo.execute();
}
} else {
2023-11-21 11:17:06 +08:00
throw new CustomizeRunTimeException("请至少选择一条数据");
}
2023-10-19 18:13:58 +08:00
} else if (ApplicantOperateEnum.REFERRAL.getOperateType().equals(operateType)) {
// 转推其他职位
String sourceId = Util.null2String(params.get("sourceId"));
String ypzw = Util.null2String(params.get("ypzw"));
rs.executeQuery("select * from uf_jcl_yppc where id = ?", sourceId);
Map<String, Object> mainDataMap = RecruitRecordSet.getSingleRecordMap(rs);
2024-05-13 11:27:07 +08:00
// 转推其他职位的时候,如果选择的职位存在候选中的
// 提示:该职位已在应聘中,无需重复应聘
String xm = Util.null2String(mainDataMap.get("xm"));
String sjhm = Util.null2String(mainDataMap.get("sjhm"));
2024-08-05 14:28:01 +08:00
if (StringUtils.isNotBlank(sjhm)) {
2024-05-13 11:27:07 +08:00
rs.executeQuery("select id from uf_jcl_yppc where xm = ? and sjhm = ? and ypzw = ?", xm, sjhm, ypzw);
2024-08-05 14:28:01 +08:00
} else {
2024-05-13 11:27:07 +08:00
rs.executeQuery("select id from uf_jcl_yppc where xm = ? and (sjhm is null or sjhm = '') and ypzw = ?", xm, ypzw);
}
if (rs.next()) {
throw new CustomizeRunTimeException("该职位已在应聘中,无需重复应聘");
}
2023-10-19 18:13:58 +08:00
// 构建新数据
mainDataMap.put("ypzw", ypzw);
2023-11-20 18:33:57 +08:00
String flowId = PositionCommonInfo.getRecruitFlowId(ypzw);
Map<String, String> initialStage = ApplicantCommonInfo.getInitialStage(flowId);
if (null != initialStage) {
String zpjd = initialStage.get("zpjd");
String dqypjd = initialStage.get("jdlx");
if (StringUtils.isNotBlank(zpjd) && StringUtils.isNotBlank(dqypjd)) {
mainDataMap.put("zplc", flowId);
mainDataMap.put("zpjd", zpjd);
mainDataMap.put("dqypjd", dqypjd);
}
2024-02-04 15:50:43 +08:00
} else {
throw new CustomizeRunTimeException("未获取到关联招聘流程的招聘阶段,请检查流程配置");
2023-11-20 18:33:57 +08:00
}
2024-07-15 09:48:54 +08:00
// 投递时间
mainDataMap.put("tdsj", DateUtil.getDateTime());
2023-10-19 18:13:58 +08:00
mainDataMap.put("zt", ApplicationStatusEnum.CANDIDATE.getValue());
2023-11-02 14:26:03 +08:00
RecruitRecordSet.buildModeInsertFields(mainDataMap, user.getUID());
2023-10-19 18:13:58 +08:00
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);
//新建的时候添加共享
2023-11-03 14:47:34 +08:00
modeRightInfo.editModeDataShare(user.getUID(), formModeId, targetId);
2023-10-19 18:13:58 +08:00
// 复制明细表数据
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);
}
2023-09-28 09:11:08 +08:00
}
return returnMap;
}
2023-10-10 09:27:46 +08:00
2023-11-13 15:21:35 +08:00
@Override
public Map<String, Object> checkRepeatResume(Map<String, Object> param) {
String name = Util.null2String(param.get("xm"));
String mobile = Util.null2String(param.get("sjhm"));
String positionId = Util.null2String(param.get("ypzw"));
2023-11-16 17:02:34 +08:00
String billId = Util.null2String(param.get("billid"));
2023-11-13 15:21:35 +08:00
Map<String, Object> returnMap = new HashMap<>();
// 判断是否黑名单
boolean joinBlackList = CheckRepeatResume.joinBlackList(name, mobile);
if (joinBlackList) {
throw new CustomizeRunTimeException("保存失败,当前录入应聘者为黑名单人员");
}
2023-11-16 17:02:34 +08:00
List<Map<String, Object>> repeatPositionResumeList = CheckRepeatResume.getRepeatPositionResumeList(name, mobile, positionId, billId);
2023-11-13 15:21:35 +08:00
if (CollectionUtils.isNotEmpty(repeatPositionResumeList)) {
2023-12-25 16:42:15 +08:00
if (StringUtils.isBlank(positionId)) {
throw new CustomizeRunTimeException("保存失败,该人员已有待分配状态数据");
}
2023-11-13 15:21:35 +08:00
throw new CustomizeRunTimeException("保存失败,该人员已有相同的应聘中的职位");
}
return returnMap;
}
2024-08-01 10:18:10 +08:00
@Override
public Map<String, Object> getResumeCardInfo(Map<String, Object> param) {
2024-08-05 14:28:01 +08:00
String idsString = Util.null2String(param.get("idsString"));
List<ResumeCardInfo> resumeCardInfos = new ArrayList<>();
if (StringUtils.isNotBlank(idsString)) {
String[] ids = idsString.split(",");
for (String id : ids) {
RecordSet rs = new RecordSet();
rs.executeQuery("select id, xm, jlzp, ypzw, xb, nl, zgxl, gzjy, tdsj, jlly from uf_jcl_yppc where id = ?", id);
RecruitDataMap<Object> map = RecruitRecordSet.getSingleRecordMap(rs);
ResumeCardInfo resumeCardInfo = new ResumeCardInfo();
// 基本信息构建
resumeCardInfo.setId(map.getInt("id"));
resumeCardInfo.setLastName(map.getString("xm"));
// TODO 照片处理
String jlzp = map.getString("jlzp");
if (StringUtils.isNotBlank(jlzp)) {
try {
int imageFieldByDocId = ApplicantCommonInfo.getImageFieldByDocId(jlzp);
ImageFileManager manager = new ImageFileManager();
manager.getImageFileInfoById(imageFieldByDocId);
InputStream inputStream = manager.getInputStream();
// 转base64
String base64 = Base64.getEncoder().encodeToString(IOUtils.toByteArray(inputStream));
resumeCardInfo.setImage("data:image/png;base64," + base64);
} catch (Exception e) {
rs.writeLog("简历头像转换失败", e);
}
}
resumeCardInfo.setJobTitle(ApplicantCommonInfo.getApplicantPosition(map.getString("ypzw")));
resumeCardInfo.setSex(map.getString("xb"));
resumeCardInfo.setAge(map.getString("nl"));
resumeCardInfo.setEducation(map.getString("zgxl"));
resumeCardInfo.setWorkYear(ApplicantCommonInfo.getRecruitCommonBrowserValue(map.getString("gzjy")));
resumeCardInfo.setSubmissionTime(map.getString("tdsj"));
resumeCardInfo.setSubmissionFrom(ApplicantCommonInfo.getRecruitCommonBrowserValue(map.getString("jlly")));
// 标签构建
List<Tags> tags = new ArrayList<>();
List<Map<String, Object>> modeTabs = ApplicantResumeServiceImpl.getModeTabs(id, rs);
if (CollectionUtils.isNotEmpty(modeTabs)) {
for (Map<String, Object> modeTab : modeTabs) {
Tags tag = new Tags();
tag.setTitle(Util.null2String(modeTab.get("tabname")));
tag.setColor(Util.null2String(modeTab.get("color")));
tag.setBgColor(Util.null2String(modeTab.get("bgcolor")));
tag.setBdColor(Util.null2String(modeTab.get("bdcolor")));
tags.add(tag);
}
}
resumeCardInfo.setTags(tags);
// 教育经历 默认取最新的一段,若无,则显示“暂无学习经历”
List<EduInfo> eduInfoList = new ArrayList<>();
rs.executeQuery("select * from uf_jcl_yppc_dt1 where mainid =? order by kssj desc", id);
RecruitDataMap<Object> eduInfoMap = RecruitRecordSet.getSingleRecordMap(rs);
if (!eduInfoMap.isEmpty()) {
EduInfo eduInfo = new EduInfo();
String kssj = eduInfoMap.getString("kssj");
String jssj = eduInfoMap.getString("jssj");
eduInfo.setStart(kssj);
eduInfo.setEnd(jssj);
eduInfo.setProfessional(eduInfoMap.getString("zy"));
eduInfo.setSchool(eduInfoMap.getString("xxmc"));
eduInfoList.add(eduInfo);
}
resumeCardInfo.setEduInfo(eduInfoList);
// 工作经历 默认取最新的两段,时间倒序,若无,则显示“暂无工作经历”,增加工作时间计算(结束时间-开始时间,显示年月)
List<WorkInfo> workInfoList = new ArrayList<>();
rs.executeQuery("select * from uf_jcl_yppc_dt2 where mainid =? order by kssj desc", id);
while (rs.next() && workInfoList.size() < 2) {
WorkInfo workInfo = new WorkInfo();
workInfo.setStart(rs.getString("kssj"));
workInfo.setEnd(rs.getString("jssj"));
workInfo.setCompany(rs.getString("gsmc"));
workInfo.setJob(rs.getString("gw"));
workInfoList.add(workInfo);
}
resumeCardInfo.setWorkInfo(workInfoList);
// 招聘过程
resumeCardInfo.setRecruitProcess(new ArrayList<>());
2024-08-01 10:18:10 +08:00
2024-08-05 14:28:01 +08:00
resumeCardInfos.add(resumeCardInfo);
}
}
Map<String, Object> returnMap = new HashMap<>();
returnMap.put("resumeCardInfos", resumeCardInfos);
2024-08-01 10:18:10 +08:00
return returnMap;
}
@Override
public Map<String, Object> getResumeListStatus(Map<String, Object> param) {
return null;
}
@Override
public Map<String, Object> updateResumeListStatus(Map<String, Object> param) {
return null;
}
2023-09-25 16:35:14 +08:00
/**
* 构建普通数据格式
*
* @param value
* @return
*/
private Map<String, Object> createApplicantBrowserMap(String value) {
if (StringUtils.isBlank(value)) {
return null;
}
Map<String, Object> browserMap = new HashMap<>(1);
browserMap.put("value", value);
return browserMap;
}
/**
* 构建应聘者浏览按钮值
*
* @param id
* @param name
* @return
*/
private Map<String, Object> createApplicantBrowserMap(String id, String name) {
Map<String, Object> browserMap = new HashMap<>(2);
if (StringUtils.isBlank(id)) {
return browserMap;
}
browserMap.put("value", id);
List<Map<String, Object>> objList = new ArrayList<>();
Map<String, Object> obj = new HashMap<>(2);
obj.put("id", id);
obj.put("name", name);
objList.add(obj);
browserMap.put("specialobj", objList);
return browserMap;
}
/**
* 构建应聘职位浏览按钮
*
* @param id
* @return
*/
private Map<String, Object> createAppliedPositionBrowserMap(String id) {
Map<String, Object> browserMap = new HashMap<>(2);
if (StringUtils.isBlank(id)) {
return browserMap;
}
browserMap.put("value", id);
RecordSet rs = new RecordSet();
rs.executeQuery("select zpzwmc from uf_jcl_zp_zpzw where id = ?", id);
if (rs.next()) {
List<Map<String, Object>> objList = new ArrayList<>();
Map<String, Object> obj = new HashMap<>(2);
obj.put("id", id);
obj.put("name", rs.getString("zpzwmc"));
objList.add(obj);
browserMap.put("specialobj", objList);
}
return browserMap;
}
/**
* 构建人员浏览按钮值
*
* @param ids
* @return
*/
private Map<String, Object> createResourceBrowserMap(String ids) {
Map<String, Object> browserMap = new HashMap<>(2);
if (StringUtils.isBlank(ids)) {
return browserMap;
}
browserMap.put("value", ids);
List<Map<String, Object>> objList = new ArrayList<>();
String[] split = ids.split(",");
try {
ResourceComInfo resourceComInfo = new ResourceComInfo();
for (String s : split) {
Map<String, Object> obj = new HashMap<>(2);
obj.put("id", s);
obj.put("name", resourceComInfo.getLastname(s));
objList.add(obj);
}
} catch (Exception e) {
throw new RuntimeException(e);
}
browserMap.put("specialobj", objList);
return browserMap;
}
/**
* 归档人才库
*
* @param applicantId 应聘者ID
* @param joinBlacklist 是否加入黑名单
2023-11-20 18:33:57 +08:00
* @param gdyy 归档原因
*/
2023-11-20 18:33:57 +08:00
public void archiveTalentPool(String applicantId, boolean joinBlacklist, String gdyy) {
RecordSet rs = new RecordSet();
String name = "";
String mobile = "";
String talentPoolId = "";
2023-10-19 18:13:58 +08:00
rs.executeQuery("select xm,sjhm from uf_jcl_yppc where id = ?", applicantId);
if (rs.next()) {
name = rs.getString("xm");
mobile = rs.getString("sjhm");
}
rs.executeQuery("select id from uf_jcl_rck where xm = ? and sjhm = ?", name, mobile);
if (rs.next()) {
talentPoolId = rs.getString("id");
}
// 推送建模主表数据
2023-10-20 09:46:18 +08:00
Map<String, Object> dataMap = new RecruitDataMap<>();
String uuid = UUID.randomUUID().toString();
2023-10-20 09:46:18 +08:00
dataMap.put("modeuuid", uuid);
2024-02-01 13:31:14 +08:00
int formModeId = ApplicantCommonInfo.getModeIdByTableName("uf_jcl_rck");
2023-10-20 09:46:18 +08:00
dataMap.put("formmodeid", formModeId);
// 构建建模表基本数据
2023-11-02 14:26:03 +08:00
RecruitRecordSet.buildModeInsertFields(dataMap, user.getUID());
2023-10-19 18:13:58 +08:00
rs.executeQuery("select * from uf_jcl_yppc where id = ?", applicantId);
if (rs.next()) {
2023-10-20 09:46:18 +08:00
dataMap.put("sfz", RecruitModeUtil.parseBlankToNull(rs.getString("sfz")));
dataMap.put("jlzp", RecruitModeUtil.parseBlankToNull(rs.getString("jlzp")));
dataMap.put("zhypzw", RecruitModeUtil.parseBlankToNull(rs.getString("ypzw")));
dataMap.put("ysjl", RecruitModeUtil.parseBlankToNull(rs.getString("ysjl")));
dataMap.put("jlly", RecruitModeUtil.parseBlankToNull(rs.getString("jlly")));
dataMap.put("xm", RecruitModeUtil.parseBlankToNull(rs.getString("xm")));
dataMap.put("xb", RecruitModeUtil.parseBlankToNull(rs.getString("xb")));
dataMap.put("sjhm", RecruitModeUtil.parseBlankToNull(rs.getString("sjhm")));
dataMap.put("dzyx", RecruitModeUtil.parseBlankToNull(rs.getString("dzyx")));
dataMap.put("csrq", RecruitModeUtil.parseBlankToNull(rs.getString("csrq")));
dataMap.put("nl", RecruitModeUtil.parseBlankToNull(rs.getString("nl")));
dataMap.put("zgxl", RecruitModeUtil.parseBlankToNull(rs.getString("zgxl")));
dataMap.put("zgxw", RecruitModeUtil.parseBlankToNull(rs.getString("zgxw")));
dataMap.put("byyx", RecruitModeUtil.parseBlankToNull(rs.getString("byyx")));
dataMap.put("zy", RecruitModeUtil.parseBlankToNull(rs.getString("zy")));
dataMap.put("hyzk", RecruitModeUtil.parseBlankToNull(rs.getString("hyzk")));
dataMap.put("gzjy", RecruitModeUtil.parseBlankToNull(rs.getString("gzjy")));
dataMap.put("zzzt", RecruitModeUtil.parseBlankToNull(rs.getString("zzzt")));
dataMap.put("dqszd", RecruitModeUtil.parseBlankToNull(rs.getString("dqszd")));
dataMap.put("zhtdsj", RecruitModeUtil.parseBlankToNull(rs.getString("tdsj")));
dataMap.put("cjr", RecruitModeUtil.parseBlankToNull(rs.getString("cjr")));
dataMap.put("zwpj", RecruitModeUtil.parseBlankToNull(rs.getString("zwpj")));
dataMap.put("mz", RecruitModeUtil.parseBlankToNull(rs.getString("mz")));
dataMap.put("jg", RecruitModeUtil.parseBlankToNull(rs.getString("jg")));
dataMap.put("zzmm", RecruitModeUtil.parseBlankToNull(rs.getString("zzmm")));
dataMap.put("sgcm", RecruitModeUtil.parseBlankToNull(rs.getString("sgcm")));
dataMap.put("tzkg", RecruitModeUtil.parseBlankToNull(rs.getString("tzkg")));
// 归档阶段
2023-11-03 14:22:47 +08:00
dataMap.put("gdjd", RecruitModeUtil.parseBlankToNull(rs.getString("dqypjd")));
2023-10-20 09:46:18 +08:00
dataMap.put("gdyy", RecruitModeUtil.parseBlankToNull(rs.getString("gdyy")));
dataMap.put("gdxxyy", RecruitModeUtil.parseBlankToNull(rs.getString("gdxxyy")));
}
// 历史投递次数
rs.executeQuery("select count(id) as num from uf_jcl_yppc where xm=? and sjhm =?", rs.getString("xm"), rs.getString("sjhm"));
if (rs.next()) {
2023-10-20 09:46:18 +08:00
dataMap.put("lstdcs", rs.getInt("num"));
}
// 是否加入黑名单
2023-10-20 09:46:18 +08:00
if (joinBlacklist) {
dataMap.put("sfjrhmd", 0);
// 归档原因黑名单
dataMap.put("gdyy", 16);
} else {
dataMap.put("sfjrhmd", 1);
}
2023-11-20 18:33:57 +08:00
if (StringUtils.isNotBlank(gdyy)) {
dataMap.put("gdyy", gdyy);
dataMap.put("gdxxyy", "");
}
2023-10-20 09:46:18 +08:00
RecruitRecordSet.insertData(dataMap, "uf_jcl_rck");
refreshRight(uuid, formModeId, applicantId);
// 删除人才库原来的数据
rs.executeUpdate("delete from uf_jcl_rck where id = ? ", talentPoolId);
2023-10-19 18:13:58 +08:00
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);
}
2023-10-19 18:13:58 +08:00
/**
* 权限重构
*
* @param uuid UUID
* @param formModeId 建模ID
* @param applicantId 应聘者ID
*/
private void refreshRight(String uuid, int formModeId, String applicantId) {
RecordSet rs = new RecordSet();
rs.executeQuery("select id from uf_jcl_rck where modeuuid='" + uuid + "'");
if (rs.next()) {
//建模数据的id
int bid = Util.getIntValue(rs.getString("id"));
ModeRightInfo modeRightInfo = new ModeRightInfo();
modeRightInfo.setNewRight(true);
//新建的时候添加共享
2023-11-03 14:47:34 +08:00
modeRightInfo.editModeDataShare(user.getUID(), formModeId, bid);
// 插入明细表数据
rs.executeQuery("select * from uf_jcl_yppc_dt1 where mainid = ? ", applicantId);
List<List<Object>> insertList = new ArrayList<>();
while (rs.next()) {
List<Object> paramList = new ArrayList<>();
// mainid
paramList.add(bid);
paramList.add(RecruitModeUtil.parseBlankToNull(rs.getString("xxmc")));
paramList.add(RecruitModeUtil.parseBlankToNull(rs.getString("xl")));
paramList.add(RecruitModeUtil.parseBlankToNull(rs.getString("zy")));
paramList.add(RecruitModeUtil.parseBlankToNull(rs.getString("kssj")));
paramList.add(RecruitModeUtil.parseBlankToNull(rs.getString("jssj")));
insertList.add(paramList);
}
for (List<Object> list : insertList) {
rs.executeUpdate("insert into uf_jcl_rck_dt1 (mainid, xxmc, xl, zy, kssj, jssj) values (?, ?, ?, ?, ?, ?)", list);
}
rs.executeQuery("select * from uf_jcl_yppc_dt2 where mainid = ? ", applicantId);
insertList = new ArrayList<>();
while (rs.next()) {
List<Object> paramList = new ArrayList<>();
// mainid
paramList.add(bid);
paramList.add(RecruitModeUtil.parseBlankToNull(rs.getString("gsmc")));
paramList.add(RecruitModeUtil.parseBlankToNull(rs.getString("kssj")));
paramList.add(RecruitModeUtil.parseBlankToNull(rs.getString("jssj")));
paramList.add(RecruitModeUtil.parseBlankToNull(rs.getString("gw")));
paramList.add(RecruitModeUtil.parseBlankToNull(rs.getString("gzzz")));
paramList.add(RecruitModeUtil.parseBlankToNull(rs.getString("sqyxk")));
paramList.add(RecruitModeUtil.parseBlankToNull(rs.getString("lzyy")));
insertList.add(paramList);
}
for (List<Object> list : insertList) {
rs.executeUpdate("insert into uf_jcl_rck_dt2 (mainid, gsmc, kssj, jssj, gw, gzzz, sqyxk, lzyy) values (?, ?, ?, ?, ?, ?, ?, ?)", list);
}
rs.executeQuery("select * from uf_jcl_yppc_dt3 where mainid = ? ", applicantId);
insertList = new ArrayList<>();
while (rs.next()) {
List<Object> paramList = new ArrayList<>();
// mainid
paramList.add(bid);
paramList.add(RecruitModeUtil.parseBlankToNull(rs.getString("xmmc")));
paramList.add(RecruitModeUtil.parseBlankToNull(rs.getString("kssj")));
paramList.add(RecruitModeUtil.parseBlankToNull(rs.getString("jssj")));
paramList.add(RecruitModeUtil.parseBlankToNull(rs.getString("drjs")));
paramList.add(RecruitModeUtil.parseBlankToNull(rs.getString("xmms")));
insertList.add(paramList);
}
for (List<Object> list : insertList) {
rs.executeUpdate("insert into uf_jcl_rck_dt3 (mainid, xmmc, kssj, jssj, drjs, xmms) values (?, ?, ?, ?, ?, ?)", list);
}
rs.executeQuery("select * from uf_jcl_yppc_dt4 where mainid = ? ", applicantId);
insertList = new ArrayList<>();
while (rs.next()) {
List<Object> paramList = new ArrayList<>();
// mainid
paramList.add(bid);
paramList.add(RecruitModeUtil.parseBlankToNull(rs.getString("yylx")));
paramList.add(RecruitModeUtil.parseBlankToNull(rs.getString("zwcd")));
insertList.add(paramList);
}
for (List<Object> list : insertList) {
rs.executeUpdate("insert into uf_jcl_rck_dt4 (mainid, yylx, zwcd) values (?, ?, ?)", list);
}
// 同步设置的标签
2024-08-05 14:28:01 +08:00
List<Map<String, Object>> modeTabList = getModeTabs(applicantId, rs);
String dateTime = DateUtil.getFullDate();
String[] dateSplit = dateTime.split(" ");
String createdate = dateSplit[0];
String createtime = dateSplit[1];
Set<String> tabIdSet = new HashSet<>();
for (Map<String, Object> modeTab : modeTabList) {
String tabName = Util.null2String(modeTab.get("tabname"));
// 查询人才库是否有此标签
rs.executeQuery("select id from modeTabs_" + formModeId + " where tabname = ?", tabName);
String tabid = null;
if (rs.next()) {
tabid = rs.getString("id");
} else {
// 不存在,则插入数据
RecruitRecordSet.insertData(modeTab, "modeTabs_" + formModeId);
rs.executeQuery("select id from modeTabs_" + formModeId + " where tabname = ?", tabName);
if (rs.next()) {
tabid = rs.getString("id");
}
}
// 插入标签数据
if (StringUtils.isNotBlank(tabid)) {
Map<String, Object> tabsLogMap = new RecruitDataMap<>();
tabsLogMap.put("tabid", tabid);
tabsLogMap.put("operate", 0);
tabsLogMap.put("modeid", formModeId);
tabsLogMap.put("billid", bid);
tabsLogMap.put("creator", user.getUID());
tabsLogMap.put("createdate", createdate);
tabsLogMap.put("createtime", createtime);
RecruitRecordSet.insertData(tabsLogMap, "modetabslog_" + formModeId);
tabIdSet.add(tabid);
}
}
// 更新标签信息
rs.executeUpdate("update uf_jcl_rck set modelableid=? where id = ? ", StringUtils.join(tabIdSet, ","), bid);
}
}
2023-11-16 17:02:34 +08:00
2024-08-05 14:28:01 +08:00
/**
* 获取标签信息
*
* @param applicantId
* @return
*/
private static List<Map<String, Object>> getModeTabs(String applicantId, RecordSet rs) {
int applicantModeId = ApplicantCommonInfo.getModeIdByTableName("uf_jcl_yppc");
rs.executeQuery("select a.tabname , a.color , a.bgcolor , a.bdcolor , a.type , a.creator , a.orderid from modeTabs_" + applicantModeId + " a where a.id in ( select modelableid from uf_jcl_yppc where id = ?)", applicantId);
return RecruitRecordSet.getRecordMapList(rs);
}
}