fix(orders): filter tax mode before unified order pagination
This commit is contained in:
@@ -34,7 +34,7 @@ public interface FirstlegUnifiedOrderClient {
|
||||
String feeReviewStatus, String channelName, String containerNo, String cabinetNo,
|
||||
LocalDate sailingDate, Boolean loaded, Boolean fullContainer,
|
||||
String measurementReviewStatus, List<Long> candidateOrderIds,
|
||||
LocalDateTime createdFrom, LocalDateTime createdTo, long page, long size) {}
|
||||
LocalDateTime createdFrom, LocalDateTime createdTo, long page, long size, String taxMode) {}
|
||||
record BatchRequest(Long tenantId, List<Long> orderIds) {}
|
||||
record DetailRequest(long tenantId, long orderId) {}
|
||||
|
||||
|
||||
@@ -33,7 +33,9 @@ public record UnifiedOrderQuery(
|
||||
LocalDateTime createdFrom,
|
||||
LocalDateTime createdTo,
|
||||
@Min(1) long page,
|
||||
@Min(1) @Max(200) long size
|
||||
@Min(1) @Max(200) long size,
|
||||
@Schema(allowableValues = {"TAX_REFUND", "BUY_DECLARATION"})
|
||||
@jakarta.validation.constraints.Pattern(regexp = "TAX_REFUND|BUY_DECLARATION") String taxMode
|
||||
) {
|
||||
public UnifiedOrderQuery {
|
||||
if (page == 0) page = 1;
|
||||
|
||||
@@ -301,6 +301,7 @@ public class OrderRepository {
|
||||
List<OrderStatus> statuses) {
|
||||
LambdaQueryWrapper<OrderEntity> wrapper = new LambdaQueryWrapper<OrderEntity>()
|
||||
.eq(tenantId != null, OrderEntity::getTenantId, tenantId)
|
||||
.eq(query.taxMode() != null, OrderEntity::getTaxMode, query.taxMode())
|
||||
.in(OrderEntity::getStatus, statuses)
|
||||
.like(StringUtils.hasText(query.orderNo()), OrderEntity::getOrderNo, query.orderNo())
|
||||
.like(StringUtils.hasText(query.inboundCode()), OrderEntity::getInboundCode, query.inboundCode())
|
||||
|
||||
+1
-1
@@ -282,7 +282,7 @@ public class DomesticWarehouseOrderExportProviderService {
|
||||
string("inboundCode"), string("internalOrderStatus"), date("expectedArrivalDate"),
|
||||
string("feeReviewStatus"), string("channelName"), string("containerNo"), string("cabinetNo"),
|
||||
date("sailingDate"), bool("loaded"), bool("fullContainer"), string("measurementReviewStatus"),
|
||||
string("fbaCode"), dateTime("createdFrom"), dateTime("createdTo"), page, limit);
|
||||
string("fbaCode"), dateTime("createdFrom"), dateTime("createdTo"), page, limit, null);
|
||||
}
|
||||
private String string(String key) { Object value = parameters.get(key); return value == null || String.valueOf(value).isBlank() ? null : String.valueOf(value).trim(); }
|
||||
private Long number(String key) { String value = string(key); if (value == null) return null; try { long parsed=Long.parseLong(value); if(parsed<=0)throw new NumberFormatException(); return parsed; } catch(NumberFormatException ex){throw new BizException(ResultCode.VALIDATION_FAILED,key+" 必须为正整数字符串");} }
|
||||
|
||||
@@ -159,7 +159,7 @@ public class UnifiedOrderQueryService {
|
||||
query.internalOrderStatus(), query.expectedArrivalDate(), query.feeReviewStatus(), query.channelName(),
|
||||
query.containerNo(), query.cabinetNo(), query.sailingDate(), query.loaded(), query.fullContainer(),
|
||||
query.measurementReviewStatus(), candidateOrderIds, query.createdFrom(), query.createdTo(),
|
||||
query.page(), query.size());
|
||||
query.page(), query.size(), query.taxMode());
|
||||
PageResult<FirstlegUnifiedOrderClient.Summary> source = require(
|
||||
call(() -> firstleg.page(internalToken, request)), "统一订单履约查询响应无效");
|
||||
List<FirstlegUnifiedOrderClient.Summary> summaries = validateSummaries(
|
||||
@@ -555,6 +555,9 @@ public class UnifiedOrderQueryService {
|
||||
}
|
||||
|
||||
private void validate(UnifiedOrderQuery query) {
|
||||
if (query.taxMode() != null && !Set.of("TAX_REFUND", "BUY_DECLARATION").contains(query.taxMode())) {
|
||||
throw new BizException(ResultCode.BAD_REQUEST, "taxMode仅支持TAX_REFUND或BUY_DECLARATION");
|
||||
}
|
||||
if (StringUtils.hasText(query.mainStatus())
|
||||
&& !MAIN_STATUSES.contains(query.mainStatus())
|
||||
) {
|
||||
|
||||
@@ -329,6 +329,7 @@ paths:
|
||||
relation(仅有关联时返回;PARENT 含 childCount,CHILD 含 rootOrderId、parentOrderId 与 splitSequence)。
|
||||
coLoadGroup 仅平台响应返回,由 Order 经 Firstleg 内部批量只读契约聚合;成员业务标识由 Order 权威订单片段补齐。
|
||||
parameters:
|
||||
- $ref: '#/components/parameters/UnifiedTaxMode'
|
||||
- {name: tenantId, in: query, required: false, schema: {type: string, pattern: '^[1-9][0-9]*$'}}
|
||||
- $ref: '#/components/parameters/UnifiedKeyword'
|
||||
- $ref: '#/components/parameters/UnifiedOrderNo'
|
||||
@@ -444,6 +445,7 @@ paths:
|
||||
有入库单时同时返回 inboundId、inboundVersion、loadingVersion、pickingVersion;inboundVersion
|
||||
才是 C04 loading/complete 的 expectedVersion,loadingVersion 当前等于 pickingVersion(兼容别名)。
|
||||
parameters:
|
||||
- $ref: '#/components/parameters/UnifiedTaxMode'
|
||||
- $ref: '#/components/parameters/UnifiedKeyword'
|
||||
- $ref: '#/components/parameters/UnifiedOrderNo'
|
||||
- $ref: '#/components/parameters/UnifiedMainStatus'
|
||||
@@ -1488,6 +1490,12 @@ components:
|
||||
in: query
|
||||
required: false
|
||||
schema: {type: string, maxLength: 64}
|
||||
UnifiedTaxMode:
|
||||
name: taxMode
|
||||
in: query
|
||||
required: false
|
||||
description: 严格按税务模式在数据库计数和分页前过滤;未传查询全部税务模式,空串或其他值拒绝
|
||||
schema: {type: string, enum: [TAX_REFUND, BUY_DECLARATION]}
|
||||
UnifiedOrderNo:
|
||||
name: orderNo
|
||||
in: query
|
||||
|
||||
Reference in New Issue
Block a user