diff --git a/zeroerr_oa-recruit/src/main/java/cn/zeroerr/controller/RecruitInterviewController.java b/zeroerr_oa-recruit/src/main/java/cn/zeroerr/controller/RecruitInterviewController.java index aa26e4f..a5f6ef5 100644 --- a/zeroerr_oa-recruit/src/main/java/cn/zeroerr/controller/RecruitInterviewController.java +++ b/zeroerr_oa-recruit/src/main/java/cn/zeroerr/controller/RecruitInterviewController.java @@ -5,6 +5,7 @@ import cn.zeroerr.common.config.RuoYiConfig; import cn.zeroerr.common.constant.Constants; import cn.zeroerr.common.core.controller.BaseController; import cn.zeroerr.common.core.domain.AjaxResult; +import cn.zeroerr.common.core.domain.entity.SysRole; import cn.zeroerr.common.core.domain.entity.SysUser; import cn.zeroerr.common.core.domain.model.LoginUser; import cn.zeroerr.common.core.page.TableDataInfo; @@ -13,6 +14,7 @@ import cn.zeroerr.common.utils.StringUtils; import cn.zeroerr.common.utils.file.FileUploadUtils; import cn.zeroerr.common.utils.file.FileUtils; import cn.zeroerr.common.utils.file.MimeTypeUtils; +import cn.zeroerr.domain.dto.ToppingDTO; import cn.zeroerr.domain.entity.PostPlanFollow; import cn.zeroerr.domain.entity.RecruitPost; import cn.zeroerr.domain.entity.ResumeFollowRecord; @@ -36,6 +38,7 @@ import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; @@ -79,9 +82,33 @@ public class RecruitInterviewController extends BaseController { @ApiOperation(value = "获取《面试管理》简历跟进记录列表") public TableDataInfo getResumeRecordList(ResumeFollowRecord req){ startPage(); - //获取操作人的角色 - List resumeFollowRecordList= resumeFollowRecordService.listByQuery(req); - return getDataTable(resumeFollowRecordList); + //获取操作人的角色,如果是hr或者hr其他角色,则只显示自己的信息 + //根据用户id获取所有的该审批人的角色ids + boolean isHr = false; + List sysRoles = iSysRoleService.rolesByUserId(getUserId()); + if (!CollectionUtils.isEmpty(sysRoles)) { + for (SysRole sysRole : sysRoles) { + //如果角色是hr + if (sysRole.getRoleKey().equals("hr")||sysRole.getRoleKey().equals("hrleader")) { + isHr = true; + } + } + } + if(isHr){ + req.setHrId(getUserId()); + } + //找出所有置顶后的排序数据 + List resumeFollowRecordListTopping= resumeFollowRecordService.listByQuery(req,true); + //找出所有非置顶的排序数据 + List resumeFollowRecordListUnTopping= resumeFollowRecordService.listByQueryUnTopping(req,false); + + // 将非置顶数据追加到置顶数据的列表后面 + resumeFollowRecordListTopping.addAll(resumeFollowRecordListUnTopping); + + // 最终的排序列表 + List sortedResumeFollowRecordList = resumeFollowRecordListTopping; + + return getDataTable(sortedResumeFollowRecordList); } @PreAuthorize("@ss.hasAnyPermi('recruit:interview:add')") @@ -94,11 +121,11 @@ public class RecruitInterviewController extends BaseController { RecruitPost post = recruitPostService.getById(req.getPostId()); req.setPostName(post.getPostName()); req.setCreateDate(LocalDate.now()); + //默认不置顶 + req.setTopping(false); return toAjax(resumeFollowRecordService.save(req)); } - - @PreAuthorize("@ss.hasAnyPermi('recruit:interview:query')") @GetMapping("/interview/{id}") @ApiOperation(value = "获取《面试管理》简历跟进记录列表") @@ -106,7 +133,7 @@ public class RecruitInterviewController extends BaseController { return success(resumeFollowRecordService.getById(id)); } - @PreAuthorize("@ss.hasAnyPermi('recruit:interview:query')") + @PreAuthorize("@ss.hasAnyPermi('recruit:interview:delete')") @DeleteMapping("/interview/{id}") @ApiOperation(value = "获取《面试管理》简历跟进记录列表") public AjaxResult deleteResumeRecordList(@PathVariable ("id")Long id){ @@ -136,4 +163,15 @@ public class RecruitInterviewController extends BaseController { return error("上传文件异常,请联系管理员"); } + + @PreAuthorize("@ss.hasAnyPermi('recruit:interview:edit')") + @PutMapping("/interview/editTopping") + @ApiOperation(value = "修改《面试管理》简历跟进记录是否置顶") + public AjaxResult editTopping(@RequestBody ToppingDTO req){ + LocalDateTime localDateTime=LocalDateTime.now(); + if(req.getTopping()){ + return AjaxResult.success(resumeFollowRecordService.update(new LambdaUpdateWrapper().set(ResumeFollowRecord::getTopping,req.getTopping()).set(ResumeFollowRecord::getToppingTime,localDateTime).eq(ResumeFollowRecord::getId,req.getId()))); + } + return AjaxResult.success(resumeFollowRecordService.update(new LambdaUpdateWrapper().set(ResumeFollowRecord::getTopping,req.getTopping()).set(ResumeFollowRecord::getToppingTime,null).set(ResumeFollowRecord::getToppingTime,localDateTime).eq(ResumeFollowRecord::getId,req.getId()))); + } } diff --git a/zeroerr_oa-recruit/src/main/java/cn/zeroerr/domain/dto/ToppingDTO.java b/zeroerr_oa-recruit/src/main/java/cn/zeroerr/domain/dto/ToppingDTO.java new file mode 100644 index 0000000..27b8042 --- /dev/null +++ b/zeroerr_oa-recruit/src/main/java/cn/zeroerr/domain/dto/ToppingDTO.java @@ -0,0 +1,18 @@ +package cn.zeroerr.domain.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import org.springframework.format.annotation.DateTimeFormat; + +import java.time.LocalDate; + +@Data +@ApiModel +public class ToppingDTO { + @ApiModelProperty(value = "简历跟进记录id") + private Long id; + + @ApiModelProperty(value = "是否置顶") + private Boolean topping; +} 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 2d99024..4f8c187 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 @@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.annotation.*; import java.io.Serializable; import java.time.LocalDate; +import java.time.LocalDateTime; import java.util.Date; import com.fasterxml.jackson.annotation.JsonFormat; @@ -247,13 +248,27 @@ public class ResumeFollowRecord implements Serializable { @DateTimeFormat(pattern = "yyyy-MM-dd") private LocalDate actualJoinDate; - /** * 上传的简历 */ @TableField(value = "file") private String file; + /** + * 是否置顶 + */ + @TableField(value = "topping") + private Boolean topping; + + /** + * 置顶时间 + */ + @TableField(value = "topping_time") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") + private LocalDateTime toppingTime; + + @TableField(exist = false) private static final long serialVersionUID = 1L; } \ No newline at end of file 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 40d0ec8..a23e3cd 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 @@ -17,13 +17,15 @@ import java.util.List; @Repository public interface ResumeFollowRecordMapper extends BaseMapper { - List listByQuery(ResumeFollowRecord req); + List listByQuery(@Param("req") ResumeFollowRecord req,@Param("topping") Boolean topping); List getBySelect(@Param("hrId") Long hrId, @Param("firstDay") LocalDate firstDay,@Param("endDay") LocalDate lastDay); List getPostInterViewList(@Param("postList") List postList,@Param("firstDay") LocalDate firstDay, @Param("lastDay") LocalDate lastDay); List getPostEntryList(@Param("postList") List postList, @Param("firstDay") LocalDate firstDay, @Param("lastDay")LocalDate lastDay); + + List listByQueryUnTopping(@Param("req")ResumeFollowRecord req, @Param("topping")boolean topping); } 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 90214b2..ff53225 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 @@ -13,11 +13,13 @@ import java.util.List; */ public interface ResumeFollowRecordService extends IService { - List listByQuery(ResumeFollowRecord req); + List listByQuery(ResumeFollowRecord req,Boolean topping); List getBySelect(Long hrId, LocalDate firstDay, LocalDate lastDay); List getPostInterViewList(List postList, LocalDate firstDay, LocalDate lastDay); List getPostEntryList(List postList, LocalDate firstDay, LocalDate lastDay); + + List listByQueryUnTopping(ResumeFollowRecord req, boolean topping); } 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 9f13357..b614a21 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 @@ -23,8 +23,8 @@ public class ResumeFollowRecordServiceImpl extends ServiceImpl listByQuery(ResumeFollowRecord req) { - return resumeFollowRecordMapper.listByQuery(req); + public List listByQuery(ResumeFollowRecord req,Boolean topping) { + return resumeFollowRecordMapper.listByQuery(req,topping); } @Override @@ -41,6 +41,12 @@ public class ResumeFollowRecordServiceImpl extends ServiceImpl getPostEntryList(List postList, LocalDate firstDay, LocalDate lastDay) { return resumeFollowRecordMapper.getPostEntryList(postList,firstDay,lastDay); } + + @Override + public List listByQueryUnTopping(ResumeFollowRecord req, boolean topping) { + return resumeFollowRecordMapper.listByQueryUnTopping(req,topping); + } + } diff --git a/zeroerr_oa-recruit/src/main/resources/mapper/ResumeFollowRecordMapper.xml b/zeroerr_oa-recruit/src/main/resources/mapper/ResumeFollowRecordMapper.xml index 5a3a003..69af77e 100644 --- a/zeroerr_oa-recruit/src/main/resources/mapper/ResumeFollowRecordMapper.xml +++ b/zeroerr_oa-recruit/src/main/resources/mapper/ResumeFollowRecordMapper.xml @@ -40,6 +40,8 @@ + + @@ -55,22 +57,23 @@ second_reach,second_interviewer_ids,second_pass, final_date,final_reach,final_interviewer_ids, final_pass,accept_offer,join_date,create_date,update_date,actual_join_date, - fail_reason,special_reason,file + fail_reason,special_reason,file,topping,topping_time + + +