from flask import Blueprint, request, jsonify # 修改为这一行,指向 app/services/inbound/base_service.py from app.services.inbound.base_service import MaterialBaseService import traceback # 定义蓝图 # name='inbound_base' 确保全局唯一,防止和其他蓝图重名 inbound_base_bp = Blueprint('inbound_base', __name__) # ------------------------------------------------------------------ # 1. 获取基础信息列表 (GET) # 路由: /api/v1/inbound/base/list # ------------------------------------------------------------------ @inbound_base_bp.route('/list', methods=['GET']) def get_list(): try: # 获取分页参数 page = request.args.get('pageNum', 1, type=int) limit = request.args.get('pageSize', 10, type=int) # 获取筛选参数 filters = { "keyword": request.args.get('keyword'), "category": request.args.get('category'), "type": request.args.get('type'), "isEnabled": request.args.get('isEnabled') } # 调用 Service 层逻辑 result = MaterialBaseService.get_list(page, limit, filters) return jsonify({ "code": 200, "msg": "success", "data": result }) except Exception as e: traceback.print_exc() return jsonify({"code": 500, "msg": str(e)}), 500 # ------------------------------------------------------------------ # 2. 新增基础信息 (POST) # 路由: /api/v1/inbound/base/ # ------------------------------------------------------------------ @inbound_base_bp.route('/', methods=['POST']) def add_material(): try: data = request.get_json() if not data: return jsonify({"code": 400, "msg": "No data provided"}), 400 MaterialBaseService.create_material(data) return jsonify({"code": 200, "msg": "新增成功"}) except ValueError as ve: # 捕获业务逻辑验证错误(如名称重复) return jsonify({"code": 400, "msg": str(ve)}), 400 except Exception as e: traceback.print_exc() return jsonify({"code": 500, "msg": "系统错误"}), 500 # ------------------------------------------------------------------ # 3. 修改基础信息 (PUT) # 路由: /api/v1/inbound/base/ # ------------------------------------------------------------------ @inbound_base_bp.route('/', methods=['PUT']) def update_material(): try: data = request.get_json() if not data or not data.get('id'): return jsonify({"code": 400, "msg": "ID不能为空"}), 400 MaterialBaseService.update_material(data.get('id'), data) return jsonify({"code": 200, "msg": "更新成功"}) except Exception as e: traceback.print_exc() return jsonify({"code": 500, "msg": str(e)}), 500 # ------------------------------------------------------------------ # 4. 删除基础信息 (DELETE) # 路由: /api/v1/inbound/base/ # ------------------------------------------------------------------ @inbound_base_bp.route('/', methods=['DELETE']) def delete_material(id): try: MaterialBaseService.delete_material(id) return jsonify({"code": 200, "msg": "删除成功"}) except ValueError as ve: # 捕获依赖检查错误(如已被库存引用) return jsonify({"code": 400, "msg": str(ve)}), 400 except Exception as e: traceback.print_exc() return jsonify({"code": 500, "msg": str(e)}), 500