Commit 4e3e63ee authored by 邱阿朋's avatar 邱阿朋

feat(payment, return_goods, spa_search): 优化文件命名和数据处理

- 在 payment 和 return_goods模块中,修改文件命名规则,增加国家代码
- 在 spa_search 模块中,更新文件命名规则并优化数据处理逻辑- 添加测试函数,用于验证数据处理和排序功能
parent febdc01c
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
No preview for this file type
......@@ -15,7 +15,7 @@ def make_dir(path):
def get_input_with_default(prompt, default):
user_input = input(f"{prompt}(默认为 '{default}'):")
return user_input or default
return user_input.upper() or default
def print_trace(title: str, err):
......
......@@ -322,7 +322,7 @@ def main():
# 原文件名
file_name = "回款数据.xlsx"
# 拼接新的文件名
new_file_name = f"{current_datetime}_{file_name}"
new_file_name = f"{current_datetime}_{country}_{file_name}"
excel.save_xls(list_data, new_file_name, "Remittance payments")
log.info(f"共计:{len(list_data)} 订单")
......
......@@ -108,7 +108,7 @@ def main():
# 原文件名
file_name = "退货明细.xlsx"
# 拼接新的文件名
new_file_name = f"{current_datetime}_{file_name}"
new_file_name = f"{current_datetime}_{country}_{file_name}"
excel.save_xls(new_list_data, new_file_name)
# 推送消息
......
......@@ -39,7 +39,7 @@ def page_get(url):
def export_list_read_data():
file_name = "ContraCogsInvoices.xls"
file_name = "spa-de.xls"
if not os.path.isfile(file_name):
raise FileNotFoundError(f"{file_name},文件不存在")
return pd.read_excel(file_name)
......@@ -176,13 +176,12 @@ def main():
# 获取数据
relation_data = api.sku_relations(country) # 获取 ASIN 与 SKU 的对应关系数据
coop_list = export_list_read_data() # 获取合作数据列表
# coop_list = coop_list[140:]
log.info(f"共计: {len(coop_list)} 条数据")
# 获取当前日期和时间并格式化
current_datetime = datetime.now().strftime('%Y-%m-%d-%H-%M')
file_name = "spa.xlsx"
new_file_name = f"{current_datetime}_{file_name}"
new_file_name = f"{current_datetime}_{country}_{file_name}"
sheet_data = [] # 用于保存小数据
large_sheet_data = {} # 保存大数据(需要分 Sheet)
......@@ -205,19 +204,19 @@ def main():
if len(item_dict) > 1:
for i, value in enumerate(item_dict.values(), start=1):
invoice_id_num = f"{invoice_id}-{i}"
processed_items = process_large_items(value, relation_data,coop)
processed_items = process_large_items(value, relation_data, coop)
if processed_items:
large_sheet_data[invoice_id_num] = processed_items
else:
item_list = item_dict.get('Accrual For Current Period')
# 如果是列表且长度 >= 10 则新增sheet
if len(item_list) >= 10:
processed_items = process_large_items(item_list, relation_data,coop)
processed_items = process_large_items(item_list, relation_data, coop)
if processed_items:
large_sheet_data[invoice_id] = processed_items
else:
# 如果是较小的列表
processed_items = process_small_items(item_list, coop, relation_data)
processed_items = process_small_items(item_list, relation_data, coop)
sheet_data.extend(processed_items)
# 保存数据到 Excel 文件
......@@ -226,7 +225,7 @@ def main():
push_data_queue(new_file_name)
def process_large_items(item_list, relation_data,coop):
def process_large_items(item_list, relation_data, coop):
"""处理大数据列表 (item_list 长度 >= 10)"""
processed_items = []
for _, item in item_list.iterrows():
......@@ -253,7 +252,7 @@ def process_large_items(item_list, relation_data,coop):
return processed_items
def process_small_items(item_list, coop, relation_data):
def process_small_items(item_list, relation_data, coop):
"""处理小数据列表 (item_list 长度 < 10)"""
processed_items = []
for _, item in item_list.iterrows():
......@@ -264,9 +263,12 @@ def process_small_items(item_list, coop, relation_data):
continue
relation = relation_data.get(asin, {})
rebate = item.get("Rebate In Agreement Currency", None)
vendor_funding = item.get("Vendor Funding In Agreement Currency", None)
processed_item = coop.copy()
processed_item.pop("Agreement title")
processed_item.pop("Original balance")
processed_item["Order Date"] = item.get("Order Date")
processed_item['Purchase Order'] = relation.get("Purchase Order")
processed_item["Agreement Currency"] = item.get("Agreement Currency")
......@@ -274,6 +276,7 @@ def process_small_items(item_list, coop, relation_data):
processed_item["ERP SKU"] = relation.get("erp_sku")
processed_item["Group Name"] = relation.get("name")
processed_item['Group Code'] = relation.get("code")
processed_item["Original balance"] = rebate or vendor_funding
processed_items.append(processed_item)
return processed_items
......@@ -319,7 +322,7 @@ def push_data_queue(file_name):
rabbit.connect(queue='spa_robot', routing_key='spa_robot', exchange='reports')
log.info("开始读取数据....")
data_dict = pd.read_excel(file_name, sheet_name=None, keep_default_na=False, na_values=[])
log.info(f"开始推送消息....{len(data_dict)}")
log.info("开始推送消息....")
for sheet_name, values in data_dict.items():
for _, item_row in values.iterrows():
if sheet_name == "Sheet1":
......@@ -350,6 +353,45 @@ def push_data_queue(file_name):
rabbit.send_message(push_data)
def test(file_name):
log.info("开始读取数据....")
invoices = pd.read_excel('ContraCogsInvoices.xls')
invoices['Original balance'] = invoices['Original balance'].replace({'\$': '', ',': ''}, regex=True).astype(float)
# 通过 Invoice ID 去重,并累加 Original balance
invoices = invoices.groupby('Invoice ID', as_index=False)['Original balance'].sum()
# 根据 Original balance 从小到大排序
sorted_invoices = invoices.sort_values(by='Original balance')
# 保存排序后的数据到 origin.xls
sorted_invoices.to_excel('origin.xlsx', index=False)
log.info("开始读取数据....")
data_dict = pd.read_excel(file_name, sheet_name=None, keep_default_na=False, na_values=[])
sheet_data = []
for sheet_name, values in data_dict.items():
sheet_total = 0
for _, item_row in values.iterrows():
balance = item_row.get('Original balance', "")
if isinstance(balance, str):
balance = balance.replace('$', '').replace(',', '')
if sheet_name == 'Sheet1':
invoice_id = item_row.get('Invoice ID', "")
temp_sheet_data = {"sheet": invoice_id, "total": float(balance)}
sheet_data.append(temp_sheet_data)
else:
sheet_total = sheet_total + float(balance)
temp_sheet_data = {"sheet": sheet_name, "total": sheet_total}
sheet_data.append(temp_sheet_data)
log.info(f"sheet:{sheet_name},共计:{sheet_total}")
df = pd.DataFrame(sheet_data)
# 根据 total 从小到大排序
df = df.sort_values(by='total')
# 保存排序后的数据到 result.xls
df.to_excel('result.xlsx', index=False)
if __name__ == '__main__':
try:
country = helper.get_input_with_default("国家(目前支持[DE,FR,JP,CA,UK,US])", "US")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment