jin.shuai

农信停餐

......@@ -28,6 +28,7 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
@Slf4j
......@@ -267,6 +268,7 @@ public class MealOrderServiceImpl implements MealOrderService {
// 3. 获取所有订餐人信息
var diners = mealOrderServiceRpcClient.getDinersByIds(loginInfo.getEnterpriseId(), dinerIds);
var dinerById = diners.stream().collect(Collectors.toMap(SingleDinerRpcResponse::getId, diner -> diner));
// 4. 获取所有不重复的clientId
var uniqueClientIds = diners.stream()
......@@ -277,10 +279,10 @@ public class MealOrderServiceImpl implements MealOrderService {
// 5. 批量获取所有学校的停餐信息
var schoolSuspensionRecords = mealOrderServiceRpcClient.queryDinerMealSuspensionRecordsByCondition(
loginInfo.getEnterpriseId(),
uniqueClientIds.stream().map(Long::intValue).toList(),
null,
null,
null
);
).stream().filter(r -> r.getClassId() == 0).toList();
// 6. 批量获取所有学生的停餐信息
var studentSuspensionRecords = mealOrderServiceRpcClient.queryDinerMealSuspensionRecordsByCondition(
......@@ -296,7 +298,7 @@ public class MealOrderServiceImpl implements MealOrderService {
SingleDinerMealSuspensionRecordRpcResponse::getClientId,
Collectors.collectingAndThen(
Collectors.maxBy((a, b) -> Long.compare(a.getCreatedAt(), b.getCreatedAt())),
opt -> opt.map(this::convertToVO).orElse(null)
opt -> opt.map(o -> convertToVO(o, dinerById)).orElse(null)
)
));
......@@ -306,7 +308,7 @@ public class MealOrderServiceImpl implements MealOrderService {
SingleDinerMealSuspensionRecordRpcResponse::getDinerId,
Collectors.collectingAndThen(
Collectors.maxBy((a, b) -> Long.compare(a.getCreatedAt(), b.getCreatedAt())),
opt -> opt.map(this::convertToVO).orElse(null)
opt -> opt.map(o -> convertToVO(o, dinerById)).orElse(null)
)
));
......@@ -323,13 +325,15 @@ public class MealOrderServiceImpl implements MealOrderService {
return studentSuspensionMap.get(Long.valueOf(diner.getId()).intValue());
})
.filter(record -> record != null)
.distinct()
.toList();
}
/**
* 将RPC响应转换为VO对象
*/
private DinerMealSuspensionRecordVO convertToVO(SingleDinerMealSuspensionRecordRpcResponse response) {
private DinerMealSuspensionRecordVO convertToVO(SingleDinerMealSuspensionRecordRpcResponse response,
Map<Integer, SingleDinerRpcResponse> dinerById) {
if (response == null) {
return null;
}
......@@ -340,6 +344,8 @@ public class MealOrderServiceImpl implements MealOrderService {
.clientId(Long.valueOf(response.getClientId()))
.classId(Long.valueOf(response.getClassId()))
.dinerId(Long.valueOf(response.getDinerId()))
.dinerName(dinerById.get(response.getDinerId()) != null ? dinerById.get(response.getDinerId()).getName() : null)
.studentNo(dinerById.get(response.getDinerId()) != null ? dinerById.get(response.getDinerId()).getStudentNo() : null)
.startAt(new Date(response.getStartAt()))
.endAt(new Date(response.getEndAt()))
.comment(response.getComment())
......