【HR专用】Vue+SpringBoot,实现人才招聘库的开发(后端部分)(二)

简介: 【HR专用】Vue+SpringBoot,实现人才招聘库的开发(后端部分)

3.1.2 新增人才类型

对于新增人才类型的业务,前端传来父节点 id、类型名称和排序值,即可完成新增操作,代码如下。

@RequestMapping(value = "/insertType", method = RequestMethod.POST)
@ApiOperation(value = "新增类型")
public Result<TalentPoolType> insert(@RequestParam String id,@RequestParam String title,@RequestParam(required = false,defaultValue = "10") float sortOrder){
    if(!Objects.equals("0",id)) {
        TalentPoolType type = iTalentPoolTypeService.getById(id);
        if(type == null) {
            return ResultUtil.error("上级类型已被删除");
        }
    }
    TalentPoolType talentPoolType = new TalentPoolType();
    talentPoolType.setTitle(title);
    talentPoolType.setParentId(id);
    talentPoolType.setSortOrder(BigDecimal.valueOf(sortOrder));
    iTalentPoolTypeService.saveOrUpdate(talentPoolType);
    return ResultUtil.success();
}

3.1.3 编辑人才类型

对于编辑人才类型的业务,前端传来类型 id、父节点 id、类型名称和排序值,即可完成编辑操作,代码如下。

@RequestMapping(value = "/editType", method = RequestMethod.POST)
@ApiOperation(value = "编辑类型")
public Result<TalentPoolType> editType(@RequestParam String id,@RequestParam String title,@RequestParam String parentId,@RequestParam float sortOrder){
    if(!Objects.equals("0",id)) {
        TalentPoolType type = iTalentPoolTypeService.getById(parentId);
        if(type == null) {
            return ResultUtil.error("上级类型已被删除");
        }
    }
    if(Objects.equals(id,parentId)) {
        return ResultUtil.error("自己不能是自己的父节点");
    }
    TalentPoolType talentPoolType = iTalentPoolTypeService.getById(id);
    if(talentPoolType == null) {
        return ResultUtil.error("类型已被删除");
    }
    talentPoolType.setTitle(title);
    talentPoolType.setParentId(parentId);
    talentPoolType.setSortOrder(BigDecimal.valueOf(sortOrder));
    iTalentPoolTypeService.saveOrUpdate(talentPoolType);
    return ResultUtil.success();
}

3.1.4 删除人才类型

对于删除人才类型的业务,前端传来类型 id,即可调用 removeById 方法完成删除操作,代码如下。

@RequestMapping(value = "/deleteType", method = RequestMethod.POST)
@ApiOperation(value = "删除类型")
public Result<Object> deleteType(@RequestParam String id){
    iTalentPoolTypeService.removeById(id);
    return ResultUtil.success();
}

3.2 人才库标签接口

人才库标签是用于对个人简历或职位信息进行分类和标记的关键词或短语。通过给人才库中的信息打上标签,可以方便地进行分类、筛选和搜索,提高招聘效率和准确性。

人才类型控制器用于提供人才类型的一级新增、子节点新增、编辑、删除接口。

首先创建 TalentPoolLabelController 类,注入 ITalentPoolLabelService 服务,代码如下。

@RestController
@Api(tags = "人才库标签接口")
@RequestMapping("/zwz/talentPoolLabel")
@Transactional
public class TalentPoolLabelController {
    @Autowired
    private ITalentPoolLabelService iTalentPoolLabelService;
}

3.2.1 查询人才库标签

查询人才库标签的核心代码如下。

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询人才库标签")
public Result<IPage<TalentPoolLabel>> getByPage(@ModelAttribute TalentPoolLabel label,@ModelAttribute PageVo page) {
    QueryWrapper<TalentPoolLabel> qw = new QueryWrapper<>();
    if(!ZwzNullUtils.isNull(label.getTitle())) {
        qw.like("title",label.getTitle());
    }
    if(!ZwzNullUtils.isNull(label.getType())) {
        qw.eq("type",label.getType());
    }
    IPage<TalentPoolLabel> data = iTalentPoolLabelService.page(PageUtil.initMpPage(page),qw);
    return new ResultUtil<IPage<TalentPoolLabel>>().setData(data);
}

3.2.2 新增人才库标签

新增人才库标签的核心代码如下。

@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = "新增人才库标签")
public Result<TalentPoolLabel> insert(TalentPoolLabel talentPoolLabel){
    iTalentPoolLabelService.saveOrUpdate(talentPoolLabel);
    return ResultUtil.success();
}

3.2.3 编辑人才库标签

编辑人才库标签的核心代码如下。

@RequestMapping(value = "/update", method = RequestMethod.POST)
@ApiOperation(value = "编辑人才库标签")
public Result<TalentPoolLabel> update(TalentPoolLabel talentPoolLabel){
    if(iTalentPoolLabelService.saveOrUpdate(talentPoolLabel)){
        return ResultUtil.success();
    }
    return ResultUtil.error();
}

3.2.4 删除人才库标签

删除人才库标签的核心代码如下。

@RequestMapping(value = "/delByIds", method = RequestMethod.POST)
@ApiOperation(value = "删除人才库标签")
public Result<Object> delByIds(@RequestParam String[] ids){
    for(String id : ids){
        iTalentPoolLabelService.removeById(id);
    }
    return ResultUtil.success();
}

3.3 人才库档案接口

人才库是企业用于储存和管理潜在候选人信息的数据库,也称为人才储备库或简历库。通常情况下,这些候选人可能已经应聘过公司的职位。

首先创建 TalentPoolController 类,注入相关服务,代码如下。

@Slf4j
@RestController
@Api(tags = "人才库档案管理接口")
@RequestMapping("/zwz/talentPool")
@Transactional
public class TalentPoolController {
    @Autowired
    private ITalentPoolService iTalentPoolService;
    @Autowired
    private ITalentPoolAndLabelService iTalentPoolAndLabelService;
    @Autowired
    private ITalentPoolInterviewRecordService iTalentPoolInterviewRecordService;
    @Autowired
    private ITalentPoolLabelService iTalentPoolLabelService;
    @Autowired
    private ITalentPoolResumeService iTalentPoolResumeService;
    @Autowired
    private ITalentPoolSayRecordService iTalentPoolSayRecordService;
    @Autowired
    private IZwzRosterUserService iZwzRosterUserService;
    @Autowired
    private ITalentPoolAndTypeService iTalentPoolAndTypeService;
    @Autowired
    private ITalentPoolTypeService iTalentPoolTypeService;
}

3.3.1 查询人才

查询人才库的代码如下,需要在查询时带出岗位、面试记录、沟通记录、简历档案和标签信息。

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询人才库")
public Result<IPage<TalentPool>> getByPage(@ModelAttribute TalentPool talentPool,@ModelAttribute PageVo page) {
    QueryWrapper<TalentPool> qw = new QueryWrapper<>();
    if(!ZwzNullUtils.isNull(talentPool.getUserName())) {
        qw.like("user_name",talentPool.getUserName());
    }
    if(!ZwzNullUtils.isNull(talentPool.getUserMean())) {
        qw.eq("user_mean",talentPool.getUserMean());
    }
    if(!ZwzNullUtils.isNull(talentPool.getStatus())) {
        qw.eq("status",talentPool.getStatus());
    }
    if(!ZwzNullUtils.isNull(talentPool.getUserSex())) {
        qw.eq("user_sex",talentPool.getUserSex());
    }
    if(!ZwzNullUtils.isNull(talentPool.getPostOffer())) {
        qw.inSql("id","SELECT id FROM t_talent_pool WHERE id IN(SELECT DISTINCT talent_id FROM t_talent_pool_and_type WHERE type_id IN (" + changePostOfferSplitToStr(talentPool.getPostOffer()) + "))");
    }
    IPage<TalentPool> data = iTalentPoolService.page(PageUtil.initMpPage(page),qw);
    List<TalentPoolLabel> labelList = iTalentPoolLabelService.list();
    for (TalentPool tp : data.getRecords()) {
        /**
         * 查询岗位
         */
        ZwzPair zwzPair = getTypeTitleByTalentId(tp.getId());
        tp.setPostOffer(zwzPair.getTitle());
        tp.setPostTitle(zwzPair.getValue());
        /**
         * 面试记录
         */
        QueryWrapper<TalentPoolInterviewRecord> intQw = new QueryWrapper<>();
        intQw.eq("talent_id",tp.getId());
        tp.setInterviewList(iTalentPoolInterviewRecordService.list(intQw));
        /**
         * 沟通记录
         */
        QueryWrapper<TalentPoolSayRecord> sayQw = new QueryWrapper<>();
        sayQw.eq("talent_id",tp.getId());
        tp.setSayList(iTalentPoolSayRecordService.list(sayQw));
        /**
         * 简历档案
         */
        QueryWrapper<TalentPoolResume> resQw = new QueryWrapper<>();
        resQw.eq("talent_id",tp.getId());
        tp.setResumeList(iTalentPoolResumeService.list(resQw));
        /**
         * 标签
         */
        QueryWrapper<TalentPoolAndLabel> labelQw = new QueryWrapper<>();
        labelQw.eq("talent_id",tp.getId());
        tp.setLabelList(getTalentInLabelList(labelList,iTalentPoolAndLabelService.list(labelQw)));
    }
    return new ResultUtil<IPage<TalentPool>>().setData(data);
}

3.3.2 新增人才

新增人才的核心代码如下。

@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = "新增人才")
public Result<TalentPool> insert(TalentPool talentPool) {
    String postOffer = talentPool.getPostOffer();
    if(postOffer == null) {
        return ResultUtil.error("应聘岗位不能为空");
    }
    iTalentPoolService.saveOrUpdate(talentPool);
    /**
     * 新增现有岗位
     */
    String[] offerList = postOffer.split(",");
    for (String offer : offerList) {
        TalentPoolType type = iTalentPoolTypeService.getById(offer);
        if(type != null) {
            TalentPoolAndType tpat = new TalentPoolAndType();
            tpat.setTalentId(talentPool.getId());
            tpat.setTypeId(type.getId());
            iTalentPoolAndTypeService.saveOrUpdate(tpat);
        }
    }
    return ResultUtil.success();
}

3.3.3 编辑人才

编辑人才的核心代码如下。

@RequestMapping(value = "/update", method = RequestMethod.POST)
@ApiOperation(value = "编辑人才")
public Result<TalentPool> update(TalentPool talentPool) {
    String postOffer = talentPool.getPostOffer();
    if(postOffer == null) {
        return ResultUtil.error("应聘岗位不能为空");
    }
    iTalentPoolService.saveOrUpdate(talentPool);
    /**
     * 删除原有岗位
     */
    QueryWrapper<TalentPoolAndType> qw = new QueryWrapper<>();
    qw.eq("talent_id",talentPool.getId());
    iTalentPoolAndTypeService.remove(qw);
    /**
     * 新增现有岗位
     */
    String[] offerList = postOffer.split(",");
    for (String offer : offerList) {
        TalentPoolType type = iTalentPoolTypeService.getById(offer);
        if(type != null) {
            TalentPoolAndType tpat = new TalentPoolAndType();
            tpat.setTalentId(talentPool.getId());
            tpat.setTypeId(type.getId());
            iTalentPoolAndTypeService.saveOrUpdate(tpat);
        }
    }
    return ResultUtil.success();
}

3.3.4 删除人才

删除人才的核心代码如下。

@RequestMapping(value = "/delByIds", method = RequestMethod.POST)
@ApiOperation(value = "删除人才")
public Result<Object> delByIds(@RequestParam String[] ids){
    for(String id : ids){
        iTalentPoolService.removeById(id);
    }
    return ResultUtil.success();
}

3.4 面试记录接口

人才库是企业用于储存和管理潜在候选人信息的数据库,也称为人才储备库或简历库。通常情况下,这些候选人可能已经应聘过公司的职位。

面试记录相关接口也在 TalentPoolController 类中编写。

3.4.1 新增面试记录

新增面试记录的核心代码如下。

@RequestMapping(value = "/addInterview", method = RequestMethod.POST)
@ApiOperation(value = "新增面试记录")
public Result<Object> addInterview(@RequestParam String id,@RequestParam String interviewDate,@RequestParam String inMean,@RequestParam String interviewAns,@RequestParam String remark) {
    TalentPoolInterviewRecord record = new TalentPoolInterviewRecord();
    record.setTalentId(id);
    record.setInterviewDate(interviewDate);
    record.setInMean(inMean);
    record.setInterviewAns(interviewAns);
    record.setRemark(remark);
    iTalentPoolInterviewRecordService.saveOrUpdate(record);
    return ResultUtil.success();
}

3.4.2 编辑面试记录

编辑面试记录的核心代码如下。

@RequestMapping(value = "/editInterview", method = RequestMethod.POST)
@ApiOperation(value = "编辑面试记录")
public Result<Object> editInterview(@RequestParam String id,@RequestParam String interviewDate,@RequestParam String inMean,@RequestParam String interviewAns,@RequestParam String remark) {
    TalentPoolInterviewRecord record = iTalentPoolInterviewRecordService.getById(id);
    if(record == null) {
        return ResultUtil.error("面试记录已被删除");
    }
    record.setInterviewDate(interviewDate);
    record.setInMean(inMean);
    record.setInterviewAns(interviewAns);
    record.setRemark(remark);
    iTalentPoolInterviewRecordService.saveOrUpdate(record);
    return ResultUtil.success();
}

3.4.3 删除面试记录

@RequestMapping(value = "/deleteInterview", method = RequestMethod.POST)
@ApiOperation(value = "删除面试记录")
public Result<Object> deleteInterview(@RequestParam String id) {
    iTalentPoolInterviewRecordService.removeById(id);
    return ResultUtil.success();
}

3.5 沟通记录接口

3.5.1 新增沟通记录

新增沟通记录的核心代码如下。

@RequestMapping(value = "/addSay", method = RequestMethod.POST)
@ApiOperation(value = "新增沟通记录")
public Result<Object> addSay(@RequestParam String id,@RequestParam String sayDate,@RequestParam String sayContent,@RequestParam String sayAns,@RequestParam String remark) {
    TalentPoolSayRecord record = new TalentPoolSayRecord();
    record.setTalentId(id);
    record.setSayDate(sayDate);
    record.setSayContent(sayContent);
    record.setSayAns(sayAns);
    record.setRemark(remark);
    iTalentPoolSayRecordService.saveOrUpdate(record);
    return ResultUtil.success();
}

3.5.2 编辑沟通记录

编辑沟通记录的核心代码如下。

@RequestMapping(value = "/editSay", method = RequestMethod.POST)
@ApiOperation(value = "编辑沟通记录")
public Result<Object> editSay(@RequestParam String id,@RequestParam String sayDate,@RequestParam String sayContent,@RequestParam String sayAns,@RequestParam String remark) {
    TalentPoolSayRecord record = iTalentPoolSayRecordService.getById(id);
    if(record == null) {
        return ResultUtil.error("面试记录已被删除");
    }
    record.setSayDate(sayDate);
    record.setSayContent(sayContent);
    record.setSayAns(sayAns);
    record.setRemark(remark);
    iTalentPoolSayRecordService.saveOrUpdate(record);
    return ResultUtil.success();
}

3.5.3 删除沟通记录

删除沟通记录的核心代码如下。

@RequestMapping(value = "/deleteSay", method = RequestMethod.POST)
@ApiOperation(value = "删除沟通记录")
public Result<Object> deleteSay(@RequestParam String id) {
    iTalentPoolSayRecordService.removeById(id);
    return ResultUtil.success();
}

3.6 简历接口

3.6.1 新增简历

新增简历的核心代码如下,传入 id、日期、简历文件、备注数据,即可实现新增操作。

@RequestMapping(value = "/addResume", method = RequestMethod.POST)
@ApiOperation(value = "新增简历")
public Result<Object> addResume(@RequestParam String id,@RequestParam String date,@RequestParam String url,@RequestParam String remark) {
    TalentPoolResume record = new TalentPoolResume();
    record.setTalentId(id);
    record.setDate(date);
    record.setUrl(url);
    record.setRemark(remark);
    iTalentPoolResumeService.saveOrUpdate(record);
    return ResultUtil.success();
}

3.6.2 编辑简历

编辑简历的核心代码如下。

@RequestMapping(value = "/editResume", method = RequestMethod.POST)
@ApiOperation(value = "编辑简历")
public Result<Object> editResume(@RequestParam String id,@RequestParam String date,@RequestParam String url,@RequestParam String remark) {
    TalentPoolResume record = new TalentPoolResume();
    if(record == null) {
        return ResultUtil.error("简历已被删除");
    }
    record.setDate(date);
    record.setUrl(url);
    record.setRemark(remark);
    iTalentPoolResumeService.saveOrUpdate(record);
    return ResultUtil.success();
}

3.6.3 删除简历

删除简历的核心代码如下。

@RequestMapping(value = "/deleteResume", method = RequestMethod.POST)
@ApiOperation(value = "删除简历记录")
public Result<Object> deleteResume(@RequestParam String id) {
    iTalentPoolResumeService.removeById(id);
    return ResultUtil.success();
}

四、总结

本文讲解了人才招聘库设计开发的后端部分,完成了八大实体的设计和实现,将在后续更新人才招聘库的前端开发内容。

相关文章
|
1月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。首先,创建并配置 Spring Boot 项目,实现后端 API;然后,使用 Ant Design Pro Vue 创建前端项目,配置动态路由和菜单。通过具体案例,展示了如何快速搭建高效、易维护的项目框架。
108 62
|
6天前
|
JavaScript 安全 Java
java版药品不良反应智能监测系统源码,采用SpringBoot、Vue、MySQL技术开发
基于B/S架构,采用Java、SpringBoot、Vue、MySQL等技术自主研发的ADR智能监测系统,适用于三甲医院,支持二次开发。该系统能自动监测全院患者药物不良反应,通过移动端和PC端实时反馈,提升用药安全。系统涵盖规则管理、监测报告、系统管理三大模块,确保精准、高效地处理ADR事件。
|
1月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,帮助开发者提高开发效率和应用的可维护性。
64 2
|
1月前
|
JavaScript Java 项目管理
Java毕设学习 基于SpringBoot + Vue 的医院管理系统 持续给大家寻找Java毕设学习项目(附源码)
基于SpringBoot + Vue的医院管理系统,涵盖医院、患者、挂号、药物、检查、病床、排班管理和数据分析等功能。开发工具为IDEA和HBuilder X,环境需配置jdk8、Node.js14、MySQL8。文末提供源码下载链接。
|
1月前
|
JavaScript NoSQL Java
CC-ADMIN后台简介一个基于 Spring Boot 2.1.3 、SpringBootMybatis plus、JWT、Shiro、Redis、Vue quasar 的前后端分离的后台管理系统
CC-ADMIN后台简介一个基于 Spring Boot 2.1.3 、SpringBootMybatis plus、JWT、Shiro、Redis、Vue quasar 的前后端分离的后台管理系统
38 0
|
3天前
|
存储 缓存 负载均衡
后端开发中的性能优化策略
本文将探讨几种常见的后端性能优化策略,包括代码层面的优化、数据库查询优化、缓存机制的应用以及负载均衡的实现。通过这些方法,开发者可以显著提升系统的响应速度和处理能力,从而提供更好的用户体验。
22 4
|
9天前
|
存储 前端开发 Java
深入理解后端开发:从基础到高级
本文将带你走进后端开发的神秘世界,从基础概念到高级应用,一步步揭示后端开发的全貌。我们将通过代码示例,让你更好地理解和掌握后端开发的核心技能。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供有价值的信息和启示。
|
12天前
|
存储 缓存 监控
后端开发中的缓存机制:深度解析与最佳实践####
本文深入探讨了后端开发中不可或缺的一环——缓存机制,旨在为读者提供一份详尽的指南,涵盖缓存的基本原理、常见类型(如内存缓存、磁盘缓存、分布式缓存等)、主流技术选型(Redis、Memcached、Ehcache等),以及在实际项目中如何根据业务需求设计并实施高效的缓存策略。不同于常规摘要的概述性质,本摘要直接点明文章将围绕“深度解析”与“最佳实践”两大核心展开,既适合初学者构建基础认知框架,也为有经验的开发者提供优化建议与实战技巧。 ####
|
8天前
|
运维 监控 Java
后端开发中的微服务架构实践与挑战####
在数字化转型加速的今天,微服务架构凭借其高度的灵活性、可扩展性和可维护性,成为众多企业后端系统构建的首选方案。本文深入探讨了微服务架构的核心概念、实施步骤、关键技术考量以及面临的主要挑战,旨在为开发者提供一份实用的实践指南。通过案例分析,揭示微服务在实际项目中的应用效果,并针对常见问题提出解决策略,帮助读者更好地理解和应对微服务架构带来的复杂性与机遇。 ####
|
7天前
|
消息中间件 运维 安全
后端开发中的微服务架构实践与挑战####
在数字化转型的浪潮中,微服务架构凭借其高度的灵活性和可扩展性,成为众多企业重构后端系统的首选方案。本文将深入探讨微服务的核心概念、设计原则、关键技术选型及在实际项目实施过程中面临的挑战与解决方案,旨在为开发者提供一套实用的微服务架构落地指南。我们将从理论框架出发,逐步深入至技术细节,最终通过案例分析,揭示如何在复杂业务场景下有效应用微服务,提升系统的整体性能与稳定性。 ####
23 1