zhuyifan

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

- 在 buildNextWeekMeals 方法中添加特殊日期处理逻辑
- 如果 nextWeekStart前一天是 2025-09-28,则添加该日期的菜单
-优化代码结构,提高可读性和可维护性
...@@ -3,11 +3,19 @@ package com.infoloop.tianting.logic.task; ...@@ -3,11 +3,19 @@ package com.infoloop.tianting.logic.task;
3 import com.infoloop.tianting.clientinventoryservice.SingleClientRpcResponse; 3 import com.infoloop.tianting.clientinventoryservice.SingleClientRpcResponse;
4 import com.infoloop.tianting.context.LoginContextHolder; 4 import com.infoloop.tianting.context.LoginContextHolder;
5 import com.infoloop.tianting.enums.LoginSourceEnum; 5 import com.infoloop.tianting.enums.LoginSourceEnum;
6 -import com.infoloop.tianting.mealorderservice.*; 6 +import com.infoloop.tianting.mealorderservice.MealOrderCreation;
7 +import com.infoloop.tianting.mealorderservice.MealOrderOrderMethodEnum;
8 +import com.infoloop.tianting.mealorderservice.MenuSchedule;
9 +import com.infoloop.tianting.mealorderservice.SingleDinerMealSuspensionRecordRpcResponse;
10 +import com.infoloop.tianting.mealorderservice.SingleDinerRpcResponse;
11 +import com.infoloop.tianting.mealorderservice.SingleGradeClassRpcResponse;
12 +import com.infoloop.tianting.mealorderservice.SingleMealMenuRecordRpcResponse;
13 +import com.infoloop.tianting.mealorderservice.SingleMealOrderRpcResponse;
14 +import com.infoloop.tianting.mealorderservice.SingleMpAccountDinerRefRpcResponse;
15 +import com.infoloop.tianting.service.SuspensionService;
7 import com.infoloop.tianting.service.client.ClientInventoryServiceRpcClient; 16 import com.infoloop.tianting.service.client.ClientInventoryServiceRpcClient;
8 import com.infoloop.tianting.service.client.DeliveryRuleServiceRpcClient; 17 import com.infoloop.tianting.service.client.DeliveryRuleServiceRpcClient;
9 import com.infoloop.tianting.service.client.MealOrderServiceRpcClient; 18 import com.infoloop.tianting.service.client.MealOrderServiceRpcClient;
10 -import com.infoloop.tianting.service.SuspensionService;
11 import com.infoloop.tianting.store.WeeklyTaskStore; 19 import com.infoloop.tianting.store.WeeklyTaskStore;
12 import com.infoloop.tianting.utils.DateUtil; 20 import com.infoloop.tianting.utils.DateUtil;
13 import lombok.RequiredArgsConstructor; 21 import lombok.RequiredArgsConstructor;
...@@ -273,7 +281,7 @@ public class AutoCreateMealOrderTask { ...@@ -273,7 +281,7 @@ public class AutoCreateMealOrderTask {
273 private List<MenuSchedule> buildNextWeekMeals(ZonedDateTime nextWeekStart, 281 private List<MenuSchedule> buildNextWeekMeals(ZonedDateTime nextWeekStart,
274 java.util.List<SuspensionService.SuspensionInterval> intervals, 282 java.util.List<SuspensionService.SuspensionInterval> intervals,
275 Map<String, Integer> holidayMap) { 283 Map<String, Integer> holidayMap) {
276 - return IntStream.range(0, 7) 284 + List<MenuSchedule> meals = new ArrayList<>(IntStream.range(0, 7)
277 .mapToObj(i -> { 285 .mapToObj(i -> {
278 final var date = nextWeekStart.plusDays(i); 286 final var date = nextWeekStart.plusDays(i);
279 final var dateStr = date.format(DateUtil.YYYY_MM_DD); 287 final var dateStr = date.format(DateUtil.YYYY_MM_DD);
...@@ -291,14 +299,20 @@ public class AutoCreateMealOrderTask { ...@@ -291,14 +299,20 @@ public class AutoCreateMealOrderTask {
291 .anyMatch(interval -> !(dateEnd < interval.startAt || dateStart > interval.endAt)); 299 .anyMatch(interval -> !(dateEnd < interval.startAt || dateStart > interval.endAt));
292 if (overlaps) return null; 300 if (overlaps) return null;
293 } 301 }
294 -
295 return MenuSchedule.newBuilder() 302 return MenuSchedule.newBuilder()
296 .setDate(date.format(DateUtil.YYYY_MM_DD_LEFT_SYMBOL)) 303 .setDate(date.format(DateUtil.YYYY_MM_DD_LEFT_SYMBOL))
297 .setMenu("A") 304 .setMenu("A")
298 .build(); 305 .build();
299 }) 306 })
300 .filter(Objects::nonNull) 307 .filter(Objects::nonNull)
301 - .toList(); 308 + .toList());
309 + if (nextWeekStart.minusDays(1).format(DateUtil.YYYY_MM_DD).equals("2025-09-28")) {
310 + meals.add(MenuSchedule.newBuilder()
311 + .setDate("2025-09-28")
312 + .setMenu("A")
313 + .build());
314 + }
315 + return meals;
302 } 316 }
303 317
304 private LocalDate getThisWeekDay(LocalDate now, DayOfWeek target) { 318 private LocalDate getThisWeekDay(LocalDate now, DayOfWeek target) {
......