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): ...@@ -8,3 +8,7 @@ class AutoInterface(ABC):
@abstractmethod @abstractmethod
def run(self, file_name: str): def run(self, file_name: str):
pass pass
@abstractmethod
def push_data_queue(self):
pass
\ No newline at end of file
...@@ -19,6 +19,13 @@ class Payment(AutoInterface): ...@@ -19,6 +19,13 @@ class Payment(AutoInterface):
self.payeeCode = payee_code self.payeeCode = payee_code
self.shop_code = shop_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): def __page_get(self, url: str):
host = domain.switch_domain(self.country) host = domain.switch_domain(self.country)
full_url = host + url full_url = host + url
...@@ -41,11 +48,11 @@ class Payment(AutoInterface): ...@@ -41,11 +48,11 @@ class Payment(AutoInterface):
# 读取回退商品详情 # 读取回退商品详情
return pd.read_excel(file_name) return pd.read_excel(file_name)
def __push_data_queue(self, file_name: str): def push_data_queue(self):
rabbit = rabbitmq.RabbitMQClient() rabbit = rabbitmq.RabbitMQClient()
rabbit.connect(queue='return_robot', routing_key='return_robot', exchange='reports') 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(): for _, item_row in data.iterrows():
push_data = { push_data = {
...@@ -112,13 +119,4 @@ class Payment(AutoInterface): ...@@ -112,13 +119,4 @@ class Payment(AutoInterface):
# 追加数据 # 追加数据
new_list_data.append(data_dict) new_list_data.append(data_dict)
# 获取当前日期和时间并格式化 excel.save_xls(new_list_data, self.result_file_name)
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
...@@ -10,6 +10,7 @@ from app.vc.interface import AutoInterface ...@@ -10,6 +10,7 @@ from app.vc.interface import AutoInterface
class PaymentPush(AutoInterface): class PaymentPush(AutoInterface):
def __init__(self, page: Page, country: str, payee_code: str, shop_code: str): def __init__(self, page: Page, country: str, payee_code: str, shop_code: str):
self.page = page self.page = page
self.country = country self.country = country
...@@ -39,6 +40,9 @@ class PaymentPush(AutoInterface): ...@@ -39,6 +40,9 @@ class PaymentPush(AutoInterface):
return [payments, invoices] return [payments, invoices]
def push_data_queue(self):
pass
def run(self, file_name: str): def run(self, file_name: str):
payments, invoices = self.__read_data(file_name) payments, invoices = self.__read_data(file_name)
......
...@@ -19,6 +19,13 @@ class ReturnGoods(AutoInterface): ...@@ -19,6 +19,13 @@ class ReturnGoods(AutoInterface):
self.payeeCode = payee_code self.payeeCode = payee_code
self.shop_code = shop_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): def __page_get(self, url):
host = domain.switch_domain(self.country) host = domain.switch_domain(self.country)
full_url = host + url full_url = host + url
...@@ -41,31 +48,6 @@ class ReturnGoods(AutoInterface): ...@@ -41,31 +48,6 @@ class ReturnGoods(AutoInterface):
# 读取回退商品详情 # 读取回退商品详情
return pd.read_excel(file_name) 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): def run(self, file_name: str):
if not os.path.isfile(file_name): if not os.path.isfile(file_name):
raise FileNotFoundError(f"{file_name},文件不存在") raise FileNotFoundError(f"{file_name},文件不存在")
...@@ -113,13 +95,29 @@ class ReturnGoods(AutoInterface): ...@@ -113,13 +95,29 @@ class ReturnGoods(AutoInterface):
# 追加数据 # 追加数据
new_list_data.append(data_dict) new_list_data.append(data_dict)
# 获取当前日期和时间并格式化 excel.save_xls(new_list_data, self.result_file_name)
current_datetime = datetime.now().strftime('%Y-%m-%d-%H-%M')
# 原文件名 def push_data_queue(self):
file_name = "退货明细.xlsx" rabbit = rabbitmq.RabbitMQClient()
# 拼接新的文件名 rabbit.connect(queue='return_robot', routing_key='return_robot', exchange='reports')
new_file_name = f"{current_datetime}_{self.country}_{file_name}"
excel.save_xls(new_list_data, new_file_name) 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): ...@@ -20,6 +20,11 @@ class Spa(AutoInterface):
self.payeeCode = payee_code self.payeeCode = payee_code
self.shop_code = shop_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): def __page_get(self, url):
host = domain.switch_domain(self.country) host = domain.switch_domain(self.country)
full_url = host + url full_url = host + url
...@@ -192,11 +197,11 @@ class Spa(AutoInterface): ...@@ -192,11 +197,11 @@ class Spa(AutoInterface):
log.info(f"文件 {new_file_name} 保存完成,路径:{os.path.abspath(new_file_name)}") 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 = rabbitmq.RabbitMQClient()
rabbit.connect(queue='spa_robot', routing_key='spa_robot', exchange='reports') rabbit.connect(queue='spa_robot', routing_key='spa_robot', exchange='reports')
log.info("开始读取数据....") 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("开始推送消息....") log.info("开始推送消息....")
for sheet_name, values in data_dict.items(): for sheet_name, values in data_dict.items():
for _, item_row in values.iterrows(): for _, item_row in values.iterrows():
...@@ -234,11 +239,6 @@ class Spa(AutoInterface): ...@@ -234,11 +239,6 @@ class Spa(AutoInterface):
coop_list = pd.read_excel(file_name) coop_list = pd.read_excel(file_name)
log.info(f"共计: {len(coop_list)} 条数据") 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 = [] # 用于保存小数据 sheet_data = [] # 用于保存小数据
large_sheet_data = {} # 保存大数据(需要分 Sheet) large_sheet_data = {} # 保存大数据(需要分 Sheet)
# 遍历合作列表 # 遍历合作列表
...@@ -277,6 +277,4 @@ class Spa(AutoInterface): ...@@ -277,6 +277,4 @@ class Spa(AutoInterface):
sheet_data.extend(processed_items) sheet_data.extend(processed_items)
# 保存数据到 Excel 文件 # 保存数据到 Excel 文件
self.__save_excel(sheet_data, large_sheet_data, new_file_name) self.__save_excel(sheet_data, large_sheet_data, self.result_file_name)
# 推送消息
self.__push_data_queue(new_file_name)
...@@ -41,8 +41,12 @@ if __name__ == '__main__': ...@@ -41,8 +41,12 @@ if __name__ == '__main__':
domain.domain_page(page, country) domain.domain_page(page, country)
# 执行功能
object_instate.run(file_name) object_instate.run(file_name)
# 推送数据到队列中
object_instate.push_data_queue()
except KeyboardInterrupt: except KeyboardInterrupt:
pass pass
except Exception as e: 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