修复Mock流水按数据库员工及亲属绑定身份证

This commit is contained in:
wkc
2026-03-19 16:07:28 +08:00
parent 627886f711
commit 0457c8f3a6
12 changed files with 426 additions and 34 deletions

View File

@@ -1,6 +1,7 @@
from fastapi import BackgroundTasks, UploadFile
from utils.response_builder import ResponseBuilder
from config.settings import settings
from services.staff_identity_repository import StaffIdentityRepository
from typing import Dict, List, Union
from dataclasses import dataclass, field
import time
@@ -59,13 +60,19 @@ class FileRecord:
trx_date_start_id: int = 20240101
trx_date_end_id: int = 20241231
# 新增字段 - 身份绑定
staff_name: str = ""
staff_id_card: str = ""
family_id_cards: List[str] = field(default_factory=list)
class FileService:
"""文件上传和解析服务"""
def __init__(self):
def __init__(self, staff_identity_repository=None):
self.file_records: Dict[int, FileRecord] = {} # logId -> FileRecord
self.log_counter = settings.INITIAL_LOG_ID
self.staff_identity_repository = staff_identity_repository or StaffIdentityRepository()
def get_file_record(self, log_id: int) -> FileRecord:
"""按 logId 获取已存在的文件记录。"""
@@ -118,6 +125,9 @@ class FileService:
trx_date_end_id: int,
le_id: int,
login_le_id: int,
staff_name: str = "",
staff_id_card: str = "",
family_id_cards: List[str] = None,
parsing: bool = True,
status: int = -5,
) -> FileRecord:
@@ -145,10 +155,17 @@ class FileService:
total_records=total_records,
trx_date_start_id=trx_date_start_id,
trx_date_end_id=trx_date_end_id,
staff_name=staff_name,
staff_id_card=staff_id_card,
family_id_cards=list(family_id_cards or []),
parsing=parsing,
status=status,
)
def _select_staff_identity_scope(self) -> dict:
"""读取一个员工及其亲属身份范围。"""
return self.staff_identity_repository.select_random_staff_with_families()
async def upload_file(
self, group_id: int, file: UploadFile, background_tasks: BackgroundTasks
) -> Dict:
@@ -177,6 +194,7 @@ class FileService:
# 生成单一主绑定
primary_enterprise_name, primary_account_no = self._generate_primary_binding()
identity_scope = self._select_staff_identity_scope()
# 创建完整的文件记录
file_record = self._create_file_record(
@@ -194,6 +212,9 @@ class FileService:
trx_date_end_id=trx_date_end_id,
le_id=10000 + random.randint(0, 9999),
login_le_id=10000 + random.randint(0, 9999),
staff_name=identity_scope["staff_name"],
staff_id_card=identity_scope["staff_id_card"],
family_id_cards=identity_scope["family_id_cards"],
)
# 存储记录
@@ -500,6 +521,7 @@ class FileService:
log_id = self.log_counter
primary_enterprise_name, primary_account_no = self._generate_primary_binding()
identity_scope = self._select_staff_identity_scope()
file_record = self._create_file_record(
log_id=log_id,
group_id=group_id,
@@ -515,6 +537,9 @@ class FileService:
trx_date_end_id=data_end_date_id,
le_id=10000 + random.randint(0, 9999),
login_le_id=10000 + random.randint(0, 9999),
staff_name=identity_scope["staff_name"],
staff_id_card=identity_scope["staff_id_card"],
family_id_cards=identity_scope["family_id_cards"],
parsing=False,
)