bugfix: 修复计算有预约设备时没有考虑通过但需要协助的情况

This commit is contained in:
BenjaminNH 2025-07-02 17:22:21 +08:00
parent 110f802a1f
commit 0f9c143d46

View File

@ -16,6 +16,7 @@ import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects; import java.util.Objects;
@ -48,7 +49,7 @@ public class ReservationServiceImpl implements ReservationService {
LocalDate endTime = now.plusDays(days); LocalDate endTime = now.plusDays(days);
return reservationMapper.selectList(new LambdaQueryWrapper<Reservation>() return reservationMapper.selectList(new LambdaQueryWrapper<Reservation>()
.in(Reservation::getDeviceId, devicesIds) .in(Reservation::getDeviceId, devicesIds)
.eq(Reservation::getStatus, ReservationStatus.APPROVED) .in(Reservation::getStatus, List.of(ReservationStatus.APPROVED, ReservationStatus.APPROVED_ASSIST))
.between(Reservation::getStartTime, now, endTime)); .between(Reservation::getStartTime, now, endTime));
} }
@ -71,6 +72,13 @@ public class ReservationServiceImpl implements ReservationService {
Page<Reservation> reservations = reservationMapper.selectPage(pageRequest, new LambdaQueryWrapper<Reservation>() Page<Reservation> reservations = reservationMapper.selectPage(pageRequest, new LambdaQueryWrapper<Reservation>()
.eq(Reservation::getUserId, userId) .eq(Reservation::getUserId, userId)
.orderByDesc(Reservation::getCreatedTime)); .orderByDesc(Reservation::getCreatedTime));
Page<UserReservationVO> res = PageUtil.copyPage(reservations);
if (reservations.getRecords().isEmpty()) {
res.setTotal(0);
res.setRecords(Collections.EMPTY_LIST);
return res;
}
// 获取设备名称 // 获取设备名称
List<Long> deviceIds = reservations.getRecords().stream() List<Long> deviceIds = reservations.getRecords().stream()
.map(Reservation::getDeviceId) .map(Reservation::getDeviceId)
@ -88,7 +96,7 @@ public class ReservationServiceImpl implements ReservationService {
.distinct() .distinct()
.toList(); .toList();
Page<UserReservationVO> res = PageUtil.copyPage(reservations);
List<UserReservationVO> vos; List<UserReservationVO> vos;
Map<Long, User> deviceAdminMap = userMapper.selectList(new LambdaQueryWrapper<User>() Map<Long, User> deviceAdminMap = userMapper.selectList(new LambdaQueryWrapper<User>()
.in(User::getId, deviceAdminIDs)) .in(User::getId, deviceAdminIDs))
@ -106,7 +114,7 @@ public class ReservationServiceImpl implements ReservationService {
public List<TimeRangeVO> getUnavailableTimes(Long id) { public List<TimeRangeVO> getUnavailableTimes(Long id) {
List<Reservation> reservations = reservationMapper.selectList(new LambdaQueryWrapper<Reservation>() List<Reservation> reservations = reservationMapper.selectList(new LambdaQueryWrapper<Reservation>()
.eq(Reservation::getDeviceId, id) .eq(Reservation::getDeviceId, id)
.eq(Reservation::getStatus, "APPROVED") .in(Reservation::getStatus, List.of(ReservationStatus.APPROVED, ReservationStatus.APPROVED_ASSIST))
.gt(Reservation::getEndTime, LocalDate.now())); .gt(Reservation::getEndTime, LocalDate.now()));
return reservations.stream() return reservations.stream()