zhuyifan

fix(mealorder): 修复2025 年 9 月 28 日的订餐问题

- 在 buildNextWeekMeals 方法中添加特殊日期处理逻辑
- 如果 nextWeekStart前一天是 2025-09-28,则添加该日期的菜单
-优化代码结构,提高可读性和可维护性
......@@ -3,11 +3,19 @@ package com.infoloop.tianting.logic.task;
import com.infoloop.tianting.clientinventoryservice.SingleClientRpcResponse;
import com.infoloop.tianting.context.LoginContextHolder;
import com.infoloop.tianting.enums.LoginSourceEnum;
import com.infoloop.tianting.mealorderservice.*;
import com.infoloop.tianting.mealorderservice.MealOrderCreation;
import com.infoloop.tianting.mealorderservice.MealOrderOrderMethodEnum;
import com.infoloop.tianting.mealorderservice.MenuSchedule;
import com.infoloop.tianting.mealorderservice.SingleDinerMealSuspensionRecordRpcResponse;
import com.infoloop.tianting.mealorderservice.SingleDinerRpcResponse;
import com.infoloop.tianting.mealorderservice.SingleGradeClassRpcResponse;
import com.infoloop.tianting.mealorderservice.SingleMealMenuRecordRpcResponse;
import com.infoloop.tianting.mealorderservice.SingleMealOrderRpcResponse;
import com.infoloop.tianting.mealorderservice.SingleMpAccountDinerRefRpcResponse;
import com.infoloop.tianting.service.SuspensionService;
import com.infoloop.tianting.service.client.ClientInventoryServiceRpcClient;
import com.infoloop.tianting.service.client.DeliveryRuleServiceRpcClient;
import com.infoloop.tianting.service.client.MealOrderServiceRpcClient;
import com.infoloop.tianting.service.SuspensionService;
import com.infoloop.tianting.store.WeeklyTaskStore;
import com.infoloop.tianting.utils.DateUtil;
import lombok.RequiredArgsConstructor;
......@@ -273,7 +281,7 @@ public class AutoCreateMealOrderTask {
private List<MenuSchedule> buildNextWeekMeals(ZonedDateTime nextWeekStart,
java.util.List<SuspensionService.SuspensionInterval> intervals,
Map<String, Integer> holidayMap) {
return IntStream.range(0, 7)
List<MenuSchedule> meals = new ArrayList<>(IntStream.range(0, 7)
.mapToObj(i -> {
final var date = nextWeekStart.plusDays(i);
final var dateStr = date.format(DateUtil.YYYY_MM_DD);
......@@ -291,14 +299,20 @@ public class AutoCreateMealOrderTask {
.anyMatch(interval -> !(dateEnd < interval.startAt || dateStart > interval.endAt));
if (overlaps) return null;
}
return MenuSchedule.newBuilder()
.setDate(date.format(DateUtil.YYYY_MM_DD_LEFT_SYMBOL))
.setMenu("A")
.build();
})
.filter(Objects::nonNull)
.toList();
.toList());
if (nextWeekStart.minusDays(1).format(DateUtil.YYYY_MM_DD).equals("2025-09-28")) {
meals.add(MenuSchedule.newBuilder()
.setDate("2025-09-28")
.setMenu("A")
.build());
}
return meals;
}
private LocalDate getThisWeekDay(LocalDate now, DayOfWeek target) {
......