zhuyifan

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

package com.infoloop.tianting.model.bo;
import com.infoloop.tianting.clientcustomerorderservice.ServeStatusEnum;
import lombok.Data;
@Data
public class OrderDetailBO {
private int id;
public int skuId;
private String skuName;
private Integer price;
private int count;
private String adjustSkuRemark;
private ServeStatusEnum serveStatus;
}
......@@ -520,6 +520,7 @@ public class OrderDbDTO {
private Integer count;
private String adjustSkuRemark;
private String serveStatus;
private Integer price;
}
......
......@@ -103,6 +103,8 @@ public class SettlementDTO {
private String remark;
private String avoidRemark;
private String onlinePay;
private String operationType;
private String transactionId;
}
@Data
......
......@@ -22,6 +22,8 @@ import com.infoloop.tianting.clientcustomerorderservice.GetClientCustomerOrderBy
import com.infoloop.tianting.clientcustomerorderservice.GetClientCustomerOrderDetailsByIdsRpcRequest;
import com.infoloop.tianting.clientcustomerorderservice.GetClientCustomerOrderDetailsByOrderIdsRpcRequest;
import com.infoloop.tianting.clientcustomerorderservice.GetClientCustomerOrdersByCustomerIdRpcRequest;
import com.infoloop.tianting.clientcustomerorderservice.GetOrderOperationRecordsByOrderIdsRequest;
import com.infoloop.tianting.clientcustomerorderservice.GetOrderOperationRecordsByOrderIdsResponse;
import com.infoloop.tianting.clientcustomerorderservice.MealDetail;
import com.infoloop.tianting.clientcustomerorderservice.OnlinePayEnum;
import com.infoloop.tianting.clientcustomerorderservice.OrderOperationRecordCreation;
......@@ -396,7 +398,7 @@ public class OrderServiceRpcClient {
.updateSource(d.getUpdateSource().getNumber())
.updatedAt(DateUtil.formatDate(d.getUpdatedAt()))
.updatedBy(d.getUpdatedBy())
.build()).collect(Collectors.toList());
.build()).toList();
// 替换菜品的操作记录
List<SingleOperationDto> operations = new ArrayList<>();
for (OrderDetailDto originalDetail : originalOrderDetails) {
......@@ -422,6 +424,7 @@ public class OrderServiceRpcClient {
.count(newDetail.get().getCount())
.adjustSkuRemark(newDetail.get().getAdjustSkuRemark())
.serveStatus(newDetail.get().getServeStatus().name())
.price(newDetail.get().getPrice())
.build();
newDetailStr = JsonUtil.writeAsJson(List.of(newOrderDetailOperation));
}
......@@ -432,6 +435,7 @@ public class OrderServiceRpcClient {
.count(originalDetail.getCount())
.adjustSkuRemark(originalDetail.getAdjustSkuRemark())
.serveStatus(originalDetail.getServeStatus().name())
.price(originalDetail.getPrice())
.build();
originalDetailStr = JsonUtil.writeAsJson(List.of(originalOrderDetailOperation));
final var operation = SingleOperationDto.builder()
......@@ -480,7 +484,6 @@ public class OrderServiceRpcClient {
.setCreationSource(batchOperationDto.getCreationSource())
.build();
return orderServiceRpcBlockingStub.batchCreateOrderOperationRecords(request);
}
public QueryClientCustomerOrdersByPaginationRpcResponse queryClientCustomerOrdersByPagination(QueryOrderByPaginationDto queryOrderDto) {
......@@ -498,6 +501,14 @@ public class OrderServiceRpcClient {
return orderServiceRpcBlockingStub.queryClientCustomerOrdersByPagination(request);
}
public GetOrderOperationRecordsByOrderIdsResponse getOrderOperationRecordsByOrderIds(int enterpriseId, List<Integer> orderIds) {
final var request = GetOrderOperationRecordsByOrderIdsRequest.newBuilder()
.setEnterpriseId(enterpriseId)
.addAllOrderIds(orderIds)
.build();
return orderServiceRpcBlockingStub.getOrderOperationRecordsByOrderIds(request);
}
public QueryClientCustomerOrdersByConditionRpcResponse queryClientCustomerOrdersByCondition(OrderDbDTO.QueryOrderDto queryOrderDto) {
final var request = QueryClientCustomerOrdersByConditionRpcRequest.newBuilder()
.setShouldFilterStatus(true)
......
......@@ -2,6 +2,7 @@ package com.infoloop.tianting.utils;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
......@@ -41,6 +42,14 @@ public class JsonUtil {
}
}
public static <T> T readJsonAs(final String json, final TypeReference<T> typeRef) {
try {
return OBJECT_MAPPER.readValue(json, typeRef);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public static <T> T convertValue(final Object object, final Class<T> clazz) {
return OBJECT_MAPPER.convertValue(object, clazz);
}
......
......@@ -32,6 +32,7 @@ service ClientCustomerOrderServiceRpc {
// 操作记录
rpc GetOrderOperationRecordsByOrderId (GetOrderOperationRecordsByOrderIdRequest) returns (GetOrderOperationRecordsByOrderIdResponse) {}
rpc GetOrderOperationRecordsByOrderIds (GetOrderOperationRecordsByOrderIdsRequest) returns (GetOrderOperationRecordsByOrderIdsResponse) {}
rpc BatchCreateOrderOperationRecords (BatchCreateOrderOperationRecordsRequest) returns (BatchCreateOrderOperationRecordsResponse) {}
......@@ -624,6 +625,15 @@ message GetOrderOperationRecordsByOrderIdResponse {
repeated OrderOperationRecord responses = 1;
}
message GetOrderOperationRecordsByOrderIdsRequest {
int32 enterpriseId = 1;
repeated int32 orderIds = 2;
}
message GetOrderOperationRecordsByOrderIdsResponse {
repeated OrderOperationRecord responses = 1;
}
message OrderOperationRecordCreation {
int32 orderId = 1;
OrderOperationType type = 2;
......