quota_input.py 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153
  1. from pydantic import BaseModel
  2. from typing import Optional
  3. from core.models.quota_input import QuotaInputModel
  4. from core.dtos.project_quota import ProjectQuotaDto
  5. class QuotaInputDto(BaseModel):
  6. """定额输入DTO"""
  7. quota_id: Optional[int] = None
  8. budget_id: int
  9. item_id: int
  10. quota_code: str
  11. sequence_number: Optional[int] = None
  12. project_name: Optional[str] = None
  13. unit: Optional[str] = None
  14. project_quantity: Optional[float] = None
  15. project_quantity_input: Optional[str] = None
  16. quota_adjustment: Optional[str] = None
  17. unit_price: Optional[float] = None
  18. # compilation_unit_price: Optional[float] = None
  19. # total_price: Optional[float] = None
  20. # compilation_total_price: Optional[float] = None
  21. unit_weight: Optional[float] = None
  22. # total_weight: Optional[float] = None
  23. # labor_cost: Optional[float] = None
  24. # compilation_labor_cost: Optional[float] = None
  25. # material_cost: Optional[float] = None
  26. # compilation_material_cost: Optional[float] = None
  27. # deduct_material_cost: Optional[float] = None
  28. # compilation_deduct_material_cost: Optional[float] = None
  29. # mechanical_cost: Optional[float] = None
  30. # compilation_mechanical_cost: Optional[float] = None
  31. # equipment_cost: Optional[float] = None
  32. # compilation_equipment_cost: Optional[float] = None
  33. # transport_cost: Optional[float] = None
  34. # compilation_transport_cost: Optional[float] = None
  35. # quota_workday: Optional[float] = None
  36. # total_workday: Optional[float] = None
  37. # workday_salary: Optional[float] = None
  38. # compilation_workday_salary: Optional[float] = None
  39. # quota_mechanical_workday: Optional[float] = None
  40. # total_mechanical_workday: Optional[float] = None
  41. # mechanical_workday_salary: Optional[float] = None
  42. # compilation_mechanical_workday_salary: Optional[float] = None
  43. compiler: Optional[str] = None
  44. modify_date: Optional[str] = None
  45. # quota_consumption: Optional[str] = None
  46. # basic_quota: Optional[str] = None
  47. # quota_comprehensive_unit_price: Optional[float] = None
  48. # quota_comprehensive_total_price: Optional[float] = None
  49. @classmethod
  50. def from_model(cls, model: QuotaInputModel) -> "QuotaInputDto":
  51. """从数据库模型创建DTO对象"""
  52. return cls(
  53. quota_id=model.quota_id,
  54. budget_id=model.budget_id,
  55. item_id=model.item_id,
  56. quota_code=model.quota_code,
  57. sequence_number=model.sequence_number,
  58. project_name=model.project_name,
  59. unit=model.unit,
  60. project_quantity=model.project_quantity,
  61. project_quantity_input=model.project_quantity_input,
  62. quota_adjustment=model.quota_adjustment,
  63. unit_price=model.unit_price,
  64. # compilation_unit_price=model.compilation_unit_price,
  65. # total_price=model.total_price,
  66. # compilation_total_price=model.compilation_total_price,
  67. unit_weight=model.unit_weight,
  68. # total_weight=model.total_weight,
  69. # labor_cost=model.labor_cost,
  70. # compilation_labor_cost=model.compilation_labor_cost,
  71. # material_cost=model.material_cost,
  72. # compilation_material_cost=model.compilation_material_cost,
  73. # deduct_material_cost=model.deduct_material_cost,
  74. # compilation_deduct_material_cost=model.compilation_deduct_material_cost,
  75. # mechanical_cost=model.mechanical_cost,
  76. # compilation_mechanical_cost=model.compilation_mechanical_cost,
  77. # equipment_cost=model.equipment_cost,
  78. # compilation_equipment_cost=model.compilation_equipment_cost,
  79. # transport_cost=model.transport_cost,
  80. # compilation_transport_cost=model.compilation_transport_cost,
  81. # quota_workday=model.quota_workday,
  82. # total_workday=model.total_workday,
  83. # workday_salary=model.workday_salary,
  84. # compilation_workday_salary=model.compilation_workday_salary,
  85. # quota_mechanical_workday=model.quota_mechanical_workday,
  86. # total_mechanical_workday=model.total_mechanical_workday,
  87. # mechanical_workday_salary=model.mechanical_workday_salary,
  88. # compilation_mechanical_workday_salary=model.compilation_mechanical_workday_salary,
  89. compiler=model.compiler,
  90. modify_date=model.modify_date,
  91. # quota_consumption=model.quota_consumption,
  92. # basic_quota=model.basic_quota,
  93. # quota_comprehensive_unit_price=model.quota_comprehensive_unit_price,
  94. # quota_comprehensive_total_price=model.quota_comprehensive_total_price
  95. )
  96. @classmethod
  97. def from_quota_dto(cls, quota_dto: ProjectQuotaDto):
  98. return cls(
  99. quota_id=quota_dto.quota_id,
  100. budget_id=quota_dto.budget_id,
  101. item_id=quota_dto.item_id,
  102. quota_code=quota_dto.quota_code,
  103. sequence_number=1000,
  104. project_name=quota_dto.entry_name,
  105. unit=quota_dto.units,
  106. project_quantity=quota_dto.amount,
  107. project_quantity_input=str(quota_dto.amount),
  108. quota_adjustment=quota_dto.quota_adjustment,
  109. unit_price=0.1,
  110. # compilation_unit_price=quota_dto.compilation_unit_price,
  111. # total_price=quota_dto.total_price,
  112. # compilation_total_price=quota_dto.compilation_total_price,
  113. unit_weight=0.1,
  114. # total_weight=quota_dto.total_weight,
  115. # labor_cost=quota_dto.labor_cost,
  116. # compilation_labor_cost=quota_dto.compilation_labor_cost,
  117. # material_cost=quota_dto.material_cost,
  118. # compilation_material_cost=quota_dto.compilation_material_cost,
  119. # deduct_material_cost=quota_dto.deduct_material_cost,
  120. # compilation_deduct_material_cost=quota_dto.compilation_deduct_material_cost,
  121. # mechanical_cost=quota_dto.mechanical_cost,
  122. # compilation_mechanical_cost=quota_dto.compilation_mechanical_cost,
  123. # equipment_cost=quota_dto.equipment_cost,
  124. # compilation_equipment_cost=quota_dto.compilation_equipment_cost,
  125. # transport_cost=quota_dto.transport_cost,
  126. # compilation_transport_cost=quota_dto.compilation_transport_cost,
  127. # quota_workday=quota_dto.quota_workday,
  128. # total_workday=quota_dto.total_workday,
  129. # workday_salary=quota_dto.workday_salary,
  130. # compilation_workday_salary=quota_dto.compilation_workday_salary,
  131. # quota_mechanical_workday=quota_dto.quota_mechanical_workday,
  132. # total_mechanical_workday=quota_dto.total_mechanical_workday,
  133. # mechanical_workday_salary=quota_dto.mechanical_workday_salary,
  134. # compilation_mechanical_workday_salary=quota_dto.compilation_mechanical_workday_salary,
  135. compiler=quota_dto.created_by,
  136. # quota_consumption=quota_dto.quota_consumption,
  137. # basic_quota=quota_dto.basic_quota,
  138. # quota_comprehensive_unit_price=quota_dto.quota_comprehensive_unit_price,
  139. # quota_comprehensive_total_price=quota_dto.quota_comprehensive_total_price
  140. )
  141. def to_dict(self) -> dict:
  142. """转换为字典格式"""
  143. return self.model_dump()
  144. class Config:
  145. from_attributes = True