production_work_order.py 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. from pydantic import BaseModel, ConfigDict, Field
  2. from typing import Optional
  3. from datetime import datetime
  4. class ProductionWorkOrderBase(BaseModel):
  5. remark: Optional[str] = None
  6. class ProductionWorkOrderListQuery(BaseModel):
  7. page: int = 1
  8. page_size: int = 20
  9. keyword: Optional[str] = None
  10. work_order_no: Optional[str] = None
  11. work_order_status: Optional[str] = None
  12. work_order_type: Optional[str] = None
  13. reception_source: Optional[str] = None
  14. biz_type: Optional[str] = None
  15. protocol_no: Optional[str] = None
  16. sample_code: Optional[str] = None
  17. create_time_start: Optional[str] = None
  18. create_time_end: Optional[str] = None
  19. infusion_time_start: Optional[str] = None
  20. infusion_time_end: Optional[str] = None
  21. planned_start_time_start: Optional[str] = None
  22. planned_start_time_end: Optional[str] = None
  23. exclude_void_protocol: Optional[bool] = Field(True, description="是否排除关联协议无效态的入库工单")
  24. class ProductionWorkOrderComplete(BaseModel):
  25. remark: Optional[str] = None
  26. class ProductionWorkOrderUpdate(BaseModel):
  27. model_config = ConfigDict(populate_by_name=True)
  28. remark: Optional[str] = Field(None, description="备注")
  29. class ProductionWorkOrderCreate(BaseModel):
  30. model_config = ConfigDict(populate_by_name=True)
  31. work_order_type: Optional[str] = Field("inbound", alias="workOrderType", description="工单类型 inbound/temporary")
  32. protocol_no: Optional[str] = Field(None, alias="protocolNo", description="协议号")
  33. sample_code: Optional[str] = Field(None, alias="sampleCode", description="样本编码")
  34. reception_source: Optional[str] = Field("cell_storage", alias="receptionSource", description="来源类型")
  35. remark: Optional[str] = Field(None, description="备注")
  36. class ProductionWorkOrderConfigureBody(BaseModel):
  37. model_config = ConfigDict(populate_by_name=True)
  38. task_name: Optional[str] = Field("", alias="taskName")
  39. assignee_user_id: str = Field(..., alias="assigneeUserId")
  40. task_type: Optional[str] = Field("cell_storage", alias="taskType")
  41. route_id: Optional[str] = Field(None, alias="routeId")
  42. description: Optional[str] = Field("", alias="description")
  43. remark: Optional[str] = Field("", alias="remark")