面谈/面试

This commit is contained in:
zhangchenbiao
2024-03-19 14:50:56 +08:00
parent e5cbf96280
commit db47ccb51c
18 changed files with 894 additions and 49 deletions

View File

@@ -1,5 +1,6 @@
package com.cool.store.service;
import com.cool.store.request.AppointmentTimeRequest;
import com.cool.store.vo.interview.AppointmentTimeVO;
import java.time.LocalDate;
@@ -21,4 +22,11 @@ public interface LineInterviewService {
* @return
*/
List<AppointmentTimeVO> getAppointmentTime(Long lineId, Integer interviewType, LocalDate appointmentDate);
/**
* 面试预约
* @param request
* @return
*/
Boolean appointmentTime(AppointmentTimeRequest request);
}

View File

@@ -1,17 +1,27 @@
package com.cool.store.service.impl;
import com.cool.store.dao.LineCalendarsEventDAO;
import com.cool.store.dao.LineInfoDAO;
import com.cool.store.dao.LineInterviewDAO;
import com.cool.store.entity.LineCalendarsEventDO;
import com.cool.store.entity.LineInfoDO;
import com.cool.store.entity.LineInterviewDO;
import com.cool.store.enums.ErrorCodeEnum;
import com.cool.store.enums.InterviewTypeEnum;
import com.cool.store.exception.ServiceException;
import com.cool.store.request.AppointmentTimeRequest;
import com.cool.store.service.LineInterviewService;
import com.cool.store.utils.UUIDUtils;
import com.cool.store.utils.poi.DateUtils;
import com.cool.store.vo.interview.AppointmentTimeVO;
import org.apache.commons.lang3.tuple.Pair;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.time.LocalDate;
import java.util.Date;
import java.util.List;
import java.util.Objects;
/**
* @author zhangchenbiao
@@ -22,6 +32,8 @@ import java.util.List;
@Service
public class LineInterviewServiceImpl implements LineInterviewService {
@Resource
private LineInfoDAO lineInfoDAO;
@Resource
private LineInterviewDAO lineInterviewDAO;
@Resource
@@ -32,13 +44,69 @@ public class LineInterviewServiceImpl implements LineInterviewService {
InterviewTypeEnum interviewTypeEnum = InterviewTypeEnum.match(interviewType);
List<Pair<String, Boolean>> timeSlots = InterviewTypeEnum.getTimeSlots(interviewTypeEnum, appointmentDate);
List<LineCalendarsEventDO> eventList = null;
LineInfoDO lineInfo = lineInfoDAO.getLineInfo(lineId);
if(Objects.isNull(lineInfo)){
throw new ServiceException(ErrorCodeEnum.LINE_ID_IS_NOT_EXIST);
}
//如果是面谈 获取招商经理的时间 如果是面试 获取大区的时间
if(InterviewTypeEnum.MEET.equals(interviewTypeEnum)){
eventList = lineCalendarsEventDAO.getInterviewerLineCalendarsEvent("1", appointmentDate);
eventList = lineCalendarsEventDAO.getInterviewerLineCalendarsEvent(lineInfo.getInvestmentManager(), appointmentDate);
}else{
eventList = lineCalendarsEventDAO.getRegionLineCalendarsEvent(1L, appointmentDate);
eventList = lineCalendarsEventDAO.getRegionLineCalendarsEvent(lineInfo.getRegionId(), appointmentDate);
}
List<AppointmentTimeVO> resultList = AppointmentTimeVO.getAppointmentTime(appointmentDate, timeSlots, eventList);
return resultList;
}
@Override
public Boolean appointmentTime(AppointmentTimeRequest request) {
//查询线索信息
//如果是面谈获取招商经理 如果是面试获取大区经理
LineInfoDO lineInfo = lineInfoDAO.getLineInfo(request.getLineId());
if(Objects.isNull(lineInfo)){
throw new ServiceException(ErrorCodeEnum.LINE_ID_IS_NOT_EXIST);
}
InterviewTypeEnum interviewType = InterviewTypeEnum.match(request.getInterviewType());
String interviewer = InterviewTypeEnum.MEET.equals(interviewType) ? lineInfo.getInvestmentManager() : InterviewTypeEnum.INTERVIEW.equals(interviewType) ? lineInfo.getFirstInterviewer() : lineInfo.getSecondInterviewer();
Boolean occupied = lineCalendarsEventDAO.isOccupied(request.getInterviewType(), lineInfo.getRegionId(), interviewer, request.getStartTime(), request.getEndTime());
if(occupied){
throw new ServiceException(ErrorCodeEnum.TIME_OCCUPIED);
}
Date startTime = DateUtils.strToDate(request.getStartTime(), DateUtils.YYYY_MM_DD_HH_MM_SS);
Date endTime = DateUtils.strToDate(request.getEndTime(), DateUtils.YYYY_MM_DD_HH_MM_SS);
LineCalendarsEventDO calendarsEvent = new LineCalendarsEventDO();
calendarsEvent.setRegionId(lineInfo.getRegionId());
calendarsEvent.setLineId(lineInfo.getId());
calendarsEvent.setPartnerId(lineInfo.getPartnerId());
calendarsEvent.setEventTitle(lineInfo.getUsername() + " " + (InterviewTypeEnum.MEET.equals(interviewType) ? "面谈" :"面审"));
calendarsEvent.setInterviewType(request.getInterviewType());
calendarsEvent.setStartTime(startTime);
calendarsEvent.setEndTime(endTime);
calendarsEvent.setInterviewer(interviewer);
Long eventId = lineCalendarsEventDAO.addCalendarsEvent(calendarsEvent);
//跟新线索状态为已预约
lineInfoDAO.updateLineStage(request.getLineId());
LineInterviewDO interviewInfo = lineInterviewDAO.getInterviewInfo(lineInfo.getId(), interviewType);
if(Objects.isNull(interviewInfo)){
LineInterviewDO addInterview = new LineInterviewDO();
addInterview.setLineId(lineInfo.getId());
addInterview.setPartnerId(lineInfo.getPartnerId());
addInterview.setRegionId(lineInfo.getRegionId());
addInterview.setInterviewDate(startTime);
addInterview.setStartTime(startTime);
addInterview.setEndTime(endTime);
addInterview.setRoomId(UUIDUtils.get8UUID());
addInterview.setInterviewer(interviewer);
addInterview.setInterviewType(interviewType.getCode());
addInterview.setCalendarsEventId(eventId);
lineInterviewDAO.addInterviewInfo(addInterview);
return Boolean.FALSE;
}
interviewInfo.setInterviewDate(startTime);
interviewInfo.setCalendarsEventId(eventId);
interviewInfo.setStartTime(startTime);
interviewInfo.setEndTime(endTime);
lineInterviewDAO.updateInterviewInfo(interviewInfo);
return Boolean.TRUE;
}
}