zhuyifan

feat(order): add bulk operation records query and excel generation

1 +package com.infoloop.tianting.model.bo;
2 +
3 +import com.infoloop.tianting.clientcustomerorderservice.ServeStatusEnum;
4 +import lombok.Data;
5 +
6 +@Data
7 +public class OrderDetailBO {
8 +
9 + private int id;
10 +
11 + public int skuId;
12 +
13 + private String skuName;
14 +
15 + private Integer price;
16 +
17 + private int count;
18 +
19 + private String adjustSkuRemark;
20 +
21 + private ServeStatusEnum serveStatus;
22 +}
...@@ -520,6 +520,7 @@ public class OrderDbDTO { ...@@ -520,6 +520,7 @@ public class OrderDbDTO {
520 private Integer count; 520 private Integer count;
521 private String adjustSkuRemark; 521 private String adjustSkuRemark;
522 private String serveStatus; 522 private String serveStatus;
523 + private Integer price;
523 } 524 }
524 525
525 526
......
...@@ -103,6 +103,8 @@ public class SettlementDTO { ...@@ -103,6 +103,8 @@ public class SettlementDTO {
103 private String remark; 103 private String remark;
104 private String avoidRemark; 104 private String avoidRemark;
105 private String onlinePay; 105 private String onlinePay;
106 + private String operationType;
107 + private String transactionId;
106 } 108 }
107 109
108 @Data 110 @Data
......
...@@ -22,6 +22,8 @@ import com.infoloop.tianting.clientcustomerorderservice.GetClientCustomerOrderBy ...@@ -22,6 +22,8 @@ import com.infoloop.tianting.clientcustomerorderservice.GetClientCustomerOrderBy
22 import com.infoloop.tianting.clientcustomerorderservice.GetClientCustomerOrderDetailsByIdsRpcRequest; 22 import com.infoloop.tianting.clientcustomerorderservice.GetClientCustomerOrderDetailsByIdsRpcRequest;
23 import com.infoloop.tianting.clientcustomerorderservice.GetClientCustomerOrderDetailsByOrderIdsRpcRequest; 23 import com.infoloop.tianting.clientcustomerorderservice.GetClientCustomerOrderDetailsByOrderIdsRpcRequest;
24 import com.infoloop.tianting.clientcustomerorderservice.GetClientCustomerOrdersByCustomerIdRpcRequest; 24 import com.infoloop.tianting.clientcustomerorderservice.GetClientCustomerOrdersByCustomerIdRpcRequest;
25 +import com.infoloop.tianting.clientcustomerorderservice.GetOrderOperationRecordsByOrderIdsRequest;
26 +import com.infoloop.tianting.clientcustomerorderservice.GetOrderOperationRecordsByOrderIdsResponse;
25 import com.infoloop.tianting.clientcustomerorderservice.MealDetail; 27 import com.infoloop.tianting.clientcustomerorderservice.MealDetail;
26 import com.infoloop.tianting.clientcustomerorderservice.OnlinePayEnum; 28 import com.infoloop.tianting.clientcustomerorderservice.OnlinePayEnum;
27 import com.infoloop.tianting.clientcustomerorderservice.OrderOperationRecordCreation; 29 import com.infoloop.tianting.clientcustomerorderservice.OrderOperationRecordCreation;
...@@ -396,7 +398,7 @@ public class OrderServiceRpcClient { ...@@ -396,7 +398,7 @@ public class OrderServiceRpcClient {
396 .updateSource(d.getUpdateSource().getNumber()) 398 .updateSource(d.getUpdateSource().getNumber())
397 .updatedAt(DateUtil.formatDate(d.getUpdatedAt())) 399 .updatedAt(DateUtil.formatDate(d.getUpdatedAt()))
398 .updatedBy(d.getUpdatedBy()) 400 .updatedBy(d.getUpdatedBy())
399 - .build()).collect(Collectors.toList()); 401 + .build()).toList();
400 // 替换菜品的操作记录 402 // 替换菜品的操作记录
401 List<SingleOperationDto> operations = new ArrayList<>(); 403 List<SingleOperationDto> operations = new ArrayList<>();
402 for (OrderDetailDto originalDetail : originalOrderDetails) { 404 for (OrderDetailDto originalDetail : originalOrderDetails) {
...@@ -422,6 +424,7 @@ public class OrderServiceRpcClient { ...@@ -422,6 +424,7 @@ public class OrderServiceRpcClient {
422 .count(newDetail.get().getCount()) 424 .count(newDetail.get().getCount())
423 .adjustSkuRemark(newDetail.get().getAdjustSkuRemark()) 425 .adjustSkuRemark(newDetail.get().getAdjustSkuRemark())
424 .serveStatus(newDetail.get().getServeStatus().name()) 426 .serveStatus(newDetail.get().getServeStatus().name())
427 + .price(newDetail.get().getPrice())
425 .build(); 428 .build();
426 newDetailStr = JsonUtil.writeAsJson(List.of(newOrderDetailOperation)); 429 newDetailStr = JsonUtil.writeAsJson(List.of(newOrderDetailOperation));
427 } 430 }
...@@ -432,6 +435,7 @@ public class OrderServiceRpcClient { ...@@ -432,6 +435,7 @@ public class OrderServiceRpcClient {
432 .count(originalDetail.getCount()) 435 .count(originalDetail.getCount())
433 .adjustSkuRemark(originalDetail.getAdjustSkuRemark()) 436 .adjustSkuRemark(originalDetail.getAdjustSkuRemark())
434 .serveStatus(originalDetail.getServeStatus().name()) 437 .serveStatus(originalDetail.getServeStatus().name())
438 + .price(originalDetail.getPrice())
435 .build(); 439 .build();
436 originalDetailStr = JsonUtil.writeAsJson(List.of(originalOrderDetailOperation)); 440 originalDetailStr = JsonUtil.writeAsJson(List.of(originalOrderDetailOperation));
437 final var operation = SingleOperationDto.builder() 441 final var operation = SingleOperationDto.builder()
...@@ -480,7 +484,6 @@ public class OrderServiceRpcClient { ...@@ -480,7 +484,6 @@ public class OrderServiceRpcClient {
480 .setCreationSource(batchOperationDto.getCreationSource()) 484 .setCreationSource(batchOperationDto.getCreationSource())
481 .build(); 485 .build();
482 return orderServiceRpcBlockingStub.batchCreateOrderOperationRecords(request); 486 return orderServiceRpcBlockingStub.batchCreateOrderOperationRecords(request);
483 -
484 } 487 }
485 488
486 public QueryClientCustomerOrdersByPaginationRpcResponse queryClientCustomerOrdersByPagination(QueryOrderByPaginationDto queryOrderDto) { 489 public QueryClientCustomerOrdersByPaginationRpcResponse queryClientCustomerOrdersByPagination(QueryOrderByPaginationDto queryOrderDto) {
...@@ -498,6 +501,14 @@ public class OrderServiceRpcClient { ...@@ -498,6 +501,14 @@ public class OrderServiceRpcClient {
498 return orderServiceRpcBlockingStub.queryClientCustomerOrdersByPagination(request); 501 return orderServiceRpcBlockingStub.queryClientCustomerOrdersByPagination(request);
499 } 502 }
500 503
504 + public GetOrderOperationRecordsByOrderIdsResponse getOrderOperationRecordsByOrderIds(int enterpriseId, List<Integer> orderIds) {
505 + final var request = GetOrderOperationRecordsByOrderIdsRequest.newBuilder()
506 + .setEnterpriseId(enterpriseId)
507 + .addAllOrderIds(orderIds)
508 + .build();
509 + return orderServiceRpcBlockingStub.getOrderOperationRecordsByOrderIds(request);
510 + }
511 +
501 public QueryClientCustomerOrdersByConditionRpcResponse queryClientCustomerOrdersByCondition(OrderDbDTO.QueryOrderDto queryOrderDto) { 512 public QueryClientCustomerOrdersByConditionRpcResponse queryClientCustomerOrdersByCondition(OrderDbDTO.QueryOrderDto queryOrderDto) {
502 final var request = QueryClientCustomerOrdersByConditionRpcRequest.newBuilder() 513 final var request = QueryClientCustomerOrdersByConditionRpcRequest.newBuilder()
503 .setShouldFilterStatus(true) 514 .setShouldFilterStatus(true)
......
...@@ -2,6 +2,7 @@ package com.infoloop.tianting.utils; ...@@ -2,6 +2,7 @@ package com.infoloop.tianting.utils;
2 2
3 import com.fasterxml.jackson.annotation.JsonInclude; 3 import com.fasterxml.jackson.annotation.JsonInclude;
4 import com.fasterxml.jackson.core.JsonProcessingException; 4 import com.fasterxml.jackson.core.JsonProcessingException;
5 +import com.fasterxml.jackson.core.type.TypeReference;
5 import com.fasterxml.jackson.databind.DeserializationFeature; 6 import com.fasterxml.jackson.databind.DeserializationFeature;
6 import com.fasterxml.jackson.databind.JsonNode; 7 import com.fasterxml.jackson.databind.JsonNode;
7 import com.fasterxml.jackson.databind.ObjectMapper; 8 import com.fasterxml.jackson.databind.ObjectMapper;
...@@ -41,6 +42,14 @@ public class JsonUtil { ...@@ -41,6 +42,14 @@ public class JsonUtil {
41 } 42 }
42 } 43 }
43 44
45 + public static <T> T readJsonAs(final String json, final TypeReference<T> typeRef) {
46 + try {
47 + return OBJECT_MAPPER.readValue(json, typeRef);
48 + } catch (IOException e) {
49 + throw new RuntimeException(e);
50 + }
51 + }
52 +
44 public static <T> T convertValue(final Object object, final Class<T> clazz) { 53 public static <T> T convertValue(final Object object, final Class<T> clazz) {
45 return OBJECT_MAPPER.convertValue(object, clazz); 54 return OBJECT_MAPPER.convertValue(object, clazz);
46 } 55 }
......
...@@ -32,6 +32,7 @@ service ClientCustomerOrderServiceRpc { ...@@ -32,6 +32,7 @@ service ClientCustomerOrderServiceRpc {
32 32
33 // 操作记录 33 // 操作记录
34 rpc GetOrderOperationRecordsByOrderId (GetOrderOperationRecordsByOrderIdRequest) returns (GetOrderOperationRecordsByOrderIdResponse) {} 34 rpc GetOrderOperationRecordsByOrderId (GetOrderOperationRecordsByOrderIdRequest) returns (GetOrderOperationRecordsByOrderIdResponse) {}
35 + rpc GetOrderOperationRecordsByOrderIds (GetOrderOperationRecordsByOrderIdsRequest) returns (GetOrderOperationRecordsByOrderIdsResponse) {}
35 rpc BatchCreateOrderOperationRecords (BatchCreateOrderOperationRecordsRequest) returns (BatchCreateOrderOperationRecordsResponse) {} 36 rpc BatchCreateOrderOperationRecords (BatchCreateOrderOperationRecordsRequest) returns (BatchCreateOrderOperationRecordsResponse) {}
36 37
37 38
...@@ -624,6 +625,15 @@ message GetOrderOperationRecordsByOrderIdResponse { ...@@ -624,6 +625,15 @@ message GetOrderOperationRecordsByOrderIdResponse {
624 repeated OrderOperationRecord responses = 1; 625 repeated OrderOperationRecord responses = 1;
625 } 626 }
626 627
628 +message GetOrderOperationRecordsByOrderIdsRequest {
629 + int32 enterpriseId = 1;
630 + repeated int32 orderIds = 2;
631 +}
632 +
633 +message GetOrderOperationRecordsByOrderIdsResponse {
634 + repeated OrderOperationRecord responses = 1;
635 +}
636 +
627 message OrderOperationRecordCreation { 637 message OrderOperationRecordCreation {
628 int32 orderId = 1; 638 int32 orderId = 1;
629 OrderOperationType type = 2; 639 OrderOperationType type = 2;
......