面试/面谈

This commit is contained in:
zhangchenbiao
2024-03-26 14:43:22 +08:00
parent d291666334
commit 1262c04d26
2 changed files with 33 additions and 16 deletions

View File

@@ -88,7 +88,7 @@ public enum ErrorCodeEnum {
INTERVIEW_PLAN_NOT_EXIST(1021107, "面审计划不存在!", null),
FEISHU_DELETE_SCHEDULE_ERROR(1021108, "删除原面审安排失败!", null),
CREATE_CALENDAR_EVENT_FAIL(1021109, "创建面审安排失败!", null),
FEISHU_UPDATE_SCHEDULE_ERROR(1021110, "修改面审安排失败", null),
FEISHU_UPDATE_SCHEDULE_ERROR(1021110, "开始前10分钟不允许修改时间", null),
INTERVIEW_STATUS_ERROR(1021111, "当前面审状态不允许该操作!", null),
INTERVIEW_PLAN_ALREADY_EXIST(1021112, "面审计划已存在,请勿重复申请!", null),
INTERVIEW_LINE_ID_IS_NULL(1021113, "线索id为空", null),

View File

@@ -1,5 +1,6 @@
package com.cool.store.service.impl;
import cn.hutool.core.date.DateUtil;
import com.alibaba.fastjson.JSONObject;
import com.cool.store.constants.CommonConstants;
import com.cool.store.dao.*;
@@ -32,6 +33,8 @@ import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.*;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@@ -101,11 +104,18 @@ public class LineInterviewServiceImpl extends LineFlowService implements LineInt
throw new ServiceException(ErrorCodeEnum.LINE_STATUS_NOT_ALLOW_OPERATE);
}
InterviewTypeEnum interviewType = WorkflowSubStageEnum.getInterviewType(lineInfo.getWorkflowSubStage());
UserRoleEnum userRole = InterviewTypeEnum.MEET.equals(interviewType) ? UserRoleEnum.INVESTMENT_MANAGER : UserRoleEnum.REGION_MANAGER;
//获取面试官
String interviewerUserId = InterviewTypeEnum.MEET.equals(interviewType) ? lineInfo.getInvestmentManager() : commonService.getUserIdByAreaAndUserRole(lineInfo.getWantShopAreaId(), userRole);
String firstInterviewer = InterviewTypeEnum.INTERVIEW.equals(interviewType) ? interviewerUserId : null;
String secondInterviewer = InterviewTypeEnum.SECOND_INTERVIEW.equals(interviewType) ? interviewerUserId : null;
String interviewerUserId, firstInterviewer = null, secondInterviewer = null;
if(!WorkflowSubStageStatusEnum.isReappointmentStatus(lineInfo.getWorkflowSubStageStatus())){
interviewerUserId = lineInfo.getInvestmentManager();
if(!InterviewTypeEnum.MEET.equals(interviewType)){
interviewerUserId = commonService.getUserIdByAreaAndUserRole(lineInfo.getWantShopAreaId(), UserRoleEnum.REGION_MANAGER);
}
firstInterviewer = InterviewTypeEnum.INTERVIEW.equals(interviewType) ? interviewerUserId : null;
secondInterviewer = InterviewTypeEnum.SECOND_INTERVIEW.equals(interviewType) ? interviewerUserId : null;
}else{
//重新预约直接拿线索对应的面试官
interviewerUserId = InterviewTypeEnum.INTERVIEW.equals(interviewType) ? lineInfo.getFirstInterviewer() : lineInfo.getSecondInterviewer();
}
Boolean occupied = lineCalendarsEventDAO.isOccupied(interviewType.getCode(), lineInfo.getRegionId(), interviewerUserId, request.getStartTime(), request.getEndTime(), null);
if(occupied){
throw new ServiceException(ErrorCodeEnum.TIME_OCCUPIED);
@@ -158,16 +168,23 @@ public class LineInterviewServiceImpl extends LineFlowService implements LineInt
if(occupied){
throw new ServiceException(ErrorCodeEnum.TIME_OCCUPIED);
}
interviewInfo.setInterviewDate(startTime);
interviewInfo.setStartTime(startTime);
interviewInfo.setEndTime(endTime);
lineInterviewDAO.updateInterviewInfo(interviewInfo);
LineCalendarsEventDO update = new LineCalendarsEventDO();
update.setId(interviewInfo.getCalendarsEventId());
update.setStartTime(startTime);
update.setEndTime(endTime);
update.setInterviewDate(startTime);
lineCalendarsEventDAO.updateCalendarsEvent(update);
LocalDateTime startDateTime = LocalDateTime.ofInstant(startTime.toInstant(), ZoneId.systemDefault()).minusMinutes(10);
LocalDateTime now = LocalDateTime.ofInstant(new Date().toInstant(), ZoneId.systemDefault());
if(startDateTime.isBefore(now)){
throw new ServiceException(ErrorCodeEnum.FEISHU_UPDATE_SCHEDULE_ERROR);
}
LineInterviewDO updateInterview = new LineInterviewDO();
updateInterview.setId(interviewInfo.getId());
updateInterview.setInterviewDate(startTime);
updateInterview.setStartTime(startTime);
updateInterview.setEndTime(endTime);
lineInterviewDAO.updateInterviewInfo(updateInterview);
LineCalendarsEventDO updateEvent = new LineCalendarsEventDO();
updateEvent.setId(interviewInfo.getCalendarsEventId());
updateEvent.setStartTime(startTime);
updateEvent.setEndTime(endTime);
updateEvent.setInterviewDate(startTime);
lineCalendarsEventDAO.updateCalendarsEvent(updateEvent);
return true;
}