| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- 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_sort: int = 0
- task_desc: Optional[str] = None
- is_cover: Optional[int] = 0
- project_id: str
- budget_id: Optional[int] = 0
- item_id: int
- item_code: Optional[str] = None
- file_path: 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_sort=model.task_sort,
- task_desc=model.task_desc,
- is_cover=model.is_cover,
- 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,
- 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.item_id}({self.item_code})_{self.id}/{datetime.now().strftime('%Y%m%d%H%M%S')}"
- class Config:
- from_attributes = True
|