wangyingyang

update order pageable

......@@ -40,7 +40,9 @@ import com.infoloop.tianting.clientcustomerorderservice.GetClientCustomerOrdersB
import com.infoloop.tianting.clientcustomerorderservice.GetClientCustomerOrdersByIdsRpcResponse;
import com.infoloop.tianting.clientcustomerorderservice.GetOrderOperationRecordsByOrderIdRequest;
import com.infoloop.tianting.clientcustomerorderservice.GetOrderOperationRecordsByOrderIdResponse;
import com.infoloop.tianting.clientcustomerorderservice.OrderCountByStatus;
import com.infoloop.tianting.clientcustomerorderservice.OrderOperationRecord;
import com.infoloop.tianting.clientcustomerorderservice.OrderStatusEnum;
import com.infoloop.tianting.clientcustomerorderservice.QueryClientCustomerOrdersByConditionRpcRequest;
import com.infoloop.tianting.clientcustomerorderservice.QueryClientCustomerOrdersByConditionRpcResponse;
import com.infoloop.tianting.clientcustomerorderservice.QueryClientCustomerOrdersByPaginationRpcRequest;
......@@ -193,6 +195,42 @@ public class OrderGrpcService extends ClientCustomerOrderServiceRpcGrpc.ClientCu
queryWrapper.eq(OrderDb::getStatus, request.getStatusValue());
queryWrapper.orderByDesc(OrderDb::getCreatedAt);
final var result = orderDbService.page(page, queryWrapper);
// 查询各个状态的订单数量
int unknownCount = 0;
int toPrepareCount = 0;
int preparingCount = 0;
int allServedCount = 0;
int canceledCount = 0;
for(OrderStatusEnum status: OrderStatusEnum.values()) {
LambdaQueryWrapper<OrderDb> queryCountWrapper = Wrappers.lambdaQuery();
if (!request.getKeyword().isEmpty()) {
queryCountWrapper.like(OrderDb::getMealTime, request.getKeyword());
}
queryCountWrapper.eq(OrderDb::getEnterpriseId, request.getEnterpriseId());
queryCountWrapper.eq(OrderDb::getClientId, request.getClientId());
queryCountWrapper.eq(OrderDb::getStatus, status.ordinal());
final var count = orderDbService.count(queryCountWrapper);
if (status.equals(OrderStatusEnum.UNKNOWN_STATUS)) {
unknownCount += count;
} else if (status.equals(OrderStatusEnum.TO_PREPARE)) {
toPrepareCount += count;
} else if (status.equals(OrderStatusEnum.PREPARING)) {
preparingCount += count;
} else if (status.equals(OrderStatusEnum.PARTIAL_SERVED) || status.equals(OrderStatusEnum.ALL_SERVED)) {
allServedCount += count;
} else {
canceledCount += count;
}
}
builder.setCountByStatus(OrderCountByStatus.newBuilder()
.setUnknownCount(unknownCount)
.setToPrepareCount(toPrepareCount)
.setPreparingCount(preparingCount)
.setAllServedCount(allServedCount)
.setCanceledCount(canceledCount)
.build());
builder.setTotal(result.getTotal());
builder.setPages(result.getPages());
if (!result.getRecords().isEmpty()) {
......
......@@ -161,10 +161,19 @@ message QueryClientCustomerOrdersByPaginationRpcRequest {
int32 pageSize = 6;
}
message OrderCountByStatus {
int32 unknownCount = 1;
int32 toPrepareCount = 2;
int32 preparingCount = 3;
int32 allServedCount = 4;
int32 canceledCount = 5;
}
message QueryClientCustomerOrdersByPaginationRpcResponse {
int64 total = 1;
int64 pages = 2;
repeated SingleClientCustomerOrderRpcResponse responses = 3;
OrderCountByStatus countByStatus = 4;
}
message QueryClientCustomerOrdersByConditionRpcRequest {
......