Commit a9ef054e authored by 邱阿朋's avatar 邱阿朋

refactor(vc): 重构 interface 和 payment 类

- 在 interface.py 中添加 push_data_queue 抽象方法
- 更新 main.py,调用新的 push_data_queue 方法
- 修改 payment.py、payment_push.py 和 return_goods.py,实现 push_data_queue 方法
- 优化文件名生成逻辑,将其移至类初始化方法中
- 删除不必要的代码,简化数据处理流程
parent fe440a5b
......@@ -8,3 +8,7 @@ class AutoInterface(ABC):
@abstractmethod
def run(self, file_name: str):
pass
@abstractmethod
def push_data_queue(self):
pass
\ No newline at end of file
......@@ -19,6 +19,13 @@ class Payment(AutoInterface):
self.payeeCode = payee_code
self.shop_code = shop_code
# 获取当前日期和时间并格式化
current_datetime = datetime.now().strftime('%Y-%m-%d-%H-%M')
# 原文件名
file_name = "退货明细.xlsx"
# 拼接新的文件名
self.result_file_name = f"{current_datetime}_{self.country}_{file_name}"
def __page_get(self, url: str):
host = domain.switch_domain(self.country)
full_url = host + url
......@@ -41,11 +48,11 @@ class Payment(AutoInterface):
# 读取回退商品详情
return pd.read_excel(file_name)
def __push_data_queue(self, file_name: str):
def push_data_queue(self):
rabbit = rabbitmq.RabbitMQClient()
rabbit.connect(queue='return_robot', routing_key='return_robot', exchange='reports')
data = pd.read_excel(file_name, keep_default_na=False, na_values=[])
data = pd.read_excel(self.result_file_name, keep_default_na=False, na_values=[])
for _, item_row in data.iterrows():
push_data = {
......@@ -112,13 +119,4 @@ class Payment(AutoInterface):
# 追加数据
new_list_data.append(data_dict)
# 获取当前日期和时间并格式化
current_datetime = datetime.now().strftime('%Y-%m-%d-%H-%M')
# 原文件名
file_name = "退货明细.xlsx"
# 拼接新的文件名
new_file_name = f"{current_datetime}_{self.country}_{file_name}"
excel.save_xls(new_list_data, new_file_name)
# 推送消息
self.__push_data_queue(new_file_name)
\ No newline at end of file
excel.save_xls(new_list_data, self.result_file_name)
......@@ -10,6 +10,7 @@ from app.vc.interface import AutoInterface
class PaymentPush(AutoInterface):
def __init__(self, page: Page, country: str, payee_code: str, shop_code: str):
self.page = page
self.country = country
......@@ -39,6 +40,9 @@ class PaymentPush(AutoInterface):
return [payments, invoices]
def push_data_queue(self):
pass
def run(self, file_name: str):
payments, invoices = self.__read_data(file_name)
......@@ -76,4 +80,4 @@ class PaymentPush(AutoInterface):
}
# 推送数据
rabbit.send_message(push_data)
rabbit.send_message(push_data)
\ No newline at end of file
......@@ -19,6 +19,13 @@ class ReturnGoods(AutoInterface):
self.payeeCode = payee_code
self.shop_code = shop_code
# 获取当前日期和时间并格式化
current_datetime = datetime.now().strftime('%Y-%m-%d-%H-%M')
# 原文件名
file_name = "退货明细.xlsx"
# 拼接新的文件名
self.result_file_name = f"{current_datetime}_{self.country}_{file_name}"
def __page_get(self, url):
host = domain.switch_domain(self.country)
full_url = host + url
......@@ -41,31 +48,6 @@ class ReturnGoods(AutoInterface):
# 读取回退商品详情
return pd.read_excel(file_name)
def __push_data_queue(self, file_name):
rabbit = rabbitmq.RabbitMQClient()
rabbit.connect(queue='return_robot', routing_key='return_robot', exchange='reports')
data = pd.read_excel(file_name, keep_default_na=False, na_values=[])
for _, item_row in data.iterrows():
push_data = {
'return_id': item_row.get('Return ID', ''),
'asin': item_row.get('ASIN', ''), # ASIN
'order_no': item_row.get('Purchase order', ''), # 订单号
'sku_quantity': item_row.get('Quantity', 0), # 退回数量
'sku_amount': item_row.get('Total cost', 0), # Total cost
'currency': item_row.get('Currency code', ''), # Currency code
'data_date': str(item_row.get('Return Date', '')), # Return Date
'erp_sku': item_row.get("SKU", ''), # ERP SKU # SKU1匹配
'shop_code': self.shop_code, # 店铺code
'supplier_code': item_row.get('Vendor code', ''), # 供应商编码
'group_name': item_row.get('Group Name', ""), # 组别 运营一组 运营二组
'group_code': item_row.get('Group Code', ""), # 组别 T1 T2
}
# 推送数据
rabbit.send_message(push_data)
def run(self, file_name: str):
if not os.path.isfile(file_name):
raise FileNotFoundError(f"{file_name},文件不存在")
......@@ -113,13 +95,29 @@ class ReturnGoods(AutoInterface):
# 追加数据
new_list_data.append(data_dict)
# 获取当前日期和时间并格式化
current_datetime = datetime.now().strftime('%Y-%m-%d-%H-%M')
# 原文件名
file_name = "退货明细.xlsx"
# 拼接新的文件名
new_file_name = f"{current_datetime}_{self.country}_{file_name}"
excel.save_xls(new_list_data, new_file_name)
excel.save_xls(new_list_data, self.result_file_name)
def push_data_queue(self):
rabbit = rabbitmq.RabbitMQClient()
rabbit.connect(queue='return_robot', routing_key='return_robot', exchange='reports')
data = pd.read_excel(self.result_file_name, keep_default_na=False, na_values=[])
for _, item_row in data.iterrows():
push_data = {
'return_id': item_row.get('Return ID', ''),
'asin': item_row.get('ASIN', ''), # ASIN
'order_no': item_row.get('Purchase order', ''), # 订单号
'sku_quantity': item_row.get('Quantity', 0), # 退回数量
'sku_amount': item_row.get('Total cost', 0), # Total cost
'currency': item_row.get('Currency code', ''), # Currency code
'data_date': str(item_row.get('Return Date', '')), # Return Date
'erp_sku': item_row.get("SKU", ''), # ERP SKU # SKU1匹配
'shop_code': self.shop_code, # 店铺code
'supplier_code': item_row.get('Vendor code', ''), # 供应商编码
'group_name': item_row.get('Group Name', ""), # 组别 运营一组 运营二组
'group_code': item_row.get('Group Code', ""), # 组别 T1 T2
}
# 推送消息
self.__push_data_queue(new_file_name)
# 推送数据
rabbit.send_message(push_data)
......@@ -20,6 +20,11 @@ class Spa(AutoInterface):
self.payeeCode = payee_code
self.shop_code = shop_code
# 获取当前日期和时间并格式化
current_datetime = datetime.now().strftime('%Y-%m-%d-%H-%M')
file_name = "spa.xlsx"
self.result_file_name = f"{current_datetime}_{self.country}_{file_name}"
def __page_get(self, url):
host = domain.switch_domain(self.country)
full_url = host + url
......@@ -192,11 +197,11 @@ class Spa(AutoInterface):
log.info(f"文件 {new_file_name} 保存完成,路径:{os.path.abspath(new_file_name)}")
def __push_data_queue(self, file_name):
def push_data_queue(self):
rabbit = rabbitmq.RabbitMQClient()
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=[])
data_dict = pd.read_excel(self.result_file_name, sheet_name=None, keep_default_na=False, na_values=[])
log.info("开始推送消息....")
for sheet_name, values in data_dict.items():
for _, item_row in values.iterrows():
......@@ -234,11 +239,6 @@ class Spa(AutoInterface):
coop_list = pd.read_excel(file_name)
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}_{self.country}_{file_name}"
sheet_data = [] # 用于保存小数据
large_sheet_data = {} # 保存大数据(需要分 Sheet)
# 遍历合作列表
......@@ -277,6 +277,4 @@ class Spa(AutoInterface):
sheet_data.extend(processed_items)
# 保存数据到 Excel 文件
self.__save_excel(sheet_data, large_sheet_data, new_file_name)
# 推送消息
self.__push_data_queue(new_file_name)
self.__save_excel(sheet_data, large_sheet_data, self.result_file_name)
......@@ -41,8 +41,12 @@ if __name__ == '__main__':
domain.domain_page(page, country)
# 执行功能
object_instate.run(file_name)
# 推送数据到队列中
object_instate.push_data_queue()
except KeyboardInterrupt:
pass
except Exception as e:
......
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