提交
This commit is contained in:
1 parent
c6c3a37fa7
commit
e6b4b9a8d7
28 files changed
+5812
-4687
No files matched your search
@@ -3,6 +3,7 @@ from typing import Any, List, Optional
|
||||
|
||||
from fastapi import APIRouter, Depends, Query
|
||||
from pydantic import BaseModel, ConfigDict, Field
|
||||
from sqlalchemy import or_
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from app.core.data_scope import apply_data_scope
|
||||
@@ -82,7 +83,17 @@ async def list_customers(
|
||||
BizCustomer.tenant_no == tenant_no,
|
||||
)
|
||||
if keyword:
|
||||
query = query.filter(BizCustomer.customer_name.like(f"%{keyword}%"))
|
||||
kw = keyword.strip()
|
||||
if kw:
|
||||
like = f"%{kw}%"
|
||||
query = query.filter(
|
||||
or_(
|
||||
BizCustomer.customer_name.like(like),
|
||||
BizCustomer.phone_no.like(like),
|
||||
BizCustomer.id_card_no.like(like),
|
||||
BizCustomer.customer_tags.like(like),
|
||||
)
|
||||
)
|
||||
query = apply_data_scope(query, BizCustomer, user, db, tenant_no)
|
||||
total = query.count()
|
||||
items = query.order_by(BizCustomer.create_time.desc()).offset((page - 1) * pageSize).limit(pageSize).all()
|
||||
@@ -201,7 +212,15 @@ async def list_cell_sample_types(
|
||||
BizCellSampleType.tenant_no == tenant_no,
|
||||
)
|
||||
if keyword:
|
||||
query = query.filter(BizCellSampleType.type_name.like(f"%{keyword}%"))
|
||||
kw = keyword.strip()
|
||||
if kw:
|
||||
like = f"%{kw}%"
|
||||
query = query.filter(
|
||||
or_(
|
||||
BizCellSampleType.type_code.like(like),
|
||||
BizCellSampleType.type_name.like(like),
|
||||
)
|
||||
)
|
||||
query = apply_data_scope(query, BizCellSampleType, user, db, tenant_no)
|
||||
total = query.count()
|
||||
items = query.order_by(BizCellSampleType.create_time.desc()).offset((page - 1) * pageSize).limit(pageSize).all()
|
||||
@@ -314,7 +333,11 @@ async def list_collection_regions(
|
||||
query = apply_data_scope(query, BizCollectionRegion, user, db, tenant_no)
|
||||
total = query.count()
|
||||
items = query.order_by(BizCollectionRegion.create_time.desc()).offset((page - 1) * pageSize).limit(pageSize).all()
|
||||
result_list = [region_svc._region_to_dict(r) for r in items]
|
||||
region_ids = [r.id for r in items]
|
||||
hospital_map = region_svc._hospital_names_by_region_ids(db, region_ids)
|
||||
result_list = [
|
||||
region_svc._region_to_dict(r, hospital_names=hospital_map.get(r.id, [])) for r in items
|
||||
]
|
||||
tp = region_svc.total_pages(total, pageSize)
|
||||
return success_response({"list": result_list, "total": total, "page": page, "pageSize": pageSize, "totalPages": tp})
|
||||
|
||||
@@ -500,6 +523,9 @@ class ProtocolNoCreateBody(BaseModel):
|
||||
issued: int = 0
|
||||
order_num: Optional[int] = Field(0, alias="orderNum")
|
||||
remark: Optional[str] = None
|
||||
issued_user_id: Optional[str] = Field(None, alias="issuedUserId")
|
||||
issued_user_name: Optional[str] = Field(None, alias="issuedUserName")
|
||||
issued_time: Optional[str] = Field(None, alias="issuedTime")
|
||||
|
||||
|
||||
class ProtocolNoUpdateBody(BaseModel):
|
||||
@@ -519,6 +545,7 @@ async def list_protocol_nos(
|
||||
page: int = Query(1, ge=1),
|
||||
pageSize: int = Query(10, ge=1, le=100, alias="pageSize"),
|
||||
keyword: Optional[str] = None,
|
||||
issued_user_id: Optional[str] = Query(None, alias="issuedUserId"),
|
||||
user: dict = Depends(require_menu_code("biz:collectionProtocolNo:list")),
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
@@ -527,12 +554,23 @@ async def list_protocol_nos(
|
||||
BizCollectionProtocolNo.del_flag == 0,
|
||||
BizCollectionProtocolNo.tenant_no == tenant_no,
|
||||
)
|
||||
if keyword:
|
||||
query = query.filter(BizCollectionProtocolNo.protocol_no.like(f"%{keyword}%"))
|
||||
kw = (keyword or "").strip()
|
||||
if kw:
|
||||
like = f"%{kw}%"
|
||||
query = query.filter(
|
||||
or_(
|
||||
BizCollectionProtocolNo.protocol_no.like(like),
|
||||
BizCollectionProtocolNo.remark.like(like),
|
||||
)
|
||||
)
|
||||
uid = (issued_user_id or "").strip()
|
||||
if uid:
|
||||
query = query.filter(BizCollectionProtocolNo.issued_user_id == uid)
|
||||
query = apply_data_scope(query, BizCollectionProtocolNo, user, db, tenant_no)
|
||||
total = query.count()
|
||||
items = query.order_by(BizCollectionProtocolNo.create_time.desc()).offset((page - 1) * pageSize).limit(pageSize).all()
|
||||
result_list = [protocol_no_svc._row_to_dict(r) for r in items]
|
||||
protocol_no_svc.enrich_issued_user_names(db, result_list)
|
||||
used_nos = collection_protocol_svc.get_protocol_nos_used_in_protocols(
|
||||
db,
|
||||
tenant_no=tenant_no,
|
||||
@@ -656,8 +694,13 @@ async def create_protocol_no(
|
||||
order_num=body.order_num,
|
||||
remark=body.remark,
|
||||
user_id=user.get("user_id"),
|
||||
issued_user_id=body.issued_user_id,
|
||||
issued_user_name=body.issued_user_name,
|
||||
issued_time=body.issued_time,
|
||||
)
|
||||
return success_response(protocol_no_svc._row_to_dict(obj), message="创建成功")
|
||||
row = protocol_no_svc._row_to_dict(obj)
|
||||
protocol_no_svc.enrich_issued_user_names(db, [row])
|
||||
return success_response(row, message="创建成功")
|
||||
except ValueError as e:
|
||||
return error_response(400, str(e))
|
||||
|
||||
@@ -713,9 +756,13 @@ class SampleCodeCreateBody(BaseModel):
|
||||
model_config = ConfigDict(populate_by_name=True)
|
||||
|
||||
sample_code: str = Field(..., alias="sampleCode")
|
||||
sample_code_type: Optional[str] = Field(None, alias="sampleCodeType")
|
||||
issued: int = 0
|
||||
order_num: Optional[int] = Field(0, alias="orderNum")
|
||||
remark: Optional[str] = None
|
||||
issued_user_id: Optional[str] = Field(None, alias="issuedUserId")
|
||||
issued_user_name: Optional[str] = Field(None, alias="issuedUserName")
|
||||
issued_time: Optional[str] = Field(None, alias="issuedTime")
|
||||
|
||||
|
||||
class SampleCodeUpdateBody(BaseModel):
|
||||
@@ -831,6 +878,8 @@ async def list_sample_codes(
|
||||
page: int = Query(1, ge=1),
|
||||
pageSize: int = Query(10, ge=1, le=100, alias="pageSize"),
|
||||
keyword: Optional[str] = None,
|
||||
sample_code_type: Optional[str] = Query(None, alias="sampleCodeType"),
|
||||
issued_user_id: Optional[str] = Query(None, alias="issuedUserId"),
|
||||
user: dict = Depends(require_menu_code("biz:sampleCode:list")),
|
||||
db: Session = Depends(get_db),
|
||||
):
|
||||
@@ -839,8 +888,21 @@ async def list_sample_codes(
|
||||
BizSampleCode.del_flag == 0,
|
||||
BizSampleCode.tenant_no == tenant_no,
|
||||
)
|
||||
if keyword:
|
||||
query = query.filter(BizSampleCode.sample_code.like(f"%{keyword}%"))
|
||||
kw = (keyword or "").strip()
|
||||
if kw:
|
||||
like = f"%{kw}%"
|
||||
query = query.filter(
|
||||
or_(
|
||||
BizSampleCode.sample_code.like(like),
|
||||
BizSampleCode.remark.like(like),
|
||||
)
|
||||
)
|
||||
code_type = (sample_code_type or "").strip()
|
||||
if code_type:
|
||||
query = query.filter(BizSampleCode.sample_code_type == code_type)
|
||||
uid = (issued_user_id or "").strip()
|
||||
if uid:
|
||||
query = query.filter(BizSampleCode.issued_user_id == uid)
|
||||
query = apply_data_scope(query, BizSampleCode, user, db, tenant_no)
|
||||
total = query.count()
|
||||
items = query.order_by(BizSampleCode.create_time.desc()).offset((page - 1) * pageSize).limit(pageSize).all()
|
||||
@@ -867,11 +929,15 @@ async def create_sample_code(
|
||||
obj = sample_code_svc.create_sample_code(
|
||||
db,
|
||||
sample_code=body.sample_code,
|
||||
sample_code_type=body.sample_code_type,
|
||||
issued=body.issued,
|
||||
tenant_no=tenant_no,
|
||||
order_num=body.order_num,
|
||||
remark=body.remark,
|
||||
user_id=user.get("user_id"),
|
||||
issued_user_id=body.issued_user_id,
|
||||
issued_user_name=body.issued_user_name,
|
||||
issued_time=body.issued_time,
|
||||
)
|
||||
return success_response(sample_code_svc._row_to_dict(obj), message="创建成功")
|
||||
except ValueError as e:
|
||||
|
||||
Reference in new issue
Block a user