亲子活动模块整改-1.1
This commit is contained in:
+8
-24
@@ -370,14 +370,15 @@ public class FamilyActivityServiceImpl extends BaseServiceImpl<FamilyActivity> i
|
|||||||
|
|
||||||
FamilyActivity activity = dao().fetch(FamilyActivity.class, activityId);
|
FamilyActivity activity = dao().fetch(FamilyActivity.class, activityId);
|
||||||
if (formalSignUp && Objects.equals(course.getReserveMode(), 2) && isWithinSignUpTime(activity)) {
|
if (formalSignUp && Objects.equals(course.getReserveMode(), 2) && isWithinSignUpTime(activity)) {
|
||||||
promoteWaitingUsers(course, currentSignUp);
|
promoteWaitingUsers(course);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 按报名时间顺序递补候补人员。本人和家属是否计入总人数,严格按课程类型配置计算。
|
* 按报名时间顺序从全部分工会候补中查找当前可容纳的人员。
|
||||||
|
* 本人和家属是否计入总人数,严格按课程类型配置计算。
|
||||||
*/
|
*/
|
||||||
private void promoteWaitingUsers(FamilyCourse course, FamilyUser canceledSignUp) {
|
private void promoteWaitingUsers(FamilyCourse course) {
|
||||||
FamilyType type = dao().fetch(FamilyType.class, course.getCourseType());
|
FamilyType type = dao().fetch(FamilyType.class, course.getCourseType());
|
||||||
if (type == null) {
|
if (type == null) {
|
||||||
return;
|
return;
|
||||||
@@ -386,10 +387,6 @@ public class FamilyActivityServiceImpl extends BaseServiceImpl<FamilyActivity> i
|
|||||||
Cnd waitingCnd = Cnd.where(FamilyUser::getActivityId, "=", course.getActivityId())
|
Cnd waitingCnd = Cnd.where(FamilyUser::getActivityId, "=", course.getActivityId())
|
||||||
.and(FamilyUser::getCourseId, "=", course.getId())
|
.and(FamilyUser::getCourseId, "=", course.getId())
|
||||||
.and(FamilyUser::getState, "=", 2);
|
.and(FamilyUser::getState, "=", 2);
|
||||||
// 配置了分工会名额时,取消释放的是原分工会名额,只允许该分工会候补人员递补。
|
|
||||||
if (Lang.isNotEmpty(course.getUnionLimit())) {
|
|
||||||
waitingCnd.and(FamilyUser::getUnionId, "=", canceledSignUp.getUnionId());
|
|
||||||
}
|
|
||||||
waitingCnd.asc(FamilyUser::getSignUpTime);
|
waitingCnd.asc(FamilyUser::getSignUpTime);
|
||||||
|
|
||||||
List<FamilyUser> waitingUsers = dao().query(FamilyUser.class, waitingCnd);
|
List<FamilyUser> waitingUsers = dao().query(FamilyUser.class, waitingCnd);
|
||||||
@@ -397,9 +394,9 @@ public class FamilyActivityServiceImpl extends BaseServiceImpl<FamilyActivity> i
|
|||||||
int familyNumber = Lang.isNotEmpty(waitingUser.getMobileColumnsValue())
|
int familyNumber = Lang.isNotEmpty(waitingUser.getMobileColumnsValue())
|
||||||
? waitingUser.getMobileColumnsValue().size() : 0;
|
? waitingUser.getMobileColumnsValue().size() : 0;
|
||||||
int contribution = getFamilyContribution(type, familyNumber);
|
int contribution = getFamilyContribution(type, familyNumber);
|
||||||
// 严格保持候补先后顺序;排在前面的人员当前无法容纳时,不跨过该人员补后续人员。
|
// 当前候补所需人数或原选时段无法容纳时,继续查找后续能够使用空余名额的候补。
|
||||||
if (!canPromoteWaitingUser(course, waitingUser, contribution)) {
|
if (!canPromoteWaitingUser(course, waitingUser, contribution)) {
|
||||||
break;
|
continue;
|
||||||
}
|
}
|
||||||
waitingUser.setState(3);
|
waitingUser.setState(3);
|
||||||
dao().update(waitingUser);
|
dao().update(waitingUser);
|
||||||
@@ -407,7 +404,8 @@ public class FamilyActivityServiceImpl extends BaseServiceImpl<FamilyActivity> i
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 校验候补人员转正后的课程总人数、分工会人数和独立时段人数是否均不超限。
|
* 校验候补人员转正后的课程总人数和独立时段人数是否均不超限。
|
||||||
|
* 自动递补不校验分工会限制,避免空余名额因原分工会没有合适候补而闲置。
|
||||||
*/
|
*/
|
||||||
private boolean canPromoteWaitingUser(FamilyCourse course, FamilyUser waitingUser, int contribution) {
|
private boolean canPromoteWaitingUser(FamilyCourse course, FamilyUser waitingUser, int contribution) {
|
||||||
int courseLimit = course.getCoursePeopleNumber();
|
int courseLimit = course.getCoursePeopleNumber();
|
||||||
@@ -417,20 +415,6 @@ public class FamilyActivityServiceImpl extends BaseServiceImpl<FamilyActivity> i
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Lang.isNotEmpty(course.getUnionLimit())) {
|
|
||||||
NutMap unionLimit = course.getUnionLimit().stream()
|
|
||||||
.filter(item -> Objects.equals(item.getString("id"), waitingUser.getUnionId()))
|
|
||||||
.findFirst().orElse(null);
|
|
||||||
if (unionLimit == null) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
int unionCount = statisticsService.queryCourseCount(
|
|
||||||
course.getId(), course.getCourseType(), waitingUser.getUnionId());
|
|
||||||
if (unionCount + contribution > unionLimit.getInt("limitCount")) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return hasAvailableCourseTime(course, waitingUser);
|
return hasAvailableCourseTime(course, waitingUser);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user