diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyInterviewDAO.java b/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyInterviewDAO.java index c0ebcce7f..686ccc629 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyInterviewDAO.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/dao/HyInterviewDAO.java @@ -7,6 +7,7 @@ import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.util.List; @Repository public class HyInterviewDAO { @@ -31,4 +32,18 @@ public class HyInterviewDAO { lineInfoMapper.updateWorkflowStatus(lineId, status.getCode()); } + /** + * 根据线索id批量修改面试状态和线索表子流程状态 + * @param lineIds + * @param status + */ + @Transactional + public void batchUpdateInterviewWorkflowStatus(List lineIds, Integer status){ + //修改面试状态 + interviewMapper.batchUpdateStatusByLineIds(lineIds, status); + //修改线索表子流程状态 + lineInfoMapper.batchUpdateStatusByLineIds(lineIds, status); + + } + } diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerInterviewMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerInterviewMapper.java index 8a55371ab..a04704e1d 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerInterviewMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerInterviewMapper.java @@ -69,7 +69,11 @@ public interface HyPartnerInterviewMapper { * @return */ List getInterviewBaseInfoList(@Param("record") GetInterviewListReq request); - void batchUpdateInterviewStatus(@Param("interviewIds") List interviewIdList, @Param("interviewStatus") Integer interviewStatus); + + List getInterviewBaseInfoListByLineIds(@Param("lineIds") List lineIds); + void batchUpdateInterviewStatus(@Param("interviewIds") List interviewIdList, @Param("status") Integer interviewStatus,@Param("deleted") Integer deleted); + + void batchUpdateStatusByLineIds(@Param("lineIds") List lineIds, @Param("status") Integer interviewStatus); HyPartnerInterviewDO getInterviewInfoByInterviewPlanId(@Param("interviewPlanId") String interviewPlanId); diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerInterviewPlanMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerInterviewPlanMapper.java index 71280f73f..dc43b813b 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerInterviewPlanMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerInterviewPlanMapper.java @@ -119,10 +119,9 @@ public interface HyPartnerInterviewPlanMapper { /** * 仅适用于开启面试房间 - * @param record - * @param roomStatus + * @param lineIds */ - void openInterviewRoom(@Param("record") HyPartnerInterviewPlanDO record,@Param("roomStatus")Integer roomStatus); + void openInterviewRoom(@Param("lineIds") List lineIds,@Param("roomStatus")Integer roomStatu); /** * 仅适用于关闭面试房间 @@ -142,4 +141,5 @@ public interface HyPartnerInterviewPlanMapper { */ Integer getRoomStatus(@Param("interviewPlanId") String interviewPlanId); + } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerLineInfoMapper.java b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerLineInfoMapper.java index 666d50413..24314e0ca 100644 --- a/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerLineInfoMapper.java +++ b/coolstore-partner-dao/src/main/java/com/cool/store/mapper/HyPartnerLineInfoMapper.java @@ -215,4 +215,13 @@ public interface HyPartnerLineInfoMapper { * 修改线索状态 */ void updateWorkflowStatus(@Param("lineId") String lineId, @Param("status") String status); + + List getOverTimeReserveLineList(@Param("deadlineEnd") Date deadlineEnd, + @Param("workflowStage") String workflowStage, + @Param("workflowStatus") String workflowStatus); + + List getWaitForOpenInterviewLineList(@Param("startTime") Date startTime, + @Param("endTime") Date endTime); + + void batchUpdateStatusByLineIds(@Param("lineIds") List lineIds, @Param("status")Integer status); } \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewMapper.xml index 29edaeaa1..9402cbbd6 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewMapper.xml @@ -363,8 +363,11 @@ UPDATE hy_partner_interview - - status = #{status} + + status = #{status}, + + + deleted = #{deleted}, WHERE id in @@ -389,7 +392,7 @@ + + @@ -435,5 +463,12 @@ FROM hy_partner_interview WHERE interview_plan_id = #{interviewPlanId} + \ No newline at end of file diff --git a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewPlanMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewPlanMapper.xml index 994cb0277..6782ac0e8 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewPlanMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerInterviewPlanMapper.xml @@ -221,18 +221,11 @@ update hy_partner_interview_plan set room_status = #{roomStatus},update_time = now() - - and room_status = #{record.roomStatus} - - - and start_time >= #{record.startTime} - - - and start_time <= #{record.endTime} - - - and deleted = #{deleted} - + partner_line_id in + + #{item} + + and deleted = 0 diff --git a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerLineInfoMapper.xml b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerLineInfoMapper.xml index a25dfcd14..b422759e5 100644 --- a/coolstore-partner-dao/src/main/resources/mapper/HyPartnerLineInfoMapper.xml +++ b/coolstore-partner-dao/src/main/resources/mapper/HyPartnerLineInfoMapper.xml @@ -575,11 +575,44 @@ WHERE id = #{interviewPlanId} ) + + UPDATE hy_partner_line_info SET workflow_status = #{status} WHERE id = #{lineId} + + UPDATE hy_partner_line_info + SET workflow_status = #{status} + WHERE id IN + + #{lineId} + + \ No newline at end of file diff --git a/coolstore-partner-service/src/main/java/com/cool/store/job/JobHandler.java b/coolstore-partner-service/src/main/java/com/cool/store/job/JobHandler.java index 4f5ae6b51..a62df02c9 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/job/JobHandler.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/job/JobHandler.java @@ -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("面试缺席定时任务开始"); diff --git a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerInterviewPlanServiceImpl.java b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerInterviewPlanServiceImpl.java index 369b0f6a4..181944ca6 100644 --- a/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerInterviewPlanServiceImpl.java +++ b/coolstore-partner-service/src/main/java/com/cool/store/service/impl/HyPartnerInterviewPlanServiceImpl.java @@ -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 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 interviewBaseInfoList = hyPartnerInterviewMapper.getInterviewBaseInfoList(getInterviewListReq); + List overTimeReserveLineList = hyPartnerLineInfoMapper.getOverTimeReserveLineList(new Date(), WorkflowStageEnum.RESERVATION.getCode(), WorkflowStatusEnum.RESERVATION_0.getCode()); + if(CollectionUtils.isEmpty(overTimeReserveLineList)){ + return; + } + List lineIds = overTimeReserveLineList.stream().map(o -> o.getId()).collect(Collectors.toList()); + List 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 waitForOpenInterviewLineList = hyPartnerLineInfoMapper.getWaitForOpenInterviewLineList(startTime, DateUtil.offsetMinute(startTime, 5)); + if(CollectionUtils.isEmpty(waitForOpenInterviewLineList)){ + return; + } + //更新房间状态为开启 + List 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 interviewBaseInfoList = hyPartnerInterviewMapper.getInterviewBaseInfoList(getInterviewListReq); if(CollectionUtils.isEmpty(interviewBaseInfoList)){ @@ -206,17 +220,17 @@ public class HyPartnerInterviewPlanServiceImpl implements HyPartnerInterviewPlan * @param rejectPublicReason */ public void handleOverTimeInterview(List interviewBaseInfoList,String rejectPublicReason){ - //1.更新面试信息表中超时未预约的面试信息 + //1.更新面试信息表中超时的面试信息 List 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 interviewPlanIds = interviewBaseInfoList.stream().map(HyPartnerInterviewDO::getInterviewPlanId).distinct().collect(Collectors.toList()); hyPartnerInterviewPlanMapper.batchDeleteInterviewPlans(interviewPlanIds); //3.更新线索表中超时未预约的线路信息 List 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);