diff --git a/src/com/engine/recruit/conn/PositionCommonInfo.java b/src/com/engine/recruit/conn/PositionCommonInfo.java index 0a3694e..0e3fb93 100644 --- a/src/com/engine/recruit/conn/PositionCommonInfo.java +++ b/src/com/engine/recruit/conn/PositionCommonInfo.java @@ -1,8 +1,13 @@ package com.engine.recruit.conn; +import com.engine.recruit.entity.position.PositionPo; +import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import weaver.conn.RecordSet; +import java.util.*; +import java.util.stream.Collectors; + /** * 招聘职位信息 * @@ -48,4 +53,58 @@ public class PositionCommonInfo { return recruitFlowId; } + + + /** + * 根据职位名称,获取职位ID + * + * @param positionName 职位名称 + * @param mobile 职位跟进人手机号 + * @return + */ + public static String getPositionIdByName(String positionName, String mobile) { + RecordSet rs = new RecordSet(); + // 根据职位名称、查询招聘中的数据 + rs.executeQuery("select id ,zpzwmc ,zpzt ,modedatacreater ,modedatacreatedate ,modedatacreatetime from uf_jcl_zp_zpzw where zpzt = 0 and zpzwmc = ? ", positionName); + List positionPoList = new ArrayList<>(); + while (rs.next()) { + PositionPo positionPo = PositionPo.builder() + .id(rs.getString("id")) + .name(rs.getString("zpzwmc")) + .status(rs.getString("zpzt")) + .creator(rs.getString("modedatacreater")) + .createDate(rs.getString("modedatacreatedate")) + .createTime(rs.getString("modedatacreatetime")) + .build(); + positionPoList.add(positionPo); + } + + // 未查询到数据,返回空 + if (CollectionUtils.isEmpty(positionPoList)) { + return ""; + } + + // 只有一条数据,直接返回当前数据,如果有多个,再添加其他条件过滤 + if (positionPoList.size() == 1) { + return positionPoList.get(0).getId(); + } + + // 根据手机号查询人员ID + Set userIds = new HashSet<>(); + rs.executeQuery("select id from hrmresource where mobile = ? ", mobile); + while (rs.next()) { + userIds.add(rs.getString("id")); + } + + // 筛选跟进人手机号匹配的职位数据,并按创建时间倒序排序 + List filterList = positionPoList.stream().filter(item -> userIds.contains(item.getCreator())).sorted(Comparator.comparing(PositionPo::getCreationTime).reversed()).collect(Collectors.toList()); + + if (CollectionUtils.isEmpty(filterList)) { + // 跟进人手机号未获取到,选择最新的一条数据 + return positionPoList.get(0).getId(); + } else { + // 再一样,就默认匹配到创建时间最新的职位 + return filterList.get(0).getId(); + } + } } diff --git a/src/com/engine/recruit/controller/ApplicantResumeController.java b/src/com/engine/recruit/controller/ApplicantResumeController.java index c5d52b2..8dddf1c 100644 --- a/src/com/engine/recruit/controller/ApplicantResumeController.java +++ b/src/com/engine/recruit/controller/ApplicantResumeController.java @@ -74,14 +74,6 @@ public class ApplicantResumeController { return new ResponseResult, Map>(user).run(getApplicantResumeWrapper(user)::updateApplicantsInfo, params); } - @POST - @Path("/fullOriginalResumeId") - @Produces(MediaType.APPLICATION_JSON) - public String fullOriginalResumeId(@Context HttpServletRequest request, @Context HttpServletResponse response) { - User user = HrmUserVarify.getUser(request, response); - Map param = ParamUtil.request2Map(request); - return new ResponseResult, Map>(user).run(getApplicantResumeWrapper(user)::fullOriginalResumeId, param); - } @POST @Path("/checkRepeatResume") diff --git a/src/com/engine/recruit/entity/position/PositionPo.java b/src/com/engine/recruit/entity/position/PositionPo.java new file mode 100644 index 0000000..0befc06 --- /dev/null +++ b/src/com/engine/recruit/entity/position/PositionPo.java @@ -0,0 +1,29 @@ +package com.engine.recruit.entity.position; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author:dxfeng + * @createTime: 2024/02/05 + * @version: 1.0 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class PositionPo { + private String id; + private String name; + private String status; + private String creator; + private String createDate; + private String createTime; + private String creationTime; + + public String getCreationTime() { + return createDate + " " + createTime; + } +} diff --git a/src/com/engine/recruit/entity/resume/QllResumePo.java b/src/com/engine/recruit/entity/resume/QllResumePo.java index a80d25a..45f5d99 100644 --- a/src/com/engine/recruit/entity/resume/QllResumePo.java +++ b/src/com/engine/recruit/entity/resume/QllResumePo.java @@ -200,11 +200,6 @@ public class QllResumePo { return list; } - public String getYpzw() { - // TODO 如果关联招聘职位 - //return ypzw; - return null; - } private String formatStr(String str) { if (StringUtils.isBlank(str)) { diff --git a/src/com/engine/recruit/service/ApplicantResumeService.java b/src/com/engine/recruit/service/ApplicantResumeService.java index adb6fdf..d9a25a9 100644 --- a/src/com/engine/recruit/service/ApplicantResumeService.java +++ b/src/com/engine/recruit/service/ApplicantResumeService.java @@ -55,13 +55,6 @@ public interface ApplicantResumeService { Map updateApplicantsInfo(Map params); - /** - * 完善OCR导入的简历,原始简历字段 - * - * @param params - * @return - */ - Map fullOriginalResumeId(Map params); /** * 判断是否重复简历,是否可以新增 diff --git a/src/com/engine/recruit/service/impl/ApplicantResumeServiceImpl.java b/src/com/engine/recruit/service/impl/ApplicantResumeServiceImpl.java index 34cc058..bb9e1a5 100644 --- a/src/com/engine/recruit/service/impl/ApplicantResumeServiceImpl.java +++ b/src/com/engine/recruit/service/impl/ApplicantResumeServiceImpl.java @@ -1,9 +1,7 @@ package com.engine.recruit.service.impl; -import cn.hutool.core.convert.Convert; import com.engine.core.impl.Service; import com.engine.recruit.conn.*; -import com.engine.recruit.constant.RecruitConstant; import com.engine.recruit.entity.record.ApplicantRecordPo; import com.engine.recruit.entity.resume.OcrResumePo; import com.engine.recruit.enums.ApplicantOperateEnum; @@ -11,7 +9,6 @@ import com.engine.recruit.enums.ApplicationStatusEnum; import com.engine.recruit.enums.RecordOperateEnum; import com.engine.recruit.exception.CustomizeRunTimeException; import com.engine.recruit.service.ApplicantResumeService; -import com.engine.recruit.util.RecruitUtil; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import weaver.common.DateUtil; @@ -316,38 +313,6 @@ public class ApplicantResumeServiceImpl extends Service implements ApplicantResu return returnMap; } - @Override - public Map fullOriginalResumeId(Map params) { - Map returnMap = new HashMap<>(); - - int imageFileId = Convert.toInt(params.get("imageFileId")); - int resumeId = Convert.toInt(params.get("resumeId")); - int secCategory = Convert.toInt(RecruitConstant.APPLICANTS_RESUMES_CATEGORY); - RecordSet rs = new RecordSet(); - try { - int docId = RecruitModeUtil.createDocId(secCategory, imageFileId, user); - // 更新原始简历信息 - rs.executeUpdate("update uf_jcl_jlzjb set jlfj=?,ocr=1 where id = ?", docId, resumeId); - - // 简历入库,并返回展示的应聘者简历ID - rs.executeQuery("select id,xm, xb, csrq, jg, yx, wx, qq, xjzd, ah, grys , jyjl , bysj , zgxl , zyjn , sxjl , yysp , zs, gzjl, ypzw, gzjy, xmjl, sjhm, nl, sfz, jlfj from uf_jcl_jlzjb where ocr = 1 and cqzt is null and id = ?", resumeId); - Map recordMap = RecruitRecordSet.getSingleRecordMap(rs); - OcrResumePo ocrResumePo = RecruitUtil.parseMap2Object(recordMap, OcrResumePo.class); - RecruitDataMap dataMap = buildApplicantMap(ocrResumePo); - // 校验简历信息、并插入 - Map map = CheckRepeatResume.getInstance().insertResumeAndReturn(dataMap); - rs.executeUpdate("update uf_jcl_jlzjb set cqzt = 1 where id = ? ", ocrResumePo.getId()); - String mainId = Util.null2String(map.get("mainId")); - String sourceId = Util.null2String(map.get("sourceId")); - returnMap.put("mainId", StringUtils.isNotBlank(sourceId) ? sourceId : mainId); - returnMap.put("sourceId", sourceId); - - } catch (Exception e) { - throw new RuntimeException(e); - } - - return returnMap; - } @Override public Map checkRepeatResume(Map param) { diff --git a/src/com/engine/recruit/wrapper/ApplicantResumeWrapper.java b/src/com/engine/recruit/wrapper/ApplicantResumeWrapper.java index 70bc552..ee2eb8c 100644 --- a/src/com/engine/recruit/wrapper/ApplicantResumeWrapper.java +++ b/src/com/engine/recruit/wrapper/ApplicantResumeWrapper.java @@ -38,9 +38,6 @@ public class ApplicantResumeWrapper extends Service { return getApplicantResumeService(user).updateApplicantsInfo(params); } - public Map fullOriginalResumeId(Map params) { - return getApplicantResumeService(user).fullOriginalResumeId(params); - } public Map checkRepeatResume(Map params) { return getApplicantResumeService(user).checkRepeatResume(params); diff --git a/src/weaver/interfaces/recruit/thread/ExtractQllResumeThread.java b/src/weaver/interfaces/recruit/thread/ExtractQllResumeThread.java index d1e60bd..cc8dfa5 100644 --- a/src/weaver/interfaces/recruit/thread/ExtractQllResumeThread.java +++ b/src/weaver/interfaces/recruit/thread/ExtractQllResumeThread.java @@ -1,5 +1,6 @@ package weaver.interfaces.recruit.thread; +import cn.hutool.core.convert.Convert; import com.alibaba.fastjson.JSON; import com.engine.recruit.conn.*; import com.engine.recruit.entity.resume.QllResumePo; @@ -21,6 +22,8 @@ import java.util.Map; * @version: 1.0 */ public class ExtractQllResumeThread extends Thread { + BaseBean baseBean = new BaseBean(); + @Override public void run() { RecordSet rs = new RecordSet(); @@ -32,20 +35,26 @@ public class ExtractQllResumeThread extends Thread { for (Map map : mapList) { QllResumePo qllResumePo = RecruitUtil.parseMap2Object(map, QllResumePo.class); try { + baseBean.writeLog("千里聆简历解析开始,中间表ID=【" + qllResumePo.getId() + "】"); RecruitDataMap dataMap = buildApplicantMap(qllResumePo); + baseBean.writeLog("千里聆简历主表数据解析完成==" + JSON.toJSONString(dataMap)); // 校验简历信息、并插入 CheckRepeatResume instance = CheckRepeatResume.getInstance(); Map checkMap = instance.insertResumeAndReturn(dataMap); String mainId = Util.null2String(checkMap.get("mainId")); String sourceId = Util.null2String(checkMap.get("sourceId")); - rs.executeUpdate("update uf_jcl_jlzjb set cqzt = 1 where id = ? ", qllResumePo.getId()); + baseBean.writeLog("千里聆简历主表数据插入完成,mainId==【" + mainId + "】,sourceId==【" + sourceId + "】"); + + // 数据写入完成后,更新抽取状态为新插入的数据ID + rs.executeUpdate("update uf_jcl_jlzjb set cqzt = 1 ,mainid = ? ,sourceid = ? where id = ? ", Convert.toInt(mainId), Convert.toInt(sourceId), qllResumePo.getId()); // 插入明细表数据 instance.insertResumeDetailTable(qllResumePo.getJyjl(), "uf_jcl_yppc_dt1", mainId, sourceId); instance.insertResumeDetailTable(qllResumePo.getGzjl(), "uf_jcl_yppc_dt2", mainId, sourceId); instance.insertResumeDetailTable(qllResumePo.getXmjl(), "uf_jcl_yppc_dt3", mainId, sourceId); + baseBean.writeLog("千里聆简历解析完成,mainId==【" + mainId + "】,sourceId==【" + sourceId + "】"); } catch (Exception e) { - new BaseBean().writeLog("简历解析失败" + JSON.toJSONString(qllResumePo), e); + baseBean.writeLog("简历解析失败" + JSON.toJSONString(qllResumePo), e); } } @@ -81,15 +90,19 @@ public class ExtractQllResumeThread extends Thread { insertMap.put("tdsj", DateUtil.getDateTime()); // 原始简历 insertMap.put("ysjl", qllResumePo.getJlfj()); + // 投递职位(第三方) + insertMap.put("tdzwdsf", qllResumePo.getYpzw()); String zt = ApplicationStatusEnum.DISTRIBUTION.getValue(); // 应聘职位 - String ypzw = qllResumePo.getYpzw(); + String ypzw = PositionCommonInfo.getPositionIdByName(qllResumePo.getYpzw(), qllResumePo.getGjrsjh()); + baseBean.writeLog("投递职位==【" + qllResumePo.getYpzw() + "】,投递职位ID==【" + ypzw + "】"); if (StringUtils.isNotBlank(ypzw)) { String flowId = PositionCommonInfo.getRecruitFlowId(ypzw); Map initialStage = ApplicantCommonInfo.getInitialStage(flowId); if (null != initialStage) { + baseBean.writeLog("initialStage===" + JSON.toJSONString(initialStage)); String zpjd = initialStage.get("zpjd"); String dqypjd = initialStage.get("jdlx"); if (StringUtils.isNotBlank(zpjd) && StringUtils.isNotBlank(dqypjd)) {