feat(api): expose QC inspection item template endpoints.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
1 parent
bc62ac796a
commit
52ec964f88
1 file changed
+168
@@ -25,6 +25,7 @@ QC_THIRD_PARTY_FEE_FIELD_NAMES = ("feeAmount", "thirdPartyFeeTotal")
|
||||
from app.core.response import error_response, success_response
|
||||
from app.core.utils import parse_datetime
|
||||
from app.crud import qc_lab_test_item as lab_svc
|
||||
from app.crud import qc_inspection_item_template as iit_svc
|
||||
from app.crud import qc_item_param as param_svc
|
||||
from app.crud import qc_task_result as result_svc
|
||||
from app.crud import qc_task as task_svc
|
||||
@@ -398,6 +399,31 @@ class LabTestItemUpdateBody(BaseModel):
|
||||
remark: Optional[str] = None
|
||||
|
||||
|
||||
# ---------- 检测项目模版(项目组合) ----------
|
||||
|
||||
|
||||
class InspectionItemTemplateBody(BaseModel):
|
||||
model_config = ConfigDict(populate_by_name=True)
|
||||
|
||||
template_name: str = Field(..., alias="templateName")
|
||||
lab_item_ids: List[str] = Field(default_factory=list, alias="labItemIds")
|
||||
third_party_item_ids: List[str] = Field(default_factory=list, alias="thirdPartyItemIds")
|
||||
status: Optional[str] = "1"
|
||||
order_num: Optional[int] = Field(None, alias="orderNum")
|
||||
remark: Optional[str] = None
|
||||
|
||||
|
||||
class InspectionItemTemplateUpdateBody(BaseModel):
|
||||
model_config = ConfigDict(populate_by_name=True)
|
||||
|
||||
template_name: Optional[str] = Field(None, alias="templateName")
|
||||
lab_item_ids: Optional[List[str]] = Field(None, alias="labItemIds")
|
||||
third_party_item_ids: Optional[List[str]] = Field(None, alias="thirdPartyItemIds")
|
||||
status: Optional[str] = None
|
||||
order_num: Optional[int] = Field(None, alias="orderNum")
|
||||
remark: Optional[str] = None
|
||||
|
||||
|
||||
# ---------- 检测项目参数模板 ----------
|
||||
|
||||
|
||||
@@ -533,6 +559,148 @@ async def delete_qc_lab_test_item(
|
||||
return error_response(400, str(e))
|
||||
|
||||
|
||||
@router.get("/qc-inspection-item-templates")
|
||||
async def list_qc_inspection_item_templates(
|
||||
page: int = Query(1, ge=1),
|
||||
pageSize: int = Query(10, ge=1, le=100),
|
||||
keyword: Optional[str] = None,
|
||||
status: Optional[str] = None,
|
||||
db: Session = Depends(get_db),
|
||||
user: dict = Depends(require_menu_code("biz:qcInspectionItemTemplate:list")),
|
||||
):
|
||||
try:
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
items, total = iit_svc.list_templates(
|
||||
db,
|
||||
page=page,
|
||||
page_size=pageSize,
|
||||
keyword=keyword,
|
||||
status=status,
|
||||
tenant_no=tenant_no,
|
||||
user_info=user,
|
||||
)
|
||||
return success_response(_page_payload(items, total, page, pageSize))
|
||||
except PermissionError as e:
|
||||
return error_response(403, str(e))
|
||||
except Exception as e:
|
||||
return error_response(400, str(e))
|
||||
|
||||
|
||||
@router.get("/qc-inspection-item-templates/active")
|
||||
async def list_qc_inspection_item_templates_active(
|
||||
db: Session = Depends(get_db),
|
||||
user: dict = Depends(
|
||||
require_any_menu_code(
|
||||
"biz:qcInspectionItemTemplate:list", "biz:qcWorkOrder:list"
|
||||
)
|
||||
),
|
||||
):
|
||||
try:
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
return success_response(
|
||||
iit_svc.list_active_templates(db, tenant_no, user_info=user)
|
||||
)
|
||||
except PermissionError as e:
|
||||
return error_response(403, str(e))
|
||||
except Exception as e:
|
||||
return error_response(400, str(e))
|
||||
|
||||
|
||||
@router.get("/qc-inspection-item-templates/{template_id}")
|
||||
async def get_qc_inspection_item_template(
|
||||
template_id: str,
|
||||
db: Session = Depends(get_db),
|
||||
user: dict = Depends(require_menu_code("biz:qcInspectionItemTemplate:list")),
|
||||
):
|
||||
try:
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
obj = iit_svc.get_template(db, template_id, tenant_no=tenant_no)
|
||||
if not obj:
|
||||
return error_response(404, "模版不存在")
|
||||
return success_response(iit_svc._row_to_dict(obj))
|
||||
except PermissionError as e:
|
||||
return error_response(403, str(e))
|
||||
except Exception as e:
|
||||
return error_response(400, str(e))
|
||||
|
||||
|
||||
@router.post("/qc-inspection-item-templates")
|
||||
async def create_qc_inspection_item_template(
|
||||
body: InspectionItemTemplateBody,
|
||||
db: Session = Depends(get_db),
|
||||
user: dict = Depends(require_menu_code("biz:qcInspectionItemTemplate:add")),
|
||||
):
|
||||
try:
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
obj = iit_svc.create_template(
|
||||
db,
|
||||
template_name=body.template_name,
|
||||
lab_item_ids=body.lab_item_ids,
|
||||
third_party_item_ids=body.third_party_item_ids,
|
||||
status=body.status or "1",
|
||||
tenant_no=tenant_no,
|
||||
order_num=body.order_num,
|
||||
remark=body.remark,
|
||||
user_id=_get_current_user_id(user),
|
||||
create_dept_id=user.get("dept_id", "") or "",
|
||||
)
|
||||
return success_response(iit_svc._row_to_dict(obj), message="创建成功")
|
||||
except PermissionError as e:
|
||||
return error_response(403, str(e))
|
||||
except ValueError as e:
|
||||
return error_response(400, str(e))
|
||||
except Exception as e:
|
||||
return error_response(400, str(e))
|
||||
|
||||
|
||||
@router.put("/qc-inspection-item-templates/{template_id}")
|
||||
async def update_qc_inspection_item_template(
|
||||
template_id: str,
|
||||
body: InspectionItemTemplateUpdateBody,
|
||||
db: Session = Depends(get_db),
|
||||
user: dict = Depends(require_menu_code("biz:qcInspectionItemTemplate:edit")),
|
||||
):
|
||||
try:
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
obj = iit_svc.update_template(
|
||||
db,
|
||||
template_id,
|
||||
template_name=body.template_name,
|
||||
lab_item_ids=body.lab_item_ids,
|
||||
third_party_item_ids=body.third_party_item_ids,
|
||||
status=body.status,
|
||||
order_num=body.order_num,
|
||||
remark=body.remark,
|
||||
user_id=_get_current_user_id(user),
|
||||
tenant_no=tenant_no,
|
||||
)
|
||||
return success_response(iit_svc._row_to_dict(obj), message="更新成功")
|
||||
except PermissionError as e:
|
||||
return error_response(403, str(e))
|
||||
except ValueError as e:
|
||||
return error_response(400, str(e))
|
||||
except Exception as e:
|
||||
return error_response(400, str(e))
|
||||
|
||||
|
||||
@router.delete("/qc-inspection-item-templates/{template_id}")
|
||||
async def delete_qc_inspection_item_template(
|
||||
template_id: str,
|
||||
db: Session = Depends(get_db),
|
||||
user: dict = Depends(require_menu_code("biz:qcInspectionItemTemplate:remove")),
|
||||
):
|
||||
try:
|
||||
tenant_no = _get_tenant_no(db, user)
|
||||
iit_svc.soft_delete_template(db, template_id, tenant_no=tenant_no)
|
||||
return success_response(None, message="删除成功")
|
||||
except PermissionError as e:
|
||||
return error_response(403, str(e))
|
||||
except ValueError as e:
|
||||
return error_response(400, str(e))
|
||||
except Exception as e:
|
||||
return error_response(400, str(e))
|
||||
|
||||
|
||||
# ---------- 检测项目参数模板 ----------
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user