fix: 创建产品时自动将当前位置设为当前登录用户(谁创建谁持有)
This commit is contained in:
@ -13,6 +13,7 @@ from app.schemas.product import (
|
||||
ProductScanResponse,
|
||||
)
|
||||
from app.services import product_service
|
||||
from app.services.auth_service import get_current_user
|
||||
from app.services.qrcode_service import generate_qrcode_png
|
||||
|
||||
router = APIRouter(prefix="/products", tags=["产品管理"])
|
||||
@ -87,9 +88,11 @@ async def get_product(
|
||||
async def create_product_endpoint(
|
||||
data: ProductCreate,
|
||||
db: AsyncSession = Depends(get_db),
|
||||
current_user: dict = Depends(get_current_user),
|
||||
):
|
||||
"""创建产品"""
|
||||
return await product_service.create_product(db, data)
|
||||
"""创建产品 — 初始位置自动设为当前登录用户"""
|
||||
creator_username = current_user.get("username", "")
|
||||
return await product_service.create_product(db, data, creator_username)
|
||||
|
||||
|
||||
@router.patch("/{product_id}", response_model=ProductResponse)
|
||||
|
||||
@ -147,8 +147,8 @@ async def get_product(db: AsyncSession, product_id: uuid.UUID) -> Product:
|
||||
return product
|
||||
|
||||
|
||||
async def create_product(db: AsyncSession, data: ProductCreate) -> ProductResponse:
|
||||
"""创建产品 — 自动生成 16 位 HEX 序列号"""
|
||||
async def create_product(db: AsyncSession, data: ProductCreate, creator_username: str = "") -> ProductResponse:
|
||||
"""创建产品 — 自动生成 16 位 HEX 序列号,初始位置设为创建者"""
|
||||
from app.services.counter_service import ensure_sequence, next_hex_id
|
||||
from app.models.production_order import ProductionOrder
|
||||
|
||||
@ -180,10 +180,18 @@ async def create_product(db: AsyncSession, data: ProductCreate) -> ProductRespon
|
||||
material_type=data.material_type or None,
|
||||
external_serial=data.external_serial,
|
||||
parent_product_id=data.parent_product_id,
|
||||
current_location_id=creator_username or None, # 谁创建,初始位置就是谁
|
||||
)
|
||||
db.add(product)
|
||||
await db.commit()
|
||||
await db.refresh(product, ["order"])
|
||||
|
||||
# 查创建者的真实姓名
|
||||
creator_display_name = ""
|
||||
if creator_username:
|
||||
name_map = _lookup_display_names([creator_username])
|
||||
creator_display_name = name_map.get(creator_username, "")
|
||||
|
||||
return ProductResponse(
|
||||
id=product.id,
|
||||
serial_number=product.serial_number,
|
||||
@ -197,6 +205,7 @@ async def create_product(db: AsyncSession, data: ProductCreate) -> ProductRespon
|
||||
material_type=product.material_type,
|
||||
parent_product_id=product.parent_product_id,
|
||||
current_location_id=product.current_location_id,
|
||||
current_location_name=creator_display_name or None,
|
||||
overall_status=product.overall_status,
|
||||
status=product.status,
|
||||
created_at=product.created_at,
|
||||
|
||||
Reference in New Issue
Block a user