This commit is contained in:
zlwu committed 2026-05-23 21:27:10 +08:00
1 parent 05684ba2a4
commit 7fbf71b6e1
150 files changed
+19834 -12611

No files matched your search

+99 -99
View File
@@ -81,9 +81,9 @@ async def list_qc_third_party_companies(
)
return success_response(_page_payload(items, total, page, pageSize))
except PermissionError as e:
return error_response(str(e), code=403)
return error_response(403, str(e))
except Exception as e:
return error_response(str(e))
return error_response(400, str(e))
@router.get("/qc-third-party-companies/options")
@@ -95,9 +95,9 @@ async def list_qc_third_party_company_options(
tenant_no = _get_tenant_no(db, user)
return success_response(tpc_svc.list_company_options(db, tenant_no))
except PermissionError as e:
return error_response(str(e), code=403)
return error_response(403, str(e))
except Exception as e:
return error_response(str(e))
return error_response(400, str(e))
@router.post("/qc-third-party-companies")
@@ -127,11 +127,11 @@ async def create_qc_third_party_company(
)
return success_response(tpc_svc._row_to_dict(obj), message="创建成功")
except PermissionError as e:
return error_response(str(e), code=403)
return error_response(403, str(e))
except ValueError as e:
return error_response(str(e))
return error_response(400, str(e))
except Exception as e:
return error_response(str(e))
return error_response(400, str(e))
@router.put("/qc-third-party-companies/{company_id}")
@@ -163,11 +163,11 @@ async def update_qc_third_party_company(
)
return success_response(tpc_svc._row_to_dict(obj), message="更新成功")
except PermissionError as e:
return error_response(str(e), code=403)
return error_response(403, str(e))
except ValueError as e:
return error_response(str(e))
return error_response(400, str(e))
except Exception as e:
return error_response(str(e))
return error_response(400, str(e))
@router.delete("/qc-third-party-companies/{company_id}")
@@ -181,11 +181,11 @@ async def delete_qc_third_party_company(
tpc_svc.soft_delete_company(db, company_id, tenant_no=tenant_no)
return success_response(None, message="删除成功")
except PermissionError as e:
return error_response(str(e), code=403)
return error_response(403, str(e))
except ValueError as e:
return error_response(str(e))
return error_response(400, str(e))
except Exception as e:
return error_response(str(e))
return error_response(400, str(e))
# ---------- 第三方检测项目 ----------
@@ -239,9 +239,9 @@ async def list_qc_third_party_items(
)
return success_response(_page_payload(items, total, page, pageSize))
except PermissionError as e:
return error_response(str(e), code=403)
return error_response(403, str(e))
except Exception as e:
return error_response(str(e))
return error_response(400, str(e))
@router.get("/qc-third-party-items/active")
@@ -254,9 +254,9 @@ async def list_qc_third_party_items_active(
tenant_no = _get_tenant_no(db, user)
return success_response(tpi_svc.list_active_items(db, tenant_no, company_id=companyId, user_info=user))
except PermissionError as e:
return error_response(str(e), code=403)
return error_response(403, str(e))
except Exception as e:
return error_response(str(e))
return error_response(400, str(e))
@router.post("/qc-third-party-items")
@@ -281,11 +281,11 @@ async def create_qc_third_party_item(
)
return success_response(tpi_svc._row_to_dict(obj, ""), message="创建成功")
except PermissionError as e:
return error_response(str(e), code=403)
return error_response(403, str(e))
except ValueError as e:
return error_response(str(e))
return error_response(400, str(e))
except Exception as e:
return error_response(str(e))
return error_response(400, str(e))
@router.put("/qc-third-party-items/{item_id}")
@@ -312,11 +312,11 @@ async def update_qc_third_party_item(
)
return success_response(tpi_svc._row_to_dict(obj, ""), message="更新成功")
except PermissionError as e:
return error_response(str(e), code=403)
return error_response(403, str(e))
except ValueError as e:
return error_response(str(e))
return error_response(400, str(e))
except Exception as e:
return error_response(str(e))
return error_response(400, str(e))
@router.delete("/qc-third-party-items/{item_id}")
@@ -330,11 +330,11 @@ async def delete_qc_third_party_item(
tpi_svc.soft_delete_item(db, item_id, tenant_no=tenant_no)
return success_response(None, message="删除成功")
except PermissionError as e:
return error_response(str(e), code=403)
return error_response(403, str(e))
except ValueError as e:
return error_response(str(e))
return error_response(400, str(e))
except Exception as e:
return error_response(str(e))
return error_response(400, str(e))
# ---------- 实验室自检项目 ----------
@@ -401,9 +401,9 @@ async def list_qc_lab_test_items(
)
return success_response(_page_payload(items, total, page, pageSize))
except PermissionError as e:
return error_response(str(e), code=403)
return error_response(403, str(e))
except Exception as e:
return error_response(str(e))
return error_response(400, str(e))
@router.get("/qc-lab-test-items/active")
@@ -415,9 +415,9 @@ async def list_qc_lab_test_items_active(
tenant_no = _get_tenant_no(db, user)
return success_response(lab_svc.list_active_lab_items(db, tenant_no, user_info=user))
except PermissionError as e:
return error_response(str(e), code=403)
return error_response(403, str(e))
except Exception as e:
return error_response(str(e))
return error_response(400, str(e))
@router.post("/qc-lab-test-items")
@@ -441,11 +441,11 @@ async def create_qc_lab_test_item(
)
return success_response(lab_svc._row_to_dict(obj), message="创建成功")
except PermissionError as e:
return error_response(str(e), code=403)
return error_response(403, str(e))
except ValueError as e:
return error_response(str(e))
return error_response(400, str(e))
except Exception as e:
return error_response(str(e))
return error_response(400, str(e))
@router.put("/qc-lab-test-items/{item_id}")
@@ -471,11 +471,11 @@ async def update_qc_lab_test_item(
)
return success_response(lab_svc._row_to_dict(obj), message="更新成功")
except PermissionError as e:
return error_response(str(e), code=403)
return error_response(403, str(e))
except ValueError as e:
return error_response(str(e))
return error_response(400, str(e))
except Exception as e:
return error_response(str(e))
return error_response(400, str(e))
@router.delete("/qc-lab-test-items/{item_id}")
@@ -489,11 +489,11 @@ async def delete_qc_lab_test_item(
lab_svc.soft_delete_lab_item(db, item_id, tenant_no=tenant_no)
return success_response(None, message="删除成功")
except PermissionError as e:
return error_response(str(e), code=403)
return error_response(403, str(e))
except ValueError as e:
return error_response(str(e))
return error_response(400, str(e))
except Exception as e:
return error_response(str(e))
return error_response(400, str(e))
# ---------- 检测项目参数模板 ----------
@@ -510,9 +510,9 @@ async def list_item_params(
tenant_no = _get_tenant_no(db, user)
return success_response(param_svc.list_params_by_item(db, itemSource, itemId, tenant_no, user_info=user))
except PermissionError as e:
return error_response(str(e), code=403)
return error_response(403, str(e))
except Exception as e:
return error_response(str(e))
return error_response(400, str(e))
@router.put("/qc-item-params")
@@ -530,9 +530,9 @@ async def save_item_params(
message="保存成功",
)
except PermissionError as e:
return error_response(str(e), code=403)
return error_response(403, str(e))
except Exception as e:
return error_response(str(e))
return error_response(400, str(e))
# ---------- 质检工单 ----------
@@ -569,9 +569,9 @@ async def list_qc_work_orders(
)
return success_response(_page_payload(items, total, page, pageSize))
except PermissionError as e:
return error_response(str(e), code=403)
return error_response(403, str(e))
except Exception as e:
return error_response(str(e))
return error_response(400, str(e))
@router.get("/qc-work-orders/{work_order_id}")
@@ -585,11 +585,11 @@ async def get_qc_work_order_detail(
data = wo_svc.get_work_order_detail(db, work_order_id, tenant_no)
return success_response(data)
except PermissionError as e:
return error_response(str(e), code=403)
return error_response(403, str(e))
except ValueError as e:
return error_response(str(e))
return error_response(400, str(e))
except Exception as e:
return error_response(str(e))
return error_response(400, str(e))
@router.post("/qc-work-orders/{work_order_id}/configure")
@@ -613,11 +613,11 @@ async def configure_qc_work_order(
)
return success_response(wo_svc._wo_to_dict(obj), message="配置成功")
except PermissionError as e:
return error_response(str(e), code=403)
return error_response(403, str(e))
except ValueError as e:
return error_response(str(e))
return error_response(400, str(e))
except Exception as e:
return error_response(str(e))
return error_response(400, str(e))
# ---------- 质检任务 ----------
@@ -657,9 +657,9 @@ async def list_qc_tasks(
)
return success_response(_page_payload(items, total, page, pageSize))
except PermissionError as e:
return error_response(str(e), code=403)
return error_response(403, str(e))
except Exception as e:
return error_response(str(e))
return error_response(400, str(e))
@router.get("/qc-tasks/{task_id}")
@@ -673,11 +673,11 @@ async def get_qc_task_detail(
data = task_svc.get_task_detail(db, task_id, tenant_no)
return success_response(data)
except PermissionError as e:
return error_response(str(e), code=403)
return error_response(403, str(e))
except ValueError as e:
return error_response(str(e))
return error_response(400, str(e))
except Exception as e:
return error_response(str(e))
return error_response(400, str(e))
@router.post("/qc-tasks/{task_id}/start")
@@ -691,11 +691,11 @@ async def start_qc_task(
obj = task_svc.start_task(db, task_id, tenant_no=tenant_no, user_id=_get_current_user_id(user))
return success_response(task_svc._task_to_dict(obj), message="已开始")
except PermissionError as e:
return error_response(str(e), code=403)
return error_response(403, str(e))
except ValueError as e:
return error_response(str(e))
return error_response(400, str(e))
except Exception as e:
return error_response(str(e))
return error_response(400, str(e))
@router.post("/qc-tasks/{task_id}/complete")
@@ -711,11 +711,11 @@ async def complete_qc_task(
)
return success_response(task_svc._task_to_dict(obj), message="已完成")
except PermissionError as e:
return error_response(str(e), code=403)
return error_response(403, str(e))
except ValueError as e:
return error_response(str(e))
return error_response(400, str(e))
except Exception as e:
return error_response(str(e))
return error_response(400, str(e))
@router.get("/qc-tasks/{task_id}/results")
@@ -728,9 +728,9 @@ async def get_task_results(
tenant_no = _get_tenant_no(db, user)
return success_response(result_svc.list_results_by_task(db, task_id, tenant_no, user_info=user))
except PermissionError as e:
return error_response(str(e), code=403)
return error_response(403, str(e))
except Exception as e:
return error_response(str(e))
return error_response(400, str(e))
@router.get("/qc-tasks/{task_id}/material-usages")
@@ -743,14 +743,14 @@ async def get_task_material_usages(
tenant_no = _get_tenant_no(db, user)
t = task_svc.get_task(db, task_id, tenant_no=tenant_no)
if not t:
return error_response("任务不存在")
return error_response(404, "任务不存在")
return success_response(
mu_svc.list_usages_by_task(db, task_id, tenant_no, user_info=user)
)
except PermissionError as e:
return error_response(str(e), code=403)
return error_response(403, str(e))
except Exception as e:
return error_response(str(e))
return error_response(400, str(e))
@router.post("/qc-tasks/{task_id}/complete-with-result")
@@ -765,7 +765,7 @@ async def complete_task_with_result(
user_id = _get_current_user_id(user)
t = task_svc.get_task(db, task_id, tenant_no=tenant_no)
if not t:
return error_response("任务不存在")
return error_response(404, "任务不存在")
was_done = (t.task_status or "").strip() == "ywc"
if body.results:
result_svc.save_results_for_task(
@@ -773,7 +773,7 @@ async def complete_task_with_result(
)
concl = (body.conclusion or "").strip()
if concl not in ("tg", "btg"):
return error_response("请选择检测结论(通过/不通过)")
return error_response(400, "请选择检测结论(通过/不通过)")
if body.third_party_attachments is not None:
task_svc.update_task_attachments(
db, task_id, attachments=body.third_party_attachments,
@@ -801,16 +801,16 @@ async def complete_task_with_result(
db.rollback()
detail = e.detail
msg = detail if isinstance(detail, str) else str(detail)
return error_response(msg, code=e.status_code)
return error_response(e.status_code, msg)
except PermissionError as e:
db.rollback()
return error_response(str(e), code=403)
return error_response(403, str(e))
except ValueError as e:
db.rollback()
return error_response(str(e))
return error_response(400, str(e))
except Exception as e:
db.rollback()
return error_response(str(e))
return error_response(400, str(e))
@router.put("/qc-tasks/{task_id}/attachments")
@@ -831,11 +831,11 @@ async def update_qc_task_attachments(
)
return success_response(task_svc._task_to_dict(obj), message="已保存")
except PermissionError as e:
return error_response(str(e), code=403)
return error_response(403, str(e))
except ValueError as e:
return error_response(str(e))
return error_response(400, str(e))
except Exception as e:
return error_response(str(e))
return error_response(400, str(e))
# ---------- 质检物料库 ----------
@@ -926,9 +926,9 @@ async def list_qc_materials(
)
return success_response(_page_payload(items, total, page, pageSize))
except PermissionError as e:
return error_response(str(e), code=403)
return error_response(403, str(e))
except Exception as e:
return error_response(str(e))
return error_response(400, str(e))
@router.get("/qc-materials/options")
@@ -940,7 +940,7 @@ async def qc_material_options(
tenant_no = _get_tenant_no(db, user)
return success_response(mat_svc.options_list(db, tenant_no=tenant_no))
except Exception as e:
return error_response(str(e))
return error_response(400, str(e))
@router.post("/qc-materials")
@@ -968,9 +968,9 @@ async def create_qc_material(
)
return success_response(mat_svc._row_to_dict(obj), message="创建成功")
except ValueError as e:
return error_response(str(e))
return error_response(400, str(e))
except Exception as e:
return error_response(str(e))
return error_response(400, str(e))
@router.put("/qc-materials/{material_id}")
@@ -997,9 +997,9 @@ async def update_qc_material(
)
return success_response(mat_svc._row_to_dict(obj), message="更新成功")
except ValueError as e:
return error_response(str(e))
return error_response(400, str(e))
except Exception as e:
return error_response(str(e))
return error_response(400, str(e))
@router.delete("/qc-materials/{material_id}")
@@ -1014,9 +1014,9 @@ async def delete_qc_material(
mat_svc.soft_delete_material(db, material_id, tenant_no=tenant_no)
return success_response(None, message="删除成功")
except ValueError as e:
return error_response(str(e))
return error_response(400, str(e))
except Exception as e:
return error_response(str(e))
return error_response(400, str(e))
@router.post("/qc-materials/batch-stock-in")
@@ -1032,7 +1032,7 @@ async def batch_stock_in_qc_material(
if body.stock_in_time:
rt = parse_datetime(body.stock_in_time)
if not rt:
return error_response("入库时间格式无效")
return error_response(400, "入库时间格式无效")
operate_time = rt
items = [
{"material_id": x.material_id, "qty": x.qty, "remark": x.remark}
@@ -1048,9 +1048,9 @@ async def batch_stock_in_qc_material(
)
return success_response({"count": count}, message=f"批量入库成功,共 {count} 项")
except ValueError as e:
return error_response(str(e))
return error_response(400, str(e))
except Exception as e:
return error_response(str(e))
return error_response(400, str(e))
@router.post("/qc-materials/batch-stock-out")
@@ -1066,7 +1066,7 @@ async def batch_stock_out_qc_material(
if body.stock_out_time:
rt = parse_datetime(body.stock_out_time)
if not rt:
return error_response("出库时间格式无效")
return error_response(400, "出库时间格式无效")
operate_time = rt
items = [
{"material_id": x.material_id, "qty": x.qty, "remark": x.remark}
@@ -1084,9 +1084,9 @@ async def batch_stock_out_qc_material(
)
return success_response({"count": count}, message=f"批量出库成功,共 {count} 项")
except ValueError as e:
return error_response(str(e))
return error_response(400, str(e))
except Exception as e:
return error_response(str(e))
return error_response(400, str(e))
@router.post("/qc-materials/{material_id}/stock-in")
@@ -1103,7 +1103,7 @@ async def stock_in_qc_material(
if body.stock_in_time:
rt = parse_datetime(body.stock_in_time)
if not rt:
return error_response("入库时间格式无效")
return error_response(400, "入库时间格式无效")
operate_time = rt
from decimal import Decimal
@@ -1118,9 +1118,9 @@ async def stock_in_qc_material(
)
return success_response(mat_svc._row_to_dict(obj), message="入库成功")
except ValueError as e:
return error_response(str(e))
return error_response(400, str(e))
except Exception as e:
return error_response(str(e))
return error_response(400, str(e))
@router.post("/qc-materials/{material_id}/stock-out")
@@ -1137,7 +1137,7 @@ async def stock_out_qc_material(
if body.stock_out_time:
rt = parse_datetime(body.stock_out_time)
if not rt:
return error_response("出库时间格式无效")
return error_response(400, "出库时间格式无效")
operate_time = rt
from decimal import Decimal
@@ -1154,9 +1154,9 @@ async def stock_out_qc_material(
)
return success_response(mat_svc._row_to_dict(obj), message="出库成功")
except ValueError as e:
return error_response(str(e))
return error_response(400, str(e))
except Exception as e:
return error_response(str(e))
return error_response(400, str(e))
# ---------- 物料变动记录 ----------
@@ -1183,6 +1183,6 @@ async def list_qc_material_usages(
)
return success_response(_page_payload(items, total, page, pageSize))
except PermissionError as e:
return error_response(str(e), code=403)
return error_response(403, str(e))
except Exception as e:
return error_response(str(e))
return error_response(400, str(e))