diff --git a/zeroerr_oa-admin/src/main/resources/application-druid.yml b/zeroerr_oa-admin/src/main/resources/application-druid.yml index 73a9d63..ddd2703 100644 --- a/zeroerr_oa-admin/src/main/resources/application-druid.yml +++ b/zeroerr_oa-admin/src/main/resources/application-druid.yml @@ -5,14 +5,14 @@ spring: driverClassName: com.mysql.cj.jdbc.Driver druid: # 主库数据源 - master: - url: jdbc:mysql://192.168.1.165:3306/zeoa?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 - username: zeoa - password: dHahLWNYB7tD2Mia # master: -# url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 -# username: root -# password: zero +# url: jdbc:mysql://192.168.1.165:3306/zeoa?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 +# username: zeoa +# password: dHahLWNYB7tD2Mia + master: + url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 + username: root + password: zero # 从库数据源 slave: # 从数据源开关/默认关闭 diff --git a/zeroerr_oa-admin/src/main/resources/application.yml b/zeroerr_oa-admin/src/main/resources/application.yml index 3d7e309..f44ce9a 100644 --- a/zeroerr_oa-admin/src/main/resources/application.yml +++ b/zeroerr_oa-admin/src/main/resources/application.yml @@ -7,8 +7,8 @@ ruoyi: # 版权年份 copyrightYear: 2024 # 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath) - #profile: D:/zeroerr/uploadPath - profile: /home/zeroerr_oa/uploadPath + profile: D:/zeroerr/uploadPath + #profile: /home/zeroerr_oa/uploadPath # 获取ip地址开关 addressEnabled: false # 验证码类型 math 数字计算 char 字符验证 @@ -69,15 +69,15 @@ spring: # redis 配置 redis: # 地址 - host: 192.168.1.189 - #host: localhost + #host: 192.168.1.189 + host: localhost # 端口,默认为6379 port: 6379 # 数据库索引 database: 0 # 密码 - password: 123456 - #password: + #password: 123456 + password: # 连接超时时间 timeout: 10s lettuce: diff --git a/zeroerr_oa-recruit/src/main/java/cn/zeroerr/controller/HomePageController.java b/zeroerr_oa-recruit/src/main/java/cn/zeroerr/controller/HomePageController.java index eb65007..3d6f614 100644 --- a/zeroerr_oa-recruit/src/main/java/cn/zeroerr/controller/HomePageController.java +++ b/zeroerr_oa-recruit/src/main/java/cn/zeroerr/controller/HomePageController.java @@ -26,7 +26,10 @@ import org.springframework.web.bind.annotation.RestController; import java.math.BigDecimal; import java.math.RoundingMode; import java.time.LocalDate; +import java.time.LocalDateTime; +import java.time.LocalTime; import java.time.YearMonth; +import java.time.format.DateTimeFormatter; import java.time.temporal.TemporalAdjusters; import java.util.*; import java.util.function.BiConsumer; @@ -288,9 +291,9 @@ public class HomePageController extends BaseController { resumeStatVO.setPostIdsList(postIdsList); //根据postIdsList,封装里面每个岗位的到面数(初试数)、终试数、入职数。 - if(!CollectionUtils.isEmpty(postIdsList)){ + if (!CollectionUtils.isEmpty(postIdsList)) { postIdsList.forEach( - postId->{ + postId -> { //寻找该岗位该月份的实际到面人数(初面人数) List filteredFirstReachList = resumeFollowRecordActualArrivedList.stream() .filter(record -> record.getPostId().equals(postId)) @@ -311,7 +314,7 @@ public class HomePageController extends BaseController { } resumeStatVO.setPostArriveCounts(postArriveCounts); resumeStatVO.setPostFinalCounts(postFinalCounts); - //resumeStatVO.setPostEntryCounts(postEntryCounts); + resumeStatVO.setPostEntryCounts(postEntryCounts); List funnelDataList = new ArrayList<>(); @@ -467,66 +470,202 @@ public class HomePageController extends BaseController { //封装公告内容 List announcementDTOList = new ArrayList<>(); - // 获取近七天的日期范围 - LocalDate now = LocalDate.now(); - LocalDate fiveDaysLater = now.plusDays(7); + // 获取从昨天开始的近七天的日期范围 + LocalDate yesterday = LocalDate.now().plusDays(-1); + LocalDate plusDays = yesterday.plusDays(7); - // 获取近五天预计入职的人,并按时间分类 - Map> groupByJoinDate = entryManageService.getListByWeek(now, fiveDaysLater) + // 获取近七天预计入职的人,并按时间分类 + Map> groupByJoinDate = entryManageService.getListByWeek(yesterday, plusDays) .stream().collect(Collectors.groupingBy(EntryManage::getJoinDate)); - // 获取近五天将要面试的人,并按时间分类 - Map> groupByFirstDate = resumeFollowRecordService.getListByWeek(now, fiveDaysLater) - .stream().collect(Collectors.groupingBy(ResumeFollowRecord::getFirstDate)); + // 获取近七天将要初试的人,并按时间分类 + List resumeFollowRecordList1 = resumeFollowRecordService.getFirstInterviewList(yesterday, plusDays); + Map> collect1 = resumeFollowRecordList1.stream().collect(Collectors.groupingBy(record -> record.getFirstDate().toLocalDate())); + + // 获取近七天将要终试的人,并按时间分类 + List resumeFollowRecordList2 = resumeFollowRecordService.getFinalInterviewList(yesterday, plusDays); + Map> collect2 = resumeFollowRecordList2.stream().collect(Collectors.groupingBy(record -> record.getFinalDate().toLocalDate())); + + // 获取近七天将要初试/终试的人,并按时间分类 + List resumeFollowRecordList3 = resumeFollowRecordService.getFirstAndFinalInterviewList(yesterday, plusDays); + Map> collect3 = resumeFollowRecordList3.stream().collect(Collectors.groupingBy(record -> record.getFirstDate().toLocalDate())); + + // 处理初试 + processAnnouncements(announcementDTOList, collect1, plusDays, "first"); + + // 处理终试 + processAnnouncements(announcementDTOList, collect2, plusDays, "final"); + + // 处理初/终试 + processAnnouncements(announcementDTOList, collect3, plusDays, "mix"); // 处理预计入职的公告 - processAnnouncements(announcementDTOList, groupByJoinDate, "预计入职候选人", AnnouncementDTO::setContentEntry); - - // 处理面试公告 - processAnnouncements(announcementDTOList, groupByFirstDate, "面试候选人", AnnouncementDTO::setContentInterview); + processAnnouncements(announcementDTOList, groupByJoinDate, plusDays, "entry"); // 按日期排序 announcementDTOList.sort(Comparator.comparing(AnnouncementDTO::getDate)); + //获取到每个List announcementDTOList 里的 AnnouncementDTO 的private List announcementInterviewList;,announcementInterviewList的interviewTime字段进行时间排序 + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("HH:mm"); + for (AnnouncementDTO announcement : announcementDTOList) { + List interviewList = announcement.getAnnouncementInterviewList(); + if (interviewList != null) { + Collections.sort(interviewList, Comparator.comparing(interview -> LocalTime.parse(interview.getInterviewTime(), formatter))); + } + } return AjaxResult.success(announcementDTOList); } - private void processAnnouncements(List announcementDTOList, Map> groupedData, String title, BiConsumer setContentMethod) { + private void processAnnouncements(List announcementDTOList, Map> groupedData, LocalDate plusDay, String tip) { int count = 1; for (Map.Entry> entry : groupedData.entrySet()) { LocalDate date = entry.getKey(); List dataList = entry.getValue(); - - Optional existingAnnouncement = announcementDTOList.stream() - .filter(announcement -> date.equals(announcement.getDate())) - .findFirst(); - - StringBuilder content = new StringBuilder(); - for (T data : dataList) { - if (data instanceof EntryManage) { - EntryManage entryManage = (EntryManage) data; - content.append(entryManage.getUserName()).append(" ").append(entryManage.getPostName()).append(";"); - } else if (data instanceof ResumeFollowRecord) { - ResumeFollowRecord resumeFollowRecord = (ResumeFollowRecord) data; - content.append(resumeFollowRecord.getName()).append(" ").append(resumeFollowRecord.getPostName()).append(";"); + //如果是处理面试的人 + if (!tip.equals("entry")) { + //找announcementDTOList有没有同一天的,如果有,则在该数据集里处理数据,如果没有就新建 + Optional result = announcementDTOList.stream() + .filter(announcement -> date.equals(announcement.getDate())) + .findFirst(); + //如果存在则 + AnnouncementDTO announcementDTO; + List nodeList = new ArrayList<>(); + if (result.isPresent()) { + announcementDTO = result.get(); + nodeList = handleNodeList(dataList, tip); + announcementDTO.getAnnouncementInterviewList().addAll(nodeList); + // announcementDTO更新回去 + for (int i = 0; i < announcementDTOList.size(); i++) { + if (announcementDTOList.get(i).getDate().equals(announcementDTO.getDate())) { + announcementDTOList.set(i, announcementDTO); + break; + } + } + } else { + announcementDTO = new AnnouncementDTO(); + announcementDTO.setId(count++); + announcementDTO.setDate(date); + nodeList = handleNodeList(dataList, tip); + announcementDTO.setAnnouncementInterviewList(nodeList); + announcementDTOList.add(announcementDTO); } } + //如果是处理预计入职的人 + else { + //先找找announcementDTOList有没有同一天的 + Optional existingAnnouncement = announcementDTOList.stream() + .filter(announcement -> date.equals(announcement.getDate())) + .findFirst(); + //如果存在则取出来封装入职人的信息 + if (existingAnnouncement.isPresent()) { + AnnouncementDTO announcementDTO = existingAnnouncement.get(); + List announcementEntryList = new ArrayList<>(); + for (T data : dataList) { + AnnouncementDTO.AnnouncementEntry announcementEntry = new AnnouncementDTO.AnnouncementEntry(); + EntryManage entryManage = (EntryManage) data; + announcementEntry.setEntryName(entryManage.getUserName()); + announcementEntry.setEntryPostName(entryManage.getPostName()); + announcementEntry.setEntryDept(entryManage.getDeptName()); + announcementEntry.setEntryHrName(entryManage.getHrName()); + announcementEntryList.add(announcementEntry); + } + announcementDTO.setAnnouncementEntryList(announcementEntryList); - if (existingAnnouncement.isPresent()) { - AnnouncementDTO announcementDTO = existingAnnouncement.get(); - setContentMethod.accept(announcementDTO, content.toString()); - } else { - AnnouncementDTO announcementDTO = new AnnouncementDTO(); - announcementDTO.setId(count++); - announcementDTO.setDate(date); - announcementDTO.setTitleEntry("预计入职候选人".equals(title) ? title : "预计入职候选人"); - announcementDTO.setContentEntry("预计入职候选人".equals(title) ? content.toString() : "无"); - announcementDTO.setTitleInterview("面试候选人".equals(title) ? title : "面试候选人"); - announcementDTO.setContentInterview("面试候选人".equals(title) ? content.toString() : "无"); - announcementDTOList.add(announcementDTO); + // announcementDTO更新回去 + for (int i = 0; i < announcementDTOList.size(); i++) { + if (announcementDTOList.get(i).getDate().equals(announcementDTO.getDate())) { + announcementDTOList.set(i, announcementDTO); + break; + } + } + } + //如果不存在,则新增所有数据 + else { + AnnouncementDTO announcementDTO = new AnnouncementDTO(); + announcementDTO.setId(count++); + announcementDTO.setDate(date); + List announcementEntryList = new ArrayList<>(); + for (T data : dataList) { + AnnouncementDTO.AnnouncementEntry announcementEntry = new AnnouncementDTO.AnnouncementEntry(); + EntryManage entryManage = (EntryManage) data; + announcementEntry.setEntryName(entryManage.getUserName()); + announcementEntry.setEntryPostName(entryManage.getPostName()); + announcementEntry.setEntryDept(entryManage.getDeptName()); + announcementEntry.setEntryHrName(entryManage.getHrName()); + announcementEntryList.add(announcementEntry); + } + announcementDTO.setAnnouncementEntryList(announcementEntryList); + announcementDTOList.add(announcementDTO); + } } } } + private List handleNodeList(List dataList, String tip) { + List nodeList = new ArrayList<>(); + for (T data : dataList) { + AnnouncementDTO.AnnouncementInterview announcementNode = new AnnouncementDTO.AnnouncementInterview(); + ResumeFollowRecord resumeFollowRecord = (ResumeFollowRecord) data; + //填入某日期内某个面试候选人的姓名 + announcementNode.setInterviewName(resumeFollowRecord.getName()); + //填入某日期内某个面试候选人的岗位 + announcementNode.setInterviewPostName(resumeFollowRecord.getPostName()); + //填入某日期内某个面试候选人的岗位负责招聘的hr + announcementNode.setInterviewHrName(resumeFollowRecord.getHrName()); + if (resumeFollowRecord.getFirstPass() != null) { + if (resumeFollowRecord.getFirstPass().equals("1")) { + announcementNode.setInterviewFirstResult("通过"); + } else if (resumeFollowRecord.getFirstPass().equals("0")) { + announcementNode.setInterviewFirstResult("淘汰"); + } else if (resumeFollowRecord.getFirstPass().equals("2")) { + announcementNode.setInterviewFirstResult("待定"); + } + //如果初试有日期,但是未到面,则视为放弃 + else if(resumeFollowRecord.getFirstDate()!=null ){ + if(resumeFollowRecord.getFirstReach().equals("0")|| resumeFollowRecord.getFirstReach().isEmpty()){ + announcementNode.setInterviewFirstResult("放弃"); + } + } + } + + if (resumeFollowRecord.getFinalPass() != null) { + if (resumeFollowRecord.getFinalPass().equals("1")) { + announcementNode.setInterviewFinalResult("通过"); + } else if (resumeFollowRecord.getFinalPass().equals("0")) { + announcementNode.setInterviewFinalResult("淘汰"); + } else if (resumeFollowRecord.getFinalPass().equals("2")) { + announcementNode.setInterviewFinalResult("待定"); + }else if(resumeFollowRecord.getFinalDate()!=null ){ + if(resumeFollowRecord.getFinalReach().equals("0")|| resumeFollowRecord.getFinalReach().isEmpty()){ + announcementNode.setInterviewFinalResult("放弃"); + } + } + } + + if (tip.equals("first")) { + //面试-时间 + announcementNode.setInterviewTime(getFormattedTime(resumeFollowRecord.getFirstDate())); + //面试-状态 + announcementNode.setInterviewType("初试"); + } else if (tip.equals("final")) { + //面试-时间 + announcementNode.setInterviewTime(getFormattedTime(resumeFollowRecord.getFinalDate())); + //面试-状态 + announcementNode.setInterviewType("终试"); + } else if (tip.equals("mix")) { + //面试-时间 + announcementNode.setInterviewTime(getFormattedTime(resumeFollowRecord.getFirstDate())); + //面试-状态 + announcementNode.setInterviewType("初/终试"); + } + nodeList.add(announcementNode); + } + return nodeList; + } + + private String getFormattedTime(LocalDateTime dateTime) { + DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("HH:mm"); + return dateTime.format(timeFormatter); + } } diff --git a/zeroerr_oa-recruit/src/main/java/cn/zeroerr/controller/RecruitStructureController.java b/zeroerr_oa-recruit/src/main/java/cn/zeroerr/controller/RecruitStructureController.java index ff8a679..2ff41a9 100644 --- a/zeroerr_oa-recruit/src/main/java/cn/zeroerr/controller/RecruitStructureController.java +++ b/zeroerr_oa-recruit/src/main/java/cn/zeroerr/controller/RecruitStructureController.java @@ -49,23 +49,23 @@ public class RecruitStructureController extends BaseController { public AjaxResult list(RecruitStructure node) { List nodes = recruitStructureService.selectNodeList(node); - if(!CollectionUtils.isEmpty(nodes)){ - nodes.forEach( - one->{ - //组织节点的类型(部门:0;岗位:1;其他:2) - if(one.getType()!=null&&one.getType()==1){ - //只有type=1,也就是为岗位的时候,这里有数据。(未申请:0 ;申请中:1 ;已招聘:2;招聘中:3;取消招聘:4) - if(one.getPostType()==0){ - one.setNodeName(one.getNodeName()+"|未申请"); - }else if(one.getPostType()==1){ - one.setNodeName(one.getNodeName()+"|申请中"); - }else if(one.getPostType()==3){ - one.setNodeName(one.getNodeName()+"|招聘中"); - } - } - } - ); - } +// if(!CollectionUtils.isEmpty(nodes)){ +// nodes.forEach( +// one->{ +// //组织节点的类型(部门:0;岗位:1;其他:2) +// if(one.getType()!=null&&one.getType()==1){ +// //只有type=1,也就是为岗位的时候,这里有数据。(未申请:0 ;申请中:1 ;已招聘:2;招聘中:3;取消招聘:4) +// if(one.getPostType()==0){ +// one.setNodeName(one.getNodeName()+"|未申请"); +// }else if(one.getPostType()==1){ +// one.setNodeName(one.getNodeName()+"|申请中"); +// }else if(one.getPostType()==3){ +// one.setNodeName(one.getNodeName()+"|招聘中"); +// } +// } +// } +// ); +// } return success(nodes); } diff --git a/zeroerr_oa-recruit/src/main/java/cn/zeroerr/domain/dto/AnnouncementDTO.java b/zeroerr_oa-recruit/src/main/java/cn/zeroerr/domain/dto/AnnouncementDTO.java index 74a4c3b..d64a22a 100644 --- a/zeroerr_oa-recruit/src/main/java/cn/zeroerr/domain/dto/AnnouncementDTO.java +++ b/zeroerr_oa-recruit/src/main/java/cn/zeroerr/domain/dto/AnnouncementDTO.java @@ -2,10 +2,12 @@ package cn.zeroerr.domain.dto; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; -import io.swagger.models.auth.In; import lombok.Data; +import lombok.experimental.Accessors; import java.time.LocalDate; +import java.util.List; + @Data @ApiModel @@ -17,15 +19,54 @@ public class AnnouncementDTO { @ApiModelProperty(value = "日期") private LocalDate date; - @ApiModelProperty(value = "预计入职标题") - private String titleEntry; + @ApiModelProperty(value = "面试明细") + private List announcementInterviewList; - @ApiModelProperty(value = "预计入职公告内容") - private String contentEntry; + @ApiModelProperty(value = "入职明细") + private List announcementEntryList; - @ApiModelProperty(value = "面试标题") - private String titleInterview; + @Data + @Accessors(chain = true) + @ApiModel + public static class AnnouncementInterview { + @ApiModelProperty(value = "面试-时间 HH:ss") + private String interviewTime; - @ApiModelProperty(value = "面试公告内容") - private String contentInterview; + @ApiModelProperty(value = "面试-姓名") + private String interviewName; + + @ApiModelProperty(value = "面试-状态") + private String interviewType; + + @ApiModelProperty(value = "面试-岗位") + private String interviewPostName; + + @ApiModelProperty(value = "面试-招聘hr") + private String interviewHrName; + + @ApiModelProperty(value = "面试-初试") + private String interviewFirstResult; + + @ApiModelProperty(value = "面试-终试") + private String interviewFinalResult; + + } + + @Data + @Accessors(chain = true) + @ApiModel + public static class AnnouncementEntry { + @ApiModelProperty(value = "预计入职-姓名") + private String entryName; + + @ApiModelProperty(value = "预计入职-部门") + private String entryDept; + + @ApiModelProperty(value = "预计入职-岗位") + private String entryPostName; + + @ApiModelProperty(value = "面试-招聘hr") + private String entryHrName; + + } } diff --git a/zeroerr_oa-recruit/src/main/java/cn/zeroerr/domain/entity/EntryManage.java b/zeroerr_oa-recruit/src/main/java/cn/zeroerr/domain/entity/EntryManage.java index 2245111..d3d8f7a 100644 --- a/zeroerr_oa-recruit/src/main/java/cn/zeroerr/domain/entity/EntryManage.java +++ b/zeroerr_oa-recruit/src/main/java/cn/zeroerr/domain/entity/EntryManage.java @@ -130,12 +130,12 @@ public class EntryManage implements Serializable { @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") private LocalDateTime updateTime; - @TableField(value = "file") + @TableField(value = "file",updateStrategy = FieldStrategy.IGNORED) @Excel(name = "入职周知", cellType = Excel.ColumnType.TEXT) private String file; - @TableField(value = "dossier") + @TableField(value = "dossier",updateStrategy = FieldStrategy.IGNORED) @Excel(name = "档案", cellType = Excel.ColumnType.TEXT) private String dossier; diff --git a/zeroerr_oa-recruit/src/main/java/cn/zeroerr/domain/entity/ResumeFollowRecord.java b/zeroerr_oa-recruit/src/main/java/cn/zeroerr/domain/entity/ResumeFollowRecord.java index 84b578f..f2f0495 100644 --- a/zeroerr_oa-recruit/src/main/java/cn/zeroerr/domain/entity/ResumeFollowRecord.java +++ b/zeroerr_oa-recruit/src/main/java/cn/zeroerr/domain/entity/ResumeFollowRecord.java @@ -132,10 +132,10 @@ public class ResumeFollowRecord implements Serializable { * 初试日期 */ @TableField(value = "first_date",updateStrategy = FieldStrategy.IGNORED) - @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") - @DateTimeFormat(pattern = "yyyy-MM-dd") - @Excel(name = "初试日期", width = 30, dateFormat = "yyyy-MM-dd") - private LocalDate firstDate; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm") + @Excel(name = "初试日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm") + private LocalDateTime firstDate; /** * 初试是否到面 @@ -198,10 +198,10 @@ public class ResumeFollowRecord implements Serializable { * 终试日期 */ @TableField(value = "final_date",updateStrategy = FieldStrategy.IGNORED) - @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8") - @DateTimeFormat(pattern = "yyyy-MM-dd") - @Excel(name = "终试日期", width = 30, dateFormat = "yyyy-MM-dd") - private LocalDate finalDate; + @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm") + @Excel(name = "终试日期", width = 30, dateFormat = "yyyy-MM-dd HH:mm") + private LocalDateTime finalDate; /** * 终试是否到面 diff --git a/zeroerr_oa-recruit/src/main/java/cn/zeroerr/domain/vo/AnnouncementVO.java b/zeroerr_oa-recruit/src/main/java/cn/zeroerr/domain/vo/AnnouncementVO.java new file mode 100644 index 0000000..f97ae31 --- /dev/null +++ b/zeroerr_oa-recruit/src/main/java/cn/zeroerr/domain/vo/AnnouncementVO.java @@ -0,0 +1,54 @@ +package cn.zeroerr.domain.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.experimental.Accessors; + +import java.util.List; + +@Data +@ApiModel +public class AnnouncementVO { + @ApiModelProperty(value = "面试候选人list") + List InterviewCandidatesList; + + @ApiModelProperty(value = "预计入职的list") + List ExpectedEntryList; + + + @Data + @Accessors(chain = true) + @ApiModel + public static class InterviewCandidates { + @ApiModelProperty("时间") + private String timeContent; + + @ApiModelProperty("姓名") + private String name; + + @ApiModelProperty("状态") + private String type; + + @ApiModelProperty("岗位") + private String postName; + + @ApiModelProperty("初试结果") + private String firstResult; + + @ApiModelProperty("终试结果") + private String finalResult; + } + + @Data + @Accessors(chain = true) + @ApiModel + public static class ExpectedEntry { + @ApiModelProperty("姓名") + private String name; + + @ApiModelProperty("岗位") + private String post; + } + +} diff --git a/zeroerr_oa-recruit/src/main/java/cn/zeroerr/domain/vo/StructureMapVO.java b/zeroerr_oa-recruit/src/main/java/cn/zeroerr/domain/vo/StructureMapVO.java new file mode 100644 index 0000000..7683af8 --- /dev/null +++ b/zeroerr_oa-recruit/src/main/java/cn/zeroerr/domain/vo/StructureMapVO.java @@ -0,0 +1,16 @@ +package cn.zeroerr.domain.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +@Data +@ApiModel +public class StructureMapVO { + + @ApiModelProperty("节点id") + private Integer id; + + @ApiModelProperty("部门名字") + private String label; +} diff --git a/zeroerr_oa-recruit/src/main/java/cn/zeroerr/mapper/ResumeFollowRecordMapper.java b/zeroerr_oa-recruit/src/main/java/cn/zeroerr/mapper/ResumeFollowRecordMapper.java index 4ccca09..807ecf3 100644 --- a/zeroerr_oa-recruit/src/main/java/cn/zeroerr/mapper/ResumeFollowRecordMapper.java +++ b/zeroerr_oa-recruit/src/main/java/cn/zeroerr/mapper/ResumeFollowRecordMapper.java @@ -31,6 +31,12 @@ public interface ResumeFollowRecordMapper extends BaseMapper List getBySelectMonth(@Param("hrName") String hrName, @Param("firstDay") LocalDate firstDay, @Param("lastDay") LocalDate lastDay, @Param("i") int i); List getListByWeek(@Param("now") LocalDate now, @Param("plusDays") LocalDate plusDays); + + List getFirstInterviewList(@Param("now") LocalDate yesterday, @Param("plusDays") LocalDate plusDays); + + List getFirstAndFinalInterviewList(@Param("now")LocalDate yesterday, @Param("plusDays")LocalDate plusDays); + + List getFinalInterviewList(@Param("now")LocalDate yesterday, @Param("plusDays")LocalDate plusDays); } diff --git a/zeroerr_oa-recruit/src/main/java/cn/zeroerr/service/ResumeFollowRecordService.java b/zeroerr_oa-recruit/src/main/java/cn/zeroerr/service/ResumeFollowRecordService.java index 4587029..5b7d237 100644 --- a/zeroerr_oa-recruit/src/main/java/cn/zeroerr/service/ResumeFollowRecordService.java +++ b/zeroerr_oa-recruit/src/main/java/cn/zeroerr/service/ResumeFollowRecordService.java @@ -28,4 +28,10 @@ public interface ResumeFollowRecordService extends IService List getBySelectMonth(String hrName, LocalDate firstDay, LocalDate lastDay, int i); List getListByWeek(LocalDate now, LocalDate plusDays); + + List getFirstInterviewList(LocalDate yesterday, LocalDate plusDays); + + List getFirstAndFinalInterviewList(LocalDate yesterday, LocalDate plusDays); + + List getFinalInterviewList(LocalDate yesterday, LocalDate plusDays); } diff --git a/zeroerr_oa-recruit/src/main/java/cn/zeroerr/service/impl/ResumeFollowRecordServiceImpl.java b/zeroerr_oa-recruit/src/main/java/cn/zeroerr/service/impl/ResumeFollowRecordServiceImpl.java index 0205fc0..fb063cb 100644 --- a/zeroerr_oa-recruit/src/main/java/cn/zeroerr/service/impl/ResumeFollowRecordServiceImpl.java +++ b/zeroerr_oa-recruit/src/main/java/cn/zeroerr/service/impl/ResumeFollowRecordServiceImpl.java @@ -58,6 +58,21 @@ public class ResumeFollowRecordServiceImpl extends ServiceImpl getFirstInterviewList(LocalDate yesterday, LocalDate plusDays) { + return resumeFollowRecordMapper.getFirstInterviewList(yesterday,plusDays); + } + + @Override + public List getFirstAndFinalInterviewList(LocalDate yesterday, LocalDate plusDays) { + return resumeFollowRecordMapper.getFirstAndFinalInterviewList(yesterday,plusDays); + } + + @Override + public List getFinalInterviewList(LocalDate yesterday, LocalDate plusDays) { + return resumeFollowRecordMapper.getFinalInterviewList(yesterday,plusDays); + } + } diff --git a/zeroerr_oa-recruit/src/main/resources/mapper/ResumeFollowRecordMapper.xml b/zeroerr_oa-recruit/src/main/resources/mapper/ResumeFollowRecordMapper.xml index fc0decb..b5c2776 100644 --- a/zeroerr_oa-recruit/src/main/resources/mapper/ResumeFollowRecordMapper.xml +++ b/zeroerr_oa-recruit/src/main/resources/mapper/ResumeFollowRecordMapper.xml @@ -20,7 +20,7 @@ - + @@ -29,7 +29,7 @@ - + @@ -189,10 +189,48 @@ + + + + + + + + + +