From fc01647ef05e3c00e309f3441bc753a1ffabed62 Mon Sep 17 00:00:00 2001 From: dxfeng Date: Fri, 9 Aug 2024 11:11:47 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BA=94=E8=81=98=E8=80=85=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E5=8D=A1=E7=89=87=E6=94=B9=E9=80=A0=EF=BC=8C=E6=9A=82=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../recruit/entity/card/RecruitProcess.java | 3 + .../entity/card/process/BackProcess.java | 9 ++ .../entity/card/process/InterviewProcess.java | 14 ++ .../entity/card/process/OfferProcess.java | 9 ++ .../entity/card/process/SalaryProcess.java | 9 ++ .../entity/card/process/ScreenProcess.java | 67 +++++++++ .../entity/card/process/WrittenProcess.java | 54 +++++++ .../impl/ApplicantResumeServiceImpl.java | 132 +++++++++++++++++- 8 files changed, 291 insertions(+), 6 deletions(-) create mode 100644 src/com/engine/recruit/entity/card/process/BackProcess.java create mode 100644 src/com/engine/recruit/entity/card/process/InterviewProcess.java create mode 100644 src/com/engine/recruit/entity/card/process/OfferProcess.java create mode 100644 src/com/engine/recruit/entity/card/process/SalaryProcess.java create mode 100644 src/com/engine/recruit/entity/card/process/ScreenProcess.java create mode 100644 src/com/engine/recruit/entity/card/process/WrittenProcess.java diff --git a/src/com/engine/recruit/entity/card/RecruitProcess.java b/src/com/engine/recruit/entity/card/RecruitProcess.java index 87cd6e5..629783c 100644 --- a/src/com/engine/recruit/entity/card/RecruitProcess.java +++ b/src/com/engine/recruit/entity/card/RecruitProcess.java @@ -5,6 +5,8 @@ import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; +import java.util.Date; + /** * @author:dxfeng * @createTime: 2024/08/01 @@ -18,4 +20,5 @@ public class RecruitProcess { private String title; private String value; private String icon; + private Date createDateTime; } diff --git a/src/com/engine/recruit/entity/card/process/BackProcess.java b/src/com/engine/recruit/entity/card/process/BackProcess.java new file mode 100644 index 0000000..73c6849 --- /dev/null +++ b/src/com/engine/recruit/entity/card/process/BackProcess.java @@ -0,0 +1,9 @@ +package com.engine.recruit.entity.card.process; + +/** + * @author:dxfeng + * @createTime: 2024/08/07 + * @version: 1.0 + */ +public class BackProcess { +} diff --git a/src/com/engine/recruit/entity/card/process/InterviewProcess.java b/src/com/engine/recruit/entity/card/process/InterviewProcess.java new file mode 100644 index 0000000..22d1714 --- /dev/null +++ b/src/com/engine/recruit/entity/card/process/InterviewProcess.java @@ -0,0 +1,14 @@ +package com.engine.recruit.entity.card.process; + +/** + * @author:dxfeng + * @createTime: 2024/08/07 + * @version: 1.0 + */ +public class InterviewProcess { + public static final String ICON_NAME = "written.png"; + public static final String TITLE = "最近笔试"; + + + +} diff --git a/src/com/engine/recruit/entity/card/process/OfferProcess.java b/src/com/engine/recruit/entity/card/process/OfferProcess.java new file mode 100644 index 0000000..19fab8c --- /dev/null +++ b/src/com/engine/recruit/entity/card/process/OfferProcess.java @@ -0,0 +1,9 @@ +package com.engine.recruit.entity.card.process; + +/** + * @author:dxfeng + * @createTime: 2024/08/07 + * @version: 1.0 + */ +public class OfferProcess { +} diff --git a/src/com/engine/recruit/entity/card/process/SalaryProcess.java b/src/com/engine/recruit/entity/card/process/SalaryProcess.java new file mode 100644 index 0000000..fc41a67 --- /dev/null +++ b/src/com/engine/recruit/entity/card/process/SalaryProcess.java @@ -0,0 +1,9 @@ +package com.engine.recruit.entity.card.process; + +/** + * @author:dxfeng + * @createTime: 2024/08/07 + * @version: 1.0 + */ +public class SalaryProcess { +} diff --git a/src/com/engine/recruit/entity/card/process/ScreenProcess.java b/src/com/engine/recruit/entity/card/process/ScreenProcess.java new file mode 100644 index 0000000..b8b5c7e --- /dev/null +++ b/src/com/engine/recruit/entity/card/process/ScreenProcess.java @@ -0,0 +1,67 @@ +package com.engine.recruit.entity.card.process; + +import org.apache.commons.lang3.StringUtils; +import weaver.general.BaseBean; +import weaver.hrm.resource.ResourceComInfo; + +/** + * @author:dxfeng + * @createTime: 2024/08/07 + * @version: 1.0 + */ +public class ScreenProcess { + private String zt; + private String jg; + private String fkr; + + public static final String ICON_NAME = "screen.png"; + public static final String TITLE = "最近筛选结果"; + + public String getZt() { + if("1".equals(zt)){ + return "已反馈"; + } + return "待反馈"; + } + + public void setZt(String zt) { + this.zt = zt; + } + + public String getJg() { + if ("0".equals(jg)) { + return "通过"; + } else if ("1".equals(jg)) { + return "不通过"; + } + return "待定"; + } + + public void setJg(String jg) { + this.jg = jg; + } + + public String getFkr() { + try { + String lastnames = new ResourceComInfo().getLastnames(fkr); + if (StringUtils.isNotBlank(lastnames)) { + return "反馈人:" + lastnames; + } + } catch (Exception e) { + new BaseBean().writeLog("人员姓名转换失败", e); + } + return ""; + } + + public void setFkr(String fkr) { + this.fkr = fkr; + } + + @Override + public String toString() { + if ("1".equals(zt)) { + return getJg() + "(" + getFkr() + ")"; + } + return getZt() + "(" + getFkr() + ")"; + } +} diff --git a/src/com/engine/recruit/entity/card/process/WrittenProcess.java b/src/com/engine/recruit/entity/card/process/WrittenProcess.java new file mode 100644 index 0000000..89a3ffb --- /dev/null +++ b/src/com/engine/recruit/entity/card/process/WrittenProcess.java @@ -0,0 +1,54 @@ +package com.engine.recruit.entity.card.process; + +import org.apache.commons.lang3.StringUtils; + +/** + * @author:dxfeng + * @createTime: 2024/08/07 + * @version: 1.0 + */ +public class WrittenProcess { + private String bsmc; + private String bscj; + private String bsjg; + + public static final String ICON_NAME = "written.png"; + public static final String TITLE = "最近笔试"; + + public String getBsmc() { + return bsmc; + } + + public void setBsmc(String bsmc) { + this.bsmc = bsmc; + } + + public String getBscj() { + return bscj; + } + + public void setBscj(String bscj) { + this.bscj = bscj; + } + + public String getBsjg() { + if ("0".equals(bsjg)) { + return "通过"; + } else if ("1".equals(bsjg)) { + return "不通过"; + } + return "待定"; + } + + public void setBsjg(String bsjg) { + this.bsjg = bsjg; + } + + @Override + public String toString() { + if (StringUtils.isBlank(bscj) || StringUtils.isBlank(bsjg)) { + return getBsmc() + " 暂无得分结果"; + } + return getBsmc() + " " + getBscj() + "分 " + getBsjg(); + } +} diff --git a/src/com/engine/recruit/service/impl/ApplicantResumeServiceImpl.java b/src/com/engine/recruit/service/impl/ApplicantResumeServiceImpl.java index f463481..a900b3c 100644 --- a/src/com/engine/recruit/service/impl/ApplicantResumeServiceImpl.java +++ b/src/com/engine/recruit/service/impl/ApplicantResumeServiceImpl.java @@ -2,10 +2,9 @@ package com.engine.recruit.service.impl; import com.engine.core.impl.Service; import com.engine.recruit.conn.*; -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; +import com.engine.recruit.entity.card.*; +import com.engine.recruit.entity.card.process.ScreenProcess; +import com.engine.recruit.entity.card.process.WrittenProcess; import com.engine.recruit.entity.record.ApplicantRecordPo; import com.engine.recruit.enums.ApplicantOperateEnum; import com.engine.recruit.enums.ApplicationStatusEnum; @@ -390,7 +389,6 @@ public class ApplicantResumeServiceImpl extends Service implements ApplicantResu // 基本信息构建 resumeCardInfo.setId(map.getInt("id")); resumeCardInfo.setLastName(map.getString("xm")); - // TODO 照片处理 String jlzp = map.getString("jlzp"); if (StringUtils.isNotBlank(jlzp)) { try { @@ -458,7 +456,20 @@ public class ApplicantResumeServiceImpl extends Service implements ApplicantResu resumeCardInfo.setWorkInfo(workInfoList); // 招聘过程 - resumeCardInfo.setRecruitProcess(new ArrayList<>()); + List recruitProcessList = new ArrayList<>(); + // 若未发起反馈则不展示,若有且均为待反馈的,则显示待反馈,反馈人;若存在已反馈记录的,则显示,反馈结果,反馈人【取最新反馈的结果】;若存在多条则取最新的【创建时间】 + buildScreenProcess(id, rs, recruitProcessList); + // 最近笔试:若未发起,则不显示,若有记录但是无分数和结果的,显示“暂无得分结果”;若有结果则显示“得分、结果”;若存在多条,则显示最新的数据;若存在多条则取最新的【笔试时间】 + buildWrittenProcess(id, rs, recruitProcessList); + // 最近面试:若未发起,则不显示,若有记录但是是“待面试”,显示“面试时间、待面试、面试官”;若有结果则显示“面试时间、结果、面试官”;若存在多条,则显示最新的数据;若存在多条则取最新的【面试时间】 + buildInterviewProcess(id, rs, recruitProcessList); + // 最近背调:若未发起,则不显示,若有记录但是无结果的,显示“暂无背调结果”;若有结果则显示“背调日期,结果”;若存在多条,则显示最新的数据;若存在多条则取最新的【背调时间】 + buildBackProcess(id, rs, recruitProcessList); + // 最近薪酬谈判:若未发起,则不显示,若有记录但是无结果的,显示“暂无薪酬谈判结果”;若有结果则显示“谈判日期,结果”;若存在多条,则显示最新的数据;若存在多条则取最新的【谈判时间】 + buildSalaryProcess(id, rs, recruitProcessList); + // offer状态:若未产生数据则不显示,若有数据了,则显示offer状态,若反馈时间有数值,则显示,没数值则不现实 + buildOfferProcess(id, rs, recruitProcessList); + resumeCardInfo.setRecruitProcess(recruitProcessList); resumeCardInfos.add(resumeCardInfo); @@ -479,6 +490,115 @@ public class ApplicantResumeServiceImpl extends Service implements ApplicantResu return null; } + /** + * 若未发起反馈则不展示,若有且均为待反馈的,则显示待反馈,反馈人;若存在已反馈记录的,则显示,反馈结果,反馈人【取最新反馈的结果】;若存在多条则取最新的【创建时间】 + * + * @param id + * @param rs + * @param recruitProcessList + */ + private void buildScreenProcess(String id, RecordSet rs, List recruitProcessList) { + rs.executeQuery("select zt,fkr,jg,modedatacreatedate,modedatacreatetime from uf_jcl_bmsxfk where ypz = ? order by modedatacreatedate desc,modedatacreatetime desc", id); + if (rs.next()) { + // 状态 + String zt = rs.getString("zt"); + // 反馈人 + String fkr = rs.getString("fkr"); + // 结果 + String jg = rs.getString("jg"); + String date = rs.getString("modedatacreatedate"); + String time = rs.getString("modedatacreatetime"); + + ScreenProcess screenProcess = new ScreenProcess(); + screenProcess.setZt(zt); + screenProcess.setFkr(fkr); + screenProcess.setJg(jg); + RecruitProcess process = new RecruitProcess(); + process.setTitle(ScreenProcess.TITLE); + process.setIcon(ScreenProcess.ICON_NAME); + process.setValue(screenProcess.toString()); + process.setCreateDateTime(DateUtil.parseToDateTime(date + " " + time)); + recruitProcessList.add(process); + } + } + + /** + * 最近笔试:若未发起,则不显示,若有记录但是无分数和结果的,显示“暂无得分结果”;若有结果则显示“得分、结果”;若存在多条,则显示最新的数据;若存在多条则取最新的【笔试时间】 + * @param id + * @param rs + * @param recruitProcessList + */ + private void buildWrittenProcess(String id, RecordSet rs, List recruitProcessList) { + rs.executeQuery("select bsmc ,bscj ,bsjg ,modedatacreatedate ,modedatacreatetime from uf_jcl_bs where ypz = ? order by bssj desc", id); + if (rs.next()) { + // 笔试名称 + String bsmc = rs.getString("bsmc"); + // 笔试成绩 + String bscj = rs.getString("bscj"); + // 笔试结果 + String bsjg = rs.getString("bsjg"); + String date = rs.getString("modedatacreatedate"); + String time = rs.getString("modedatacreatetime"); + + WrittenProcess writtenProcess = new WrittenProcess(); + writtenProcess.setBsmc(bsmc); + writtenProcess.setBscj(bscj); + writtenProcess.setBsjg(bsjg); + + RecruitProcess process = new RecruitProcess(); + process.setTitle(WrittenProcess.TITLE); + process.setIcon(WrittenProcess.ICON_NAME); + process.setValue(writtenProcess.toString()); + process.setCreateDateTime(DateUtil.parseToDateTime(date + " " + time)); + recruitProcessList.add(process); + } + } + + /** + * 最近面试:若未发起,则不显示,若有记录但是是“待面试”,显示“面试时间、待面试、面试官”;若有结果则显示“面试时间、结果、面试官”;若存在多条,则显示最新的数据;若存在多条则取最新的【面试时间】 + * @param id + * @param rs + * @param recruitProcessList + */ + private void buildInterviewProcess(String id, RecordSet rs, List recruitProcessList) { + rs.executeQuery("select bsmc ,bscj ,bsjg ,modedatacreatedate ,modedatacreatetime from uf_jcl_bs where ypz = ? order by bssj desc", id); + if (rs.next()) { + // 笔试名称 + String bsmc = rs.getString("bsmc"); + // 笔试成绩 + String bscj = rs.getString("bscj"); + // 笔试结果 + String bsjg = rs.getString("bsjg"); + String date = rs.getString("modedatacreatedate"); + String time = rs.getString("modedatacreatetime"); + + WrittenProcess writtenProcess = new WrittenProcess(); + writtenProcess.setBsmc(bsmc); + writtenProcess.setBscj(bscj); + writtenProcess.setBsjg(bsjg); + + RecruitProcess process = new RecruitProcess(); + process.setTitle(WrittenProcess.TITLE); + process.setIcon(WrittenProcess.ICON_NAME); + process.setValue(writtenProcess.toString()); + process.setCreateDateTime(DateUtil.parseToDateTime(date + " " + time)); + recruitProcessList.add(process); + } + } + + + private void buildBackProcess(String id, RecordSet rs, List recruitProcessList) { + + } + + private void buildSalaryProcess(String id, RecordSet rs, List recruitProcessList) { + + } + + private void buildOfferProcess(String id, RecordSet rs, List recruitProcessList) { + + } + /** * 构建普通数据格式 *