fix(api): gracefully handle integrity error on inbound record deletion

This commit is contained in:
DXC
2026-03-25 10:48:43 +08:00
parent a8119dd577
commit ac7774e0e3
2 changed files with 8 additions and 1 deletions

View File

@ -309,8 +309,11 @@ def delete_buy(id):
try: try:
material_name = BuyInboundService.delete_inbound(id) material_name = BuyInboundService.delete_inbound(id)
return jsonify({"code": 200, "msg": "删除成功", "material_name": material_name}) 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: except Exception as e:
return jsonify({"code": 500, "msg": str(e)}), 500 return jsonify({"code": 500, "msg": "服务器内部错误,请联系系统管理员"}), 500
# ------------------------------------------------------------------ # ------------------------------------------------------------------

View File

@ -4,6 +4,7 @@ from app.models.inbound.buy import StockBuy
from app.models.base import MaterialBase from app.models.base import MaterialBase
from datetime import datetime, timedelta, timezone from datetime import datetime, timedelta, timezone
from sqlalchemy import or_, func, text, and_ from sqlalchemy import or_, func, text, and_
from sqlalchemy.exc import IntegrityError
import traceback import traceback
import json import json
@ -285,6 +286,9 @@ class BuyInboundService:
db.session.delete(stock) db.session.delete(stock)
db.session.commit() db.session.commit()
return material_name return material_name
except IntegrityError:
db.session.rollback()
raise ValueError("该入库单已被出库、盘点或借还等业务关联,为保证账目完整,禁止删除!")
except Exception as e: except Exception as e:
db.session.rollback() db.session.rollback()
raise e raise e