diff --git a/inventory-backend/app/api/v1/inbound/buy.py b/inventory-backend/app/api/v1/inbound/buy.py index ec9bfe2..118e868 100644 --- a/inventory-backend/app/api/v1/inbound/buy.py +++ b/inventory-backend/app/api/v1/inbound/buy.py @@ -313,7 +313,9 @@ def delete_buy(id): # 捕获业务拦截的报错,返回友好的 msg return jsonify({"code": 400, "msg": str(ve)}) except Exception as e: - return jsonify({"code": 500, "msg": "服务器内部错误,请联系系统管理员"}), 500 + import traceback + traceback.print_exc() # 在控制台打印真实错误堆栈 + return jsonify({"code": 500, "msg": f"服务器内部错误详情: {str(e)}"}), 500 # ------------------------------------------------------------------ diff --git a/inventory-backend/app/api/v1/inbound/product.py b/inventory-backend/app/api/v1/inbound/product.py index d16b0d0..1c70632 100644 --- a/inventory-backend/app/api/v1/inbound/product.py +++ b/inventory-backend/app/api/v1/inbound/product.py @@ -185,9 +185,12 @@ def delete(id): try: material_name = ProductInboundService.delete_inbound(id) return jsonify({"code": 200, "msg": "删除成功", "material_name": material_name}) + except ValueError as ve: + return jsonify({"code": 400, "msg": str(ve)}) except Exception as e: + import traceback traceback.print_exc() - return jsonify({"code": 500, "msg": str(e)}), 500 + return jsonify({"code": 500, "msg": f"服务器内部错误详情: {str(e)}"}), 500 @inbound_product_bp.route('//history', methods=['GET']) @permission_required('inbound_product') diff --git a/inventory-backend/app/api/v1/inbound/semi.py b/inventory-backend/app/api/v1/inbound/semi.py index 0ac374d..8f6b6f0 100644 --- a/inventory-backend/app/api/v1/inbound/semi.py +++ b/inventory-backend/app/api/v1/inbound/semi.py @@ -180,9 +180,12 @@ def delete_semi(id): try: material_name = SemiInboundService.delete_inbound(id) return jsonify({"code": 200, "msg": "删除成功", "material_name": material_name}) + except ValueError as ve: + return jsonify({"code": 400, "msg": str(ve)}) except Exception as e: + import traceback traceback.print_exc() - return jsonify({"code": 500, "msg": str(e)}), 500 + return jsonify({"code": 500, "msg": f"服务器内部错误详情: {str(e)}"}), 500 @inbound_semi_bp.route('//history', methods=['GET']) @permission_required('inbound_semi') diff --git a/inventory-backend/app/services/inbound/product_service.py b/inventory-backend/app/services/inbound/product_service.py index a2d77a5..70f4b80 100644 --- a/inventory-backend/app/services/inbound/product_service.py +++ b/inventory-backend/app/services/inbound/product_service.py @@ -4,6 +4,7 @@ from app.models.base import MaterialBase from app.models.outbound import TransOutbound from datetime import datetime, timedelta, timezone from sqlalchemy import or_, func, text, and_ +from sqlalchemy.exc import IntegrityError import traceback import json @@ -258,6 +259,9 @@ class ProductInboundService: db.session.commit() return material_name return None + except IntegrityError: + db.session.rollback() + raise ValueError("该入库单已被出库、盘点或借还等业务关联,为保证账目完整,禁止删除!") except Exception as e: db.session.rollback() raise e diff --git a/inventory-backend/app/services/inbound/semi_service.py b/inventory-backend/app/services/inbound/semi_service.py index feb6dc6..a6b28e9 100644 --- a/inventory-backend/app/services/inbound/semi_service.py +++ b/inventory-backend/app/services/inbound/semi_service.py @@ -4,6 +4,7 @@ from app.models.base import MaterialBase from app.models.outbound import TransOutbound from datetime import datetime, timedelta, timezone from sqlalchemy import or_, func, text, and_ +from sqlalchemy.exc import IntegrityError import traceback import json @@ -346,6 +347,9 @@ class SemiInboundService: 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 diff --git a/inventory-backend/app/services/permission_service.py b/inventory-backend/app/services/permission_service.py index 224901e..e8f2a75 100644 --- a/inventory-backend/app/services/permission_service.py +++ b/inventory-backend/app/services/permission_service.py @@ -1,6 +1,7 @@ from app.models.system import SysMenu, SysElement, SysRolePermission from app.extensions import db from sqlalchemy.exc import SQLAlchemyError +from sqlalchemy import func class PermissionService: