123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- from pydantic import BaseModel
- from typing import Optional
- from datetime import datetime
- from sqlalchemy import update
- from core.models import ProjectQuotaModel
- class ProjectQuotaDto(BaseModel):
- """项目定额DTO"""
- id: Optional[int] = None
- task_id:Optional[int] = None
- project_id: str
- budget_id: int
- budget_code: str
- item_id: int
- item_code: str
- quota_code: Optional[str] = None
- entry_name: Optional[str] = None
- units: Optional[str] = None
- amount: Optional[float] = None
- ex_file: Optional[str] = None
- ex_cell: Optional[str] = None
- ex_row: Optional[str] = None
- ex_unit: Optional[str] = None
- ex_amount: Optional[float] = None
- created_at: Optional[datetime] = None
- created_by: Optional[str] = None
- updated_at: Optional[datetime] = None
- updated_by: Optional[str] = None
- @classmethod
- def from_model(cls, model: ProjectQuotaModel) -> 'ProjectQuotaDto':
- """从数据库模型创建DTO对象"""
- return cls(
- id=model.id,
- task_id=model.task_id,
- project_id=model.project_id,
- budget_id=model.budget_id,
- budget_code=model.budget_code,
- item_id=model.item_id,
- item_code=model.item_code,
- quota_code=model.quota_code,
- entry_name=model.entry_name,
- units = model.units,
- amount=model.amount,
- ex_file=model.ex_file,
- ex_cell=model.ex_cell,
- ex_row=model.ex_row,
- ex_unit=model.ex_unit,
- ex_amount=model.ex_amount,
- )
- def to_dict(self) -> dict:
- """转换为字典格式"""
- return self.model_dump()
- @classmethod
- def ai_prompt_struct(cls):
- return """```typescript
- export interface input_struct { //输入数据结构体
- i: // ID
- n: string; //工程或费用项目名称
- u:string; //单位
- q: float; //数量
- }
- export interface item { //需返回的结构体
- i: int; // ID 与提供的ID保持一致
- q: string; // 定额编号
- u:string; // 定额单位
- p: float; // 定额单价
- tp: float; // 总价
- }
- ```
- """
- @classmethod
- def from_ai_dict(cls,data: dict):
- return cls(
- project_id="",
- budget_id=0,
- item_id=0,
- item_code="",
- id=data.get("i",0),
- quota_code=data.get("q",""),
- units=data.get("u",""),
- )
- def to_ai_dict(self):
- return {
- "i": self.id,
- "n": self.entry_name,
- "u": self.unit,
- "q": self.project_quantity,
- }
- class Config:
- from_attributes = True
|