工作台预约面试待审核的增加对应时段预约情况信息

This commit is contained in:
feng.li
2023-11-09 14:43:56 +08:00
parent bc986590e9
commit 80f0f5b6d2
4 changed files with 37 additions and 2 deletions

View File

@@ -570,10 +570,10 @@
</select> </select>
<select id="getInterviewBookSituation" resultType="com.cool.store.entity.HyPartnerInterviewBookSituation"> <select id="getInterviewBookSituation" resultType="com.cool.store.entity.HyPartnerInterviewBookSituation">
SELECT t_booking_times.*, IFNULL(application_approved, 0) AS booked SELECT t_booking_times.*, IFNULL(application_approved, 0) AS booked, partner_id AS booked_partner_id
FROM ( FROM (
-- 查询已被预约成功的时间段 -- 查询已被预约成功的时间段
SELECT t1.start_time, t1.end_time, t1.application_approved, t1.deleted SELECT t1.start_time, t1.end_time, t1.application_approved, t1.partner_id, t1.deleted
FROM hy_partner_interview_plan t1 FROM hy_partner_interview_plan t1
LEFT JOIN hy_partner_interview t2 ON t1.id = t2.interview_plan_id LEFT JOIN hy_partner_interview t2 ON t1.id = t2.interview_plan_id
WHERE t1.interviewer = #{interviewerId} WHERE t1.interviewer = #{interviewerId}

View File

@@ -30,4 +30,11 @@ public class HyPartnerInterviewBookSituation {
@ApiModelProperty("是否已被预定") @ApiModelProperty("是否已被预定")
private Boolean booked; private Boolean booked;
@ApiModelProperty("预约成功人的 partnerId")
private String bookedPartnerId;
public HyPartnerInterviewBookSituation(Integer bookingCount, Boolean booked) {
this.bookingCount = bookingCount;
this.booked = booked;
}
} }

View File

@@ -84,4 +84,11 @@ public class PartnerInterviewInfoVO {
@ApiModelProperty("来源名称") @ApiModelProperty("来源名称")
private String userChannelName; private String userChannelName;
@ApiModelProperty("是否已被预约")
private Boolean booked;
@ApiModelProperty("该时间段面试预约人数")
private Integer appointmentCount;
} }

View File

@@ -152,6 +152,17 @@ public class HyPartnerInterviewPlanServiceImpl implements HyPartnerInterviewPlan
Map<Long, HyPartnerLineInfoDO> hyPartnerLineInfoDOMap = hyPartnerLineInfoDOS.stream().collect(Collectors.toMap(HyPartnerLineInfoDO::getId, data -> data)); Map<Long, HyPartnerLineInfoDO> hyPartnerLineInfoDOMap = hyPartnerLineInfoDOS.stream().collect(Collectors.toMap(HyPartnerLineInfoDO::getId, data -> data));
List<String> userPortraitList = list.stream().filter(x -> StringUtils.isNotEmpty(x.getUserPortrait() )).map(PartnerInterviewInfoDTO::getUserPortrait).collect(Collectors.toList()); List<String> userPortraitList = list.stream().filter(x -> StringUtils.isNotEmpty(x.getUserPortrait() )).map(PartnerInterviewInfoDTO::getUserPortrait).collect(Collectors.toList());
Map<Long, String> userPortraitMap = labelService.getUserPortraitMap(userPortraitList); Map<Long, String> userPortraitMap = labelService.getUserPortraitMap(userPortraitList);
//获取对应时间段的预约情况
Map<String, HyPartnerInterviewBookSituation> orderSituationMap;
if (CommonConstants.PENDING.equals(type)) {
Optional<PartnerInterviewInfoDTO> minInterviewStartTime = list.stream().min((info1, info2) -> info1.getStartTime().compareTo(info2.getStartTime()));
Optional<PartnerInterviewInfoDTO> maxInterviewEndTime = list.stream().max((info1, info2) -> info1.getEndTime().compareTo(info2.getEndTime()));
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
List<HyPartnerInterviewBookSituation> interviewBookSituation = hyPartnerInterviewPlanMapper.getInterviewBookSituation(userId, dateFormat.format(minInterviewStartTime.get().getStartTime()), dateFormat.format(maxInterviewEndTime.get().getEndTime()));
orderSituationMap = interviewBookSituation.stream().collect(Collectors.toMap(HyPartnerInterviewBookSituation::getStartTime, situation -> situation));
} else {
orderSituationMap = new HashMap<>();
}
list.stream().forEach(x->{ list.stream().forEach(x->{
PartnerInterviewInfoVO partnerInterviewInfoVO = convertPartnerInterviewInfoDTOToVo(x,userPortraitMap,userNameMap.get(x.getPartnerId()),channelMap); PartnerInterviewInfoVO partnerInterviewInfoVO = convertPartnerInterviewInfoDTOToVo(x,userPortraitMap,userNameMap.get(x.getPartnerId()),channelMap);
partnerInterviewInfoVO.setPartnerName(userNameMap.getOrDefault(x.getPartnerId(),new HyPartnerUserInfoDO()).getUsername()); partnerInterviewInfoVO.setPartnerName(userNameMap.getOrDefault(x.getPartnerId(),new HyPartnerUserInfoDO()).getUsername());
@@ -160,6 +171,16 @@ public class HyPartnerInterviewPlanServiceImpl implements HyPartnerInterviewPlan
partnerInterviewInfoVO.setInterviewerPhone(interviewerUserMap.getOrDefault(x.getInterviewer(),new EnterpriseUserDO()).getMobile()); partnerInterviewInfoVO.setInterviewerPhone(interviewerUserMap.getOrDefault(x.getInterviewer(),new EnterpriseUserDO()).getMobile());
partnerInterviewInfoVO.setLineStatus(hyPartnerLineInfoDOMap.getOrDefault(x.getPartnerLineId(),new HyPartnerLineInfoDO()).getLineStatus()); partnerInterviewInfoVO.setLineStatus(hyPartnerLineInfoDOMap.getOrDefault(x.getPartnerLineId(),new HyPartnerLineInfoDO()).getLineStatus());
partnerInterviewInfoVO.setLineId(hyPartnerLineInfoDOMap.getOrDefault(x.getPartnerLineId(),new HyPartnerLineInfoDO()).getId()); partnerInterviewInfoVO.setLineId(hyPartnerLineInfoDOMap.getOrDefault(x.getPartnerLineId(),new HyPartnerLineInfoDO()).getId());
if (CommonConstants.PENDING.equals(type)) {
//设置对应时间段的被预约情况
HyPartnerInterviewBookSituation bookSituation = orderSituationMap.getOrDefault(partnerInterviewInfoVO.getStartTime().replace("/", "-"), new HyPartnerInterviewBookSituation(0, Boolean.FALSE));
Integer appointmentCount = bookSituation.getBookingCount();
//预约人数需要减去自己
appointmentCount = appointmentCount == 0 ? appointmentCount : appointmentCount - 1;
partnerInterviewInfoVO.setAppointmentCount(appointmentCount);
//是否被预约
partnerInterviewInfoVO.setBooked(bookSituation.getBooked());
}
result.add(partnerInterviewInfoVO); result.add(partnerInterviewInfoVO);
}); });
partnerInterviewInfoList.setList(result); partnerInterviewInfoList.setList(result);