岗位业务逻辑完善

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;
}
}

View File

@@ -0,0 +1,102 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.vetti.hotake.mapper.HotakeInitScreQuestionsReplyRecordInfoMapper">
<resultMap type="HotakeInitScreQuestionsReplyRecordInfo" id="HotakeInitScreQuestionsReplyRecordInfoResult">
<result property="id" column="id" />
<result property="roleId" column="role_id" />
<result property="candidateId" column="candidate_id" />
<result property="questionId" column="question_id" />
<result property="answerConnect" column="answer_connect" />
<result property="delFlag" column="del_flag" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="remark" column="remark" />
</resultMap>
<sql id="selectHotakeInitScreQuestionsReplyRecordInfoVo">
select id, role_id, candidate_id, question_id, answer_connect, del_flag, create_by, create_time, update_by, update_time, remark from hotake_init_scre_questions_reply_record_info
</sql>
<select id="selectHotakeInitScreQuestionsReplyRecordInfoList" parameterType="HotakeInitScreQuestionsReplyRecordInfo" resultMap="HotakeInitScreQuestionsReplyRecordInfoResult">
<include refid="selectHotakeInitScreQuestionsReplyRecordInfoVo"/>
<where>
<if test="roleId != null "> and role_id = #{roleId}</if>
<if test="candidateId != null "> and candidate_id = #{candidateId}</if>
<if test="questionId != null "> and question_id = #{questionId}</if>
<if test="answerConnect != null and answerConnect != ''"> and answer_connect = #{answerConnect}</if>
</where>
</select>
<select id="selectHotakeInitScreQuestionsReplyRecordInfoById" parameterType="Long" resultMap="HotakeInitScreQuestionsReplyRecordInfoResult">
<include refid="selectHotakeInitScreQuestionsReplyRecordInfoVo"/>
where id = #{id}
</select>
<insert id="insertHotakeInitScreQuestionsReplyRecordInfo" parameterType="HotakeInitScreQuestionsReplyRecordInfo" useGeneratedKeys="true" keyProperty="id">
insert into hotake_init_scre_questions_reply_record_info
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="roleId != null">role_id,</if>
<if test="candidateId != null">candidate_id,</if>
<if test="questionId != null">question_id,</if>
<if test="answerConnect != null">answer_connect,</if>
<if test="delFlag != null">del_flag,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
<if test="remark != null">remark,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="roleId != null">#{roleId},</if>
<if test="candidateId != null">#{candidateId},</if>
<if test="questionId != null">#{questionId},</if>
<if test="answerConnect != null">#{answerConnect},</if>
<if test="delFlag != null">#{delFlag},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="remark != null">#{remark},</if>
</trim>
</insert>
<update id="updateHotakeInitScreQuestionsReplyRecordInfo" parameterType="HotakeInitScreQuestionsReplyRecordInfo">
update hotake_init_scre_questions_reply_record_info
<trim prefix="SET" suffixOverrides=",">
<if test="roleId != null">role_id = #{roleId},</if>
<if test="candidateId != null">candidate_id = #{candidateId},</if>
<if test="questionId != null">question_id = #{questionId},</if>
<if test="answerConnect != null">answer_connect = #{answerConnect},</if>
<if test="delFlag != null">del_flag = #{delFlag},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="remark != null">remark = #{remark},</if>
</trim>
where id = #{id}
</update>
<delete id="deleteHotakeInitScreQuestionsReplyRecordInfoById" parameterType="Long">
delete from hotake_init_scre_questions_reply_record_info where id = #{id}
</delete>
<delete id="deleteHotakeInitScreQuestionsReplyRecordInfoByIds" parameterType="String">
delete from hotake_init_scre_questions_reply_record_info where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
<insert id="batchInsertHotakeInitScreQuestionsReplyRecordInfo">
insert into hotake_init_scre_questions_reply_record_info( id, role_id, candidate_id, question_id, answer_connect, del_flag, create_by, create_time, update_by, update_time, remark) values
<foreach item="item" index="index" collection="list" separator=",">
( #{item.id}, #{item.roleId}, #{item.candidateId}, #{item.questionId}, #{item.answerConnect}, #{item.delFlag}, #{item.createBy}, #{item.createTime}, #{item.updateBy}, #{item.updateTime}, #{item.remark})
</foreach>
</insert>
</mapper>

View File

@@ -0,0 +1,112 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.vetti.hotake.mapper.HotakeInitialScreeningQuestionsInfoMapper">
<resultMap type="HotakeInitialScreeningQuestionsInfo" id="HotakeInitialScreeningQuestionsInfoResult">
<result property="id" column="id" />
<result property="roleId" column="role_id" />
<result property="recruiterId" column="recruiter_id" />
<result property="questionTitle" column="question_title" />
<result property="questionType" column="question_type" />
<result property="answerOptions" column="answer_options" />
<result property="requiredField" column="required_field" />
<result property="delFlag" column="del_flag" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
<result property="updateBy" column="update_by" />
<result property="updateTime" column="update_time" />
<result property="remark" column="remark" />
</resultMap>
<sql id="selectHotakeInitialScreeningQuestionsInfoVo">
select id, role_id, recruiter_id, question_title, question_type, answer_options, required_field, del_flag, create_by, create_time, update_by, update_time, remark from hotake_initial_screening_questions_info
</sql>
<select id="selectHotakeInitialScreeningQuestionsInfoList" parameterType="HotakeInitialScreeningQuestionsInfo" resultMap="HotakeInitialScreeningQuestionsInfoResult">
<include refid="selectHotakeInitialScreeningQuestionsInfoVo"/>
<where>
<if test="roleId != null "> and role_id = #{roleId}</if>
<if test="recruiterId != null "> and recruiter_id = #{recruiterId}</if>
<if test="questionTitle != null and questionTitle != ''"> and question_title = #{questionTitle}</if>
<if test="questionType != null and questionType != ''"> and question_type = #{questionType}</if>
<if test="answerOptions != null and answerOptions != ''"> and answer_options = #{answerOptions}</if>
<if test="requiredField != null and requiredField != ''"> and required_field = #{requiredField}</if>
</where>
</select>
<select id="selectHotakeInitialScreeningQuestionsInfoById" parameterType="Long" resultMap="HotakeInitialScreeningQuestionsInfoResult">
<include refid="selectHotakeInitialScreeningQuestionsInfoVo"/>
where id = #{id}
</select>
<insert id="insertHotakeInitialScreeningQuestionsInfo" parameterType="HotakeInitialScreeningQuestionsInfo" useGeneratedKeys="true" keyProperty="id">
insert into hotake_initial_screening_questions_info
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="roleId != null">role_id,</if>
<if test="recruiterId != null">recruiter_id,</if>
<if test="questionTitle != null">question_title,</if>
<if test="questionType != null">question_type,</if>
<if test="answerOptions != null">answer_options,</if>
<if test="requiredField != null">required_field,</if>
<if test="delFlag != null">del_flag,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
<if test="updateBy != null">update_by,</if>
<if test="updateTime != null">update_time,</if>
<if test="remark != null">remark,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="roleId != null">#{roleId},</if>
<if test="recruiterId != null">#{recruiterId},</if>
<if test="questionTitle != null">#{questionTitle},</if>
<if test="questionType != null">#{questionType},</if>
<if test="answerOptions != null">#{answerOptions},</if>
<if test="requiredField != null">#{requiredField},</if>
<if test="delFlag != null">#{delFlag},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateBy != null">#{updateBy},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="remark != null">#{remark},</if>
</trim>
</insert>
<update id="updateHotakeInitialScreeningQuestionsInfo" parameterType="HotakeInitialScreeningQuestionsInfo">
update hotake_initial_screening_questions_info
<trim prefix="SET" suffixOverrides=",">
<if test="roleId != null">role_id = #{roleId},</if>
<if test="recruiterId != null">recruiter_id = #{recruiterId},</if>
<if test="questionTitle != null">question_title = #{questionTitle},</if>
<if test="questionType != null">question_type = #{questionType},</if>
<if test="answerOptions != null">answer_options = #{answerOptions},</if>
<if test="requiredField != null">required_field = #{requiredField},</if>
<if test="delFlag != null">del_flag = #{delFlag},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateBy != null">update_by = #{updateBy},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="remark != null">remark = #{remark},</if>
</trim>
where id = #{id}
</update>
<delete id="deleteHotakeInitialScreeningQuestionsInfoById" parameterType="Long">
delete from hotake_initial_screening_questions_info where id = #{id}
</delete>
<delete id="deleteHotakeInitialScreeningQuestionsInfoByIds" parameterType="String">
delete from hotake_initial_screening_questions_info where id in
<foreach item="id" collection="array" open="(" separator="," close=")">
#{id}
</foreach>
</delete>
<insert id="batchInsertHotakeInitialScreeningQuestionsInfo">
insert into hotake_initial_screening_questions_info( id, role_id, recruiter_id, question_title, question_type, answer_options, required_field, del_flag, create_by, create_time, update_by, update_time, remark) values
<foreach item="item" index="index" collection="list" separator=",">
( #{item.id}, #{item.roleId}, #{item.recruiterId}, #{item.questionTitle}, #{item.questionType}, #{item.answerOptions}, #{item.requiredField}, #{item.delFlag}, #{item.createBy}, #{item.createTime}, #{item.updateBy}, #{item.updateTime}, #{item.remark})
</foreach>
</insert>
</mapper>

View File

@@ -6,8 +6,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<resultMap type="HotakeRolesInfo" id="HotakeRolesInfoResult">
<result property="id" column="id" />
<result property="uuid" column="uuid" />
<result property="recruiterId" column="recruiter_id" />
<result property="roleName" column="role_name" />
<result property="companyName" column="company_name" />
<result property="roleType" column="role_type" />
<result property="locationType" column="location_type" />
<result property="locations" column="locations" />
<result property="applied" column="applied" />
@@ -24,14 +27,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<result property="descriptionTone" column="description_tone" />
<result property="aboutRole" column="about_role" />
<result property="responsibilities" column="responsibilities" />
<result property="roleBenefits" column="role_benefits" />
<result property="roleBenefitsJson" column="role_benefits_json" />
<result property="publishingChannelsJson" column="publishing_channels_json" />
<result property="publishingScheduleDate" column="publishing_schedule_date" />
<result property="publishingScheduleTime" column="publishing_schedule_time" />
<result property="applicationDeadline" column="application_deadline" />
<result property="posted" column="posted" />
<result property="languages" column="languages" />
<result property="dataType" column="data_type" />
<result property="operStep" column="oper_step" />
<result property="status" column="status" />
<result property="delFlag" column="del_flag" />
<result property="createBy" column="create_by" />
<result property="createTime" column="create_time" />
@@ -41,12 +46,17 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap>
<sql id="selectHotakeRolesInfoVo">
select id, recruiter_id, role_name, location_type, locations, applied, job_Level, job_type, job_experience, salary_start, salary_end, required_skills_json, nice_to_have_skills_json, education_requirements_json, accept_equivalent_work_flag, certifications_licenses_json, description_tone, about_role, responsibilities, role_benefits, publishing_channels_json, publishing_schedule_date, publishing_schedule_time, application_deadline, posted, data_type, oper_step, del_flag, create_by, create_time, update_by, update_time, remark from hotake_roles_info
select id, uuid,recruiter_id, role_name,company_name,role_type, location_type, locations, applied, job_Level, job_type, job_experience, salary_start, salary_end, required_skills_json,
nice_to_have_skills_json, education_requirements_json, accept_equivalent_work_flag,
certifications_licenses_json, description_tone, about_role, responsibilities, role_benefits_json,
publishing_channels_json, publishing_schedule_date, publishing_schedule_time, application_deadline, posted, languages,data_type,
oper_step, status,del_flag, create_by, create_time, update_by, update_time, remark from hotake_roles_info
</sql>
<select id="selectHotakeRolesInfoList" parameterType="HotakeRolesInfo" resultMap="HotakeRolesInfoResult">
<include refid="selectHotakeRolesInfoVo"/>
<where>
<where>
<if test="uuid != null "> and uuid = #{uuid}</if>
<if test="recruiterId != null "> and recruiter_id = #{recruiterId}</if>
<if test="roleName != null and roleName != ''"> and role_name like concat('%', #{roleName}, '%')</if>
<if test="locationType != null and locationType != ''"> and location_type = #{locationType}</if>
@@ -65,7 +75,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="descriptionTone != null and descriptionTone != ''"> and description_tone = #{descriptionTone}</if>
<if test="aboutRole != null and aboutRole != ''"> and about_role = #{aboutRole}</if>
<if test="responsibilities != null and responsibilities != ''"> and responsibilities = #{responsibilities}</if>
<if test="roleBenefits != null and roleBenefits != ''"> and role_benefits = #{roleBenefits}</if>
<if test="roleBenefitsJson != null and roleBenefitsJson != ''"> and role_benefits_json = #{roleBenefitsJson}</if>
<if test="publishingChannelsJson != null and publishingChannelsJson != ''"> and publishing_channels_json = #{publishingChannelsJson}</if>
<if test="publishingScheduleDate != null and publishingScheduleDate != ''"> and publishing_schedule_date = #{publishingScheduleDate}</if>
<if test="publishingScheduleTime != null and publishingScheduleTime != ''"> and publishing_schedule_time = #{publishingScheduleTime}</if>
@@ -73,19 +83,29 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="posted != null and posted != ''"> and posted = #{posted}</if>
<if test="dataType != null and dataType != ''"> and data_type = #{dataType}</if>
<if test="operStep != null and operStep != ''"> and oper_step = #{operStep}</if>
<if test="status != null and status != ''"> and status = #{status}</if>
</where>
order by create_time desc
</select>
<select id="selectHotakeRolesInfoById" parameterType="Long" resultMap="HotakeRolesInfoResult">
<include refid="selectHotakeRolesInfoVo"/>
where id = #{id}
</select>
<select id="selectHotakeRolesInfoByUuid" parameterType="String" resultMap="HotakeRolesInfoResult">
<include refid="selectHotakeRolesInfoVo"/>
where uuid = #{uuid}
</select>
<insert id="insertHotakeRolesInfo" parameterType="HotakeRolesInfo" useGeneratedKeys="true" keyProperty="id">
insert into hotake_roles_info
<trim prefix="(" suffix=")" suffixOverrides=",">
<if test="uuid != null">uuid,</if>
<if test="recruiterId != null">recruiter_id,</if>
<if test="roleName != null">role_name,</if>
<if test="companyName != null">company_name,</if>
<if test="roleType != null">role_type,</if>
<if test="locationType != null">location_type,</if>
<if test="locations != null">locations,</if>
<if test="applied != null">applied,</if>
@@ -102,14 +122,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="descriptionTone != null">description_tone,</if>
<if test="aboutRole != null">about_role,</if>
<if test="responsibilities != null">responsibilities,</if>
<if test="roleBenefits != null">role_benefits,</if>
<if test="roleBenefitsJson != null">role_benefits_json,</if>
<if test="publishingChannelsJson != null">publishing_channels_json,</if>
<if test="publishingScheduleDate != null">publishing_schedule_date,</if>
<if test="publishingScheduleTime != null">publishing_schedule_time,</if>
<if test="applicationDeadline != null">application_deadline,</if>
<if test="posted != null">posted,</if>
<if test="languages != null">languages,</if>
<if test="dataType != null">data_type,</if>
<if test="operStep != null">oper_step,</if>
<if test="status != null">status,</if>
<if test="delFlag != null">del_flag,</if>
<if test="createBy != null">create_by,</if>
<if test="createTime != null">create_time,</if>
@@ -118,8 +140,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="remark != null">remark,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="uuid != null">#{uuid},</if>
<if test="recruiterId != null">#{recruiterId},</if>
<if test="roleName != null">#{roleName},</if>
<if test="companyName != null">#{companyName},</if>
<if test="roleType != null">#{roleType},</if>
<if test="locationType != null">#{locationType},</if>
<if test="locations != null">#{locations},</if>
<if test="applied != null">#{applied},</if>
@@ -136,14 +161,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="descriptionTone != null">#{descriptionTone},</if>
<if test="aboutRole != null">#{aboutRole},</if>
<if test="responsibilities != null">#{responsibilities},</if>
<if test="roleBenefits != null">#{roleBenefits},</if>
<if test="roleBenefitsJson != null">#{roleBenefitsJson},</if>
<if test="publishingChannelsJson != null">#{publishingChannelsJson},</if>
<if test="publishingScheduleDate != null">#{publishingScheduleDate},</if>
<if test="publishingScheduleTime != null">#{publishingScheduleTime},</if>
<if test="applicationDeadline != null">#{applicationDeadline},</if>
<if test="posted != null">#{posted},</if>
<if test="languages != null">#{languages},</if>
<if test="dataType != null">#{dataType},</if>
<if test="operStep != null">#{operStep},</if>
<if test="status != null">#{status},</if>
<if test="delFlag != null">#{delFlag},</if>
<if test="createBy != null">#{createBy},</if>
<if test="createTime != null">#{createTime},</if>
@@ -158,6 +185,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<trim prefix="SET" suffixOverrides=",">
<if test="recruiterId != null">recruiter_id = #{recruiterId},</if>
<if test="roleName != null">role_name = #{roleName},</if>
<if test="companyName != null">company_name = #{companyName},</if>
<if test="roleType != null">role_type = #{roleType},</if>
<if test="locationType != null">location_type = #{locationType},</if>
<if test="locations != null">locations = #{locations},</if>
<if test="applied != null">applied = #{applied},</if>
@@ -174,14 +203,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<if test="descriptionTone != null">description_tone = #{descriptionTone},</if>
<if test="aboutRole != null">about_role = #{aboutRole},</if>
<if test="responsibilities != null">responsibilities = #{responsibilities},</if>
<if test="roleBenefits != null">role_benefits = #{roleBenefits},</if>
<if test="roleBenefitsJson != null">role_benefits_json = #{roleBenefitsJson},</if>
<if test="publishingChannelsJson != null">publishing_channels_json = #{publishingChannelsJson},</if>
<if test="publishingScheduleDate != null">publishing_schedule_date = #{publishingScheduleDate},</if>
<if test="publishingScheduleTime != null">publishing_schedule_time = #{publishingScheduleTime},</if>
<if test="applicationDeadline != null">application_deadline = #{applicationDeadline},</if>
<if test="posted != null">posted = #{posted},</if>
<if test="languages != null">languages = #{languages},</if>
<if test="dataType != null">data_type = #{dataType},</if>
<if test="operStep != null">oper_step = #{operStep},</if>
<if test="status != null">status = #{status},</if>
<if test="delFlag != null">del_flag = #{delFlag},</if>
<if test="createBy != null">create_by = #{createBy},</if>
<if test="createTime != null">create_time = #{createTime},</if>
@@ -192,6 +223,46 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
where id = #{id}
</update>
<update id="updateAllHotakeRolesInfo" parameterType="HotakeRolesInfo">
update hotake_roles_info
<trim prefix="SET" suffixOverrides=",">
recruiter_id = #{recruiterId},
role_name = #{roleName},
company_name = #{companyName},
role_type = #{roleType},
location_type = #{locationType},
locations = #{locations},
applied = #{applied},
job_Level = #{jobLevel},
job_type = #{jobType},
job_experience = #{jobExperience},
salary_start = #{salaryStart},
salary_end = #{salaryEnd},
required_skills_json = #{requiredSkillsJson},
nice_to_have_skills_json = #{niceToHaveSkillsJson},
education_requirements_json = #{educationRequirementsJson},
accept_equivalent_work_flag = #{acceptEquivalentWorkFlag},
certifications_licenses_json = #{certificationsLicensesJson},
description_tone = #{descriptionTone},
about_role = #{aboutRole},
responsibilities = #{responsibilities},
role_benefits_json = #{roleBenefitsJson},
publishing_channels_json = #{publishingChannelsJson},
publishing_schedule_date = #{publishingScheduleDate},
publishing_schedule_time = #{publishingScheduleTime},
application_deadline = #{applicationDeadline},
posted = #{posted},
languages = #{languages},
data_type = #{dataType},
oper_step = #{operStep},
status = #{status},
update_by = #{updateBy},
update_time = #{updateTime},
remark = #{remark},
</trim>
where id = #{id}
</update>
<delete id="deleteHotakeRolesInfoById" parameterType="Long">
delete from hotake_roles_info where id = #{id}
</delete>
@@ -204,9 +275,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</delete>
<insert id="batchInsertHotakeRolesInfo">
insert into hotake_roles_info( id, recruiter_id, role_name, location_type, locations, applied, job_Level, job_type, job_experience, salary_start, salary_end, required_skills_json, nice_to_have_skills_json, education_requirements_json, accept_equivalent_work_flag, certifications_licenses_json, description_tone, about_role, responsibilities, role_benefits, publishing_channels_json, publishing_schedule_date, publishing_schedule_time, application_deadline, posted, data_type, oper_step, del_flag, create_by, create_time, update_by, update_time, remark,) values
insert into hotake_roles_info( id, recruiter_id, role_name, location_type, locations, applied, job_Level, job_type, job_experience, salary_start, salary_end, required_skills_json, nice_to_have_skills_json, education_requirements_json, accept_equivalent_work_flag, certifications_licenses_json, description_tone, about_role, responsibilities, role_benefits_json, publishing_channels_json, publishing_schedule_date, publishing_schedule_time, application_deadline, posted, data_type, oper_step, del_flag, create_by, create_time, update_by, update_time, remark) values
<foreach item="item" index="index" collection="list" separator=",">
( #{item.id}, #{item.recruiterId}, #{item.roleName}, #{item.locationType}, #{item.locations}, #{item.applied}, #{item.jobLevel}, #{item.jobType}, #{item.jobExperience}, #{item.salaryStart}, #{item.salaryEnd}, #{item.requiredSkillsJson}, #{item.niceToHaveSkillsJson}, #{item.educationRequirementsJson}, #{item.acceptEquivalentWorkFlag}, #{item.certificationsLicensesJson}, #{item.descriptionTone}, #{item.aboutRole}, #{item.responsibilities}, #{item.roleBenefits}, #{item.publishingChannelsJson}, #{item.publishingScheduleDate}, #{item.publishingScheduleTime}, #{item.applicationDeadline}, #{item.posted}, #{item.dataType}, #{item.operStep}, #{item.delFlag}, #{item.createBy}, #{item.createTime}, #{item.updateBy}, #{item.updateTime}, #{item.remark},)
( #{item.id}, #{item.recruiterId}, #{item.roleName}, #{item.locationType}, #{item.locations}, #{item.applied}, #{item.jobLevel}, #{item.jobType}, #{item.jobExperience}, #{item.salaryStart}, #{item.salaryEnd}, #{item.requiredSkillsJson}, #{item.niceToHaveSkillsJson}, #{item.educationRequirementsJson}, #{item.acceptEquivalentWorkFlag}, #{item.certificationsLicensesJson}, #{item.descriptionTone}, #{item.aboutRole}, #{item.responsibilities}, #{item.roleBenefitsJson}, #{item.publishingChannelsJson}, #{item.publishingScheduleDate}, #{item.publishingScheduleTime}, #{item.applicationDeadline}, #{item.posted}, #{item.dataType}, #{item.operStep}, #{item.delFlag}, #{item.createBy}, #{item.createTime}, #{item.updateBy}, #{item.updateTime}, #{item.remark})
</foreach>
</insert>
</mapper>