面试预约阶段转让招商经理及新旧面试官日程改为新增参会人
This commit is contained in:
@@ -22,6 +22,7 @@ import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.http.ResponseEntity;
|
||||
import org.springframework.scheduling.annotation.Async;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.HashMap;
|
||||
|
||||
@@ -167,6 +167,7 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public Boolean transferInvestmentManager(LoginUserInfo user, TransferInvestmentManagerRequest request) throws ApiException {
|
||||
if (StringUtil.isBlank(request.getUserId())||request.getLineId()==null){
|
||||
throw new ServiceException(ErrorCodeEnum.PARAMS_REQUIRED);
|
||||
@@ -186,9 +187,10 @@ public class HyPartnerLineInfoServiceImpl implements HyPartnerLineInfoService {
|
||||
List<EnterpriseUserDO> userList = enterpriseUserDAO.getUserInfoByUserIds(userIdList);
|
||||
Map<String, EnterpriseUserDO> userDOMap = userList.stream().collect(Collectors.toMap(EnterpriseUserDO::getUserId, data -> data));
|
||||
|
||||
//更新面试官
|
||||
if (WorkflowStageEnum.INTERVIEW.getCode().equals(hyPartnerLineInfoDO.getWorkflowStage())
|
||||
&& WorkflowStatusEnum.INTERVIEW_2.getCode().equals(hyPartnerLineInfoDO.getWorkflowStatus())){
|
||||
//更新面试官(预约面试全阶段和合作资格面试待面试阶段都需要变更面试官)
|
||||
//待预约状态及之前还未生成面试信息,因此不做表更面试官操作
|
||||
if ( (WorkflowStageEnum.INTERVIEW.getCode().equals(hyPartnerLineInfoDO.getWorkflowStage()) && WorkflowStatusEnum.INTERVIEW_2.getCode().equals(hyPartnerLineInfoDO.getWorkflowStatus()))
|
||||
|| (WorkflowStageEnum.RESERVATION.getCode().equals(hyPartnerLineInfoDO.getWorkflowStage())) && !WorkflowStatusEnum.RESERVATION_0.getCode().equals(hyPartnerLineInfoDO.getWorkflowStatus())) {
|
||||
workFlowService.transferInvestmentManager(WorkflowStageEnum.getWorkflowStageByCode(hyPartnerLineInfoDO.getWorkflowStage()),request);
|
||||
}
|
||||
//发送飞书工作通知
|
||||
|
||||
@@ -13,10 +13,7 @@ import com.cool.store.context.PartnerUserHolder;
|
||||
import com.cool.store.dao.EnterpriseUserDAO;
|
||||
import com.cool.store.dao.HyIntendDevMappingDAO;
|
||||
import com.cool.store.dao.HyInterviewDAO;
|
||||
import com.cool.store.dto.calendar.CreateCalendarEventDTO;
|
||||
import com.cool.store.dto.calendar.DeleteCalendarEventDTO;
|
||||
import com.cool.store.dto.calendar.UserCalendarsEventDTO;
|
||||
import com.cool.store.dto.calendar.UserFreeBusyInfoDTO;
|
||||
import com.cool.store.dto.calendar.*;
|
||||
import com.cool.store.dto.log.*;
|
||||
import com.cool.store.dto.message.SendCardMessageDTO;
|
||||
import com.cool.store.dto.partner.EnterInterviewDto;
|
||||
@@ -156,38 +153,63 @@ public class InterviewServiceImpl implements InterviewService {
|
||||
@Override
|
||||
@Transactional
|
||||
public void entrustOthers(EntrustOthersReq request) throws ApiException {
|
||||
//只有房间状态是待开放才可以委托他人
|
||||
Integer roomStatus = hyPartnerInterviewPlanMapper.getRoomStatus(request.getInterviewPlanId());
|
||||
if (!roomStatus.equals(RoomStatus.WAIT_FOR_OPEN.getCode())) {
|
||||
throw new ApiException(ErrorCodeEnum.ROOM_STATUS_ERROR);
|
||||
}
|
||||
InterviewVO interviewInfo = hyPartnerInterviewPlanMapper.getInterviewInfo(request.getInterviewPlanId());
|
||||
HyPartnerLineInfoDO lineInfo = hyPartnerLineInfoMapper.selectByPrimaryKeySelective(request.getPartnerLineId());
|
||||
//如果面试信息为空,抛出异常
|
||||
if (interviewInfo == null) {
|
||||
throw new ApiException(ErrorCodeEnum.INTERVIEW_PLAN_NOT_EXIST);
|
||||
}
|
||||
if(RoomStatus.WAIT_FOR_OPEN.getCode() != Integer.parseInt(interviewInfo.getRoomStatus())){
|
||||
throw new ApiException(ErrorCodeEnum.ROOM_STATUS_ERROR);
|
||||
//只有预约面试阶段和合作资格面试待面试阶段才能变更面试官
|
||||
if ( !WorkflowStatusEnum.INTERVIEW_2.getCode().equals(lineInfo.getWorkflowStatus())
|
||||
&& !WorkflowStageEnum.RESERVATION.getCode().equals(lineInfo.getWorkflowStage())) {
|
||||
throw new ApiException(ErrorCodeEnum.INTERVIEW_STATUS_ERROR);
|
||||
}
|
||||
//1.新面试官日程新增
|
||||
CreateCalendarEventDTO createCalendarEventDTO = new CreateCalendarEventDTO();
|
||||
createCalendarEventDTO.setStartTime(DateUtil.parse(interviewInfo.getStartTime()).getTime());
|
||||
createCalendarEventDTO.setEndTime(DateUtil.parse(interviewInfo.getEndTime()).getTime());
|
||||
createCalendarEventDTO.setUserId(request.getNewInterviewerId());
|
||||
createCalendarEventDTO.setJoinUserIds(Arrays.asList(request.getNewInterviewerId()));
|
||||
createCalendarEventDTO.setSummary(generateInterviewTitle(request.getPartnerLineId()));
|
||||
UserCalendarsEventDTO userCalendarEvent = isvHttpRequest.createUserCalendarEvent(createCalendarEventDTO);
|
||||
if(userCalendarEvent == null ){
|
||||
throw new ApiException(ErrorCodeEnum.CREATE_CALENDAR_EVENT_FAIL);
|
||||
}
|
||||
//2.原面试官日程删除
|
||||
DeleteCalendarEventDTO deleteCalendarEventDTO = new DeleteCalendarEventDTO();
|
||||
deleteCalendarEventDTO.setCalendarId(interviewInfo.getFeishuCalendarId());
|
||||
deleteCalendarEventDTO.setEventId(interviewInfo.getFeishuScheduleId());
|
||||
deleteCalendarEventDTO.setUserId(interviewInfo.getInterviewerId());
|
||||
UserCalendarsEventDTO userCalendarsEventDTO = isvHttpRequest.deleteUserCalendarEvent(deleteCalendarEventDTO);
|
||||
if(userCalendarsEventDTO == null ){
|
||||
throw new ApiException(ErrorCodeEnum.FEISHU_DELETE_SCHEDULE_ERROR);
|
||||
// //1.新面试官日程新增
|
||||
// CreateCalendarEventDTO createCalendarEventDTO = new CreateCalendarEventDTO();
|
||||
// createCalendarEventDTO.setStartTime(DateUtil.parse(interviewInfo.getStartTime()).getTime());
|
||||
// createCalendarEventDTO.setEndTime(DateUtil.parse(interviewInfo.getEndTime()).getTime());
|
||||
// createCalendarEventDTO.setUserId(request.getNewInterviewerId());
|
||||
// createCalendarEventDTO.setJoinUserIds(Arrays.asList(request.getNewInterviewerId()));
|
||||
// createCalendarEventDTO.setSummary(generateInterviewTitle(request.getPartnerLineId()));
|
||||
// UserCalendarsEventDTO userCalendarEvent = isvHttpRequest.createUserCalendarEvent(createCalendarEventDTO);
|
||||
// if(userCalendarEvent == null ){
|
||||
// throw new ApiException(ErrorCodeEnum.CREATE_CALENDAR_EVENT_FAIL);
|
||||
// }
|
||||
// //2.原面试官日程删除
|
||||
// DeleteCalendarEventDTO deleteCalendarEventDTO = new DeleteCalendarEventDTO();
|
||||
// deleteCalendarEventDTO.setCalendarId(interviewInfo.getFeishuCalendarId());
|
||||
// deleteCalendarEventDTO.setEventId(interviewInfo.getFeishuScheduleId());
|
||||
// deleteCalendarEventDTO.setUserId(interviewInfo.getInterviewerId());
|
||||
// UserCalendarsEventDTO userCalendarsEventDTO = isvHttpRequest.deleteUserCalendarEvent(deleteCalendarEventDTO);
|
||||
// if(userCalendarsEventDTO == null ){
|
||||
// throw new ApiException(ErrorCodeEnum.FEISHU_DELETE_SCHEDULE_ERROR);
|
||||
// }
|
||||
|
||||
//有可能还未同意面试预约,这时候没有建立日程,只需要修改面试官
|
||||
if (interviewInfo.getFeishuCalendarId() != null && interviewInfo.getFeishuScheduleId() != null) {
|
||||
//V1.3 需求变更为将新面试官拉入原面试官日程,而非删除和新增日程
|
||||
//1. 原面试官面试日程信息
|
||||
String oldInterviewerId = CurrentUserHolder.getUserId();
|
||||
UpdateCalendarEventDTO updateCalendarEventDTO = new UpdateCalendarEventDTO();
|
||||
updateCalendarEventDTO.setUserId(oldInterviewerId);
|
||||
updateCalendarEventDTO.setCalendarId(interviewInfo.getFeishuCalendarId());
|
||||
updateCalendarEventDTO.setEventId(interviewInfo.getFeishuScheduleId());
|
||||
updateCalendarEventDTO.setStartTime(DateUtil.parse(interviewInfo.getStartTime()).getTime());
|
||||
updateCalendarEventDTO.setEndTime(DateUtil.parse(interviewInfo.getEndTime()).getTime());
|
||||
updateCalendarEventDTO.setSummary(generateInterviewTitle(request.getPartnerLineId()));
|
||||
|
||||
//2. 邀请新面试官加入日程
|
||||
List<String> list = new ArrayList();
|
||||
list.add(request.getNewInterviewerId());
|
||||
//当前招商经理不是面试官,但是日程在招商经理这里
|
||||
if (!oldInterviewerId.equals(list.get(0))) {
|
||||
list.add(oldInterviewerId);
|
||||
}
|
||||
updateCalendarEventDTO.setJoinUserIds(list);
|
||||
UserCalendarsEventDTO userCalendarsEventDTO = isvHttpRequest.updateUserCalendarEvent(updateCalendarEventDTO);
|
||||
if(userCalendarsEventDTO == null ){
|
||||
throw new ApiException(ErrorCodeEnum.FEISHU_UPDATE_SCHEDULE_ERROR);
|
||||
}
|
||||
}
|
||||
|
||||
// 3.面试信息计划变更
|
||||
@@ -195,8 +217,8 @@ public class InterviewServiceImpl implements InterviewService {
|
||||
record.setId(Long.valueOf(request.getInterviewPlanId()));
|
||||
record.setInterviewer(request.getNewInterviewerId());
|
||||
record.setUpdateTime(new Date());
|
||||
record.setFeishuCalendarId(userCalendarEvent.getCalendarId());
|
||||
record.setFeishuScheduleId(userCalendarEvent.getEventId());
|
||||
// record.setFeishuCalendarId(userCalendarEvent.getCalendarId());
|
||||
// record.setFeishuScheduleId(userCalendarEvent.getEventId());
|
||||
hyPartnerInterviewPlanMapper.updateByPrimaryKeySelective(record);
|
||||
|
||||
//更新面试信息
|
||||
@@ -254,7 +276,13 @@ public class InterviewServiceImpl implements InterviewService {
|
||||
createCalendarEventDTO.setStartTime(DateUtil.parse(request.getNewStartBookingTime()).getTime());
|
||||
createCalendarEventDTO.setEndTime(DateUtil.parse(request.getNewEndBookingTime()).getTime());
|
||||
createCalendarEventDTO.setUserId(interviewInfo.getInterviewerId());
|
||||
createCalendarEventDTO.setJoinUserIds(Arrays.asList(interviewInfo.getInterviewerId()));
|
||||
List<String> list = Arrays.asList(interviewInfo.getInterviewerId());
|
||||
//可能当前招商经理不是面试官,但是日程在招商经理这里
|
||||
String userId = CurrentUserHolder.getUserId();
|
||||
if (!userId.equals(list.get(0))) {
|
||||
list.add(userId);
|
||||
}
|
||||
createCalendarEventDTO.setJoinUserIds(list);
|
||||
createCalendarEventDTO.setSummary(generateInterviewTitle(interviewInfo.getPartnerLineId()));
|
||||
UserCalendarsEventDTO userCalendarEvent = isvHttpRequest.createUserCalendarEvent(createCalendarEventDTO);
|
||||
if (userCalendarEvent == null) {
|
||||
|
||||
@@ -1,11 +1,29 @@
|
||||
package com.cool.store.service.impl.workflow;
|
||||
|
||||
import cn.hutool.core.date.DateUtil;
|
||||
import com.cool.store.entity.HyPartnerInterviewDO;
|
||||
import com.cool.store.enums.ErrorCodeEnum;
|
||||
import com.cool.store.enums.RoomStatus;
|
||||
import com.cool.store.enums.WorkflowStageEnum;
|
||||
import com.cool.store.enums.WorkflowStatusEnum;
|
||||
import com.cool.store.exception.ApiException;
|
||||
import com.cool.store.exception.ServiceException;
|
||||
import com.cool.store.mapper.HyPartnerInterviewMapper;
|
||||
import com.cool.store.mapper.HyPartnerInterviewPlanMapper;
|
||||
import com.cool.store.request.CloseFollowRequest;
|
||||
import com.cool.store.request.EntrustOthersReq;
|
||||
import com.cool.store.request.TransferInvestmentManagerRequest;
|
||||
import com.cool.store.service.InterviewService;
|
||||
import com.cool.store.vo.interview.InterviewVO;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author zhangchenbiao
|
||||
* @FileName: IntentWorkFlowService
|
||||
|
||||
@@ -1,11 +1,25 @@
|
||||
package com.cool.store.service.impl.workflow;
|
||||
|
||||
import com.cool.store.entity.HyPartnerInterviewDO;
|
||||
import com.cool.store.enums.ErrorCodeEnum;
|
||||
import com.cool.store.enums.WorkflowStageEnum;
|
||||
import com.cool.store.exception.ApiException;
|
||||
import com.cool.store.exception.ServiceException;
|
||||
import com.cool.store.mapper.HyPartnerInterviewMapper;
|
||||
import com.cool.store.mapper.HyPartnerInterviewPlanMapper;
|
||||
import com.cool.store.request.CloseFollowRequest;
|
||||
import com.cool.store.request.EntrustOthersReq;
|
||||
import com.cool.store.request.TransferInvestmentManagerRequest;
|
||||
import com.cool.store.service.InterviewService;
|
||||
import com.cool.store.vo.interview.InterviewVO;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author zhangchenbiao
|
||||
* @FileName: ReservationWorkFlowService
|
||||
@@ -16,6 +30,15 @@ import org.springframework.stereotype.Service;
|
||||
@Service
|
||||
public class ReservationWorkFlowService extends WorkFlowBaseService {
|
||||
|
||||
@Autowired
|
||||
private HyPartnerInterviewMapper hyPartnerInterviewMapper;
|
||||
|
||||
@Autowired
|
||||
private HyPartnerInterviewPlanMapper hyPartnerInterviewPlanMapper;
|
||||
|
||||
@Autowired
|
||||
private InterviewService interviewService;
|
||||
|
||||
@Override
|
||||
public WorkflowStageEnum getWorkFlowStage() {
|
||||
return WorkflowStageEnum.RESERVATION;
|
||||
@@ -27,7 +50,22 @@ public class ReservationWorkFlowService extends WorkFlowBaseService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void transferInvestmentManager(TransferInvestmentManagerRequest request) {
|
||||
log.info("转让招商经理~");
|
||||
public void transferInvestmentManager(TransferInvestmentManagerRequest request) throws ApiException {
|
||||
Long lineId = request.getLineId();
|
||||
//根据线索id查询面试信息
|
||||
List<HyPartnerInterviewDO> interviewBaseInfos = hyPartnerInterviewMapper.getInterviewBaseInfoListByLineIds(Arrays.asList(lineId));
|
||||
if (CollectionUtils.isEmpty(interviewBaseInfos)) {
|
||||
throw new ServiceException(ErrorCodeEnum.INTERVIEW_NOT_EXIST);
|
||||
}
|
||||
HyPartnerInterviewDO interviewBaseInfo = interviewBaseInfos.get(0);
|
||||
InterviewVO interviewInfo = hyPartnerInterviewPlanMapper.getInterviewInfo(String.valueOf(interviewBaseInfo.getInterviewPlanId()));
|
||||
if (null == interviewInfo) {
|
||||
throw new ServiceException(ErrorCodeEnum.INTERVIEW_NOT_EXIST);
|
||||
}
|
||||
EntrustOthersReq entrustOthersReq = new EntrustOthersReq();
|
||||
entrustOthersReq.setInterviewPlanId(interviewInfo.getInterviewPlanId());
|
||||
entrustOthersReq.setNewInterviewerId(request.getUserId());
|
||||
entrustOthersReq.setPartnerLineId(interviewInfo.getPartnerLineId());
|
||||
interviewService.entrustOthers(entrustOthersReq);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user