83 lines
2.6 KiB
Python
83 lines
2.6 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""台费打折事实表"""
|
|
|
|
from ..base_loader import BaseLoader
|
|
|
|
|
|
class TableDiscountLoader(BaseLoader):
|
|
"""写入 fact_table_discount"""
|
|
|
|
def upsert_discounts(self, records: list) -> tuple:
|
|
if not records:
|
|
return (0, 0, 0)
|
|
|
|
sql = """
|
|
INSERT INTO billiards.fact_table_discount (
|
|
store_id,
|
|
discount_id,
|
|
adjust_type,
|
|
applicant_id,
|
|
applicant_name,
|
|
operator_id,
|
|
operator_name,
|
|
ledger_amount,
|
|
ledger_count,
|
|
ledger_name,
|
|
ledger_status,
|
|
order_settle_id,
|
|
order_trade_no,
|
|
site_table_id,
|
|
table_area_id,
|
|
table_area_name,
|
|
create_time,
|
|
is_delete,
|
|
raw_data
|
|
)
|
|
VALUES (
|
|
%(store_id)s,
|
|
%(discount_id)s,
|
|
%(adjust_type)s,
|
|
%(applicant_id)s,
|
|
%(applicant_name)s,
|
|
%(operator_id)s,
|
|
%(operator_name)s,
|
|
%(ledger_amount)s,
|
|
%(ledger_count)s,
|
|
%(ledger_name)s,
|
|
%(ledger_status)s,
|
|
%(order_settle_id)s,
|
|
%(order_trade_no)s,
|
|
%(site_table_id)s,
|
|
%(table_area_id)s,
|
|
%(table_area_name)s,
|
|
%(create_time)s,
|
|
%(is_delete)s,
|
|
%(raw_data)s
|
|
)
|
|
ON CONFLICT (store_id, discount_id) DO UPDATE SET
|
|
adjust_type = EXCLUDED.adjust_type,
|
|
applicant_id = EXCLUDED.applicant_id,
|
|
applicant_name = EXCLUDED.applicant_name,
|
|
operator_id = EXCLUDED.operator_id,
|
|
operator_name = EXCLUDED.operator_name,
|
|
ledger_amount = EXCLUDED.ledger_amount,
|
|
ledger_count = EXCLUDED.ledger_count,
|
|
ledger_name = EXCLUDED.ledger_name,
|
|
ledger_status = EXCLUDED.ledger_status,
|
|
order_settle_id = EXCLUDED.order_settle_id,
|
|
order_trade_no = EXCLUDED.order_trade_no,
|
|
site_table_id = EXCLUDED.site_table_id,
|
|
table_area_id = EXCLUDED.table_area_id,
|
|
table_area_name = EXCLUDED.table_area_name,
|
|
create_time = EXCLUDED.create_time,
|
|
is_delete = EXCLUDED.is_delete,
|
|
raw_data = EXCLUDED.raw_data,
|
|
updated_at = now()
|
|
RETURNING (xmax = 0) AS inserted
|
|
"""
|
|
|
|
inserted, updated = self.db.batch_upsert_with_returning(
|
|
sql, records, page_size=self._batch_size()
|
|
)
|
|
return (inserted, updated, 0)
|