修改bom表逻辑和出库选单内容
This commit is contained in:
@ -8,14 +8,16 @@ from sqlalchemy import distinct
|
||||
|
||||
bom_bp = Blueprint('bom', __name__)
|
||||
|
||||
|
||||
# ==================== 新版 BOM 接口(基于 bom_no) ====================
|
||||
|
||||
@bom_bp.route('/list', methods=['GET'])
|
||||
@jwt_required()
|
||||
def get_bom_list():
|
||||
"""获取所有 BOM 配方列表(按 bom_no 分组)"""
|
||||
"""获取所有 BOM 配方列表(按 bom_no 分组),支持 keyword 搜索"""
|
||||
try:
|
||||
data = BomService.get_bom_list()
|
||||
keyword = request.args.get('keyword', '').strip()
|
||||
data = BomService.get_bom_list(keyword=keyword)
|
||||
return jsonify({
|
||||
'code': 200,
|
||||
'msg': 'success',
|
||||
@ -25,6 +27,7 @@ def get_bom_list():
|
||||
current_app.logger.error(f'获取BOM列表失败: {str(e)}')
|
||||
return jsonify({'code': 500, 'msg': '内部服务器错误'}), 500
|
||||
|
||||
|
||||
@bom_bp.route('/detail/<bom_no>', methods=['GET'])
|
||||
@jwt_required()
|
||||
def get_bom_detail(bom_no):
|
||||
@ -42,16 +45,21 @@ def get_bom_detail(bom_no):
|
||||
current_app.logger.error(f'获取BOM详情失败: {str(e)}')
|
||||
return jsonify({'code': 500, 'msg': '内部服务器错误'}), 500
|
||||
|
||||
|
||||
@bom_bp.route('/save', methods=['POST'])
|
||||
@jwt_required()
|
||||
def save_bom():
|
||||
"""保存或更新 BOM 配方(支持新建和另存为新版本)"""
|
||||
"""保存或更新 BOM 配方(支持自定义 bom_no)"""
|
||||
try:
|
||||
req_data = request.get_json()
|
||||
# 必需字段校验
|
||||
if 'parent_id' not in req_data or 'children' not in req_data:
|
||||
return jsonify({'code': 400, 'msg': '缺少 parent_id 或 children 字段'}), 400
|
||||
|
||||
# 校验 bom_no 不能为空(如果前端要求必须填)
|
||||
if 'bom_no' in req_data and not req_data['bom_no']:
|
||||
return jsonify({'code': 400, 'msg': 'BOM编号不能为空'}), 400
|
||||
|
||||
bom_no = BomService.save_bom(req_data)
|
||||
return jsonify({
|
||||
'code': 200,
|
||||
@ -64,6 +72,7 @@ def save_bom():
|
||||
current_app.logger.error(f'保存BOM失败: {str(e)}')
|
||||
return jsonify({'code': 500, 'msg': '内部服务器错误'}), 500
|
||||
|
||||
|
||||
@bom_bp.route('/stock/<bom_no>', methods=['GET'])
|
||||
@jwt_required()
|
||||
def get_bom_with_stock_by_no(bom_no):
|
||||
@ -81,6 +90,7 @@ def get_bom_with_stock_by_no(bom_no):
|
||||
current_app.logger.error(f'获取BOM库存信息失败: {str(e)}')
|
||||
return jsonify({'code': 500, 'msg': '内部服务器错误'}), 500
|
||||
|
||||
|
||||
# ==================== 删除BOM接口(根据bom_no删除整个配方) ====================
|
||||
|
||||
@bom_bp.route('/<bom_no>', methods=['DELETE'])
|
||||
@ -92,7 +102,7 @@ def delete_bom(bom_no):
|
||||
exist = BomTable.query.filter_by(bom_no=bom_no).first()
|
||||
if not exist:
|
||||
return jsonify({'code': 404, 'msg': 'BOM 不存在'}), 404
|
||||
|
||||
|
||||
# 删除该 bom_no 下所有记录
|
||||
BomTable.query.filter_by(bom_no=bom_no).delete()
|
||||
db.session.commit()
|
||||
@ -104,6 +114,7 @@ def delete_bom(bom_no):
|
||||
current_app.logger.error(f'删除BOM失败: {str(e)}')
|
||||
return jsonify({'code': 500, 'msg': '内部服务器错误'}), 500
|
||||
|
||||
|
||||
# ==================== 兼容旧接口(保留不改动现有前端) ====================
|
||||
|
||||
@bom_bp.route('/<int:parent_id>', methods=['GET'])
|
||||
@ -120,6 +131,7 @@ def get_bom(parent_id):
|
||||
current_app.logger.error(f'获取BOM失败: {str(e)}')
|
||||
return jsonify({'code': 500, 'msg': '内部服务器错误'}), 500
|
||||
|
||||
|
||||
@bom_bp.route('', methods=['POST'])
|
||||
@jwt_required()
|
||||
def save_bom_legacy():
|
||||
@ -140,6 +152,7 @@ def save_bom_legacy():
|
||||
current_app.logger.error(f'保存BOM失败: {str(e)}')
|
||||
return jsonify({'code': 500, 'msg': '内部服务器错误'}), 500
|
||||
|
||||
|
||||
@bom_bp.route('/base/list', methods=['GET'])
|
||||
@jwt_required()
|
||||
def get_material_base_list():
|
||||
@ -156,6 +169,7 @@ def get_material_base_list():
|
||||
current_app.logger.error(f'获取基础物料列表失败: {str(e)}')
|
||||
return jsonify({'code': 500, 'msg': '内部服务器错误'}), 500
|
||||
|
||||
|
||||
@bom_bp.route('/parents', methods=['GET'])
|
||||
@jwt_required()
|
||||
def get_bom_parents():
|
||||
@ -171,4 +185,4 @@ def get_bom_parents():
|
||||
})
|
||||
except Exception as e:
|
||||
current_app.logger.error(f'获取BOM父件列表失败: {str(e)}')
|
||||
return jsonify({'code': 500, 'msg': '内部服务器错误'}), 500
|
||||
return jsonify({'code': 500, 'msg': '内部服务器错误'}), 500
|
||||
Reference in New Issue
Block a user