From 80805ba312e241e529865e7fb45b26de48a18063 Mon Sep 17 00:00:00 2001 From: colaftc Date: Thu, 23 Apr 2026 23:55:06 +0800 Subject: [PATCH] fix: order_description change to copy by rolling_warn of printing_order --- api_v1/views/shipment/serializers.py | 3 ++- api_v1/views/shipment/test_api.py | 9 +++++++-- api_v2/views/ai.py | 2 +- docs/api_v2_agent_api.md | 4 ++-- docs/shipment_api.md | 6 +++--- docs/shipment_delivery.md | 1 + 6 files changed, 16 insertions(+), 9 deletions(-) diff --git a/api_v1/views/shipment/serializers.py b/api_v1/views/shipment/serializers.py index 6327b5b..120a399 100644 --- a/api_v1/views/shipment/serializers.py +++ b/api_v1/views/shipment/serializers.py @@ -101,7 +101,8 @@ def _resolve_shipment_order_description(shipment: Shipment) -> str | None: ) if printing_job is None or printing_job.printing_order is None: return None - return printing_job.printing_order.description + # 目前滚筒预警字段被放在了 printing_order 上,暂时沿用这个字段来返回订单描述; + return printing_job.printing_order.rolling_warn class ShipmentSerializer(serializers.ModelSerializer): diff --git a/api_v1/views/shipment/test_api.py b/api_v1/views/shipment/test_api.py index 507b2a6..278d4f7 100644 --- a/api_v1/views/shipment/test_api.py +++ b/api_v1/views/shipment/test_api.py @@ -1634,6 +1634,7 @@ class ShipmentQueryAPITestCase(TestCase): created_by=self.user1, external_order_id="QUERY-PO-001", description="查询订单备注", + rolling_warn="查询滚筒预警", ) self.printing_job1 = printing_models.PrintingJob.objects.create( merchant=self.merchant1, @@ -1694,7 +1695,7 @@ class ShipmentQueryAPITestCase(TestCase): self.assertIn("delivery_id", item) self.assertIsNone(item["delivery_id"]) self.assertEqual(item["fabric"], "查询面料") - self.assertEqual(item["order_description"], "查询订单备注") + self.assertEqual(item["order_description"], "查询滚筒预警") self.assertEqual(item["area"], "A1") self.assertEqual(item["status"], shipment_models.ShipmentStatus.DRAFT) self.assertEqual(item["status_display"], "草稿(未发布)") @@ -1841,7 +1842,7 @@ class ShipmentQueryAPITestCase(TestCase): self.assertIn("delivery_id", result) self.assertIsNone(result["delivery_id"]) self.assertEqual(result["fabric"], "查询面料") - self.assertEqual(result["order_description"], "查询订单备注") + self.assertEqual(result["order_description"], "查询滚筒预警") self.assertEqual(result["id"], self.shipment1.id) self.assertIn("area", result) self.assertEqual(result["area"], "A1") @@ -3052,6 +3053,8 @@ class ShipmentDeliveryAPITestCase(APITestCase): vehicle_trip="KD-007-D", created_by=self.user, ) + self.shipment1.delivery = delivery + self.shipment1.save(update_fields=["delivery", "updated_at"]) permission = Permission.objects.get(codename="cancel_shipmentdelivery") self.user.user_permissions.add(permission) @@ -3071,9 +3074,11 @@ class ShipmentDeliveryAPITestCase(APITestCase): self.assertIsNotNone(data["cancelled_at"]) delivery.refresh_from_db() + self.shipment1.refresh_from_db() self.assertEqual(delivery.status, shipment_models.ShipmentDeliveryStatus.CANCELLED) self.assertEqual(delivery.cancelled_by_id, self.user.id) self.assertIsNotNone(delivery.cancelled_at) + self.assertEqual(self.shipment1.delivery_id, delivery.id) def test_bind_shipments_to_existing_delivery_success(self): delivery = shipment_models.ShipmentDelivery.objects.create( diff --git a/api_v2/views/ai.py b/api_v2/views/ai.py index 3541efd..30b83e5 100644 --- a/api_v2/views/ai.py +++ b/api_v2/views/ai.py @@ -170,7 +170,7 @@ class AgentShipmentListSerializer(serializers.ModelSerializer): ) if printing_job is None or printing_job.printing_order is None: return None - return printing_job.printing_order.description + return printing_job.printing_order.rolling_warn def get_sales_items(self, obj): items = [i for i in obj.items.all() if i.delete_at is None] diff --git a/docs/api_v2_agent_api.md b/docs/api_v2_agent_api.md index 7ebe0fc..b96622d 100644 --- a/docs/api_v2_agent_api.md +++ b/docs/api_v2_agent_api.md @@ -46,7 +46,7 @@ Authorization: "customer": 5, "customer_name": "客户A", "fabric": "棉布 40S", - "order_description": "订单备注", + "order_description": "滚筒预警", "shipment_date": "2026-04-14", "address": "广州市天河区", "contact_name": "张三", @@ -157,7 +157,7 @@ Authorization: - "未出货"定义:`delivery` 为空,即尚未关联送货单 - `delivery_id` 始终返回送货单ID;未关联时为 `null` - `fabric` 来自该出货单所关联销售品对应生产订单的 `fabric`;若当前出货单没有销售品则返回 `null` -- `order_description` 来自该出货单所关联销售品对应生产订单的 `description`;若当前出货单没有销售品则返回 `null` +- `order_description` 当前来自该出货单所关联销售品对应生产订单的 `rolling_warn`;若当前出货单没有销售品则返回 `null` - 结果按 `created_at` 降序排列 - 只返回 `merchant_id` 对应商户的数据 - `sales_items` 包含该出货单的所有销售品(软删除的条目自动排除) diff --git a/docs/shipment_api.md b/docs/shipment_api.md index a84f6dd..e0896fb 100644 --- a/docs/shipment_api.md +++ b/docs/shipment_api.md @@ -54,7 +54,7 @@ "customer": 1, "customer_name": "客户A", "fabric": "棉布 40S", - "order_description": "订单备注", + "order_description": "滚筒预警", "shipment_date": "2026-01-14", "status": 1, "status_display": "草稿(未发布)", @@ -82,7 +82,7 @@ - `sales_items` 现在返回的是带图片字段的销售品详情结构 - `delivery_id` 始终返回送货单ID;未绑定送货单时为 `null` - `fabric` 来自该出货单所关联销售品对应生产订单的 `fabric`;若当前出货单没有销售品,则返回 `null` -- `order_description` 来自该出货单所关联销售品对应生产订单的 `description`;若当前出货单没有销售品,则返回 `null` +- `order_description` 当前返回该出货单所关联销售品对应生产订单的 `rolling_warn`;若当前出货单没有销售品,则返回 `null` - `delivery_id=null` 不会触发过滤;如需按是否绑定送货单筛选,请使用 `delivery_isnull` - 若销售品关联的 `PrintingJob.product` 存在主图,则会返回 `product_image_url` - 若无关联图片,则 `product_image_url` 为 `null` @@ -231,7 +231,7 @@ | customer | int | 客户ID | | customer_name | string | 客户名称 | | fabric | string/null | 面料;来自关联生产订单,若当前出货单没有销售品则为 null | -| order_description | string/null | 订单备注;来自关联生产订单的 `description`,若当前出货单没有销售品则为 null | +| order_description | string/null | 滚筒预警;来自关联生产订单的 `rolling_warn`,若当前出货单没有销售品则为 null | | shipment_date | string | 出货日期 | | delivery_id | int/null | 关联送货单ID;未绑定时为 null | | address | string | 地址 | diff --git a/docs/shipment_delivery.md b/docs/shipment_delivery.md index a170f88..995cf51 100644 --- a/docs/shipment_delivery.md +++ b/docs/shipment_delivery.md @@ -273,6 +273,7 @@ GET /api/v1/shipment/deliveries/?status=2&driver_name=张&vehicle_trip=001&limit - 写入 `cancelled_at` - 写入 `cancelled_by` - 同时会根据 `request.user.employee` 更新 `operator` +- 取消不会释放或解绑当前已关联的出货单;如需解绑,需显式删除送货单或通过修改接口改绑 - 已取消的送货单再次取消保持幂等 ### 8. 追加绑定出货单到已有送货单