forked from erp-dev/erp
2.4 KiB
2.4 KiB
2026-01-14 工作日志
已完成
1. 通过生产订单查询销售品 API
创建了独立的 Shipment API 模块,提供出货管理相关接口。
- 接口路径:
GET /api/v1/shipment/sales-items/by-printing-order/<printing_order_id>/ - 查询参数:
include_already_has_shipment(默认 false,不包含已出货的销售品)
新建文件
api_v1/views/shipment/__init__.py: 模块入口api_v1/views/shipment/views.py: API 视图SalesItemByPrintingOrderViewapi_v1/views/shipment/serializers.py: 序列化器SalesItemSerializerapi_v1/views/shipment/test_api.py: API 测试用例(8 个测试场景)shipment/services.py: 业务逻辑层get_sales_items_by_printing_order()docs/shipment_api.md: API 文档
修改文件
api_v1/urls.py: 注册新路由
业务逻辑
- 根据 PrintingOrder ID 获取所有 PrintingJob 的 ID
- 查询 SalesItem,过滤 printing_job_id 在这些 job_ids 中
- 根据参数决定是否过滤已关联出货单的销售品
2. Printing 模块添加 merchant 字段
为多租户支持,为 printing 模块的核心模型添加 merchant 外键字段:
PlateOrder.merchant- 开版订单所属商户PrintingOrder.merchant- 印染订单所属商户PrintingJob.merchant- 印染任务所属商户
所有字段设置为可空(null=True, blank=True),以兼容现有数据。
迁移文件: printing/migrations/0029_add_merchant_to_models.py
3. 确保 API 创建时自动绑定 merchant
修复了创建 API,确保新建记录时自动从当前用户获取 merchant:
PrintingOrderService.create_printing_order()- 自动绑定 merchantPrintingJobService.create_printing_job()- 自动绑定 merchantPlateOrderViewSet.perform_create()- 自动绑定 merchant
4. 数据补录命令
创建了 management command 用于补录历史数据的 merchant_id:
# 预览(不执行)
python manage.py backfill_merchant <merchant_id> --dry-run
# 执行补录
python manage.py backfill_merchant <merchant_id>
文件: printing/management/commands/backfill_merchant.py
待办
备注
- API 独立于 printing 模块,避免影响现有功能
- 完整的测试覆盖:正常查询、包含已出货、数据格式、404 错误、空结果、未认证
- printing 和 shipment 模块全部测试通过(31个测试用例)