Browse Source

续抽增加会议时间验证

tags/24082201
WendyYang 1 year ago
parent
commit
4fb33535d8
1 changed files with 23 additions and 15 deletions
  1. +23
    -15
      pmapi/src/main/java/com/ningdatech/pmapi/meeting/task/ExpertInviteTask.java

+ 23
- 15
pmapi/src/main/java/com/ningdatech/pmapi/meeting/task/ExpertInviteTask.java View File

@@ -109,13 +109,18 @@ public class ExpertInviteTask {
log.info("暂无需要初始化的抽取会议信息"); log.info("暂无需要初始化的抽取会议信息");
return; return;
} }
Integer inviteDelay = properties.getInviteDelay();
for (InviteCacheDTO cache : caches.values()) { for (InviteCacheDTO cache : caches.values()) {
addInviteTask(cache.getMeetingId(), true, properties.getInviteDelay(), cache.getInvitedRefused());
Boolean invitedRefused = cache.getInvitedRefused();
boolean added = addInviteTask(cache.getMeetingId(), true, inviteDelay, invitedRefused);
if (!added) {
cachePlusOps.hDel(getCacheKey(cache.getMeetingId()));
}
} }
} }


/** /**
* 专家抽取校验
* 专家抽取校验(抽取数量是否不足)
* *
* @param meetingId 会议ID * @param meetingId 会议ID
* @return boolean * @return boolean
@@ -132,16 +137,16 @@ public class ExpertInviteTask {
.in(MeetingExpert::getStatus, ExpertAttendStatusEnum.AGREED.getCode()); .in(MeetingExpert::getStatus, ExpertAttendStatusEnum.AGREED.getCode());
List<MeetingExpert> experts = meetingExpertService.list(query); List<MeetingExpert> experts = meetingExpertService.list(query);
if (experts.isEmpty()) { if (experts.isEmpty()) {
return Boolean.FALSE;
return Boolean.TRUE;
} }
Map<Long, Long> cntMap = CollUtils.groupCount(experts, MeetingExpert::getRuleId); Map<Long, Long> cntMap = CollUtils.groupCount(experts, MeetingExpert::getRuleId);
for (Map.Entry<Long, RandomInviteRuleDTO> entry : ruleMap.entrySet()) { for (Map.Entry<Long, RandomInviteRuleDTO> entry : ruleMap.entrySet()) {
Long agreeCnt = cntMap.getOrDefault(entry.getKey(), 0L); Long agreeCnt = cntMap.getOrDefault(entry.getKey(), 0L);
if (agreeCnt < entry.getValue().getCount()) { if (agreeCnt < entry.getValue().getCount()) {
return Boolean.FALSE;
return Boolean.TRUE;
} }
} }
return Boolean.TRUE;
return Boolean.FALSE;
} }


/** /**
@@ -157,14 +162,15 @@ public class ExpertInviteTask {
tmpInvitedRefused = invitedRefused[0]; tmpInvitedRefused = invitedRefused[0];
} }
if (!INVITE_TASK_MAP.containsKey(meetingId)) { if (!INVITE_TASK_MAP.containsKey(meetingId)) {
addInviteTask(meetingId, false, properties.getInviteDelay(), tmpInvitedRefused);
log.info("重置会议的随机抽取状态:{}", meetingId);
LambdaUpdateWrapper<Meeting> update = Wrappers.lambdaUpdate(Meeting.class);
update.set(Meeting::getInviteStatus, false);
update.eq(Meeting::getId, meetingId);
meetingService.update(update);
InviteCacheDTO cacheVal = InviteCacheDTO.of(meetingId, tmpInvitedRefused);
cachePlusOps.hSet(getCacheKey(meetingId), cacheVal);
if (addInviteTask(meetingId, false, properties.getInviteDelay(), tmpInvitedRefused)) {
log.info("重置会议的随机抽取状态:{}", meetingId);
LambdaUpdateWrapper<Meeting> update = Wrappers.lambdaUpdate(Meeting.class);
update.set(Meeting::getInviteStatus, false);
update.eq(Meeting::getId, meetingId);
meetingService.update(update);
InviteCacheDTO cacheVal = InviteCacheDTO.of(meetingId, tmpInvitedRefused);
cachePlusOps.hSet(getCacheKey(meetingId), cacheVal);
}
} }
} }


@@ -175,12 +181,13 @@ public class ExpertInviteTask {
* @param checked 是否前置校验 * @param checked 是否前置校验
* @param delayedMinutes 延迟执行时间 * @param delayedMinutes 延迟执行时间
* @param invitedRefused 是否可以邀请被拒绝的专家 * @param invitedRefused 是否可以邀请被拒绝的专家
* @return 是否添加任务成功
* @author WendyYang * @author WendyYang
**/ **/
public void addInviteTask(Long meetingId, boolean checked, int delayedMinutes, boolean invitedRefused) {
public boolean addInviteTask(Long meetingId, boolean checked, int delayedMinutes, boolean invitedRefused) {
if (checked && !inviteCountCheck(meetingId)) { if (checked && !inviteCountCheck(meetingId)) {
// 如果抽取数量满足直接返回 // 如果抽取数量满足直接返回
return;
return Boolean.FALSE;
} }
Instant startTime = LocalDateTime.now().plusMinutes(delayedMinutes).atZone(ZoneId.systemDefault()).toInstant(); Instant startTime = LocalDateTime.now().plusMinutes(delayedMinutes).atZone(ZoneId.systemDefault()).toInstant();
ScheduledFuture<?> future = scheduler.scheduleAtFixedRate(() -> { ScheduledFuture<?> future = scheduler.scheduleAtFixedRate(() -> {
@@ -193,6 +200,7 @@ public class ExpertInviteTask {
}, startTime, Duration.ofMinutes(properties.getInviteFixedRate())); }, startTime, Duration.ofMinutes(properties.getInviteFixedRate()));
INVITE_TASK_MAP.putIfAbsent(meetingId, future); INVITE_TASK_MAP.putIfAbsent(meetingId, future);
log.info("添加专家抽取后台任务:{}", meetingId); log.info("添加专家抽取后台任务:{}", meetingId);
return Boolean.TRUE;
} }


/** /**


Loading…
Cancel
Save