岗位业务逻辑完善

This commit is contained in:
2025-12-14 09:20:06 +08:00
parent 3361633dba
commit 4ef73a8ee8
39 changed files with 1720 additions and 188 deletions

View File

@@ -0,0 +1,46 @@
package com.vetti.hotake.domain;
import lombok.Data;
import lombok.experimental.Accessors;
import io.swagger.annotations.ApiModelProperty;
import com.vetti.common.annotation.Excel;
import com.vetti.common.core.domain.BaseEntity;
/**
* 初步筛选问题回答记录信息对象 hotake_init_scre_questions_reply_record_info
*
* @author wangxiangshun
* @date 2025-12-14
*/
@Data
@Accessors(chain = true)
public class HotakeInitScreQuestionsReplyRecordInfo extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 主键ID */
@ApiModelProperty("主键ID")
private Long id;
/** 岗位ID */
@ApiModelProperty("岗位ID")
@Excel(name = "岗位ID")
private Long roleId;
/** 候选人ID */
@ApiModelProperty("候选人ID")
@Excel(name = "候选人ID")
private Long candidateId;
/** 问题ID */
@ApiModelProperty("问题ID")
@Excel(name = "问题ID")
private Long questionId;
/** 答案 */
@ApiModelProperty("答案")
@Excel(name = "答案")
private String answerConnect;
}

View File

@@ -0,0 +1,61 @@
package com.vetti.hotake.domain;
import com.vetti.hotake.domain.dto.AnswerOptionsDto;
import lombok.Data;
import lombok.experimental.Accessors;
import io.swagger.annotations.ApiModelProperty;
import com.vetti.common.annotation.Excel;
import com.vetti.common.core.domain.BaseEntity;
import java.util.List;
/**
* 初步筛选问题信息对象 hotake_initial_screening_questions_info
*
* @author wangxiangshun
* @date 2025-12-14
*/
@Data
@Accessors(chain = true)
public class HotakeInitialScreeningQuestionsInfo extends BaseEntity
{
private static final long serialVersionUID = 1L;
/** 主键ID */
@ApiModelProperty("主键ID")
private Long id;
/** 岗位ID */
@ApiModelProperty("岗位ID")
@Excel(name = "岗位ID")
private Long roleId;
/** 招聘人ID */
@ApiModelProperty("招聘人ID")
@Excel(name = "招聘人ID")
private Long recruiterId;
/** 问题 */
@ApiModelProperty("问题")
@Excel(name = "问题")
private String questionTitle;
/** 问题类型 */
@ApiModelProperty("问题类型")
@Excel(name = "问题类型")
private String questionType;
/** 问题答案json */
@ApiModelProperty("问题答案json")
@Excel(name = "问题答案json")
private String answerOptions;
/** 是否是必填项 */
@ApiModelProperty("是否是必填项")
@Excel(name = "是否是必填项")
private String requiredField;
@ApiModelProperty("问题答案选项数据集合")
private List<AnswerOptionsDto> answerOptionsList;
}

View File

@@ -23,6 +23,9 @@ public class HotakeRolesInfo extends BaseEntity
@ApiModelProperty("主键ID")
private Long id;
@ApiModelProperty("UUID主键")
private String uuid;
/** 招聘人ID */
@ApiModelProperty("招聘人ID")
@Excel(name = "招聘人ID")
@@ -33,6 +36,12 @@ public class HotakeRolesInfo extends BaseEntity
@Excel(name = "岗位名称")
private String roleName;
@ApiModelProperty("招聘公司名称")
private String companyName;
@ApiModelProperty("岗位类型")
private String roleType;
/** 工作地点类型 */
@ApiModelProperty("工作地点类型")
@Excel(name = "工作地点类型")
@@ -116,7 +125,7 @@ public class HotakeRolesInfo extends BaseEntity
/** 角色福利 */
@ApiModelProperty("角色福利")
@Excel(name = "角色福利")
private String roleBenefits;
private String roleBenefitsJson;
/** 发布渠道 */
@ApiModelProperty("发布渠道")
@@ -143,16 +152,19 @@ public class HotakeRolesInfo extends BaseEntity
@Excel(name = "发布日期")
private String posted;
/** 数据类型normal:正常draft:草稿) */
@ApiModelProperty("数据类型normal:正常draft:草稿)")
@Excel(name = "数据类型", readConverterExp = "n=ormal:正常draft:草稿")
@ApiModelProperty("语言")
private String languages;
@ApiModelProperty("数据类型release:发布Jobdraft:草稿,template:模版)")
private String dataType;
/** 当前操作步骤 */
@ApiModelProperty("当前操作步骤")
@ApiModelProperty("当前操作步骤()")
@Excel(name = "当前操作步骤")
private String operStep;
@ApiModelProperty("当前岗位状态(pause:暂停,archived:关闭/归档,open:发布,editing:编辑中)")
private String status;
}

View File

@@ -0,0 +1,19 @@
package com.vetti.hotake.domain.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 问题答案
*
* @author wangxiangshun
* @date 2025-11-30
*/
@Data
@Accessors(chain = true)
public class AnswerOptionsDto {
@ApiModelProperty("答案选项")
private String answers;
}

View File

@@ -0,0 +1,43 @@
package com.vetti.hotake.domain.dto;
import com.vetti.hotake.domain.HotakeInitialScreeningQuestionsInfo;
import com.vetti.hotake.domain.HotakeRolesInfo;
import com.vetti.hotake.domain.dto.roleDto.*;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.List;
/**
* 岗位信息 hotake_cv_info
*
* @author wangxiangshun
* @date 2025-11-30
*/
@Data
@Accessors(chain = true)
public class HotakeRolesInfoDto extends HotakeRolesInfo {
@ApiModelProperty("所需技能数据集合")
private List<RequiredSkillsDto> requiredSkillsList;
@ApiModelProperty("加分技能数据集合")
private List<NiceToHaveSkillsDto> niceToHaveSkillsList;
@ApiModelProperty("教育要求")
private EducationRequirementsDto educationRequirements;
@ApiModelProperty("证书数据集合")
private List<CertificationsLicensesDto> certificationsLicensesList;
@ApiModelProperty("角色福利数据集合")
private List<RoleBenefitsDto> roleBenefitsList;
@ApiModelProperty("发布渠道数据集合")
private List<PublishingChannelsDto> publishingChannelsList;
@ApiModelProperty("初步筛选问题数据集合")
private List<HotakeInitialScreeningQuestionsInfo> initialScreeningQuestionsInfoList;
}

View File

@@ -0,0 +1,22 @@
package com.vetti.hotake.domain.dto.roleDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 证书信息
*
* @author wangxiangshun
* @date 2025-11-30
*/
@Data
@Accessors(chain = true)
public class CertificationsLicensesDto {
@ApiModelProperty("证书Key/自定义证书名")
private String val;
@ApiModelProperty("standard:标准证书,customize:自定义")
private String type;
}

View File

@@ -0,0 +1,22 @@
package com.vetti.hotake.domain.dto.roleDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 教育要求信息
*
* @author wangxiangshun
* @date 2025-11-30
*/
@Data
@Accessors(chain = true)
public class EducationRequirementsDto {
@ApiModelProperty("学历专业名称")
private String academicMajor;
@ApiModelProperty("学位")
private String degree;
}

View File

@@ -0,0 +1,19 @@
package com.vetti.hotake.domain.dto.roleDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 岗位加分技能信息
*
* @author wangxiangshun
* @date 2025-11-30
*/
@Data
@Accessors(chain = true)
public class NiceToHaveSkillsDto {
@ApiModelProperty("加分技能Key")
private String keyValue;
}

View File

@@ -0,0 +1,19 @@
package com.vetti.hotake.domain.dto.roleDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 岗位发布渠道信息
*
* @author wangxiangshun
* @date 2025-11-30
*/
@Data
@Accessors(chain = true)
public class PublishingChannelsDto {
@ApiModelProperty("发布渠道Key")
private String keyValue;
}

View File

@@ -0,0 +1,20 @@
package com.vetti.hotake.domain.dto.roleDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 岗位所需技能信息
*
* @author wangxiangshun
* @date 2025-11-30
*/
@Data
@Accessors(chain = true)
public class RequiredSkillsDto {
@ApiModelProperty("所需技能Key")
private String keyValue;
}

View File

@@ -0,0 +1,19 @@
package com.vetti.hotake.domain.dto.roleDto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
/**
* 岗位福利信息
*
* @author wangxiangshun
* @date 2025-11-30
*/
@Data
@Accessors(chain = true)
public class RoleBenefitsDto {
@ApiModelProperty("福利Key")
private String keyValue;
}

View File

@@ -0,0 +1,69 @@
package com.vetti.hotake.mapper;
import java.util.List;
import com.vetti.hotake.domain.HotakeInitScreQuestionsReplyRecordInfo;
/**
* 初步筛选问题回答记录信息Mapper接口
*
* @author wangxiangshun
* @date 2025-12-14
*/
public interface HotakeInitScreQuestionsReplyRecordInfoMapper
{
/**
* 查询初步筛选问题回答记录信息
*
* @param id 初步筛选问题回答记录信息主键
* @return 初步筛选问题回答记录信息
*/
public HotakeInitScreQuestionsReplyRecordInfo selectHotakeInitScreQuestionsReplyRecordInfoById(Long id);
/**
* 查询初步筛选问题回答记录信息列表
*
* @param hotakeInitScreQuestionsReplyRecordInfo 初步筛选问题回答记录信息
* @return 初步筛选问题回答记录信息集合
*/
public List<HotakeInitScreQuestionsReplyRecordInfo> selectHotakeInitScreQuestionsReplyRecordInfoList(HotakeInitScreQuestionsReplyRecordInfo hotakeInitScreQuestionsReplyRecordInfo);
/**
* 新增初步筛选问题回答记录信息
*
* @param hotakeInitScreQuestionsReplyRecordInfo 初步筛选问题回答记录信息
* @return 结果
*/
public int insertHotakeInitScreQuestionsReplyRecordInfo(HotakeInitScreQuestionsReplyRecordInfo hotakeInitScreQuestionsReplyRecordInfo);
/**
* 修改初步筛选问题回答记录信息
*
* @param hotakeInitScreQuestionsReplyRecordInfo 初步筛选问题回答记录信息
* @return 结果
*/
public int updateHotakeInitScreQuestionsReplyRecordInfo(HotakeInitScreQuestionsReplyRecordInfo hotakeInitScreQuestionsReplyRecordInfo);
/**
* 删除初步筛选问题回答记录信息
*
* @param id 初步筛选问题回答记录信息主键
* @return 结果
*/
public int deleteHotakeInitScreQuestionsReplyRecordInfoById(Long id);
/**
* 批量删除初步筛选问题回答记录信息
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
public int deleteHotakeInitScreQuestionsReplyRecordInfoByIds(Long[] ids);
/**
* 批量新增初步筛选问题回答记录信息
*
* @param hotakeInitScreQuestionsReplyRecordInfoList 初步筛选问题回答记录信息列表
* @return 结果
*/
public int batchInsertHotakeInitScreQuestionsReplyRecordInfo(List<HotakeInitScreQuestionsReplyRecordInfo> hotakeInitScreQuestionsReplyRecordInfoList);
}

View File

@@ -0,0 +1,69 @@
package com.vetti.hotake.mapper;
import java.util.List;
import com.vetti.hotake.domain.HotakeInitialScreeningQuestionsInfo;
/**
* 初步筛选问题信息Mapper接口
*
* @author wangxiangshun
* @date 2025-12-14
*/
public interface HotakeInitialScreeningQuestionsInfoMapper
{
/**
* 查询初步筛选问题信息
*
* @param id 初步筛选问题信息主键
* @return 初步筛选问题信息
*/
public HotakeInitialScreeningQuestionsInfo selectHotakeInitialScreeningQuestionsInfoById(Long id);
/**
* 查询初步筛选问题信息列表
*
* @param hotakeInitialScreeningQuestionsInfo 初步筛选问题信息
* @return 初步筛选问题信息集合
*/
public List<HotakeInitialScreeningQuestionsInfo> selectHotakeInitialScreeningQuestionsInfoList(HotakeInitialScreeningQuestionsInfo hotakeInitialScreeningQuestionsInfo);
/**
* 新增初步筛选问题信息
*
* @param hotakeInitialScreeningQuestionsInfo 初步筛选问题信息
* @return 结果
*/
public int insertHotakeInitialScreeningQuestionsInfo(HotakeInitialScreeningQuestionsInfo hotakeInitialScreeningQuestionsInfo);
/**
* 修改初步筛选问题信息
*
* @param hotakeInitialScreeningQuestionsInfo 初步筛选问题信息
* @return 结果
*/
public int updateHotakeInitialScreeningQuestionsInfo(HotakeInitialScreeningQuestionsInfo hotakeInitialScreeningQuestionsInfo);
/**
* 删除初步筛选问题信息
*
* @param id 初步筛选问题信息主键
* @return 结果
*/
public int deleteHotakeInitialScreeningQuestionsInfoById(Long id);
/**
* 批量删除初步筛选问题信息
*
* @param ids 需要删除的数据主键集合
* @return 结果
*/
public int deleteHotakeInitialScreeningQuestionsInfoByIds(Long[] ids);
/**
* 批量新增初步筛选问题信息
*
* @param hotakeInitialScreeningQuestionsInfoList 初步筛选问题信息列表
* @return 结果
*/
public int batchInsertHotakeInitialScreeningQuestionsInfo(List<HotakeInitialScreeningQuestionsInfo> hotakeInitialScreeningQuestionsInfoList);
}

View File

@@ -66,4 +66,14 @@ public interface HotakeRolesInfoMapper
*/
public int batchInsertHotakeRolesInfo(List<HotakeRolesInfo> hotakeRolesInfoList);
/**
* 修改岗位信息
*
* @param hotakeRolesInfo 岗位信息
* @return 结果
*/
public int updateAllHotakeRolesInfo(HotakeRolesInfo hotakeRolesInfo);
}

View File

@@ -0,0 +1,70 @@
package com.vetti.hotake.service;
import java.util.List;
import com.vetti.hotake.domain.HotakeInitScreQuestionsReplyRecordInfo;
/**
* 初步筛选问题回答记录信息Service接口
*
* @author wangxiangshun
* @date 2025-12-14
*/
public interface IHotakeInitScreQuestionsReplyRecordInfoService
{
/**
* 查询初步筛选问题回答记录信息
*
* @param id 初步筛选问题回答记录信息主键
* @return 初步筛选问题回答记录信息
*/
public HotakeInitScreQuestionsReplyRecordInfo selectHotakeInitScreQuestionsReplyRecordInfoById(Long id);
/**
* 查询初步筛选问题回答记录信息列表
*
* @param hotakeInitScreQuestionsReplyRecordInfo 初步筛选问题回答记录信息
* @return 初步筛选问题回答记录信息集合
*/
public List<HotakeInitScreQuestionsReplyRecordInfo> selectHotakeInitScreQuestionsReplyRecordInfoList(HotakeInitScreQuestionsReplyRecordInfo hotakeInitScreQuestionsReplyRecordInfo);
/**
* 新增初步筛选问题回答记录信息
*
* @param hotakeInitScreQuestionsReplyRecordInfo 初步筛选问题回答记录信息
* @return 结果
*/
public int insertHotakeInitScreQuestionsReplyRecordInfo(HotakeInitScreQuestionsReplyRecordInfo hotakeInitScreQuestionsReplyRecordInfo);
/**
* 修改初步筛选问题回答记录信息
*
* @param hotakeInitScreQuestionsReplyRecordInfo 初步筛选问题回答记录信息
* @return 结果
*/
public int updateHotakeInitScreQuestionsReplyRecordInfo(HotakeInitScreQuestionsReplyRecordInfo hotakeInitScreQuestionsReplyRecordInfo);
/**
* 批量删除初步筛选问题回答记录信息
*
* @param ids 需要删除的初步筛选问题回答记录信息主键集合
* @return 结果
*/
public int deleteHotakeInitScreQuestionsReplyRecordInfoByIds(Long[] ids);
/**
* 删除初步筛选问题回答记录信息信息
*
* @param id 初步筛选问题回答记录信息主键
* @return 结果
*/
public int deleteHotakeInitScreQuestionsReplyRecordInfoById(Long id);
/**
* 批量新增初步筛选问题回答记录信息
*
* @param hotakeInitScreQuestionsReplyRecordInfoList 初步筛选问题回答记录信息列表
* @return 结果
*/
public int batchInsertHotakeInitScreQuestionsReplyRecordInfo(List<HotakeInitScreQuestionsReplyRecordInfo> hotakeInitScreQuestionsReplyRecordInfoList);
}

View File

@@ -0,0 +1,70 @@
package com.vetti.hotake.service;
import java.util.List;
import com.vetti.hotake.domain.HotakeInitialScreeningQuestionsInfo;
/**
* 初步筛选问题信息Service接口
*
* @author wangxiangshun
* @date 2025-12-14
*/
public interface IHotakeInitialScreeningQuestionsInfoService
{
/**
* 查询初步筛选问题信息
*
* @param id 初步筛选问题信息主键
* @return 初步筛选问题信息
*/
public HotakeInitialScreeningQuestionsInfo selectHotakeInitialScreeningQuestionsInfoById(Long id);
/**
* 查询初步筛选问题信息列表
*
* @param hotakeInitialScreeningQuestionsInfo 初步筛选问题信息
* @return 初步筛选问题信息集合
*/
public List<HotakeInitialScreeningQuestionsInfo> selectHotakeInitialScreeningQuestionsInfoList(HotakeInitialScreeningQuestionsInfo hotakeInitialScreeningQuestionsInfo);
/**
* 新增初步筛选问题信息
*
* @param hotakeInitialScreeningQuestionsInfo 初步筛选问题信息
* @return 结果
*/
public int insertHotakeInitialScreeningQuestionsInfo(HotakeInitialScreeningQuestionsInfo hotakeInitialScreeningQuestionsInfo);
/**
* 修改初步筛选问题信息
*
* @param hotakeInitialScreeningQuestionsInfo 初步筛选问题信息
* @return 结果
*/
public int updateHotakeInitialScreeningQuestionsInfo(HotakeInitialScreeningQuestionsInfo hotakeInitialScreeningQuestionsInfo);
/**
* 批量删除初步筛选问题信息
*
* @param ids 需要删除的初步筛选问题信息主键集合
* @return 结果
*/
public int deleteHotakeInitialScreeningQuestionsInfoByIds(Long[] ids);
/**
* 删除初步筛选问题信息信息
*
* @param id 初步筛选问题信息主键
* @return 结果
*/
public int deleteHotakeInitialScreeningQuestionsInfoById(Long id);
/**
* 批量新增初步筛选问题信息
*
* @param hotakeInitialScreeningQuestionsInfoList 初步筛选问题信息列表
* @return 结果
*/
public int batchInsertHotakeInitialScreeningQuestionsInfo(List<HotakeInitialScreeningQuestionsInfo> hotakeInitialScreeningQuestionsInfoList);
}

View File

@@ -2,6 +2,7 @@ package com.vetti.hotake.service;
import java.util.List;
import com.vetti.hotake.domain.HotakeRolesInfo;
import com.vetti.hotake.domain.dto.HotakeRolesInfoDto;
/**
* 岗位信息Service接口
@@ -19,6 +20,15 @@ public interface IHotakeRolesInfoService
*/
public HotakeRolesInfo selectHotakeRolesInfoById(Long id);
/**
* 查询岗位信息
*
* @param id 岗位信息主键
* @return 岗位信息
*/
public HotakeRolesInfoDto selectHotakeRolesInfoDtoById(Long id);
/**
* 查询岗位信息列表
*
@@ -67,4 +77,13 @@ public interface IHotakeRolesInfoService
*/
public int batchInsertHotakeRolesInfo(List<HotakeRolesInfo> hotakeRolesInfoList);
/**
* 保存岗位信息
*
* @param hotakeRolesInfo 岗位信息
* @return 结果
*/
public HotakeRolesInfoDto saveHotakeRolesInfo(HotakeRolesInfoDto hotakeRolesInfo);
}

View File

@@ -0,0 +1,118 @@
package com.vetti.hotake.service.impl;
import java.util.List;
import com.vetti.common.core.service.BaseServiceImpl;
import com.vetti.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.vetti.hotake.mapper.HotakeInitScreQuestionsReplyRecordInfoMapper;
import com.vetti.hotake.domain.HotakeInitScreQuestionsReplyRecordInfo;
import com.vetti.hotake.service.IHotakeInitScreQuestionsReplyRecordInfoService;
/**
* 初步筛选问题回答记录信息Service业务层处理
*
* @author wangxiangshun
* @date 2025-12-14
*/
@SuppressWarnings("all")
@Service
public class HotakeInitScreQuestionsReplyRecordInfoServiceImpl extends BaseServiceImpl implements IHotakeInitScreQuestionsReplyRecordInfoService
{
@Autowired
private HotakeInitScreQuestionsReplyRecordInfoMapper hotakeInitScreQuestionsReplyRecordInfoMapper;
/**
* 查询初步筛选问题回答记录信息
*
* @param id 初步筛选问题回答记录信息主键
* @return 初步筛选问题回答记录信息
*/
@Transactional(readOnly = true)
@Override
public HotakeInitScreQuestionsReplyRecordInfo selectHotakeInitScreQuestionsReplyRecordInfoById(Long id)
{
return hotakeInitScreQuestionsReplyRecordInfoMapper.selectHotakeInitScreQuestionsReplyRecordInfoById(id);
}
/**
* 查询初步筛选问题回答记录信息列表
*
* @param hotakeInitScreQuestionsReplyRecordInfo 初步筛选问题回答记录信息
* @return 初步筛选问题回答记录信息
*/
@Transactional(readOnly = true)
@Override
public List<HotakeInitScreQuestionsReplyRecordInfo> selectHotakeInitScreQuestionsReplyRecordInfoList(HotakeInitScreQuestionsReplyRecordInfo hotakeInitScreQuestionsReplyRecordInfo)
{
return hotakeInitScreQuestionsReplyRecordInfoMapper.selectHotakeInitScreQuestionsReplyRecordInfoList(hotakeInitScreQuestionsReplyRecordInfo);
}
/**
* 新增初步筛选问题回答记录信息
*
* @param hotakeInitScreQuestionsReplyRecordInfo 初步筛选问题回答记录信息
* @return 结果
*/
@Transactional(rollbackFor=Exception.class)
@Override
public int insertHotakeInitScreQuestionsReplyRecordInfo(HotakeInitScreQuestionsReplyRecordInfo hotakeInitScreQuestionsReplyRecordInfo)
{
hotakeInitScreQuestionsReplyRecordInfo.setCreateTime(DateUtils.getNowDate());
return hotakeInitScreQuestionsReplyRecordInfoMapper.insertHotakeInitScreQuestionsReplyRecordInfo(hotakeInitScreQuestionsReplyRecordInfo);
}
/**
* 修改初步筛选问题回答记录信息
*
* @param hotakeInitScreQuestionsReplyRecordInfo 初步筛选问题回答记录信息
* @return 结果
*/
@Transactional(rollbackFor=Exception.class)
@Override
public int updateHotakeInitScreQuestionsReplyRecordInfo(HotakeInitScreQuestionsReplyRecordInfo hotakeInitScreQuestionsReplyRecordInfo)
{
hotakeInitScreQuestionsReplyRecordInfo.setUpdateTime(DateUtils.getNowDate());
return hotakeInitScreQuestionsReplyRecordInfoMapper.updateHotakeInitScreQuestionsReplyRecordInfo(hotakeInitScreQuestionsReplyRecordInfo);
}
/**
* 批量删除初步筛选问题回答记录信息
*
* @param ids 需要删除的初步筛选问题回答记录信息主键
* @return 结果
*/
@Transactional(rollbackFor=Exception.class)
@Override
public int deleteHotakeInitScreQuestionsReplyRecordInfoByIds(Long[] ids)
{
return hotakeInitScreQuestionsReplyRecordInfoMapper.deleteHotakeInitScreQuestionsReplyRecordInfoByIds(ids);
}
/**
* 删除初步筛选问题回答记录信息信息
*
* @param id 初步筛选问题回答记录信息主键
* @return 结果
*/
@Transactional(rollbackFor=Exception.class)
@Override
public int deleteHotakeInitScreQuestionsReplyRecordInfoById(Long id)
{
return hotakeInitScreQuestionsReplyRecordInfoMapper.deleteHotakeInitScreQuestionsReplyRecordInfoById(id);
}
/**
* 批量新增初步筛选问题回答记录信息
*
* @param hotakeInitScreQuestionsReplyRecordInfoList 初步筛选问题回答记录信息列表
* @return 结果
*/
@Transactional(rollbackFor=Exception.class)
@Override
public int batchInsertHotakeInitScreQuestionsReplyRecordInfo(List<HotakeInitScreQuestionsReplyRecordInfo> hotakeInitScreQuestionsReplyRecordInfoList){
return hotakeInitScreQuestionsReplyRecordInfoMapper.batchInsertHotakeInitScreQuestionsReplyRecordInfo(hotakeInitScreQuestionsReplyRecordInfoList);
}
}

View File

@@ -0,0 +1,137 @@
package com.vetti.hotake.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.vetti.common.core.service.BaseServiceImpl;
import com.vetti.common.enums.FillTypeEnum;
import com.vetti.hotake.domain.HotakeInitialScreeningQuestionsInfo;
import com.vetti.hotake.domain.dto.AnswerOptionsDto;
import com.vetti.hotake.mapper.HotakeInitialScreeningQuestionsInfoMapper;
import com.vetti.hotake.service.IHotakeInitialScreeningQuestionsInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
/**
* 初步筛选问题信息Service业务层处理
*
* @author wangxiangshun
* @date 2025-12-14
*/
@SuppressWarnings("all")
@Service
public class HotakeInitialScreeningQuestionsInfoServiceImpl extends BaseServiceImpl implements IHotakeInitialScreeningQuestionsInfoService
{
@Autowired
private HotakeInitialScreeningQuestionsInfoMapper hotakeInitialScreeningQuestionsInfoMapper;
/**
* 查询初步筛选问题信息
*
* @param id 初步筛选问题信息主键
* @return 初步筛选问题信息
*/
@Transactional(readOnly = true)
@Override
public HotakeInitialScreeningQuestionsInfo selectHotakeInitialScreeningQuestionsInfoById(Long id)
{
HotakeInitialScreeningQuestionsInfo questionsInfo = hotakeInitialScreeningQuestionsInfoMapper.selectHotakeInitialScreeningQuestionsInfoById(id);
if(questionsInfo != null && StrUtil.isNotEmpty(questionsInfo.getAnswerOptions())){
List<AnswerOptionsDto> answerOptionsDtos = JSONUtil.toList(questionsInfo.getAnswerOptions(), AnswerOptionsDto.class);
questionsInfo.setAnswerOptionsList(answerOptionsDtos);
}
return questionsInfo;
}
/**
* 查询初步筛选问题信息列表
*
* @param hotakeInitialScreeningQuestionsInfo 初步筛选问题信息
* @return 初步筛选问题信息
*/
@Transactional(readOnly = true)
@Override
public List<HotakeInitialScreeningQuestionsInfo> selectHotakeInitialScreeningQuestionsInfoList(HotakeInitialScreeningQuestionsInfo hotakeInitialScreeningQuestionsInfo)
{
return hotakeInitialScreeningQuestionsInfoMapper.selectHotakeInitialScreeningQuestionsInfoList(hotakeInitialScreeningQuestionsInfo);
}
/**
* 新增初步筛选问题信息
*
* @param hotakeInitialScreeningQuestionsInfo 初步筛选问题信息
* @return 结果
*/
@Transactional(rollbackFor=Exception.class)
@Override
public int insertHotakeInitialScreeningQuestionsInfo(HotakeInitialScreeningQuestionsInfo hotakeInitialScreeningQuestionsInfo)
{
fill(FillTypeEnum.INSERT.getCode(), hotakeInitialScreeningQuestionsInfo);
if(CollectionUtil.isNotEmpty(hotakeInitialScreeningQuestionsInfo.getAnswerOptionsList())){
hotakeInitialScreeningQuestionsInfo.setAnswerOptions(JSONUtil.toJsonStr(hotakeInitialScreeningQuestionsInfo.getAnswerOptionsList()));
}else {
hotakeInitialScreeningQuestionsInfo.setAnswerOptions("");
}
return hotakeInitialScreeningQuestionsInfoMapper.insertHotakeInitialScreeningQuestionsInfo(hotakeInitialScreeningQuestionsInfo);
}
/**
* 修改初步筛选问题信息
*
* @param hotakeInitialScreeningQuestionsInfo 初步筛选问题信息
* @return 结果
*/
@Transactional(rollbackFor=Exception.class)
@Override
public int updateHotakeInitialScreeningQuestionsInfo(HotakeInitialScreeningQuestionsInfo hotakeInitialScreeningQuestionsInfo)
{
fill(FillTypeEnum.UPDATE.getCode(), hotakeInitialScreeningQuestionsInfo);
if(CollectionUtil.isNotEmpty(hotakeInitialScreeningQuestionsInfo.getAnswerOptionsList())){
hotakeInitialScreeningQuestionsInfo.setAnswerOptions(JSONUtil.toJsonStr(hotakeInitialScreeningQuestionsInfo.getAnswerOptionsList()));
}else {
hotakeInitialScreeningQuestionsInfo.setAnswerOptions("");
}
return hotakeInitialScreeningQuestionsInfoMapper.updateHotakeInitialScreeningQuestionsInfo(hotakeInitialScreeningQuestionsInfo);
}
/**
* 批量删除初步筛选问题信息
*
* @param ids 需要删除的初步筛选问题信息主键
* @return 结果
*/
@Transactional(rollbackFor=Exception.class)
@Override
public int deleteHotakeInitialScreeningQuestionsInfoByIds(Long[] ids)
{
return hotakeInitialScreeningQuestionsInfoMapper.deleteHotakeInitialScreeningQuestionsInfoByIds(ids);
}
/**
* 删除初步筛选问题信息信息
*
* @param id 初步筛选问题信息主键
* @return 结果
*/
@Transactional(rollbackFor=Exception.class)
@Override
public int deleteHotakeInitialScreeningQuestionsInfoById(Long id)
{
return hotakeInitialScreeningQuestionsInfoMapper.deleteHotakeInitialScreeningQuestionsInfoById(id);
}
/**
* 批量新增初步筛选问题信息
*
* @param hotakeInitialScreeningQuestionsInfoList 初步筛选问题信息列表
* @return 结果
*/
@Transactional(rollbackFor=Exception.class)
@Override
public int batchInsertHotakeInitialScreeningQuestionsInfo(List<HotakeInitialScreeningQuestionsInfo> hotakeInitialScreeningQuestionsInfoList){
return hotakeInitialScreeningQuestionsInfoMapper.batchInsertHotakeInitialScreeningQuestionsInfo(hotakeInitialScreeningQuestionsInfoList);
}
}

View File

@@ -1,16 +1,30 @@
package com.vetti.hotake.service.impl;
import java.util.List;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.vetti.common.core.service.BaseServiceImpl;
import com.vetti.common.enums.FillTypeEnum;
import com.vetti.common.enums.RoleOperStepsEnum;
import com.vetti.common.enums.RoleStatusEnum;
import com.vetti.common.exception.ServiceException;
import com.vetti.common.utils.DateUtils;
import com.vetti.common.utils.MessageUtils;
import com.vetti.common.utils.SecurityUtils;
import com.vetti.common.utils.uuid.IdUtils;
import com.vetti.hotake.domain.HotakeInitialScreeningQuestionsInfo;
import com.vetti.hotake.domain.HotakeRolesInfo;
import com.vetti.hotake.domain.dto.HotakeRolesInfoDto;
import com.vetti.hotake.domain.dto.roleDto.*;
import com.vetti.hotake.mapper.HotakeRolesInfoMapper;
import com.vetti.hotake.service.IHotakeInitialScreeningQuestionsInfoService;
import com.vetti.hotake.service.IHotakeRolesInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.vetti.hotake.mapper.HotakeRolesInfoMapper;
import com.vetti.hotake.domain.HotakeRolesInfo;
import com.vetti.hotake.service.IHotakeRolesInfoService;
import java.util.List;
/**
* 岗位信息Service业务层处理
@@ -25,6 +39,9 @@ public class HotakeRolesInfoServiceImpl extends BaseServiceImpl implements IHota
@Autowired
private HotakeRolesInfoMapper hotakeRolesInfoMapper;
@Autowired
private IHotakeInitialScreeningQuestionsInfoService hotakeInitialScreeningQuestionsInfoService;
/**
* 查询岗位信息
*
@@ -38,6 +55,62 @@ public class HotakeRolesInfoServiceImpl extends BaseServiceImpl implements IHota
return hotakeRolesInfoMapper.selectHotakeRolesInfoById(id);
}
/**
* 查询岗位详细信息
* @param id 岗位信息主键
* @return
*/
@Override
public HotakeRolesInfoDto selectHotakeRolesInfoDtoById(Long id) {
HotakeRolesInfoDto dto = new HotakeRolesInfoDto();
HotakeRolesInfo hotakeRolesInfo = hotakeRolesInfoMapper.selectHotakeRolesInfoById(id);
BeanUtil.copyProperties(hotakeRolesInfo, dto);
if(hotakeRolesInfo != null) {
String requiredSkillsJson = hotakeRolesInfo.getRequiredSkillsJson();
if(StrUtil.isNotEmpty(requiredSkillsJson)){
List<RequiredSkillsDto> requiredSkillsList = JSONUtil.toList(requiredSkillsJson, RequiredSkillsDto.class);
dto.setRequiredSkillsList(requiredSkillsList);
}
String niceToHaveSkillsJson = hotakeRolesInfo.getNiceToHaveSkillsJson();
if(StrUtil.isNotEmpty(niceToHaveSkillsJson)){
List<NiceToHaveSkillsDto> niceToHaveSkillsList = JSONUtil.toList(niceToHaveSkillsJson, NiceToHaveSkillsDto.class);
dto.setNiceToHaveSkillsList(niceToHaveSkillsList);
}
String educationRequirementsJson = hotakeRolesInfo.getEducationRequirementsJson();
if(StrUtil.isNotEmpty(educationRequirementsJson)){
EducationRequirementsDto educationRequirements = JSONUtil.toBean(educationRequirementsJson, EducationRequirementsDto.class);
dto.setEducationRequirements(educationRequirements);
}
String certificationsLicensesJson = hotakeRolesInfo.getCertificationsLicensesJson();
if(StrUtil.isNotEmpty(certificationsLicensesJson)){
List<CertificationsLicensesDto> certificationsLicensesList = JSONUtil.toList(certificationsLicensesJson, CertificationsLicensesDto.class);
dto.setCertificationsLicensesList(certificationsLicensesList);
}
String roleBenefitsJson = hotakeRolesInfo.getRoleBenefitsJson();
if(StrUtil.isNotEmpty(roleBenefitsJson)){
List<RoleBenefitsDto> roleBenefitsList = JSONUtil.toList(roleBenefitsJson, RoleBenefitsDto.class);
dto.setRoleBenefitsList(roleBenefitsList);
}
String publishingChannelsJson = hotakeRolesInfo.getPublishingChannelsJson();
if(StrUtil.isNotEmpty(publishingChannelsJson)){
List<PublishingChannelsDto> publishingChannelsList = JSONUtil.toList(publishingChannelsJson, PublishingChannelsDto.class);
dto.setPublishingChannelsList(publishingChannelsList);
}
HotakeInitialScreeningQuestionsInfo queryQuestion = new HotakeInitialScreeningQuestionsInfo();
queryQuestion.setRoleId(id);
List<HotakeInitialScreeningQuestionsInfo> questionsInfoList = hotakeInitialScreeningQuestionsInfoService.selectHotakeInitialScreeningQuestionsInfoList(queryQuestion);
dto.setInitialScreeningQuestionsInfoList(questionsInfoList);
}
return dto;
}
/**
* 查询岗位信息列表
*
@@ -48,7 +121,16 @@ public class HotakeRolesInfoServiceImpl extends BaseServiceImpl implements IHota
@Override
public List<HotakeRolesInfo> selectHotakeRolesInfoList(HotakeRolesInfo hotakeRolesInfo)
{
return hotakeRolesInfoMapper.selectHotakeRolesInfoList(hotakeRolesInfo);
hotakeRolesInfo.setRecruiterId(SecurityUtils.getUserId());
List<HotakeRolesInfo> rolesInfoList = hotakeRolesInfoMapper.selectHotakeRolesInfoList(hotakeRolesInfo);
//计算一个发布日期
if(CollectionUtil.isNotEmpty(rolesInfoList)){
for (HotakeRolesInfo rolesInfo : rolesInfoList) {
String posted = DateUtils.getTimeAgo(rolesInfo.getCreateTime());
rolesInfo.setPosted(posted);
}
}
return rolesInfoList;
}
/**
@@ -115,4 +197,113 @@ public class HotakeRolesInfoServiceImpl extends BaseServiceImpl implements IHota
public int batchInsertHotakeRolesInfo(List<HotakeRolesInfo> hotakeRolesInfoList){
return hotakeRolesInfoMapper.batchInsertHotakeRolesInfo(hotakeRolesInfoList);
}
/**
* 保存岗位信息
* @param hotakeRolesInfo 岗位信息
* @return
*/
@Override
public HotakeRolesInfoDto saveHotakeRolesInfo(HotakeRolesInfoDto hotakeRolesInfo) {
//先看岗位信息ID是否存在
HotakeRolesInfo rolesInfo = null;
Long rolesInfoId = 0L;
if(hotakeRolesInfo.getId() == null){
//先保存一个空数据
HotakeRolesInfo info = new HotakeRolesInfo();
fill(FillTypeEnum.INSERT.getCode(), info);
info.setUuid(IdUtils.simpleUUID());
insertHotakeRolesInfo(info);
rolesInfoId = info.getId();
}else{
rolesInfoId = hotakeRolesInfo.getId();
}
rolesInfo = selectHotakeRolesInfoById(rolesInfoId);
if(rolesInfo == null){
throw new ServiceException(MessageUtils.messageCustomize("HotakeRolesInfoServiceImpl10001"));
}
//按照步骤来进行保存对应的数据
if(RoleOperStepsEnum.STEPS_1.getCode().equals(hotakeRolesInfo.getOperStep())){
rolesInfo.setRoleName(hotakeRolesInfo.getRoleName());
rolesInfo.setCompanyName(hotakeRolesInfo.getCompanyName());
rolesInfo.setRoleType(hotakeRolesInfo.getRoleType());
rolesInfo.setJobLevel(hotakeRolesInfo.getJobLevel());
rolesInfo.setJobExperience(hotakeRolesInfo.getJobExperience());
rolesInfo.setLocationType(hotakeRolesInfo.getLocationType());
rolesInfo.setJobType(hotakeRolesInfo.getJobType());
rolesInfo.setSalaryStart(hotakeRolesInfo.getSalaryStart());
rolesInfo.setSalaryEnd(hotakeRolesInfo.getSalaryEnd());
}
if(RoleOperStepsEnum.STEPS_2.getCode().equals(hotakeRolesInfo.getOperStep())){
if(CollectionUtil.isNotEmpty(hotakeRolesInfo.getRequiredSkillsList())){
String requiredSkillsJson = JSONUtil.toJsonStr(hotakeRolesInfo.getRequiredSkillsList());
rolesInfo.setRequiredSkillsJson(requiredSkillsJson);
}else{
rolesInfo.setRequiredSkillsJson("");
}
if(CollectionUtil.isNotEmpty(hotakeRolesInfo.getNiceToHaveSkillsList())){
String niceToHaveSkillsJson = JSONUtil.toJsonStr(hotakeRolesInfo.getNiceToHaveSkillsList());
rolesInfo.setNiceToHaveSkillsJson(niceToHaveSkillsJson);
}else{
rolesInfo.setNiceToHaveSkillsJson("");
}
if(hotakeRolesInfo.getEducationRequirements() != null){
rolesInfo.setEducationRequirementsJson(JSONUtil.toJsonStr(hotakeRolesInfo.getEducationRequirements()));
}else {
rolesInfo.setEducationRequirementsJson("");
}
if (CollectionUtil.isNotEmpty(hotakeRolesInfo.getCertificationsLicensesList())){
String certificationsLicensesJson = JSONUtil.toJsonStr(hotakeRolesInfo.getCertificationsLicensesList());
rolesInfo.setCertificationsLicensesJson(certificationsLicensesJson);
}else{
rolesInfo.setCertificationsLicensesJson("");
}
}
if(RoleOperStepsEnum.STEPS_3.getCode().equals(hotakeRolesInfo.getOperStep())){
rolesInfo.setDescriptionTone(hotakeRolesInfo.getDescriptionTone());
rolesInfo.setAboutRole(hotakeRolesInfo.getAboutRole());
rolesInfo.setResponsibilities(hotakeRolesInfo.getResponsibilities());
if (CollectionUtil.isNotEmpty(hotakeRolesInfo.getRoleBenefitsList())){
String roleBenefitsJson = JSONUtil.toJsonStr(hotakeRolesInfo.getRoleBenefitsList());
rolesInfo.setRoleBenefitsJson(roleBenefitsJson);
}else{
rolesInfo.setRoleBenefitsJson("");
}
}
if(RoleOperStepsEnum.STEPS_4.getCode().equals(hotakeRolesInfo.getOperStep())){
}
if(RoleOperStepsEnum.STEPS_5.getCode().equals(hotakeRolesInfo.getOperStep())){
}
if(RoleOperStepsEnum.STEPS_6.getCode().equals(hotakeRolesInfo.getOperStep())){
if (CollectionUtil.isNotEmpty(hotakeRolesInfo.getPublishingChannelsList())){
String publishingChannelsJson = JSONUtil.toJsonStr(hotakeRolesInfo.getPublishingChannelsList());
rolesInfo.setPublishingChannelsJson(publishingChannelsJson);
}else{
rolesInfo.setPublishingChannelsJson("");
}
rolesInfo.setPublishingScheduleDate(hotakeRolesInfo.getPublishingScheduleDate());
rolesInfo.setPublishingScheduleTime(hotakeRolesInfo.getPublishingScheduleTime());
rolesInfo.setApplicationDeadline(hotakeRolesInfo.getApplicationDeadline());
}
//默认是编辑中状态
if(StrUtil.isEmpty(hotakeRolesInfo.getStatus())){
rolesInfo.setStatus(RoleStatusEnum.EDITING.getCode());
}
rolesInfo.setDataType(hotakeRolesInfo.getDataType());
rolesInfo.setLanguages(hotakeRolesInfo.getLanguages());
rolesInfo.setOperStep(hotakeRolesInfo.getOperStep());
rolesInfo.setRecruiterId(SecurityUtils.getUserId());
fill(FillTypeEnum.UPDATE.getCode(), rolesInfo);
hotakeRolesInfoMapper.updateAllHotakeRolesInfo(rolesInfo);
//查询返回所有的结果数据
HotakeRolesInfoDto rolesInfoDto = selectHotakeRolesInfoDtoById(rolesInfo.getId());
return rolesInfoDto;
}
}