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

四、总结

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

相关文章
|
JavaScript 前端开发 Java
制造业ERP源码,工厂ERP管理系统,前端框架:Vue,后端框架:SpringBoot
这是一套基于SpringBoot+Vue技术栈开发的ERP企业管理系统,采用Java语言与vscode工具。系统涵盖采购/销售、出入库、生产、品质管理等功能,整合客户与供应商数据,支持在线协同和业务全流程管控。同时提供主数据管理、权限控制、工作流审批、报表自定义及打印、在线报表开发和自定义表单功能,助力企业实现高效自动化管理,并通过UniAPP实现移动端支持,满足多场景应用需求。
1278 1
|
10月前
|
前端开发 安全 Java
基于springboot+vue开发的会议预约管理系统
一个完整的会议预约管理系统,包含前端用户界面、管理后台和后端API服务。 ### 后端 - **框架**: Spring Boot 2.7.18 - **数据库**: MySQL 5.6+ - **ORM**: MyBatis Plus 3.5.3.1 - **安全**: Spring Security + JWT - **Java版本**: Java 11 ### 前端 - **框架**: Vue 3.3.4 - **UI组件**: Element Plus 2.3.8 - **构建工具**: Vite 4.4.5 - **状态管理**: Pinia 2.1.6 - **HTTP客户端
1409 4
基于springboot+vue开发的会议预约管理系统
|
11月前
|
前端开发 JavaScript Java
基于springboot+vue开发的校园食堂评价系统【源码+sql+可运行】【50809】
本系统基于SpringBoot与Vue3开发,实现校园食堂评价功能。前台支持用户注册登录、食堂浏览、菜品查看及评价发布;后台提供食堂、菜品与评价管理模块,支持权限控制与数据维护。技术栈涵盖SpringBoot、MyBatisPlus、Vue3、ElementUI等,适配响应式布局,提供完整源码与数据库脚本,可直接运行部署。
610 6
基于springboot+vue开发的校园食堂评价系统【源码+sql+可运行】【50809】
|
供应链 JavaScript BI
ERP系统源码,基于SpringBoot+Vue+ElementUI+UniAPP开发
这是一款专为小微企业打造的 SaaS ERP 管理系统,基于 SpringBoot+Vue+ElementUI+UniAPP 技术栈开发,帮助企业轻松上云。系统覆盖进销存、采购、销售、生产、财务、品质、OA 办公及 CRM 等核心功能,业务流程清晰且操作简便。支持二次开发与商用,提供自定义界面、审批流配置及灵活报表设计,助力企业高效管理与数字化转型。
969 2
ERP系统源码,基于SpringBoot+Vue+ElementUI+UniAPP开发
|
JavaScript 前端开发 UED
Vue 表情包输入组件的实现代码:支持自定义表情库、快捷键发送和输入框联动的聊天表情解决方案
本文详细介绍了在 Vue 项目中实现一个功能完善、交互友好的表情包输入组件的方法,并提供了具体的应用实例。组件设计包含表情分类展示、响应式布局、与输入框的交互及样式定制等功能。通过核心技术实现,如将表情插入输入框光标位置和点击外部关闭选择器,确保用户体验流畅。同时探讨了性能优化策略,如懒加载和虚拟滚动,以及扩展性方案,如自定义主题和国际化支持。最终,展示了如何在聊天界面中集成该组件,为用户提供丰富的表情输入体验。
949 8
|
Java API 微服务
Java 21 与 Spring Boot 3.2 微服务开发从入门到精通实操指南
《Java 21与Spring Boot 3.2微服务开发实践》摘要: 本文基于Java 21和Spring Boot 3.2最新特性,通过完整代码示例展示了微服务开发全流程。主要内容包括:1) 使用Spring Initializr初始化项目,集成Web、JPA、H2等组件;2) 配置虚拟线程支持高并发;3) 采用记录类优化DTO设计;4) 实现JPA Repository与Stream API数据访问;5) 服务层整合虚拟线程异步处理和结构化并发;6) 构建RESTful API并使用Springdoc生成文档。文中特别演示了虚拟线程配置(@Async)和StructuredTaskSco
1287 0
|
9月前
|
JavaScript Java 关系型数据库
基于springboot的项目管理系统
本文探讨项目管理系统在现代企业中的应用与实现,分析其研究背景、意义及现状,阐述基于SSM、Java、MySQL和Vue等技术构建系统的关键方法,展现其在提升管理效率、协同水平与风险管控方面的价值。
|
9月前
|
搜索推荐 JavaScript Java
基于springboot的儿童家长教育能力提升学习系统
本系统聚焦儿童家长教育能力提升,针对家庭教育中理念混乱、时间不足、个性化服务缺失等问题,构建科学、系统、个性化的在线学习平台。融合Spring Boot、Vue等先进技术,整合优质教育资源,提供高效便捷的学习路径,助力家长掌握科学育儿方法,促进儿童全面健康发展,推动家庭和谐与社会进步。
|
9月前
|
JavaScript Java 关系型数据库
基于springboot的古树名木保护管理系统
本研究针对古树保护面临的严峻挑战,构建基于Java、Vue、MySQL与Spring Boot技术的信息化管理系统,实现古树资源的动态监测、数据管理与科学保护,推动生态、文化与经济可持续发展。