面试/面谈
This commit is contained in:
@@ -17,7 +17,7 @@ import java.util.List;
|
||||
*/
|
||||
public enum InterviewTypeEnum {
|
||||
|
||||
MEET(0, "面谈", 120, 8, 19),
|
||||
MEET(0, "面谈", 120, 9, 19),
|
||||
|
||||
INTERVIEW(1, "一面", 30, 9, 18),
|
||||
|
||||
|
||||
@@ -49,8 +49,8 @@ public class LineCalendarsEventDAO {
|
||||
* @param endTime
|
||||
* @return
|
||||
*/
|
||||
public Boolean isOccupied(Integer interviewType, Long regionId, String interviewerUserId, String startTime, String endTime){
|
||||
return lineCalendarsEventMapper.getOccupiedCount(interviewType, regionId, interviewerUserId, startTime, endTime) > 0;
|
||||
public Boolean isOccupied(Integer interviewType, Long regionId, String interviewerUserId, String startTime, String endTime, Long excludeInterviewId){
|
||||
return lineCalendarsEventMapper.getOccupiedCount(interviewType, regionId, interviewerUserId, startTime, endTime, excludeInterviewId) > 0;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -55,6 +55,16 @@ public class LineInfoDAO {
|
||||
return lineInfoMapper.updateByPrimaryKeySelective(lineInfo);
|
||||
}
|
||||
|
||||
public Integer updateWorkflowStageAndInterviewer(Long lineId, WorkflowSubStageStatusEnum workflowSubStageStatus, String firstInterviewer, String secondInterviewer) {
|
||||
LineInfoDO lineInfo = new LineInfoDO();
|
||||
lineInfo.setId(lineId);
|
||||
lineInfo.setWorkflowSubStageStatus(workflowSubStageStatus.getCode());
|
||||
lineInfo.setFirstInterviewer(firstInterviewer);
|
||||
lineInfo.setSecondInterviewer(secondInterviewer);
|
||||
return lineInfoMapper.updateByPrimaryKeySelective(lineInfo);
|
||||
}
|
||||
|
||||
|
||||
public LineInfoDO getByPartnerId(String partnerId) {
|
||||
LineInfoDO lineInfo = lineInfoMapper.getByPartnerId(partnerId);
|
||||
if(Objects.nonNull(lineInfo) && !lineInfo.getDeleted()){
|
||||
|
||||
@@ -16,12 +16,14 @@ public interface LineCalendarsEventMapper extends Mapper<LineCalendarsEventDO> {
|
||||
* 被占用次数
|
||||
* @param interviewType
|
||||
* @param regionId
|
||||
* @param interviewer
|
||||
* @param interviewerUserId
|
||||
* @param startTime
|
||||
* @param endTime
|
||||
* @param excludeInterviewId
|
||||
* @return
|
||||
*/
|
||||
Integer getOccupiedCount(@Param("interviewType") Integer interviewType, @Param("regionId") Long regionId, @Param("interviewerUserId") String interviewerUserId, @Param("startTime") String startTime, @Param("endTime") String endTime);
|
||||
Integer getOccupiedCount(@Param("interviewType") Integer interviewType, @Param("regionId") Long regionId, @Param("interviewerUserId") String interviewerUserId,
|
||||
@Param("startTime") String startTime, @Param("endTime") String endTime, @Param("excludeInterviewId")Long excludeInterviewId);
|
||||
|
||||
|
||||
}
|
||||
@@ -40,5 +40,8 @@
|
||||
<if test="regionId == 1">
|
||||
and region_id = #{regionId}
|
||||
</if>
|
||||
<if test="excludeInterviewId != null">
|
||||
and id != #{excludeInterviewId}
|
||||
</if>
|
||||
</select>
|
||||
</mapper>
|
||||
@@ -71,6 +71,9 @@
|
||||
<if test="lineSource != null and lineSource != ''">
|
||||
and b.line_source = #{lineSource}
|
||||
</if>
|
||||
<if test="interviewStartTime != null and interviewEndTime != null ">
|
||||
and a.start_time between #{interviewStartTime} and #{interviewEndTime}
|
||||
</if>
|
||||
<if test="interviewerUserId != null and interviewerUserId != ''">
|
||||
and a.interviewer_user_id = #{interviewerUserId}
|
||||
</if>
|
||||
|
||||
@@ -1,10 +1,14 @@
|
||||
package com.cool.store.service.impl;
|
||||
|
||||
import com.cool.store.dao.EnterpriseUserDAO;
|
||||
import com.cool.store.enums.UserRoleEnum;
|
||||
import com.cool.store.enums.WorkflowSubStageEnum;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* @author zhangchenbiao
|
||||
* @FileName: CommonService
|
||||
@@ -16,9 +20,22 @@ public class CommonService {
|
||||
|
||||
@Autowired
|
||||
private ApplicationContext applicationContext;
|
||||
@Resource
|
||||
private EnterpriseUserDAO enterpriseUserDAO;
|
||||
|
||||
public LineFlowService getLineFlowService(Integer workflowSubStage){
|
||||
WorkflowSubStageEnum workflowSubStageEnum = WorkflowSubStageEnum.getWorkflowSubStageEnum(workflowSubStage);
|
||||
return (LineFlowService)applicationContext.getBean(workflowSubStageEnum.getClazz());
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取用户id
|
||||
* @param areaId 城市id
|
||||
* @param userRole
|
||||
* @return
|
||||
*/
|
||||
public String getUserIdByAreaAndUserRole(Long areaId, UserRoleEnum userRole){
|
||||
//随机一个
|
||||
return enterpriseUserDAO.getUserInfoByUserIds(null).stream().findAny().get().getUserId();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -64,6 +64,8 @@ public class LineInterviewServiceImpl extends LineFlowService implements LineInt
|
||||
private HyOpenAreaInfoDAO hyOpenAreaInfoDAO;
|
||||
@Resource
|
||||
private LineAuditInfoDAO lineAuditInfoDAO;
|
||||
@Resource
|
||||
private CommonService commonService;
|
||||
|
||||
@Override
|
||||
public List<AppointmentTimeVO> getAppointmentTime(Long lineId, Integer interviewType, LocalDate appointmentDate) {
|
||||
@@ -99,18 +101,22 @@ public class LineInterviewServiceImpl extends LineFlowService implements LineInt
|
||||
throw new ServiceException(ErrorCodeEnum.LINE_STATUS_NOT_ALLOW_OPERATE);
|
||||
}
|
||||
InterviewTypeEnum interviewType = WorkflowSubStageEnum.getInterviewType(lineInfo.getWorkflowSubStage());
|
||||
String interviewer = InterviewTypeEnum.MEET.equals(interviewType) ? lineInfo.getInvestmentManager() : InterviewTypeEnum.INTERVIEW.equals(interviewType) ? lineInfo.getFirstInterviewer() : lineInfo.getSecondInterviewer();
|
||||
Boolean occupied = lineCalendarsEventDAO.isOccupied(interviewType.getCode(), lineInfo.getRegionId(), interviewer, request.getStartTime(), request.getEndTime());
|
||||
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;
|
||||
Boolean occupied = lineCalendarsEventDAO.isOccupied(interviewType.getCode(), lineInfo.getRegionId(), interviewerUserId, request.getStartTime(), request.getEndTime(), null);
|
||||
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 = LineCalendarsEventDO.convertDO(lineInfo, interviewType.getCode(), startTime, endTime, interviewer);
|
||||
LineCalendarsEventDO calendarsEvent = LineCalendarsEventDO.convertDO(lineInfo, interviewType.getCode(), startTime, endTime, interviewerUserId);
|
||||
Long eventId = lineCalendarsEventDAO.addCalendarsEvent(calendarsEvent);
|
||||
WorkflowSubStageStatusEnum workflowSubStageStatus = InterviewTypeEnum.getWorkflowSubStageStatus(interviewType);
|
||||
//跟新线索状态为已预约
|
||||
lineInfoDAO.updateWorkflowStage(lineInfo.getId(), null, workflowSubStageStatus);
|
||||
lineInfoDAO.updateWorkflowStageAndInterviewer(lineInfo.getId(), workflowSubStageStatus, firstInterviewer, secondInterviewer);
|
||||
LineInterviewDO interviewInfo = lineInterviewDAO.getInterviewInfo(lineInfo.getId(), interviewType);
|
||||
if(Objects.nonNull(interviewInfo)){
|
||||
if(!WorkflowSubStageStatusEnum.isReappointmentStatus(lineInfo.getWorkflowSubStageStatus())){
|
||||
@@ -120,7 +126,7 @@ public class LineInterviewServiceImpl extends LineFlowService implements LineInt
|
||||
//删除该面试记录
|
||||
lineInterviewDAO.deleteInterviewInfo(interviewInfo.getId());
|
||||
}
|
||||
LineInterviewDO addInterview = LineInterviewDO.convertDO(lineInfo, startTime, endTime, UUIDUtils.get8UUID(), interviewer, interviewType.getCode(), eventId);
|
||||
LineInterviewDO addInterview = LineInterviewDO.convertDO(lineInfo, startTime, endTime, UUIDUtils.get8UUID(), interviewerUserId, interviewType.getCode(), eventId);
|
||||
lineInterviewDAO.addInterviewInfo(addInterview);
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
@@ -148,6 +154,10 @@ public class LineInterviewServiceImpl extends LineFlowService implements LineInt
|
||||
}
|
||||
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);
|
||||
Boolean occupied = lineCalendarsEventDAO.isOccupied(interviewType.getCode(), lineInfo.getRegionId(), interviewInfo.getInterviewerUserId(), request.getStartTime(), request.getEndTime(), interviewInfo.getId());
|
||||
if(occupied){
|
||||
throw new ServiceException(ErrorCodeEnum.TIME_OCCUPIED);
|
||||
}
|
||||
interviewInfo.setInterviewDate(startTime);
|
||||
interviewInfo.setStartTime(startTime);
|
||||
interviewInfo.setEndTime(endTime);
|
||||
|
||||
Reference in New Issue
Block a user