From 4cc090b55ca62fca075fb395cb1bd55ff9c49b26 Mon Sep 17 00:00:00 2001 From: martsforever Date: Sun, 24 Aug 2025 12:53:38 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=8A=A5=E9=94=80=E5=8D=95=E5=85=B3?= =?UTF-8?q?=E8=81=94=E6=9F=A5=E8=AF=A2=E5=87=BA=E6=9D=A5=E7=94=B3=E8=AF=B7?= =?UTF-8?q?=E4=BA=BA=E7=9A=84=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/model/ReimburseModel.py | 43 +++++++++++++++++++++++++++++++------ 1 file changed, 37 insertions(+), 6 deletions(-) diff --git a/app/model/ReimburseModel.py b/app/model/ReimburseModel.py index 505e796..7795928 100644 --- a/app/model/ReimburseModel.py +++ b/app/model/ReimburseModel.py @@ -11,6 +11,7 @@ from app.model.BasicModel import BasicModel from app.model.ProjectModel import ProjectModel from app.model.ReimburseOtherModel import ReimburseOtherModel from app.model.ReimburseTravelModel import ReimburseTravelModel +from app.model.UserModel import UserModel, UserServiceModel from app.utils.create_module_service import create_model_service @@ -20,7 +21,7 @@ class ReimburseModel(BasicModel, table=True): title: str = Field(default=None, description="标题") remarks: str = Field(default=None, description="备注信息") - # /*---------------------------------------project-------------------------------------------*/ + # /*---------------------------------------project:报销单所属项目-------------------------------------------*/ proj_id: str = Field( default=None, @@ -49,7 +50,7 @@ class ReimburseModel(BasicModel, table=True): def project(self, value: Optional[ProjectModel]) -> None: pass - # /*---------------------------------------travel_list-------------------------------------------*/ + # /*---------------------------------------travel_list:报销单子表差旅费用-------------------------------------------*/ # 新增:与ReimburseTravelModel的一对多关系 travel_list_rel: Optional[List["ReimburseTravelModel"]] = Relationship( @@ -71,7 +72,7 @@ class ReimburseModel(BasicModel, table=True): def travel_list(self, value: Optional[List["ReimburseTravelModel"]]) -> None: pass - # /*---------------------------------------other_list-------------------------------------------*/ + # /*---------------------------------------other_list:报销单子表其他费用-------------------------------------------*/ other_list_rel: Optional[List["ReimburseOtherModel"]] = Relationship( sa_relationship_kwargs={ @@ -92,7 +93,7 @@ class ReimburseModel(BasicModel, table=True): def other_list(self, value: Optional[List["ReimburseOtherModel"]]) -> None: pass - # /*---------------------------------------amount-------------------------------------------*/ + # /*---------------------------------------amount:报销单花费金额-------------------------------------------*/ @computed_field @property @@ -108,7 +109,7 @@ class ReimburseModel(BasicModel, table=True): def amount(self, value: decimal) -> None: pass - # /*---------------------------------------approve_id-------------------------------------------*/ + # /*---------------------------------------approve_id:报销单所关联的审批单-------------------------------------------*/ approve_id: str = Field( default=None, @@ -137,6 +138,35 @@ class ReimburseModel(BasicModel, table=True): def approve(self, value: Optional[ApproveModel]) -> None: pass + # /*---------------------------------------user_id:报销单申请人-------------------------------------------*/ + + user_id: str = Field( + default=None, + description="项目成员id", + foreign_key="pl_user.id", # 添加外键约束 + nullable=True + ) + + user_rel: Optional["UserServiceModel"] = Relationship( + sa_relationship_kwargs={ + "foreign_keys": "ReimburseModel.user_id", + "remote_side": "UserServiceModel.id", + "uselist": False + } + ) + + @computed_field + @property + def user(self) -> Optional[UserServiceModel]: + try: + return self.user_rel + except: + return None + + @user.setter + def user(self, value: Optional[UserServiceModel]) -> None: + pass + ReimburseService = create_model_service( Cls=ReimburseModel, @@ -147,6 +177,7 @@ ReimburseService = create_model_service( selectinload(ReimburseModel.travel_list_rel), selectinload(ReimburseModel.other_list_rel), - selectinload(ReimburseModel.approve_rel) + selectinload(ReimburseModel.approve_rel), + selectinload(ReimburseModel.user_rel), ) )