1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- from pydantic import BaseModel
- from typing import Optional
- from datetime import datetime
- from ..models import ProjectTaskModel
- class ProjectTaskDto(BaseModel):
- """项目任务DTO"""
- id: Optional[int] = None
- task_name: str
- task_desc: Optional[str] = None
- project_id: str
- budget_id: Optional[int] = 0
- item_id: int
- item_code: Optional[str] = None
- file_path: Optional[str] = None
- collect_status: Optional[int] = 0
- collect_time: Optional[datetime] = None
- collect_error: Optional[str] = None
- process_status: Optional[int] = 0
- process_time: Optional[datetime] = None
- process_error: Optional[str] = None
- send_status: Optional[int] = 0
- send_time: Optional[datetime] = None
- send_error: Optional[str] = None
- is_del: Optional[int] = 0
- deleted_by: Optional[str] = None
- deleted_at: Optional[datetime] = None
- created_by: Optional[str] = None
- created_at: Optional[datetime] = None
- updated_by: Optional[str] = None
- updated_at: Optional[datetime] = None
- @classmethod
- def from_model(cls, model: ProjectTaskModel) -> 'ProjectTaskDto':
- """从数据库模型创建DTO对象"""
- return cls(
- id=model.id,
- task_name=model.task_name,
- task_desc=model.task_desc,
- project_id=model.project_id,
- budget_id=model.budget_id,
- item_id=model.item_id,
- item_code=model.item_code,
- file_path=model.file_path,
- collect_status=model.collect_status,
- collect_time=model.collect_time,
- collect_error=model.collect_error,
- process_status=model.process_status,
- process_time=model.process_time,
- process_error=model.process_error,
- send_status=model.send_status,
- send_time=model.send_time,
- send_error=model.send_error,
- is_del=model.is_del,
- deleted_by=model.deleted_by,
- deleted_at=model.deleted_at,
- created_by=model.created_by,
- created_at=model.created_at,
- updated_by=model.updated_by,
- updated_at=model.updated_at
- )
- @classmethod
- def from_dict(cls, data: dict) -> 'ProjectTaskDto':
- """从字典创建DTO对象"""
- if 'budget_id' in data and 'budget_id' not in data:
- data['budget_id'] = data.pop('budget_id')
- return cls(**data)
- def to_dict(self) -> dict:
- """转换为字典格式"""
- return self.model_dump()
- def get_path(self):
- return f"{self.project_id}_{self.budget_id}_{self.item_id}_{self.id}"
- class Config:
- from_attributes = True
|