| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- from pydantic import BaseModel
- from typing import Optional
- from datetime import datetime
- from ..models import ProjectModel
- class ProjectDto(BaseModel):
- """项目信息DTO"""
- project_id: Optional[str] = None
- project_name: str
- project_manager: Optional[str] = None
- design_stage: Optional[str] = None
- project_desc: Optional[str] = None
- short_name: Optional[str] = None
- project_type: Optional[str] = None
- project_version: Optional[str] = None
- unit: Optional[str] = None
- create_time: Optional[datetime] = None
- # compilation_method: Optional[str] = None
- # compilation_scope: Optional[str] = None
- # total_engineering: Optional[float] = None
- # total_budget: Optional[float] = None
- # budget_index: Optional[float] = None
- # standard_quota: Optional[str] = None
- # train_transport_standard: Optional[str] = None
- # material_library: Optional[str] = None
- # work_shift_library: Optional[str] = None
- # equipment_library: Optional[str] = None
- # review_status: Optional[int] = None
- # years_to_construction: Optional[int] = None
- # project_password: Optional[str] = None
- # railway_grade: Optional[str] = None
- # main_line_count: Optional[int] = None
- # traction_type: Optional[str] = None
- # blocking_mode: Optional[str] = None
- # station_count: Optional[str] = None
- # target_speed: Optional[int] = None
- # print_compilation_review: Optional[bool] = None
- # unit_conversion: Optional[bool] = None
- # completion_status: Optional[str] = None
- @classmethod
- def from_model(cls, model: ProjectModel) -> 'ProjectDto':
- """从数据库模型创建DTO对象"""
- return cls(
- project_id=model.project_id,
- project_name=model.project_name,
- project_manager=model.project_manager,
- design_stage=model.design_stage,
- project_desc=model.project_description,
- short_name=model.short_name,
- project_type=model.project_type,
- project_version=model.project_version,
- unit=model.unit,
- create_time=model.create_time,
- # compilation_method=model.compilation_method,
- # compilation_scope=model.compilation_scope,
- # total_engineering=model.total_engineering,
- # total_budget=model.total_budget,
- # budget_index=model.budget_index,
- # standard_quota=model.standard_quota,
- # train_transport_standard=model.train_transport_standard,
- # material_library=model.material_library,
- # work_shift_library=model.work_shift_library,
- # equipment_library=model.equipment_library,
- # review_status=model.review_status,
- # years_to_construction=model.years_to_construction,
- # project_password=model.project_password,
- # railway_grade=model.railway_grade,
- # main_line_count=model.main_line_count,
- # traction_type=model.traction_type,
- # blocking_mode=model.blocking_mode,
- # station_count=model.station_count,
- # target_speed=model.target_speed,
- # print_compilation_review=model.print_compilation_review,
- # unit_conversion=model.unit_conversion,
- # completion_status=model.completion_status
- )
- def to_dict(self) -> dict:
- """转换为字典格式"""
- data = self.model_dump()
- if self.create_time:
- data['create_time'] = self.create_time.strftime('%Y-%m-%d %H:%M:%S')
- return data
- class Config:
- from_attributes = True
|