增加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

@@ -43,6 +43,13 @@ def create_config():
telecom_vehicle_no = data.get('telecom_vehicle_no', '')
field_custom_names = data.get('field_custom_names', {})
show_monthly_total = 1 if data.get('show_monthly_total') else 0
custom_service_fee_price = data.get('custom_service_fee_price')
if custom_service_fee_price is not None and custom_service_fee_price != '':
custom_service_fee_price = float(custom_service_fee_price)
else:
custom_service_fee_price = None
custom_service_fee_name = data.get('custom_service_fee_name')
if not config_name or not split_type or not split_value:
return jsonify({'success': False, 'message': '缺少必填字段'}), 400
@@ -61,8 +68,8 @@ def create_config():
INSERT INTO t_daily_report_config
(id, config_name, split_type, split_value, split_name, selected_fields,
sum_fields, time_periods, merge_telecom, telecom_vehicle_no, field_custom_names,
show_monthly_total, is_active, sort_order, create_time, update_time)
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, 1, %s, NOW(), NOW())
show_monthly_total, custom_service_fee_price, custom_service_fee_name, is_active, sort_order, create_time, update_time)
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, 1, %s, NOW(), NOW())
"""
params = (
@@ -78,6 +85,8 @@ def create_config():
telecom_vehicle_no,
json.dumps(field_custom_names, ensure_ascii=False) if field_custom_names else None,
show_monthly_total,
custom_service_fee_price,
custom_service_fee_name if custom_service_fee_name else None,
sort_order
)
@@ -108,13 +117,21 @@ def update_config(config_id):
telecom_vehicle_no = data.get('telecom_vehicle_no', '')
field_custom_names = data.get('field_custom_names', {})
show_monthly_total = 1 if data.get('show_monthly_total') else 0
custom_service_fee_price = data.get('custom_service_fee_price')
if custom_service_fee_price is not None and custom_service_fee_price != '':
custom_service_fee_price = float(custom_service_fee_price)
else:
custom_service_fee_price = None
custom_service_fee_name = data.get('custom_service_fee_name')
sql = """
UPDATE t_daily_report_config
SET config_name = %s, split_type = %s, split_value = %s, split_name = %s,
selected_fields = %s, sum_fields = %s, time_periods = %s,
merge_telecom = %s, telecom_vehicle_no = %s, field_custom_names = %s,
show_monthly_total = %s, update_time = NOW()
show_monthly_total = %s, custom_service_fee_price = %s, custom_service_fee_name = %s,
update_time = NOW()
WHERE id = %s
"""
@@ -130,6 +147,8 @@ def update_config(config_id):
telecom_vehicle_no,
json.dumps(field_custom_names, ensure_ascii=False) if field_custom_names else None,
show_monthly_total,
custom_service_fee_price,
custom_service_fee_name if custom_service_fee_name else None,
config_id
)
@@ -172,8 +191,8 @@ def copy_config(config_id):
# 插入新配置
execute_insert(
'''INSERT INTO t_daily_report_config
(id, config_name, split_type, split_value, split_name, selected_fields, sum_fields, time_periods, merge_telecom, telecom_vehicle_no, field_custom_names, show_monthly_total, is_active, sort_order, create_time, update_time)
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, NOW(), NOW())''',
(id, config_name, split_type, split_value, split_name, selected_fields, sum_fields, time_periods, merge_telecom, telecom_vehicle_no, field_custom_names, show_monthly_total, custom_service_fee_price, custom_service_fee_name, is_active, sort_order, create_time, update_time)
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, NOW(), NOW())''',
(
new_id,
new_name,
@@ -187,6 +206,8 @@ def copy_config(config_id):
original.get('telecom_vehicle_no', ''),
original.get('field_custom_names', None),
original.get('show_monthly_total', 0),
original.get('custom_service_fee_price'),
original.get('custom_service_fee_name'),
original['is_active'],
sort_order
)
@@ -286,6 +307,8 @@ EXCEL_COLUMNS = [
{'key': 'telecom_vehicle_no', 'name': '特来电自编号', 'required': False},
{'key': 'field_custom_names', 'name': '字段自定义表头(JSON对象)', 'required': False, 'comment': '如: {"charge_degree":"充电量(kWh)"}'},
{'key': 'show_monthly_total', 'name': '是否显示月度总计', 'required': False, 'comment': '0=否, 1=是'},
{'key': 'custom_service_fee_price', 'name': '自定义服务费单价(元/kWh)', 'required': False, 'comment': '设置后按充电电量×单价计算自定义服务费'},
{'key': 'custom_service_fee_name', 'name': '自定义服务费表头名称', 'required': False, 'comment': '报表中显示的列名,留空则使用默认名称'},
{'key': 'is_active', 'name': '是否启用', 'required': False, 'comment': '0=禁用, 1=启用'},
{'key': 'sort_order', 'name': '排序号', 'required': False, 'comment': '数字越小越靠前'},
]
@@ -432,6 +455,8 @@ def download_template():
'telecom_vehicle_no': '',
'field_custom_names': '{"charge_degree":"充电量(kWh)"}',
'show_monthly_total': '1',
'custom_service_fee_price': '0.8',
'custom_service_fee_name': '服务费(自定义)',
'is_active': '0',
'sort_order': '1',
}
@@ -598,12 +623,25 @@ def import_configs():
is_active = config_data.get('is_active', '0').strip()
is_active = 1 if is_active in ('1', '', 'true', 'True') else 0
custom_service_fee_price_str = config_data.get('custom_service_fee_price', '').strip()
if custom_service_fee_price_str:
try:
custom_service_fee_price = float(custom_service_fee_price_str)
except Exception:
custom_service_fee_price = None
else:
custom_service_fee_price = None
custom_service_fee_name = config_data.get('custom_service_fee_name', '').strip()
if not custom_service_fee_name:
custom_service_fee_name = None
sql = """
INSERT INTO t_daily_report_config
(id, config_name, split_type, split_value, split_name, selected_fields,
sum_fields, time_periods, merge_telecom, telecom_vehicle_no, field_custom_names,
show_monthly_total, is_active, sort_order, create_time, update_time)
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, NOW(), NOW())
show_monthly_total, custom_service_fee_price, custom_service_fee_name, is_active, sort_order, create_time, update_time)
VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, NOW(), NOW())
"""
params = (
@@ -619,6 +657,8 @@ def import_configs():
config_data.get('telecom_vehicle_no', ''),
json.dumps(field_custom_names, ensure_ascii=False) if field_custom_names else None,
show_monthly_total,
custom_service_fee_price,
custom_service_fee_name,
is_active,
sort_order
)