自动更新线索状态

This commit is contained in:
俞扬
2023-06-26 03:22:23 +08:00
parent 6ba879d09c
commit 16c94798f3
9 changed files with 147 additions and 43 deletions

View File

@@ -40,9 +40,9 @@ public class JobHandler {
@XxlJob("updateInterviewOverTime")
public void updateInterviewOverTime(){
try {
log.info("面试超时定时任务开始");
log.info("面试超时预约定时任务开始");
hyPartnerInterviewPlanService.updateInterviewOverTime();
log.info("面试超时定时任务结束");
log.info("面试超时预约定时任务结束");
XxlJobHelper.handleSuccess();
}catch (Exception e){
log.error("面试超时定时任务异常",e);
@@ -63,6 +63,7 @@ public class JobHandler {
}
}
@XxlJob("updateAbsentInterview")
public void updateAbsentInterview(){
try {
log.info("面试缺席定时任务开始");

View File

@@ -2,6 +2,7 @@ package com.cool.store.service.impl;
import cn.hutool.core.date.DateUtil;
import com.cool.store.constants.CommonConstants;
import com.cool.store.dao.HyInterviewDAO;
import com.cool.store.dao.HyPartnerInterviewPlanDAO;
import com.cool.store.dao.HyPartnerLineInfoDAO;
import com.cool.store.dao.HyPartnerUserInfoDAO;
@@ -15,6 +16,7 @@ import com.cool.store.enums.WorkflowStageEnum;
import com.cool.store.enums.WorkflowStatusEnum;
import com.cool.store.mapper.HyPartnerInterviewMapper;
import com.cool.store.mapper.HyPartnerInterviewPlanMapper;
import com.cool.store.mapper.HyPartnerLineInfoMapper;
import com.cool.store.request.CloseFollowRequest;
import com.cool.store.request.GetInterviewListReq;
import com.cool.store.service.HyPartnerInterviewPlanService;
@@ -28,6 +30,7 @@ import com.google.common.collect.Lists;
import org.apache.commons.collections4.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
import java.util.ArrayList;
@@ -61,6 +64,13 @@ public class HyPartnerInterviewPlanServiceImpl implements HyPartnerInterviewPlan
@Autowired
HyPartnerLineInfoService hyPartnerLineInfoService;
@Autowired
HyPartnerLineInfoMapper hyPartnerLineInfoMapper;
@Autowired
private HyInterviewDAO interviewDAO;
@Override
public List<InterviewDetailInfoVO> getInterviewPlanList(String userId) {
String currentTime = DateUtil.format(new Date(), CoolDateUtils.DATE_FORMAT_DAY);
@@ -155,15 +165,14 @@ public class HyPartnerInterviewPlanServiceImpl implements HyPartnerInterviewPlan
}
@Override
@Transactional
public void updateInterviewOverTime() {
//查询三天前到两天前未预约的数据
String startTime = DateUtil.formatDate(DateUtil.offsetDay(new Date(),-3));
String endTime = DateUtil.formatDate(DateUtil.offsetDay(new Date(),-2));
GetInterviewListReq getInterviewListReq = new GetInterviewListReq();
getInterviewListReq.setStartTime(startTime);
getInterviewListReq.setEndTime(endTime);
getInterviewListReq.setStatus(Integer.valueOf(WorkflowStatusEnum.RESERVATION_0.getCode()));
List<HyPartnerInterviewDO> interviewBaseInfoList = hyPartnerInterviewMapper.getInterviewBaseInfoList(getInterviewListReq);
List<HyPartnerLineInfoDO> overTimeReserveLineList = hyPartnerLineInfoMapper.getOverTimeReserveLineList(new Date(), WorkflowStageEnum.RESERVATION.getCode(), WorkflowStatusEnum.RESERVATION_0.getCode());
if(CollectionUtils.isEmpty(overTimeReserveLineList)){
return;
}
List<Long> lineIds = overTimeReserveLineList.stream().map(o -> o.getId()).collect(Collectors.toList());
List<HyPartnerInterviewDO> interviewBaseInfoList = hyPartnerInterviewMapper.getInterviewBaseInfoListByLineIds(lineIds);
if(CollectionUtils.isEmpty(interviewBaseInfoList)){
return;
}
@@ -171,27 +180,32 @@ public class HyPartnerInterviewPlanServiceImpl implements HyPartnerInterviewPlan
}
@Override
@Transactional
public void openInterviewRoom() {
//更新会议开始时间为分钟之内的房间状态为开启
//更新会议开始时间为5分钟之内的房间状态为开启,会议状态变为已开始
Date startTime = new Date();
HyPartnerInterviewPlanDO hyPartnerInterviewPlanDO = new HyPartnerInterviewPlanDO();
hyPartnerInterviewPlanDO.setStartTime(startTime);
hyPartnerInterviewPlanDO.setEndTime(DateUtil.offsetMinute(startTime,10));
hyPartnerInterviewPlanDO.setRoomStatus(RoomStatus.WAIT_FOR_OPEN.getCode());
hyPartnerInterviewPlanDO.setDeleted(false);
hyPartnerInterviewPlanMapper.openInterviewRoom(hyPartnerInterviewPlanDO, RoomStatus.OPEN.getCode());
List<HyPartnerLineInfoDO> waitForOpenInterviewLineList = hyPartnerLineInfoMapper.getWaitForOpenInterviewLineList(startTime, DateUtil.offsetMinute(startTime, 5));
if(CollectionUtils.isEmpty(waitForOpenInterviewLineList)){
return;
}
//更新房间状态为开启
List<Long> lineIds = waitForOpenInterviewLineList.stream().map(HyPartnerLineInfoDO::getId).collect(Collectors.toList());
hyPartnerInterviewPlanMapper.openInterviewRoom(lineIds,RoomStatus.OPEN.getCode());
interviewDAO.batchUpdateInterviewWorkflowStatus(lineIds,Integer.parseInt(WorkflowStatusEnum.INTERVIEW_3.getCode()));
}
@Override
@Transactional
public void updateAbsentInterview() {
Date now = new Date();
//查询当天未参加的面试
String startTime = DateUtil.formatDate(DateUtil.offsetHour(now,-6));
String endTime = DateUtil.formatDate(now);
String startTime = DateUtil.formatDateTime(DateUtil.offsetHour(now,-6));
String endTime = DateUtil.formatDateTime(now);
GetInterviewListReq getInterviewListReq = new GetInterviewListReq();
getInterviewListReq.setStartTime(startTime);
getInterviewListReq.setEndTime(endTime);
getInterviewListReq.setStatus(Integer.valueOf(WorkflowStatusEnum.RESERVATION_0.getCode()));
getInterviewListReq.setStatus(Integer.valueOf(WorkflowStatusEnum.INTERVIEW_3.getCode()));
getInterviewListReq.setIsPartnerInterview(0);
List<HyPartnerInterviewDO> interviewBaseInfoList = hyPartnerInterviewMapper.getInterviewBaseInfoList(getInterviewListReq);
if(CollectionUtils.isEmpty(interviewBaseInfoList)){
@@ -206,17 +220,17 @@ public class HyPartnerInterviewPlanServiceImpl implements HyPartnerInterviewPlan
* @param rejectPublicReason
*/
public void handleOverTimeInterview(List<HyPartnerInterviewDO> interviewBaseInfoList,String rejectPublicReason){
//1.更新面试信息表中超时未预约的面试信息
//1.更新面试信息表中超时的面试信息
List<Long> interviewIds = interviewBaseInfoList.stream().map(HyPartnerInterviewDO::getId).distinct().collect(Collectors.toList());
hyPartnerInterviewMapper.batchUpdateInterviewStatus(interviewIds,Integer.valueOf(WorkflowStatusEnum.RESERVATION_8.getCode()));
//2.更新面试计划表中超时未预约的信息
hyPartnerInterviewMapper.batchUpdateInterviewStatus(interviewIds,Integer.valueOf(WorkflowStatusEnum.RESERVATION_8.getCode()),1);
//2.更新面试计划表中超时的信息
List<Long> interviewPlanIds = interviewBaseInfoList.stream().map(HyPartnerInterviewDO::getInterviewPlanId).distinct().collect(Collectors.toList());
hyPartnerInterviewPlanMapper.batchDeleteInterviewPlans(interviewPlanIds);
//3.更新线索表中超时未预约的线路信息
List<Long> lineIds = interviewBaseInfoList.stream().map(HyPartnerInterviewDO::getPartnerLineId).distinct().collect(Collectors.toList());
for (Long lineId : lineIds) {
CloseFollowRequest closeFollowRequest = new CloseFollowRequest();
closeFollowRequest.setRejectPublicReason("超时未面试");
closeFollowRequest.setRejectPublicReason(rejectPublicReason);
closeFollowRequest.setLineId(lineId);
closeFollowRequest.setType("overtime_interview");
hyPartnerLineInfoService.closeOrPassFollow(null,closeFollowRequest);