日常回访多公司派发一个

This commit is contained in:
z66
2025-08-20 09:41:44 +08:00
parent 3bffc6946b
commit 6e09b431e3
16 changed files with 11096 additions and 28056 deletions
+26 -20
View File
@@ -1,9 +1,7 @@
import datetime
import os
import time
import requests
from api import API
import re
from back_ground_module import CommonModule
@@ -58,28 +56,26 @@ class NewServicesRevisit:
返回:
- date_one: 遍历到date_list中日期的次数。
"""
jdy_date = datetime.datetime.now().strftime("%Y-%m-%d")
jdy_start_time = datetime.datetime.now().strftime("%Y-%m-%d ")
# 设置起始日期
now_time = datetime.datetime.now() + datetime.timedelta(days=start_offset)
# 初始化计数器
date_one = 1
print("当前日期:", now_time.strftime("%Y-%m-%d"))
logger.info("当前日期:%s", now_time.strftime("%Y-%m-%d"))
# 检查起始日期是否在date_list中
if now_time.strftime("%Y-%m-%d") in self.date_list:
date_one = 0
print("开始次数:", date_one)
logger.info("开始次数:%s", date_one)
else:
# 遍历日期
for i in range(1, 10):
new_date = now_time + datetime.timedelta(days=-i)
new_date_str = new_date.strftime("%Y-%m-%d")
print("遍历日期:", new_date_str)
logger.info("遍历日期:%s", new_date_str)
if new_date_str in self.date_list:
date_one += 1
print("节假日期:", new_date_str)
logger.info("节假日期:%s", new_date_str)
else:
break
@@ -107,13 +103,12 @@ class NewServicesRevisit:
for chunk in response.iter_content(chunk_size=8192): # 分块写入,避免占用过多内存
if chunk: # 过滤掉空块
file.write(chunk)
print(f"文件已成功保存到 {save_path}")
logger.info(f"文件已成功保存到 {save_path}")
except requests.exceptions.RequestException as e:
print(f"下载失败: {e}")
error_task_logger.error(f"图片下载发生错误: {e}")
except Exception as e:
print(f"发生错误: {e}")
error_task_logger.error(f"图片下载发生错误: {e}")
def load_all_data(self):
"""加载所有必要的数据表"""
@@ -178,6 +173,10 @@ class NewServicesRevisit:
payload = {"api_key": "675b900991ad2491c69389ca", "entry_id": "67e5107198ba1b20d5df3974"}
self.groupnotification = api_instance.entry_data_list(payload).get("data", [])
# 获取多公司过滤表
payload = {"api_key": "675b900991ad2491c69389ca", "entry_id": "689bf5f8ba88a28cb0679ec9"}
self.get_filter_company_list = api_instance.entry_data_list(payload).get("data", [])
@staticmethod
def build_index(json_list):
index = {}
@@ -199,7 +198,6 @@ class NewServicesRevisit:
@staticmethod
def find_customer_service(province_name, city_name, area_name, index):
key = (province_name, city_name, area_name)
# print(index)
if key not in index:
return "数据缺失: 未找到对应的日常回访客服"
@@ -261,6 +259,15 @@ class NewServicesRevisit:
self.saas_create_time_180 = 173 # 新签日期
self.saas_create_time_90 = 83 # 新签日期
logger.info("获取多公司过滤公司id")
all_filter_company_list = [] # 获取多公司过滤公司id
for company in self.get_filter_company_list:
company_list = company.get("_widget_1755052002491")
for company_item in company_list:
if company_item.get("_widget_1755052002496") == "":
all_filter_company_list.append(company_item.get("_widget_1755052002495"))
logger.info(f"过滤公司条数:{len(all_filter_company_list)}")
for i in range(0, self.date_one): # 从NGV总表过滤
# now_time = datetime.datetime.now() + datetime.timedelta(days=-76)
# now_time = now_time + datetime.timedelta(days=-i)
@@ -272,6 +279,8 @@ class NewServicesRevisit:
logger.info(f"开始处理{formatted_today_180}{formatted_today_90}的数据")
data_NGV = self.data_NGV_S.copy()
# 过滤多公司
data_NGV = data_NGV[~data_NGV['id_own_group'].isin(all_filter_company_list)]
def replace_values(series):
# 使用条件判断来进行替换
@@ -294,7 +303,8 @@ class NewServicesRevisit:
# 添加用于排序的新列,并处理不在映射字典中的值
data_NGV['edition_rank'] = data_NGV['saas_edition_fmt'].map(edition_map).fillna(0).astype(
int) # 缺失值用最高优先级填充
data_NGV['customer_type_rank'] = data_NGV['saas_customer_type'].map(customer_type_map).fillna(0).astype(int)
data_NGV['customer_type_rank'] = data_NGV['saas_customer_type'].map(customer_type_map).fillna(0).astype(
int)
data_NGV['group_grade_rank'] = data_NGV['group_grade'].map(group_grade_map).fillna(0).astype(int)
# data_NGV.to_csv("88855.csv")
@@ -391,8 +401,6 @@ class NewServicesRevisit:
payload_dict = {}
saas_use_year = re.findall(r'第([0-9]+)年', row["saas_use_year"])[0]
NGV_roles = {
'relationship_manager': row['service_impl_principal'], # 运营负责人
# 'relationship_manager': "张阳", # 运营负责人
@@ -488,7 +496,7 @@ class NewServicesRevisit:
Billing = None
for item in self.permissions_table:
if NGV_store_level_key == item.get("_widget_1734056507963"): # 合并(等级-类型-分层)
print("该门店开单的权限是:", item.get(item.get("_widget_1734055617039")))
logger.info(f"该门店开单的权限是:{item.get(item.get('_widget_1734055617039'))}")
Billing = item.get("_widget_1734055617039") # 开单
Service_Alerts = item.get("_widget_1734055617040") # 服务提醒
membership = item.get("_widget_1734055617041") # 会员卡
@@ -784,12 +792,9 @@ class NewServicesRevisit:
UUid = time.strftime("%Y%m%d%H%M%S", time.localtime())
if png_url:
save_dir = "sampleCloud" # 设置输出目录
# 创建输出目录(如果不存在)
import os
os.makedirs(save_dir, exist_ok=True)
save_path = fr'{save_dir}\png\{time.strftime("%Y%m%d%H%M%S", time.localtime())}.png'
NewServicesRevisit.download_url_content(png_url, save_path)
@@ -856,6 +861,7 @@ class NewServicesRevisit:
common_module.send_task_error(task_start_time, "新签客户回访", str(e))
error_task_logger.error(f"新签客户回访任务执行时发生异常: {e}")
if __name__ == '__main__':
start = NewServicesRevisit()
start.main()