Files
KCGL/inventory-backend/app/api/v1/inbound/inbound_summary.py

76 lines
2.5 KiB
Python
Raw Normal View History

from flask import Blueprint, request, jsonify, send_file # .material -> .base refactor checked
from app.services.inbound.inbound_summary_service import InboundSummaryService
# 定义蓝图
bp = Blueprint('inbound_summary', __name__)
@bp.route('/list', methods=['GET'])
def get_list():
try:
# 获取参数
page = request.args.get('page', 1, type=int)
per_page = request.args.get('per_page', 20, type=int) # 默认每页20
keyword = request.args.get('keyword', '')
start_date = request.args.get('start_date')
end_date = request.args.get('end_date')
source_type = request.args.get('source_type') # 可选:筛选 specific table
company = request.args.get('company', '')
result = InboundSummaryService.get_list(
page=page,
per_page=per_page,
keyword=keyword,
start_date=start_date,
end_date=end_date,
source_type=source_type,
company=company
)
return jsonify({
'code': 200,
'msg': 'success',
'data': result
})
except Exception as e:
# 生产环境建议记录详细日志
print(f"Inbound Summary Error: {str(e)}")
return jsonify({'code': 500, 'msg': str(e)}), 500
@bp.route('/export', methods=['GET'])
def export_data():
"""
导出入库记录 Excel
支持筛选条件:keyword, start_date, end_date, source_type
"""
try:
# 获取参数
keyword = request.args.get('keyword', '')
start_date = request.args.get('start_date')
end_date = request.args.get('end_date')
source_type = request.args.get('source_type')
company = request.args.get('company', '')
# 调用导出服务
file_stream = InboundSummaryService.export_excel(
keyword=keyword,
start_date=start_date,
end_date=end_date,
source_type=source_type,
company=company
)
from datetime import datetime
now = datetime.now().strftime('%Y%m%d_%H%M%S')
filename = f"入库记录_{now}.xlsx"
return send_file(
file_stream,
mimetype='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',
as_attachment=True,
download_name=filename
)
except Exception as e:
print(f"Inbound Summary Export Error: {str(e)}")
return jsonify({'code': 500, 'msg': str(e)}), 500