From 89bd746dbd822d41583eab354839ad60adc733de Mon Sep 17 00:00:00 2001 From: ouyangxq <775153912@qq.com> Date: Mon, 24 Aug 2026 19:29:39 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../openapi/overseas-business-v1.yaml | 44 ++++++++++++++++--- 1 file changed, 37 insertions(+), 7 deletions(-) diff --git a/lastleg-service/src/main/resources/openapi/overseas-business-v1.yaml b/lastleg-service/src/main/resources/openapi/overseas-business-v1.yaml index 17646d664..46c384e62 100644 --- a/lastleg-service/src/main/resources/openapi/overseas-business-v1.yaml +++ b/lastleg-service/src/main/resources/openapi/overseas-business-v1.yaml @@ -34,7 +34,7 @@ paths: /api/pda/v1/last-leg/receiving-containers/current/sign: post: summary: 签收当前柜 - description: 权限 lastleg:pda:operate;校验非空照片归属后由 WAIT_SIGN 推进 SIGNED。 + description: 权限 lastleg:pda:operate;精确校验车牌、封签、开柜三类照片各一次及文件归属后由 WAIT_SIGN 推进 SIGNED。 security: [{ bearerAuth: [] }] requestBody: { required: true, content: { application/json: { schema: { $ref: '#/components/schemas/ReceivingSign' } } } } responses: { '200': { description: 已签收会话, content: { application/json: { schema: { $ref: '#/components/schemas/ReceivingSessionApiResponse' } } } }, '409': { description: 状态或照片校验失败 } } @@ -51,6 +51,13 @@ paths: security: [{ bearerAuth: [] }] requestBody: { required: true, content: { application/json: { schema: { type: object, required: [cartonMark], properties: { cartonMark: { type: string } } } } } } responses: { '200': { description: 箱唛与入仓码信息, content: { application/json: { schema: { $ref: '#/components/schemas/ReceivingCartonResolvedApiResponse' } } } }, '409': { description: 跨柜、重复箱或目的类型不符 } } + /api/pda/v1/last-leg/receiving-containers/current/skus/resolve: + post: + summary: 解析当前柜 FBA SKU + description: 权限 lastleg:pda:operate;仅解析当前已签柜内唯一归属一个入仓码的 FBA SKU,返回冻结箱数与实收进度。 + security: [{ bearerAuth: [] }] + requestBody: { required: true, content: { application/json: { schema: { type: object, required: [skuCode], properties: { skuCode: { type: string, minLength: 1, maxLength: 128 } } } } } } + responses: { '200': { description: SKU与入仓码信息, content: { application/json: { schema: { $ref: '#/components/schemas/ReceivingSkuResolvedApiResponse' } } } }, '404': { description: A0404:SKU不在当前FBA柜内 }, '409': { description: A0409:SKU跨多个入仓码导致归属不唯一 } } /api/pda/v1/last-leg/receiving-containers/current/pallets/resolve: post: summary: 解析当前柜实物托盘码 @@ -422,15 +429,22 @@ components: properties: { idempotencyKey: { type: string, minLength: 1, maxLength: 255 } } ReceivingSign: type: object - required: [photoFileIds, idempotencyKey] + required: [photos, idempotencyKey] properties: - photoFileIds: { type: array, minItems: 1, uniqueItems: true, items: { type: integer, format: int64 } } + photos: { type: array, minItems: 3, maxItems: 3, items: { $ref: '#/components/schemas/ReceivingSignedPhoto' } } idempotencyKey: { type: string, minLength: 1, maxLength: 255 } + ReceivingSignedPhoto: + type: object + required: [role, fileId] + properties: + role: { type: string, enum: [LICENSE_PLATE, CONTAINER_SEAL, DOOR_OPEN] } + fileId: { type: integer, format: int64, minimum: 1 } ReceivingBulk: type: object - required: [inboundCode, palletCode, packageCount, idempotencyKey] + required: [inboundCode, skuCode, palletCode, packageCount, idempotencyKey] properties: inboundCode: { type: string, minLength: 1 } + skuCode: { type: string, minLength: 1, maxLength: 128 } palletCode: { type: string, minLength: 1 } packageCount: { type: integer, minimum: 1 } idempotencyKey: { type: string, minLength: 1, maxLength: 255 } @@ -466,24 +480,26 @@ components: pendingPackages: { type: integer } ReceivingCandidate: type: object - required: [containerNo, status, planCount, inboundCodeCount, totalPackages, receivedPackages, currentAccount] + required: [containerNo, status, planCount, inboundCodeCount, destinationCodes, plannedPalletCount, totalPackages, receivedPackages, currentAccount] properties: containerNo: { type: string } status: { type: string, enum: [WAIT_SIGN, SIGNED, RECEIVING, COMPLETED] } planCount: { type: integer } inboundCodeCount: { type: integer } + destinationCodes: { type: array, uniqueItems: true, items: { type: string } } + plannedPalletCount: { type: integer } totalPackages: { type: integer } receivedPackages: { type: integer } currentAccount: { type: boolean } ReceivingSession: type: object - required: [containerNo, status, version, photoFileIds, totalPackages, receivedPackages, pendingPackages, inbounds] + required: [containerNo, status, version, photos, totalPackages, receivedPackages, pendingPackages, inbounds] properties: containerNo: { type: string } status: { type: string, enum: [WAIT_SIGN, SIGNED, RECEIVING, COMPLETED] } operatorName: { type: string, nullable: true } version: { type: integer } - photoFileIds: { type: array, items: { type: integer, format: int64 } } + photos: { type: array, maxItems: 3, items: { $ref: '#/components/schemas/ReceivingSignedPhoto' } } preparedAt: { type: string, format: date-time, nullable: true } signedAt: { type: string, format: date-time, nullable: true } receivingAt: { type: string, format: date-time, nullable: true } @@ -508,6 +524,14 @@ components: properties: cartonMark: { type: string } skuCode: { type: string, nullable: true } + ReceivingSkuResolved: + allOf: + - { $ref: '#/components/schemas/ReceivingInbound' } + - type: object + required: [skuCode] + properties: + skuCode: { type: string } + productName: { type: string, nullable: true } ReceivingPalletResolved: type: object required: [palletCode, warehouseId, status, inboundCode, destinationType, compatible] @@ -556,6 +580,12 @@ components: - type: object required: [data] properties: { data: { $ref: '#/components/schemas/ReceivingCartonResolved' } } + ReceivingSkuResolvedApiResponse: + allOf: + - { $ref: '#/components/schemas/ReceivingApiResponseBase' } + - type: object + required: [data] + properties: { data: { $ref: '#/components/schemas/ReceivingSkuResolved' } } ReceivingPalletResolvedApiResponse: allOf: - { $ref: '#/components/schemas/ReceivingApiResponseBase' }