fix: enforce Beijing Time (UTC+8) globally by replacing datetime.utcnow
This commit is contained in:
@ -1,7 +1,7 @@
|
|||||||
# 文件路径: app/api/v1/inbound/base.py
|
# 文件路径: app/api/v1/inbound/base.py
|
||||||
|
|
||||||
from flask import Blueprint, request, jsonify, send_file, g, current_app
|
from flask import Blueprint, request, jsonify, send_file, g, current_app
|
||||||
from app.extensions import db
|
from app.extensions import db, beijing_time
|
||||||
from app.services.inbound.base_service import MaterialBaseService
|
from app.services.inbound.base_service import MaterialBaseService
|
||||||
from app.utils.decorators import login_required, permission_required, audit_log
|
from app.utils.decorators import login_required, permission_required, audit_log
|
||||||
from app.models.base import MaterialBase, MaterialWarningSetting
|
from app.models.base import MaterialBase, MaterialWarningSetting
|
||||||
@ -185,9 +185,8 @@ def export_data():
|
|||||||
file_stream = MaterialBaseService.export_excel(filters, user_permissions)
|
file_stream = MaterialBaseService.export_excel(filters, user_permissions)
|
||||||
|
|
||||||
# 生成文件名:库存统计+年月日+时分秒 (北京时间 UTC+8)
|
# 生成文件名:库存统计+年月日+时分秒 (北京时间 UTC+8)
|
||||||
# 简单处理:UTC时间 + 8小时
|
bj_time = beijing_time()
|
||||||
beijing_time = datetime.datetime.utcnow() + datetime.timedelta(hours=8)
|
filename = f"库存统计_{bj_time.strftime('%Y%m%d_%H%M%S')}.xlsx"
|
||||||
filename = f"库存统计_{beijing_time.strftime('%Y%m%d_%H%M%S')}.xlsx"
|
|
||||||
|
|
||||||
# 发送文件
|
# 发送文件
|
||||||
# 注意:download_name 仅在较新 Flask 版本有效,旧版本可能需要手动 header,
|
# 注意:download_name 仅在较新 Flask 版本有效,旧版本可能需要手动 header,
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
from flask import Blueprint, request, jsonify
|
from flask import Blueprint, request, jsonify
|
||||||
from flask_jwt_extended import jwt_required, get_jwt_identity, get_jwt
|
from flask_jwt_extended import jwt_required, get_jwt_identity, get_jwt
|
||||||
from app.utils.decorators import permission_required
|
from app.utils.decorators import permission_required
|
||||||
from app.extensions import db
|
from app.extensions import db, beijing_time
|
||||||
from app.models.stock.adjustment import StockAdjustment
|
from app.models.stock.adjustment import StockAdjustment
|
||||||
from app.models.base import MaterialBase
|
from app.models.base import MaterialBase
|
||||||
from app.models.inbound.buy import StockBuy
|
from app.models.inbound.buy import StockBuy
|
||||||
@ -17,7 +17,7 @@ adjustment_bp = Blueprint('adjustment', __name__, url_prefix='/stock/adjustment'
|
|||||||
|
|
||||||
def get_beijing_time():
|
def get_beijing_time():
|
||||||
"""获取北京时间 (UTC+8)"""
|
"""获取北京时间 (UTC+8)"""
|
||||||
return datetime.utcnow() + timedelta(hours=8)
|
return beijing_time()
|
||||||
|
|
||||||
|
|
||||||
def generate_order_no():
|
def generate_order_no():
|
||||||
|
|||||||
@ -16,8 +16,8 @@ redis_client = None
|
|||||||
|
|
||||||
|
|
||||||
def beijing_time():
|
def beijing_time():
|
||||||
"""获取北京时间 (UTC+8)"""
|
"""获取北京时间 (UTC+8),剥离时区信息以兼容数据库 naive DateTime 字段"""
|
||||||
return datetime.now(timezone(timedelta(hours=8)))
|
return datetime.now(timezone(timedelta(hours=8))).replace(tzinfo=None)
|
||||||
|
|
||||||
|
|
||||||
# 2. 定义初始化函数 (供工厂函数 create_app 调用)
|
# 2. 定义初始化函数 (供工厂函数 create_app 调用)
|
||||||
|
|||||||
Reference in New Issue
Block a user