增加t自定义服务费单价
This commit is contained in:
@@ -475,7 +475,9 @@ def generate_daily_report(config_id, start_time=None, end_time=None):
|
||||
show_monthly_total=config.get('show_monthly_total', 0) == 1,
|
||||
config_id=config['id'],
|
||||
report_date=start_time.strftime('%Y-%m-%d'),
|
||||
sort_order=config.get('sort_order')
|
||||
sort_order=config.get('sort_order'),
|
||||
custom_service_fee_price=config.get('custom_service_fee_price'),
|
||||
custom_service_fee_name=config.get('custom_service_fee_name')
|
||||
)
|
||||
|
||||
print(f"[日报生成] Excel文件已生成: {file_path}")
|
||||
@@ -565,7 +567,8 @@ def generate_daily_report(config_id, start_time=None, end_time=None):
|
||||
def generate_excel(orders, selected_fields, sum_fields, sum_results,
|
||||
config_name, split_name, start_time, end_time,
|
||||
id_name_maps=None, field_custom_names=None, has_supplement=False,
|
||||
show_monthly_total=False, config_id=None, report_date=None, sort_order=None):
|
||||
show_monthly_total=False, config_id=None, report_date=None, sort_order=None,
|
||||
custom_service_fee_price=None, custom_service_fee_name=None):
|
||||
"""
|
||||
生成Excel文件
|
||||
|
||||
@@ -697,6 +700,21 @@ def generate_excel(orders, selected_fields, sum_fields, sum_results,
|
||||
cell.alignment = header_alignment
|
||||
cell.border = thin_border
|
||||
|
||||
# 自定义服务费列表头(如果设置了单价)
|
||||
has_custom_service_fee = custom_service_fee_price is not None and custom_service_fee_price != ''
|
||||
if has_custom_service_fee:
|
||||
custom_fee_col = len(selected_fields) + 2
|
||||
cell = ws.cell(row=header_row, column=custom_fee_col)
|
||||
if custom_service_fee_name and str(custom_service_fee_name).strip():
|
||||
header_name = str(custom_service_fee_name).strip()
|
||||
else:
|
||||
header_name = f'自定义服务费({custom_service_fee_price}元/kWh)'
|
||||
cell.value = header_name
|
||||
cell.font = header_font
|
||||
cell.fill = header_fill
|
||||
cell.alignment = header_alignment
|
||||
cell.border = thin_border
|
||||
|
||||
ws.row_dimensions[header_row].height = 25
|
||||
|
||||
# 写入数据
|
||||
@@ -747,6 +765,19 @@ def generate_excel(orders, selected_fields, sum_fields, sum_results,
|
||||
if is_even:
|
||||
cell.fill = even_row_fill
|
||||
|
||||
# 自定义服务费列(如果设置了单价)
|
||||
if has_custom_service_fee:
|
||||
custom_fee_col = len(selected_fields) + 2
|
||||
cell = ws.cell(row=row_idx, column=custom_fee_col)
|
||||
charge_degree = float(order.get('charge_degree', 0) or 0)
|
||||
custom_fee = round(charge_degree * float(custom_service_fee_price), 2)
|
||||
cell.value = custom_fee
|
||||
cell.border = thin_border
|
||||
cell.alignment = Alignment(horizontal='right', vertical='center')
|
||||
cell.number_format = '0.00'
|
||||
if is_even:
|
||||
cell.fill = even_row_fill
|
||||
|
||||
ws.row_dimensions[row_idx].height = 22
|
||||
|
||||
# 写入求和行
|
||||
@@ -769,6 +800,19 @@ def generate_excel(orders, selected_fields, sum_fields, sum_results,
|
||||
cell.alignment = Alignment(horizontal='right', vertical='center')
|
||||
cell.number_format = '0.000'
|
||||
|
||||
# 自定义服务费合计
|
||||
if has_custom_service_fee:
|
||||
custom_fee_col = len(selected_fields) + 2
|
||||
cell = ws.cell(row=sum_row, column=custom_fee_col)
|
||||
cell.fill = sum_fill
|
||||
cell.border = thin_border
|
||||
total_charge_degree = sum_results.get('charge_degree', 0)
|
||||
total_custom_fee = round(float(total_charge_degree) * float(custom_service_fee_price), 2)
|
||||
cell.value = total_custom_fee
|
||||
cell.font = sum_font
|
||||
cell.alignment = Alignment(horizontal='right', vertical='center')
|
||||
cell.number_format = '0.00'
|
||||
|
||||
ws.row_dimensions[sum_row].height = 25
|
||||
|
||||
# 写入当月充电量累计总计行(从求和采集表查询,对账后数据)
|
||||
@@ -807,7 +851,10 @@ def generate_excel(orders, selected_fields, sum_fields, sum_results,
|
||||
ws.cell(row=monthly_row, column=1).border = thin_border
|
||||
|
||||
# 其他列也填充背景色
|
||||
for col_idx in range(2, len(selected_fields) + 2):
|
||||
total_cols = len(selected_fields) + 2
|
||||
if has_custom_service_fee:
|
||||
total_cols += 1
|
||||
for col_idx in range(2, total_cols):
|
||||
cell = ws.cell(row=monthly_row, column=col_idx)
|
||||
cell.fill = monthly_fill
|
||||
cell.border = thin_border
|
||||
@@ -848,6 +895,18 @@ def generate_excel(orders, selected_fields, sum_fields, sum_results,
|
||||
col_letter = get_column_letter(col_idx)
|
||||
ws.column_dimensions[col_letter].width = min(max_length + 2, 50)
|
||||
|
||||
# 自定义服务费列宽度
|
||||
if has_custom_service_fee:
|
||||
custom_fee_col = len(selected_fields) + 2
|
||||
if custom_service_fee_name and str(custom_service_fee_name).strip():
|
||||
header_name = str(custom_service_fee_name).strip()
|
||||
else:
|
||||
header_name = f'自定义服务费({custom_service_fee_price}元/kWh)'
|
||||
cn_count = sum(1 for c in str(header_name) if '\u4e00' <= c <= '\u9fff')
|
||||
max_length = len(str(header_name)) + cn_count
|
||||
col_letter = get_column_letter(custom_fee_col)
|
||||
ws.column_dimensions[col_letter].width = min(max_length + 2, 50)
|
||||
|
||||
# 冻结首行
|
||||
ws.freeze_panes = 'A2'
|
||||
|
||||
|
||||
Reference in New Issue
Block a user