Files
saas/back_ground_module/data_Support_Commission.py
T
2025-08-14 11:55:03 +08:00

89 lines
3.5 KiB
Python

# -*- coding: utf-8 -*-
import pandas as pd
import datetime
from config import Config
from api import API
import pymysql # 使用 pymysql 替代 mysql.connector
from log_config import configure_task_logger, configure_error_task_logger
from back_ground_module import CommonModule
# 获取已经配置好的常规日志记录器
logger = configure_task_logger()
# 获取已经配置好的错误任务日志记录器
error_task_logger = configure_error_task_logger()
start_time = datetime.datetime.now()
api_instance = API()
common_module = CommonModule()
class importCommissionData:
"""
小六提成数据支撑
"""
def __init__(self):
self.field_mapping = {}
self.fields()
def main(self):
task_start_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
try:
payload = {"api_key": Config.SaaS_Tasks_APP_ID,
"entry_id": Config.Commission_form_ID,
}
abnormal_service = api_instance.entry_data_list(payload)
abnormal_list = abnormal_service.get("data") # api请求格式,将数据封装在data字典里
delete_id_list = []
try:
for i in range(0, len(abnormal_list)): # 删除历史数据
delete_id_list.append(abnormal_list[i]['_id'])
delete_payload = {"api_key": Config.SaaS_Tasks_APP_ID,
"entry_id": Config.Commission_form_ID,
"data_id": delete_id_list}
api_instance.entry_data_batch_delete(delete_payload)
data_commission = common_module.get_commission_details()
except Exception as e:
error_task_logger.error(f"小六提成数据支撑任务执行出错:{str(e)}")
common_module.send_task_error(task_start_time, "小六提成数据支撑", str(e))
# 生成包含所有行转换后的字典列表
data_commission = [self.row_to_dict(row, self.field_mapping) for index, row in data_commission.iterrows()]
data_commission = {'api_key': Config.SaaS_Tasks_APP_ID, 'entry_id': Config.Commission_form_ID,
"data_list": data_commission}
api_instance.entry_data_batch_create(data_commission)
common_module.send_task_status(task_start_time, "小六提成数据支撑")
except Exception as e:
error_task_logger.error(f"小六提成数据支撑任务执行出错:{str(e)}")
common_module.send_task_error(task_start_time, "小六提成数据支撑", str(e))
@staticmethod
def row_to_dict(row, field_mapping):
"""将一行数据转换为指定格式的字典"""
result = {}
for col_name, widget_id in field_mapping.items():
if col_name in row:
value = row[col_name]
clean_value = None if pd.isna(value) else value
result[widget_id] = {"value": clean_value}
return result
def fields(self):
self.field_mapping = {
"门店id": "_widget_1742884710674",
"提成类型_二级分类": "_widget_1742884710675",
"提成基数(本月)": "_widget_1742884710676",
"提成基数(上月)": "_widget_1742884710677",
"公司id": "_widget_1748930441629",
"门店编码": "_widget_1748931089356",
"门店名称": "_widget_1748931089357"
}
if __name__ == '__main__':
start = importCommissionData()
start.main()