diff --git a/inventory-backend/app/api/v1/inbound/buy.py b/inventory-backend/app/api/v1/inbound/buy.py index 9c636c2..ec9bfe2 100644 --- a/inventory-backend/app/api/v1/inbound/buy.py +++ b/inventory-backend/app/api/v1/inbound/buy.py @@ -309,8 +309,11 @@ def delete_buy(id): try: material_name = BuyInboundService.delete_inbound(id) return jsonify({"code": 200, "msg": "删除成功", "material_name": material_name}) + except ValueError as ve: + # 捕获业务拦截的报错,返回友好的 msg + return jsonify({"code": 400, "msg": str(ve)}) except Exception as e: - return jsonify({"code": 500, "msg": str(e)}), 500 + return jsonify({"code": 500, "msg": "服务器内部错误,请联系系统管理员"}), 500 # ------------------------------------------------------------------ diff --git a/inventory-backend/app/services/inbound/buy_service.py b/inventory-backend/app/services/inbound/buy_service.py index ad43f13..60d8e8e 100644 --- a/inventory-backend/app/services/inbound/buy_service.py +++ b/inventory-backend/app/services/inbound/buy_service.py @@ -4,6 +4,7 @@ from app.models.inbound.buy import StockBuy from app.models.base import MaterialBase from datetime import datetime, timedelta, timezone from sqlalchemy import or_, func, text, and_ +from sqlalchemy.exc import IntegrityError import traceback import json @@ -285,6 +286,9 @@ class BuyInboundService: db.session.delete(stock) db.session.commit() return material_name + except IntegrityError: + db.session.rollback() + raise ValueError("该入库单已被出库、盘点或借还等业务关联,为保证账目完整,禁止删除!") except Exception as e: db.session.rollback() raise e