Create 3 schema files for the production module: - production_work_order.py: work order base, list query, complete - production_task.py: task CRUD, steps, materials, outputs, inputs - cell_product.py: cell product create, update, list query
94 lines
2.5 KiB
Python
94 lines
2.5 KiB
Python
from pydantic import BaseModel
|
|
from typing import Optional, List
|
|
from datetime import datetime
|
|
|
|
|
|
class ProductionTaskCreate(BaseModel):
|
|
work_order_id: str
|
|
task_name: Optional[str] = None
|
|
route_id: str
|
|
description: Optional[str] = None
|
|
remark: Optional[str] = None
|
|
|
|
|
|
class ProductionTaskListQuery(BaseModel):
|
|
page: int = 1
|
|
page_size: int = 20
|
|
work_order_id: Optional[str] = None
|
|
task_no: Optional[str] = None
|
|
task_status: Optional[str] = None
|
|
|
|
|
|
class ProductionTaskUpdate(BaseModel):
|
|
task_name: Optional[str] = None
|
|
description: Optional[str] = None
|
|
remark: Optional[str] = None
|
|
attachments: Optional[str] = None
|
|
|
|
|
|
class ProductionTaskStatusUpdate(BaseModel):
|
|
task_status: str
|
|
|
|
|
|
class TaskStepAdd(BaseModel):
|
|
process_code: Optional[str] = None
|
|
category_id: Optional[str] = None
|
|
process_name: Optional[str] = None
|
|
description: Optional[str] = None
|
|
equipment_name: Optional[str] = None
|
|
estimated_duration: Optional[str] = None
|
|
sop_ids: Optional[str] = None
|
|
|
|
|
|
class TaskStepUpdate(BaseModel):
|
|
process_name: Optional[str] = None
|
|
description: Optional[str] = None
|
|
equipment_name: Optional[str] = None
|
|
estimated_duration: Optional[str] = None
|
|
actual_duration: Optional[str] = None
|
|
sop_ids: Optional[str] = None
|
|
step_status: Optional[str] = None
|
|
|
|
|
|
class TaskStepMaterialItem(BaseModel):
|
|
material_code: Optional[str] = None
|
|
material_name: Optional[str] = None
|
|
spec: Optional[str] = None
|
|
spec_model: Optional[str] = None
|
|
standard_usage: Optional[str] = None
|
|
actual_usage: Optional[str] = None
|
|
unit: Optional[str] = None
|
|
is_key_material: Optional[str] = '0'
|
|
is_required: Optional[str] = '1'
|
|
remark: Optional[str] = None
|
|
|
|
|
|
class TaskStepOutputItem(BaseModel):
|
|
output_type_id: Optional[str] = None
|
|
output_name: Optional[str] = None
|
|
output_barcode: Optional[str] = None
|
|
|
|
|
|
class TaskStepDataCollectionItem(BaseModel):
|
|
collection_name: Optional[str] = None
|
|
unit: Optional[str] = None
|
|
collection_value: Optional[str] = None
|
|
|
|
|
|
class TaskInputItem(BaseModel):
|
|
input_type: str
|
|
input_id: Optional[str] = None
|
|
input_code: Optional[str] = None
|
|
input_name: Optional[str] = None
|
|
|
|
|
|
class TaskOutputItem(BaseModel):
|
|
cell_product_id: Optional[str] = None
|
|
storage_slot_id: Optional[str] = None
|
|
output_name: Optional[str] = None
|
|
output_barcode: Optional[str] = None
|
|
quantity: Optional[float] = None
|
|
unit: Optional[str] = None
|
|
remark: Optional[str] = None
|
|
attachments: Optional[str] = None
|