Merge branch 'dev' of https://github.com/Vetti-AI/Vetti-Service into dev
# Conflicts: # vetti-hotakes/src/main/java/com/vetti/hotake/domain/HotakeRolesApplyInfo.java # vetti-hotakes/src/main/resources/mapper/hotake/HotakeRolesApplyInfoMapper.xml
This commit is contained in:
@@ -138,6 +138,7 @@ twilio:
|
|||||||
reply-to-em7941: noreply@em7941.routez.app
|
reply-to-em7941: noreply@em7941.routez.app
|
||||||
template-ids:
|
template-ids:
|
||||||
routez-verification-code: d-18475c5d41e349e2bc3a35f2b4992182
|
routez-verification-code: d-18475c5d41e349e2bc3a35f2b4992182
|
||||||
|
interview-template-code: d-c377f1e7f5e04cb794e2753af9d2e0c8
|
||||||
accountSID: 1111
|
accountSID: 1111
|
||||||
authToken: 22222
|
authToken: 22222
|
||||||
sendPhoneNumber: 33333
|
sendPhoneNumber: 33333
|
||||||
|
|||||||
@@ -143,6 +143,12 @@ public class HotakeRolesApplyInfo extends BaseEntity
|
|||||||
@ApiModelProperty("候选人面试综合评估最终得分")
|
@ApiModelProperty("候选人面试综合评估最终得分")
|
||||||
private BigDecimal evaluationScore;
|
private BigDecimal evaluationScore;
|
||||||
|
|
||||||
|
@ApiModelProperty("AI面试分析JSON 数据")
|
||||||
|
private String aiInterviewAnalysisJson;
|
||||||
|
|
||||||
|
@ApiModelProperty("AI面试问答数据记录JSON")
|
||||||
|
private String aiInterviewAnalysisQaJson;
|
||||||
|
|
||||||
@ApiModelProperty("岗位信息")
|
@ApiModelProperty("岗位信息")
|
||||||
private HotakeRolesInfo rolesInfo;
|
private HotakeRolesInfo rolesInfo;
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
package com.vetti.hotake.domain;
|
package com.vetti.hotake.domain;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.experimental.Accessors;
|
import lombok.experimental.Accessors;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
@@ -175,5 +177,8 @@ public class HotakeRolesInfo extends BaseEntity
|
|||||||
@ApiModelProperty("当前岗位状态(pause:暂停,archived:关闭/归档,open:发布,editing:编辑中)")
|
@ApiModelProperty("当前岗位状态(pause:暂停,archived:关闭/归档,open:发布,editing:编辑中)")
|
||||||
private String status;
|
private String status;
|
||||||
|
|
||||||
|
@ApiModelProperty("岗位申请数据集合")
|
||||||
|
private List<HotakeRolesApplyInfo> rolesApplyInfoList;
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1138,8 +1138,13 @@ public class HotakeAiCommonToolsServiceImpl extends BaseServiceImpl implements I
|
|||||||
throw new ServiceException("No rating");
|
throw new ServiceException("No rating");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//todo 把面试结果分析保存到记录表中
|
//把面试结果分析和问答Qa保存到记录表中
|
||||||
|
if(analysisVo.getRoleApplyId() != null){
|
||||||
|
HotakeRolesApplyInfo applyInfo = hotakeRolesApplyInfoMapper.selectHotakeRolesApplyInfoById(analysisVo.getRoleApplyId());
|
||||||
|
applyInfo.setAiInterviewAnalysisJson(JSONUtil.toJsonStr(analysisVo));
|
||||||
|
applyInfo.setAiInterviewAnalysisQaJson(JSONUtil.toJsonStr(analysisVo.getAiInterviewQuestionRecordVoList()));
|
||||||
|
hotakeRolesApplyInfoMapper.updateHotakeRolesApplyInfo(applyInfo);
|
||||||
|
}
|
||||||
return analysisDto;
|
return analysisDto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -105,6 +105,7 @@ public class HotakeRolesApplyInfoServiceImpl extends BaseServiceImpl implements
|
|||||||
List<HotakeRolesApplyInfo> applyInfoList = hotakeRolesApplyInfoMapper.selectHotakeRolesApplyInfoList(hotakeRolesApplyInfo);
|
List<HotakeRolesApplyInfo> applyInfoList = hotakeRolesApplyInfoMapper.selectHotakeRolesApplyInfoList(hotakeRolesApplyInfo);
|
||||||
if(CollectionUtil.isNotEmpty(applyInfoList)) {
|
if(CollectionUtil.isNotEmpty(applyInfoList)) {
|
||||||
|
|
||||||
|
List<SysUser> sysUserList = userService.selectUserList(new SysUser());
|
||||||
|
|
||||||
List<HotakeInitScreQuestionsReplyRecordInfo> screQuestionsReplyRecordInfoList = initScreQuestionsReplyRecordInfoMapper.selectHotakeInitScreQuestionsReplyRecordInfoList(new HotakeInitScreQuestionsReplyRecordInfo());
|
List<HotakeInitScreQuestionsReplyRecordInfo> screQuestionsReplyRecordInfoList = initScreQuestionsReplyRecordInfoMapper.selectHotakeInitScreQuestionsReplyRecordInfoList(new HotakeInitScreQuestionsReplyRecordInfo());
|
||||||
|
|
||||||
@@ -149,6 +150,12 @@ public class HotakeRolesApplyInfoServiceImpl extends BaseServiceImpl implements
|
|||||||
}
|
}
|
||||||
applyInfo.setScreQuestionsReplyRecordInfoList(screQuestionsReplyRecordInfos);
|
applyInfo.setScreQuestionsReplyRecordInfoList(screQuestionsReplyRecordInfos);
|
||||||
}
|
}
|
||||||
|
if(applyInfo.getCandidateId() != null){
|
||||||
|
List<SysUser> userList = sysUserList.stream().filter(e->e.getUserId().longValue() == applyInfo.getCandidateId().longValue()).toList();
|
||||||
|
if(CollectionUtil.isNotEmpty(userList)) {
|
||||||
|
applyInfo.setCandidateUSer(userList.get(0));
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return applyInfoList;
|
return applyInfoList;
|
||||||
|
|||||||
@@ -16,10 +16,12 @@ import com.vetti.common.utils.SecurityUtils;
|
|||||||
import com.vetti.common.utils.uuid.IdUtils;
|
import com.vetti.common.utils.uuid.IdUtils;
|
||||||
import com.vetti.hotake.domain.HotakeAiInterviewQuestionsInfo;
|
import com.vetti.hotake.domain.HotakeAiInterviewQuestionsInfo;
|
||||||
import com.vetti.hotake.domain.HotakeInitialScreeningQuestionsInfo;
|
import com.vetti.hotake.domain.HotakeInitialScreeningQuestionsInfo;
|
||||||
|
import com.vetti.hotake.domain.HotakeRolesApplyInfo;
|
||||||
import com.vetti.hotake.domain.HotakeRolesInfo;
|
import com.vetti.hotake.domain.HotakeRolesInfo;
|
||||||
import com.vetti.hotake.domain.dto.AiQuestionDto;
|
import com.vetti.hotake.domain.dto.AiQuestionDto;
|
||||||
import com.vetti.hotake.domain.dto.HotakeRolesInfoDto;
|
import com.vetti.hotake.domain.dto.HotakeRolesInfoDto;
|
||||||
import com.vetti.hotake.domain.dto.roleDto.*;
|
import com.vetti.hotake.domain.dto.roleDto.*;
|
||||||
|
import com.vetti.hotake.mapper.HotakeRolesApplyInfoMapper;
|
||||||
import com.vetti.hotake.mapper.HotakeRolesInfoMapper;
|
import com.vetti.hotake.mapper.HotakeRolesInfoMapper;
|
||||||
import com.vetti.hotake.service.IHotakeAiInterviewQuestionsInfoService;
|
import com.vetti.hotake.service.IHotakeAiInterviewQuestionsInfoService;
|
||||||
import com.vetti.hotake.service.IHotakeInitialScreeningQuestionsInfoService;
|
import com.vetti.hotake.service.IHotakeInitialScreeningQuestionsInfoService;
|
||||||
@@ -48,6 +50,9 @@ public class HotakeRolesInfoServiceImpl extends BaseServiceImpl implements IHota
|
|||||||
@Autowired
|
@Autowired
|
||||||
private SysUserMapper sysUserMapper;
|
private SysUserMapper sysUserMapper;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private HotakeRolesApplyInfoMapper hotakeRolesApplyInfoMapper;
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
private IHotakeInitialScreeningQuestionsInfoService hotakeInitialScreeningQuestionsInfoService;
|
private IHotakeInitialScreeningQuestionsInfoService hotakeInitialScreeningQuestionsInfoService;
|
||||||
|
|
||||||
@@ -144,13 +149,30 @@ public class HotakeRolesInfoServiceImpl extends BaseServiceImpl implements IHota
|
|||||||
@Override
|
@Override
|
||||||
public List<HotakeRolesInfo> selectHotakeRolesInfoList(HotakeRolesInfo hotakeRolesInfo)
|
public List<HotakeRolesInfo> selectHotakeRolesInfoList(HotakeRolesInfo hotakeRolesInfo)
|
||||||
{
|
{
|
||||||
|
|
||||||
List<HotakeRolesInfo> rolesInfoList = hotakeRolesInfoMapper.selectHotakeRolesInfoList(hotakeRolesInfo);
|
List<HotakeRolesInfo> rolesInfoList = hotakeRolesInfoMapper.selectHotakeRolesInfoList(hotakeRolesInfo);
|
||||||
//计算一个发布日期
|
//计算一个发布日期
|
||||||
if(CollectionUtil.isNotEmpty(rolesInfoList)){
|
if(CollectionUtil.isNotEmpty(rolesInfoList)){
|
||||||
|
List<HotakeRolesApplyInfo> applyInfoList = hotakeRolesApplyInfoMapper.selectHotakeRolesApplyInfoList(new HotakeRolesApplyInfo());
|
||||||
|
|
||||||
|
List<SysUser> sysUserList = sysUserMapper.selectUserList(new SysUser());
|
||||||
for (HotakeRolesInfo rolesInfo : rolesInfoList) {
|
for (HotakeRolesInfo rolesInfo : rolesInfoList) {
|
||||||
String posted = DateUtils.getTimeAgo(rolesInfo.getCreateTime());
|
String posted = DateUtils.getTimeAgo(rolesInfo.getCreateTime());
|
||||||
rolesInfo.setPosted(posted);
|
rolesInfo.setPosted(posted);
|
||||||
|
|
||||||
|
if(CollectionUtil.isNotEmpty(applyInfoList)){
|
||||||
|
List<HotakeRolesApplyInfo> applyInfos = applyInfoList.stream().filter(e->e.getRoleId().longValue() == rolesInfo.getId().longValue()).toList();
|
||||||
|
if(CollectionUtil.isNotEmpty(applyInfos)){
|
||||||
|
for (HotakeRolesApplyInfo applyInfo : applyInfos) {
|
||||||
|
if(applyInfo.getCandidateId() != null){
|
||||||
|
List<SysUser> userList = sysUserList.stream().filter(e->e.getUserId().longValue() == applyInfo.getCandidateId().longValue()).toList();
|
||||||
|
if(CollectionUtil.isNotEmpty(userList)) {
|
||||||
|
applyInfo.setCandidateUSer(userList.get(0));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
rolesInfo.setRolesApplyInfoList(applyInfos);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return rolesInfoList;
|
return rolesInfoList;
|
||||||
|
|||||||
@@ -36,6 +36,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<result property="evaluationScore" column="evaluation_score" />
|
<result property="evaluationScore" column="evaluation_score" />
|
||||||
|
|
||||||
|
|
||||||
|
<result property="aiInterviewAnalysisJson" column="ai_interview_analysis_json" />
|
||||||
|
<result property="aiInterviewAnalysisQaJson" column="ai_interview_analysis_qa_json" />
|
||||||
|
|
||||||
|
|
||||||
<result property="delFlag" column="del_flag" />
|
<result property="delFlag" column="del_flag" />
|
||||||
<result property="createBy" column="create_by" />
|
<result property="createBy" column="create_by" />
|
||||||
<result property="createTime" column="create_time" />
|
<result property="createTime" column="create_time" />
|
||||||
@@ -49,6 +53,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
cover_letter, candidate_status, stage, last_contact, cv_template_json, cv_score, cv_md5, experience, ai_match_score,
|
cover_letter, candidate_status, stage, last_contact, cv_template_json, cv_score, cv_md5, experience, ai_match_score,
|
||||||
ai_match_score_percentage,status, ai_cv_scoring_ranking_json,ai_cv_score,candidate_compatibility_json,
|
ai_match_score_percentage,status, ai_cv_scoring_ranking_json,ai_cv_score,candidate_compatibility_json,
|
||||||
candidate_compatibility_score,evaluation_json,evaluation_score,
|
candidate_compatibility_score,evaluation_json,evaluation_score,
|
||||||
|
ai_match_score_percentage,status, ai_cv_scoring_ranking_json,ai_cv_score,candidate_compatibility_json,
|
||||||
|
candidate_compatibility_score,ai_interview_analysis_json,ai_interview_analysis_qa_json,
|
||||||
del_flag, create_by, create_time, update_by, update_time, remark from hotake_roles_apply_info
|
del_flag, create_by, create_time, update_by, update_time, remark from hotake_roles_apply_info
|
||||||
</sql>
|
</sql>
|
||||||
|
|
||||||
@@ -185,6 +191,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="evaluationJson != null">evaluation_json,</if>
|
<if test="evaluationJson != null">evaluation_json,</if>
|
||||||
<if test="evaluationScore != null">evaluation_score,</if>
|
<if test="evaluationScore != null">evaluation_score,</if>
|
||||||
|
|
||||||
|
<if test="aiInterviewAnalysisJson != null">ai_interview_analysis_json,</if>
|
||||||
|
<if test="aiInterviewAnalysisQaJson != null">ai_interview_analysis_qa_json,</if>
|
||||||
|
|
||||||
<if test="delFlag != null">del_flag,</if>
|
<if test="delFlag != null">del_flag,</if>
|
||||||
<if test="createBy != null">create_by,</if>
|
<if test="createBy != null">create_by,</if>
|
||||||
<if test="createTime != null">create_time,</if>
|
<if test="createTime != null">create_time,</if>
|
||||||
@@ -222,6 +231,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="evaluationJson != null">#{evaluationJson},</if>
|
<if test="evaluationJson != null">#{evaluationJson},</if>
|
||||||
<if test="evaluationScore != null">#{evaluationScore},</if>
|
<if test="evaluationScore != null">#{evaluationScore},</if>
|
||||||
|
|
||||||
|
<if test="aiInterviewAnalysisJson != null">#{aiInterviewAnalysisJson},</if>
|
||||||
|
<if test="aiInterviewAnalysisQaJson != null">#{aiInterviewAnalysisQaJson},</if>
|
||||||
|
|
||||||
<if test="delFlag != null">#{delFlag},</if>
|
<if test="delFlag != null">#{delFlag},</if>
|
||||||
<if test="createBy != null">#{createBy},</if>
|
<if test="createBy != null">#{createBy},</if>
|
||||||
<if test="createTime != null">#{createTime},</if>
|
<if test="createTime != null">#{createTime},</if>
|
||||||
@@ -263,6 +275,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
|||||||
<if test="evaluationJson != null">evaluation_json = #{evaluationJson},</if>
|
<if test="evaluationJson != null">evaluation_json = #{evaluationJson},</if>
|
||||||
<if test="evaluationScore != null">evaluation_score = #{evaluationScore},</if>
|
<if test="evaluationScore != null">evaluation_score = #{evaluationScore},</if>
|
||||||
|
|
||||||
|
<if test="aiInterviewAnalysisJson != null">ai_interview_analysis_json = #{aiInterviewAnalysisJson},</if>
|
||||||
|
<if test="aiInterviewAnalysisQaJson != null">ai_interview_analysis_qa_json = #{aiInterviewAnalysisQaJson},</if>
|
||||||
|
|
||||||
<if test="delFlag != null">del_flag = #{delFlag},</if>
|
<if test="delFlag != null">del_flag = #{delFlag},</if>
|
||||||
<if test="createBy != null">create_by = #{createBy},</if>
|
<if test="createBy != null">create_by = #{createBy},</if>
|
||||||
<if test="createTime != null">create_time = #{createTime},</if>
|
<if test="createTime != null">create_time = #{createTime},</if>
|
||||||
|
|||||||
Reference in New Issue
Block a user