feat: 报销单关联查询出来申请人的信息

This commit is contained in:
martsforever
2025-08-24 12:53:38 +08:00
parent 5646a8d521
commit 4cc090b55c
+37 -6
View File
@@ -11,6 +11,7 @@ from app.model.BasicModel import BasicModel
from app.model.ProjectModel import ProjectModel from app.model.ProjectModel import ProjectModel
from app.model.ReimburseOtherModel import ReimburseOtherModel from app.model.ReimburseOtherModel import ReimburseOtherModel
from app.model.ReimburseTravelModel import ReimburseTravelModel from app.model.ReimburseTravelModel import ReimburseTravelModel
from app.model.UserModel import UserModel, UserServiceModel
from app.utils.create_module_service import create_model_service 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="标题") title: str = Field(default=None, description="标题")
remarks: str = Field(default=None, description="备注信息") remarks: str = Field(default=None, description="备注信息")
# /*---------------------------------------project-------------------------------------------*/ # /*---------------------------------------project:报销单所属项目-------------------------------------------*/
proj_id: str = Field( proj_id: str = Field(
default=None, default=None,
@@ -49,7 +50,7 @@ class ReimburseModel(BasicModel, table=True):
def project(self, value: Optional[ProjectModel]) -> None: def project(self, value: Optional[ProjectModel]) -> None:
pass pass
# /*---------------------------------------travel_list-------------------------------------------*/ # /*---------------------------------------travel_list:报销单子表差旅费用-------------------------------------------*/
# 新增:与ReimburseTravelModel的一对多关系 # 新增:与ReimburseTravelModel的一对多关系
travel_list_rel: Optional[List["ReimburseTravelModel"]] = Relationship( 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: def travel_list(self, value: Optional[List["ReimburseTravelModel"]]) -> None:
pass pass
# /*---------------------------------------other_list-------------------------------------------*/ # /*---------------------------------------other_list:报销单子表其他费用-------------------------------------------*/
other_list_rel: Optional[List["ReimburseOtherModel"]] = Relationship( other_list_rel: Optional[List["ReimburseOtherModel"]] = Relationship(
sa_relationship_kwargs={ sa_relationship_kwargs={
@@ -92,7 +93,7 @@ class ReimburseModel(BasicModel, table=True):
def other_list(self, value: Optional[List["ReimburseOtherModel"]]) -> None: def other_list(self, value: Optional[List["ReimburseOtherModel"]]) -> None:
pass pass
# /*---------------------------------------amount-------------------------------------------*/ # /*---------------------------------------amount:报销单花费金额-------------------------------------------*/
@computed_field @computed_field
@property @property
@@ -108,7 +109,7 @@ class ReimburseModel(BasicModel, table=True):
def amount(self, value: decimal) -> None: def amount(self, value: decimal) -> None:
pass pass
# /*---------------------------------------approve_id-------------------------------------------*/ # /*---------------------------------------approve_id:报销单所关联的审批单-------------------------------------------*/
approve_id: str = Field( approve_id: str = Field(
default=None, default=None,
@@ -137,6 +138,35 @@ class ReimburseModel(BasicModel, table=True):
def approve(self, value: Optional[ApproveModel]) -> None: def approve(self, value: Optional[ApproveModel]) -> None:
pass 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( ReimburseService = create_model_service(
Cls=ReimburseModel, Cls=ReimburseModel,
@@ -147,6 +177,7 @@ ReimburseService = create_model_service(
selectinload(ReimburseModel.travel_list_rel), selectinload(ReimburseModel.travel_list_rel),
selectinload(ReimburseModel.other_list_rel), selectinload(ReimburseModel.other_list_rel),
selectinload(ReimburseModel.approve_rel) selectinload(ReimburseModel.approve_rel),
selectinload(ReimburseModel.user_rel),
) )
) )