jin.shuai

农信停餐

...@@ -28,6 +28,7 @@ import java.util.ArrayList; ...@@ -28,6 +28,7 @@ import java.util.ArrayList;
28 import java.util.Collections; 28 import java.util.Collections;
29 import java.util.Date; 29 import java.util.Date;
30 import java.util.List; 30 import java.util.List;
31 +import java.util.Map;
31 import java.util.stream.Collectors; 32 import java.util.stream.Collectors;
32 33
33 @Slf4j 34 @Slf4j
...@@ -267,6 +268,7 @@ public class MealOrderServiceImpl implements MealOrderService { ...@@ -267,6 +268,7 @@ public class MealOrderServiceImpl implements MealOrderService {
267 268
268 // 3. 获取所有订餐人信息 269 // 3. 获取所有订餐人信息
269 var diners = mealOrderServiceRpcClient.getDinersByIds(loginInfo.getEnterpriseId(), dinerIds); 270 var diners = mealOrderServiceRpcClient.getDinersByIds(loginInfo.getEnterpriseId(), dinerIds);
271 + var dinerById = diners.stream().collect(Collectors.toMap(SingleDinerRpcResponse::getId, diner -> diner));
270 272
271 // 4. 获取所有不重复的clientId 273 // 4. 获取所有不重复的clientId
272 var uniqueClientIds = diners.stream() 274 var uniqueClientIds = diners.stream()
...@@ -277,10 +279,10 @@ public class MealOrderServiceImpl implements MealOrderService { ...@@ -277,10 +279,10 @@ public class MealOrderServiceImpl implements MealOrderService {
277 // 5. 批量获取所有学校的停餐信息 279 // 5. 批量获取所有学校的停餐信息
278 var schoolSuspensionRecords = mealOrderServiceRpcClient.queryDinerMealSuspensionRecordsByCondition( 280 var schoolSuspensionRecords = mealOrderServiceRpcClient.queryDinerMealSuspensionRecordsByCondition(
279 loginInfo.getEnterpriseId(), 281 loginInfo.getEnterpriseId(),
280 - uniqueClientIds.stream().map(Long::intValue).toList(), 282 + null,
281 null, 283 null,
282 null 284 null
283 - ); 285 + ).stream().filter(r -> r.getClassId() == 0).toList();
284 286
285 // 6. 批量获取所有学生的停餐信息 287 // 6. 批量获取所有学生的停餐信息
286 var studentSuspensionRecords = mealOrderServiceRpcClient.queryDinerMealSuspensionRecordsByCondition( 288 var studentSuspensionRecords = mealOrderServiceRpcClient.queryDinerMealSuspensionRecordsByCondition(
...@@ -296,7 +298,7 @@ public class MealOrderServiceImpl implements MealOrderService { ...@@ -296,7 +298,7 @@ public class MealOrderServiceImpl implements MealOrderService {
296 SingleDinerMealSuspensionRecordRpcResponse::getClientId, 298 SingleDinerMealSuspensionRecordRpcResponse::getClientId,
297 Collectors.collectingAndThen( 299 Collectors.collectingAndThen(
298 Collectors.maxBy((a, b) -> Long.compare(a.getCreatedAt(), b.getCreatedAt())), 300 Collectors.maxBy((a, b) -> Long.compare(a.getCreatedAt(), b.getCreatedAt())),
299 - opt -> opt.map(this::convertToVO).orElse(null) 301 + opt -> opt.map(o -> convertToVO(o, dinerById)).orElse(null)
300 ) 302 )
301 )); 303 ));
302 304
...@@ -306,7 +308,7 @@ public class MealOrderServiceImpl implements MealOrderService { ...@@ -306,7 +308,7 @@ public class MealOrderServiceImpl implements MealOrderService {
306 SingleDinerMealSuspensionRecordRpcResponse::getDinerId, 308 SingleDinerMealSuspensionRecordRpcResponse::getDinerId,
307 Collectors.collectingAndThen( 309 Collectors.collectingAndThen(
308 Collectors.maxBy((a, b) -> Long.compare(a.getCreatedAt(), b.getCreatedAt())), 310 Collectors.maxBy((a, b) -> Long.compare(a.getCreatedAt(), b.getCreatedAt())),
309 - opt -> opt.map(this::convertToVO).orElse(null) 311 + opt -> opt.map(o -> convertToVO(o, dinerById)).orElse(null)
310 ) 312 )
311 )); 313 ));
312 314
...@@ -323,13 +325,15 @@ public class MealOrderServiceImpl implements MealOrderService { ...@@ -323,13 +325,15 @@ public class MealOrderServiceImpl implements MealOrderService {
323 return studentSuspensionMap.get(Long.valueOf(diner.getId()).intValue()); 325 return studentSuspensionMap.get(Long.valueOf(diner.getId()).intValue());
324 }) 326 })
325 .filter(record -> record != null) 327 .filter(record -> record != null)
328 + .distinct()
326 .toList(); 329 .toList();
327 } 330 }
328 331
329 /** 332 /**
330 * 将RPC响应转换为VO对象 333 * 将RPC响应转换为VO对象
331 */ 334 */
332 - private DinerMealSuspensionRecordVO convertToVO(SingleDinerMealSuspensionRecordRpcResponse response) { 335 + private DinerMealSuspensionRecordVO convertToVO(SingleDinerMealSuspensionRecordRpcResponse response,
336 + Map<Integer, SingleDinerRpcResponse> dinerById) {
333 if (response == null) { 337 if (response == null) {
334 return null; 338 return null;
335 } 339 }
...@@ -340,6 +344,8 @@ public class MealOrderServiceImpl implements MealOrderService { ...@@ -340,6 +344,8 @@ public class MealOrderServiceImpl implements MealOrderService {
340 .clientId(Long.valueOf(response.getClientId())) 344 .clientId(Long.valueOf(response.getClientId()))
341 .classId(Long.valueOf(response.getClassId())) 345 .classId(Long.valueOf(response.getClassId()))
342 .dinerId(Long.valueOf(response.getDinerId())) 346 .dinerId(Long.valueOf(response.getDinerId()))
347 + .dinerName(dinerById.get(response.getDinerId()) != null ? dinerById.get(response.getDinerId()).getName() : null)
348 + .studentNo(dinerById.get(response.getDinerId()) != null ? dinerById.get(response.getDinerId()).getStudentNo() : null)
343 .startAt(new Date(response.getStartAt())) 349 .startAt(new Date(response.getStartAt()))
344 .endAt(new Date(response.getEndAt())) 350 .endAt(new Date(response.getEndAt()))
345 .comment(response.getComment()) 351 .comment(response.getComment())
......