first commit
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
"""
|
||||
contract_change相关schemea
|
||||
"""
|
||||
from ..common.validators import DateStr
|
||||
from pydantic import BaseModel, Field
|
||||
from typing import Optional
|
||||
from ..common.base import BaseResponseWithID
|
||||
from pydantic import field_validator
|
||||
from fastapi import HTTPException
|
||||
|
||||
class ContractChangeResponse(BaseResponseWithID):
|
||||
"""
|
||||
合同变更模型
|
||||
"""
|
||||
id: Optional[str] = Field(default=None, description="合同变更ID")
|
||||
project_id : Optional[str] = Field(None, description="所属项目ID")
|
||||
contract_id: Optional[str] = Field(None, description="关联合同ID")
|
||||
name: Optional[str] = Field(None, description="合同名称")
|
||||
sub_name: Optional[str] = Field(None, description="合同子标题(epc合同和pc合同会有子标题)")
|
||||
sign_company:Optional[str] = Field(None, description="签约公司")
|
||||
title: Optional[str] = Field(None, description="变更事项")
|
||||
reason: Optional[str] = Field(None, description="变更理由")
|
||||
before_amount: Optional[float] = Field(None, description="变更前金额")
|
||||
after_amount: Optional[float] = Field(None, description="变更后金额")
|
||||
change_count: Optional[float] = Field(None, description="变更金额")
|
||||
change_rate: Optional[str] = Field(None, description="变更比例")
|
||||
change_time: Optional[str] = Field(None, description="变更时间(格式:YYYY-MM-DD)")
|
||||
attachment_ids:Optional[list] = Field(None, description="附件ID列表")
|
||||
attachment_names:Optional[list] = Field(None, description="附件名称列表")
|
||||
created_at:Optional[str]=Field(None, description="创建时间")
|
||||
created_by_name: Optional[str] = Field(None, description="创建人名称")
|
||||
|
||||
class PostContractChange(BaseModel):
|
||||
"""
|
||||
合同变更请求(水火抽蓄气电)
|
||||
PROJECT_CONTRACT_CHANGE = "project.contract-change"
|
||||
"""
|
||||
|
||||
|
||||
id: str = Field(..., description="合同变更ID,更新时传入,创建时不传")
|
||||
project_id: str = Field(..., description="所属项目ID")
|
||||
contract_id: str = Field(..., description="合同ID")
|
||||
title: str = Field(..., description="变更事项")
|
||||
reason: str = Field(..., description="变更理由")
|
||||
before_amount: float = Field(..., description="变更前金额")
|
||||
after_amount: float = Field(..., description="变更后金额")
|
||||
change_time: DateStr = Field(..., description="变更时间(格式:YYYY-MM-DD)")
|
||||
attachment_ids: list = Field(..., description="附件ID列表")
|
||||
|
||||
@field_validator("after_amount")
|
||||
def validate_after_amount(cls, v: float) -> float:
|
||||
if v < 0:
|
||||
raise HTTPException(status_code=400, detail="变更后金额必须小于等于0")
|
||||
return v
|
||||
|
||||
class CreateContractChange(BaseModel):
|
||||
"""
|
||||
创建合同变更请求(水火抽蓄气电)
|
||||
PROJECT_CONTRACT_CHANGE = "project.contract-change"
|
||||
"""
|
||||
|
||||
project_id: str = Field(..., description="所属项目ID")
|
||||
contract_id: str = Field(..., description="合同ID")
|
||||
title: str = Field(..., description="变更事项")
|
||||
reason: str = Field(..., description="变更理由")
|
||||
before_amount: float = Field(..., description="变更前金额")
|
||||
after_amount: float = Field(..., description="变更后金额")
|
||||
change_time: DateStr = Field(..., description="变更时间(格式:YYYY-MM-DD)")
|
||||
attachment_ids: list = Field(..., description="附件ID列表")
|
||||
|
||||
@field_validator("after_amount")
|
||||
def validate_after_amount(cls, v: float) -> float:
|
||||
if v < 0:
|
||||
raise HTTPException(status_code=400, detail="变更后金额不能小于0")
|
||||
return v
|
||||
Reference in New Issue
Block a user