KdsServiceImpl.java
3.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
package com.infoloop.tianting.service.impl;
import com.infoloop.tianting.clientcustomerorderservice.SingleClientCustomerOrderDetailRpcResponse;
import com.infoloop.tianting.clientcustomerorderservice.SingleClientCustomerOrderRpcResponse;
import com.infoloop.tianting.context.LoginContextHolder;
import com.infoloop.tianting.model.dto.KdsDTO.KdsOrderDto;
import com.infoloop.tianting.model.dto.KdsDTO.KdsOrderSkuDto;
import com.infoloop.tianting.model.dto.OrderDbDTO.QueryOrderByConditionDto;
import com.infoloop.tianting.service.KdsService;
import com.infoloop.tianting.service.client.MenuServiceRpcClient;
import com.infoloop.tianting.service.client.OrderServiceRpcClient;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.poi.hssf.record.DVALRecord;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Slf4j
@Service
@RequiredArgsConstructor(onConstructor = @__(@Autowired))
public class KdsServiceImpl implements KdsService {
private final OrderServiceRpcClient orderServiceRpcClient;
private final MenuServiceRpcClient menuServiceRpcClient;
public void getOrderDetailBySku() {
// 获取当日所有的订单 和 订单明细
LocalDate today = LocalDate.now();
LocalDateTime todayZero = today.atStartOfDay();
LocalDate tomorrow = today.plusDays(1);
LocalDateTime tomorrowZero = tomorrow.atStartOfDay();
final var operatorLoginInfo = LoginContextHolder.getLoginInfo();
final var queryOrderDto = QueryOrderByConditionDto.builder()
.enterpriseId(operatorLoginInfo.getEnterpriseId())
.shouldFilterCreatedAtTimeStart(true)
.createdAtTimeStart(todayZero)
.shouldFilterCreatedAtTimeEnd(true)
.createdAtTimeEnd(tomorrowZero)
.build();
final var orderList = orderServiceRpcClient.getOrdersByCondition(queryOrderDto);
List<Integer> orderIds = orderList.stream()
.map(SingleClientCustomerOrderRpcResponse::getId)
.distinct()
.collect(Collectors.toList());
final var orderDetailList = orderServiceRpcClient.getOrderDetailsByOrderIds(orderIds);
//在所有的orderDetail里找出所有所有不同的menuDetailId,然后根据menuDetailId进行分类
final var menuDetailIds = orderDetailList.stream()
.map(SingleClientCustomerOrderDetailRpcResponse::getMenuDetailId)
.distinct()
.collect(Collectors.toList());
List<KdsOrderSkuDto> kdsOrderSkuList = new ArrayList<>();
for (Integer menuDetailId: menuDetailIds) {
// 找出该menuDetailId 的所有orderDetail
final var curOrderDetails = orderDetailList.stream()
.filter(d-> d.getMenuDetailId() == menuDetailId)
.collect(Collectors.toList());
final var totalCount = curOrderDetails.stream()
.mapToInt(SingleClientCustomerOrderDetailRpcResponse::getCount)
.sum();
List<KdsOrderDto> kdsOrders = new ArrayList<>();
for(SingleClientCustomerOrderDetailRpcResponse detail: curOrderDetails) {
final var order = orderList.stream()
.filter(o -> o.getId() == detail.getOrderId())
.findFirst();
if (order.isEmpty()) {
continue;
}
final var kdsOrder = KdsOrderDto.builder()
.count(detail.getCount())
.orderDetailId(detail.getId())
.remark(order.get().getRemark())
.orderId(order.get().getId())
.roomNo(order.get().getRoomNo())
.tableCode(order.get().getTableCode())
.build();
kdsOrders.add(kdsOrder);
}
final var kdsOrderSku = KdsOrderSkuDto.builder()
.showName(curOrderDetails.get(0).getShowName())
.totalCount(totalCount)
.orderList(kdsOrders)
.build();
kdsOrderSkuList.add(kdsOrderSku);
}
}
}