增加t自定义服务费单价

This commit is contained in:
2026-07-15 11:23:02 +08:00
parent 9c3c1e26cc
commit 96cca34de0
6 changed files with 245 additions and 28 deletions

View File

@@ -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,