【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();
}

四、总结

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

相关文章
|
23天前
|
存储 JavaScript 前端开发
基于 SpringBoot 和 Vue 开发校园点餐订餐外卖跑腿Java源码
一个非常实用的校园外卖系统,基于 SpringBoot 和 Vue 的开发。这一系统源于黑马的外卖案例项目 经过站长的进一步改进和优化,提供了更丰富的功能和更高的可用性。 这个项目的架构设计非常有趣。虽然它采用了SpringBoot和Vue的组合,但并不是一个完全分离的项目。 前端视图通过JS的方式引入了Vue和Element UI,既能利用Vue的快速开发优势,
107 13
|
30天前
|
JavaScript 安全 Java
java版药品不良反应智能监测系统源码,采用SpringBoot、Vue、MySQL技术开发
基于B/S架构,采用Java、SpringBoot、Vue、MySQL等技术自主研发的ADR智能监测系统,适用于三甲医院,支持二次开发。该系统能自动监测全院患者药物不良反应,通过移动端和PC端实时反馈,提升用药安全。系统涵盖规则管理、监测报告、系统管理三大模块,确保精准、高效地处理ADR事件。
|
1月前
|
安全 Java API
实现跨域请求:Spring Boot后端的解决方案
本文介绍了在Spring Boot中处理跨域请求的三种方法:使用`@CrossOrigin`注解、全局配置以及自定义过滤器。每种方法都适用于不同的场景和需求,帮助开发者灵活地解决跨域问题,确保前后端交互顺畅与安全。
|
2月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,帮助开发者提高开发效率和应用的可维护性。
124 2
|
2月前
|
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 的前后端分离的后台管理系统
53 0
|
7天前
|
JavaScript
vue使用iconfont图标
vue使用iconfont图标
51 1
|
17天前
|
JavaScript 关系型数据库 MySQL
基于VUE的校园二手交易平台系统设计与实现毕业设计论文模板
基于Vue的校园二手交易平台是一款专为校园用户设计的在线交易系统,提供简洁高效、安全可靠的二手商品买卖环境。平台利用Vue框架的响应式数据绑定和组件化特性,实现用户友好的界面,方便商品浏览、发布与管理。该系统采用Node.js、MySQL及B/S架构,确保稳定性和多功能模块设计,涵盖管理员和用户功能模块,促进物品循环使用,降低开销,提升环保意识,助力绿色校园文化建设。
|
2月前
|
JavaScript 前端开发 开发者
vue学习第一章
欢迎来到我的博客!我是瑞雨溪,一名热爱前端的大一学生,专注于JavaScript与Vue,正向全栈进发。博客分享Vue学习心得、命令式与声明式编程对比、列表展示及计数器案例等。关注我,持续更新中!🎉🎉🎉
48 1
vue学习第一章
|
2月前
|
JavaScript 前端开发 索引
vue学习第三章
欢迎来到瑞雨溪的博客,一名热爱JavaScript与Vue的大一学生。本文介绍了Vue中的v-bind指令,包括基本使用、动态绑定class及style等,希望能为你的前端学习之路提供帮助。持续关注,更多精彩内容即将呈现!🎉🎉🎉
34 1
|
2月前
|
缓存 JavaScript 前端开发
vue学习第四章
欢迎来到我的博客!我是瑞雨溪,一名热爱JavaScript与Vue的大一学生。本文介绍了Vue中计算属性的基本与复杂使用、setter/getter、与methods的对比及与侦听器的总结。如果你觉得有用,请关注我,将持续更新更多优质内容!🎉🎉🎉
41 1
vue学习第四章