process_route.py 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. """工艺路线管理 Pydantic Schemas"""
  2. from pydantic import BaseModel, ConfigDict, Field
  3. from typing import Optional, List
  4. # Route main table
  5. class ProcessRouteCreateBody(BaseModel):
  6. model_config = ConfigDict(populate_by_name=True)
  7. route_code: str = Field(..., alias="routeCode")
  8. route_name: str = Field(..., alias="routeName")
  9. product_type_id: Optional[str] = Field(None, alias="productTypeId")
  10. version: Optional[str] = Field(None, alias="version")
  11. remark: Optional[str] = None
  12. class ProcessRouteUpdateBody(BaseModel):
  13. model_config = ConfigDict(populate_by_name=True)
  14. route_code: Optional[str] = Field(None, alias="routeCode")
  15. route_name: Optional[str] = Field(None, alias="routeName")
  16. product_type_id: Optional[str] = Field(None, alias="productTypeId")
  17. version: Optional[str] = Field(None, alias="version")
  18. remark: Optional[str] = None
  19. equipment_ids: Optional[List[str]] = Field(None, alias="equipmentIds")
  20. class SetCurrentBody(BaseModel):
  21. model_config = ConfigDict(populate_by_name=True)
  22. route_id: str = Field(..., alias="routeId")
  23. # Step operations
  24. class StepAddBody(BaseModel):
  25. model_config = ConfigDict(populate_by_name=True)
  26. route_id: str = Field(..., alias="routeId")
  27. process_id: str = Field(..., alias="processId")
  28. step_order: Optional[int] = Field(None, alias="stepOrder")
  29. class StepCopyBody(BaseModel):
  30. model_config = ConfigDict(populate_by_name=True)
  31. step_id: str = Field(..., alias="stepId")
  32. class StepUpdateBody(BaseModel):
  33. model_config = ConfigDict(populate_by_name=True)
  34. step_id: str = Field(..., alias="stepId")
  35. process_code: Optional[str] = Field(None, alias="processCode")
  36. category_id: Optional[str] = Field(None, alias="categoryId")
  37. process_name: Optional[str] = Field(None, alias="processName")
  38. description: Optional[str] = None
  39. equipment_ids: Optional[List[str]] = Field(None, alias="equipmentIds")
  40. estimated_duration: Optional[str] = Field(None, alias="estimatedDuration")
  41. sop_ids: Optional[str] = Field(None, alias="sopIds")
  42. sop_content: Optional[str] = Field(None, alias="sopContent")
  43. class StepReorderBody(BaseModel):
  44. model_config = ConfigDict(populate_by_name=True)
  45. route_id: str = Field(..., alias="routeId")
  46. step_ids: List[str] = Field(..., alias="stepIds")
  47. # Step sub-table items
  48. class StepReagentItem(BaseModel):
  49. model_config = ConfigDict(populate_by_name=True)
  50. reagent_code: Optional[str] = Field(None, alias="reagentCode")
  51. reagent_name: Optional[str] = Field(None, alias="reagentName")
  52. spec: Optional[str] = None
  53. standard_usage: Optional[str] = Field(None, alias="standardUsage")
  54. unit: Optional[str] = None
  55. is_key_material: Optional[str] = Field("0", alias="isKeyMaterial")
  56. order_num: Optional[int] = Field(0, alias="orderNum")
  57. remark: Optional[str] = None
  58. class StepConsumableItem(BaseModel):
  59. model_config = ConfigDict(populate_by_name=True)
  60. consumable_code: Optional[str] = Field(None, alias="consumableCode")
  61. consumable_name: Optional[str] = Field(None, alias="consumableName")
  62. spec_model: Optional[str] = Field(None, alias="specModel")
  63. standard_usage: Optional[str] = Field(None, alias="standardUsage")
  64. unit: Optional[str] = None
  65. is_required: Optional[str] = Field("1", alias="isRequired")
  66. order_num: Optional[int] = Field(0, alias="orderNum")
  67. remark: Optional[str] = None
  68. class StepOutputItem(BaseModel):
  69. model_config = ConfigDict(populate_by_name=True)
  70. output_type_id: Optional[str] = Field(None, alias="outputTypeId")
  71. output_name: Optional[str] = Field(None, alias="outputName")
  72. output_barcode: Optional[str] = Field(None, alias="outputBarcode")
  73. order_num: Optional[int] = Field(0, alias="orderNum")
  74. remark: Optional[str] = None
  75. class StepDataCollectionItem(BaseModel):
  76. model_config = ConfigDict(populate_by_name=True)
  77. collection_name: Optional[str] = Field(None, alias="collectionName")
  78. unit: Optional[str] = None
  79. order_num: Optional[int] = Field(0, alias="orderNum")
  80. remark: Optional[str] = None
  81. # Sub-table update bodies (step_id + items[])
  82. class StepReagentUpdateBody(BaseModel):
  83. model_config = ConfigDict(populate_by_name=True)
  84. step_id: str = Field(..., alias="stepId")
  85. items: List[StepReagentItem] = Field(...)
  86. class StepConsumableUpdateBody(BaseModel):
  87. model_config = ConfigDict(populate_by_name=True)
  88. step_id: str = Field(..., alias="stepId")
  89. items: List[StepConsumableItem] = Field(...)
  90. class StepOutputUpdateBody(BaseModel):
  91. model_config = ConfigDict(populate_by_name=True)
  92. step_id: str = Field(..., alias="stepId")
  93. items: List[StepOutputItem] = Field(...)
  94. class StepDataCollectionUpdateBody(BaseModel):
  95. model_config = ConfigDict(populate_by_name=True)
  96. step_id: str = Field(..., alias="stepId")
  97. items: List[StepDataCollectionItem] = Field(...)