增加t自定义服务费单价
This commit is contained in:
@@ -36,7 +36,7 @@ def collect_sum_data_from_history(history_id=None):
|
||||
|
||||
collected_count = 0
|
||||
skipped_count = 0
|
||||
config_sort_cache = {} # 缓存配置的排序号
|
||||
config_cache = {} # 缓存配置的排序号和自定义服务费单价
|
||||
|
||||
for history in history_list:
|
||||
sum_results = history.get('sum_results')
|
||||
@@ -47,23 +47,36 @@ def collect_sum_data_from_history(history_id=None):
|
||||
elif sum_results is None:
|
||||
sum_results = {}
|
||||
|
||||
# 获取配置的排序号(缓存)
|
||||
# 获取配置信息(排序号、自定义服务费单价)(缓存)
|
||||
config_id = history.get('config_id')
|
||||
sort_order = None
|
||||
custom_service_fee_price = None
|
||||
if config_id:
|
||||
if config_id in config_sort_cache:
|
||||
sort_order = config_sort_cache[config_id]
|
||||
if config_id in config_cache:
|
||||
sort_order = config_cache[config_id].get('sort_order')
|
||||
custom_service_fee_price = config_cache[config_id].get('custom_service_fee_price')
|
||||
custom_service_fee_name = config_cache[config_id].get('custom_service_fee_name')
|
||||
else:
|
||||
try:
|
||||
cfg_result = execute_query(
|
||||
'SELECT sort_order FROM t_daily_report_config WHERE id = %s LIMIT 1',
|
||||
'SELECT sort_order, custom_service_fee_price, custom_service_fee_name FROM t_daily_report_config WHERE id = %s LIMIT 1',
|
||||
(config_id,)
|
||||
)
|
||||
if cfg_result and cfg_result[0]['sort_order'] is not None:
|
||||
sort_order = cfg_result[0]['sort_order']
|
||||
config_sort_cache[config_id] = sort_order
|
||||
if cfg_result:
|
||||
sort_order = cfg_result[0].get('sort_order')
|
||||
custom_service_fee_price = cfg_result[0].get('custom_service_fee_price')
|
||||
custom_service_fee_name = cfg_result[0].get('custom_service_fee_name')
|
||||
config_cache[config_id] = {
|
||||
'sort_order': sort_order,
|
||||
'custom_service_fee_price': custom_service_fee_price,
|
||||
'custom_service_fee_name': custom_service_fee_name
|
||||
}
|
||||
except Exception:
|
||||
config_sort_cache[config_id] = None
|
||||
config_cache[config_id] = {
|
||||
'sort_order': None,
|
||||
'custom_service_fee_price': None,
|
||||
'custom_service_fee_name': None
|
||||
}
|
||||
|
||||
# 强制确保有充电电量(charge_degree)
|
||||
if 'charge_degree' not in sum_results or sum_results['charge_degree'] is None:
|
||||
@@ -117,6 +130,44 @@ def collect_sum_data_from_history(history_id=None):
|
||||
)
|
||||
execute_insert(sql, params)
|
||||
collected_count += 1
|
||||
|
||||
# 如果配置了自定义服务费单价,自动计算并采集自定义服务费
|
||||
if custom_service_fee_price is not None and custom_service_fee_price != '' and sum_results.get('charge_degree') is not None:
|
||||
try:
|
||||
charge_degree = float(sum_results['charge_degree'])
|
||||
custom_service_fee = round(charge_degree * float(custom_service_fee_price), 2)
|
||||
if custom_service_fee_name and str(custom_service_fee_name).strip():
|
||||
fee_display_name = str(custom_service_fee_name).strip()
|
||||
else:
|
||||
fee_display_name = f'自定义服务费({custom_service_fee_price}元/kWh)'
|
||||
sum_data_id = int(datetime.now().timestamp() * 1000000) + collected_count
|
||||
sql = '''
|
||||
INSERT INTO t_daily_report_sum_data
|
||||
(id, report_date, config_id, config_name, split_type, split_value, split_name,
|
||||
sum_field_key, sum_field_name, sum_value, total_orders, sort_order, data_source, remark,
|
||||
create_time, update_time)
|
||||
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, NOW(), NOW())
|
||||
'''
|
||||
params = (
|
||||
sum_data_id,
|
||||
history['report_date'],
|
||||
history['config_id'],
|
||||
history.get('config_name', ''),
|
||||
history.get('split_type', ''),
|
||||
history.get('split_value', ''),
|
||||
history.get('split_name', ''),
|
||||
'custom_service_fee',
|
||||
fee_display_name,
|
||||
custom_service_fee,
|
||||
history.get('total_orders', 0),
|
||||
sort_order,
|
||||
'auto',
|
||||
f'自动计算:充电电量{charge_degree}kWh × 单价{custom_service_fee_price}元/kWh'
|
||||
)
|
||||
execute_insert(sql, params)
|
||||
collected_count += 1
|
||||
except Exception as fee_error:
|
||||
print(f"[采集] 计算自定义服务费失败: {fee_error}")
|
||||
|
||||
return {
|
||||
'success': True,
|
||||
|
||||
Reference in New Issue
Block a user