process_route.py 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  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. class StepReorderBody(BaseModel):
  43. model_config = ConfigDict(populate_by_name=True)
  44. route_id: str = Field(..., alias="routeId")
  45. step_ids: List[str] = Field(..., alias="stepIds")
  46. # Step sub-table items
  47. class StepReagentItem(BaseModel):
  48. model_config = ConfigDict(populate_by_name=True)
  49. reagent_code: Optional[str] = Field(None, alias="reagentCode")
  50. reagent_name: Optional[str] = Field(None, alias="reagentName")
  51. spec: Optional[str] = None
  52. standard_usage: Optional[str] = Field(None, alias="standardUsage")
  53. unit: Optional[str] = None
  54. is_key_material: Optional[str] = Field("0", alias="isKeyMaterial")
  55. order_num: Optional[int] = Field(0, alias="orderNum")
  56. remark: Optional[str] = None
  57. class StepConsumableItem(BaseModel):
  58. model_config = ConfigDict(populate_by_name=True)
  59. consumable_code: Optional[str] = Field(None, alias="consumableCode")
  60. consumable_name: Optional[str] = Field(None, alias="consumableName")
  61. spec_model: Optional[str] = Field(None, alias="specModel")
  62. standard_usage: Optional[str] = Field(None, alias="standardUsage")
  63. unit: Optional[str] = None
  64. is_required: Optional[str] = Field("1", alias="isRequired")
  65. order_num: Optional[int] = Field(0, alias="orderNum")
  66. remark: Optional[str] = None
  67. class StepOutputItem(BaseModel):
  68. model_config = ConfigDict(populate_by_name=True)
  69. output_type_id: Optional[str] = Field(None, alias="outputTypeId")
  70. output_name: Optional[str] = Field(None, alias="outputName")
  71. output_barcode: Optional[str] = Field(None, alias="outputBarcode")
  72. order_num: Optional[int] = Field(0, alias="orderNum")
  73. remark: Optional[str] = None
  74. class StepDataCollectionItem(BaseModel):
  75. model_config = ConfigDict(populate_by_name=True)
  76. collection_name: Optional[str] = Field(None, alias="collectionName")
  77. unit: Optional[str] = None
  78. order_num: Optional[int] = Field(0, alias="orderNum")
  79. remark: Optional[str] = None
  80. # Sub-table update bodies (step_id + items[])
  81. class StepReagentUpdateBody(BaseModel):
  82. model_config = ConfigDict(populate_by_name=True)
  83. step_id: str = Field(..., alias="stepId")
  84. items: List[StepReagentItem] = Field(...)
  85. class StepConsumableUpdateBody(BaseModel):
  86. model_config = ConfigDict(populate_by_name=True)
  87. step_id: str = Field(..., alias="stepId")
  88. items: List[StepConsumableItem] = Field(...)
  89. class StepOutputUpdateBody(BaseModel):
  90. model_config = ConfigDict(populate_by_name=True)
  91. step_id: str = Field(..., alias="stepId")
  92. items: List[StepOutputItem] = Field(...)
  93. class StepDataCollectionUpdateBody(BaseModel):
  94. model_config = ConfigDict(populate_by_name=True)
  95. step_id: str = Field(..., alias="stepId")
  96. items: List[StepDataCollectionItem] = Field(...)