借车宝数据链接空值处理更新

This commit is contained in:
z66
2025-09-18 10:22:52 +08:00
parent a33518e078
commit 30cacc7da2
6 changed files with 160 additions and 21 deletions
+1 -1
View File
@@ -548,7 +548,7 @@ class API:
"username": data["username"],
"instance_id": data["instance_id"],
"task_id": data['task_id'],
"comment": "自动转交"
"comment": ""
}
)
+34 -19
View File
@@ -73,7 +73,7 @@ class JCBEfficientCarPickup:
# 调换两个子列表的位置并重新组合
today_customer_service_start_list = first_part + second_part
else:
# 如果没有找到“是”,保持原列表不变
# 如果没有找到"是",保持原列表不变
today_customer_service_start_list = all_customer_service_list
pass
@@ -84,6 +84,10 @@ class JCBEfficientCarPickup:
return today_customer_service_list, is_customer_service_data_id, all_customer_service_list
def send_request(self, df):
if df is None or df.empty: # 检查DataFrame是否为None或空
logger.info("当前派发数据为空或None,跳过此派发")
return
today_customer_service_list, is_customer_service_data_id, all_customer_service_list = self.today_customer_service_list()
# 初始化派发索引
next_dispatcher_index = 0
@@ -138,6 +142,10 @@ class JCBEfficientCarPickup:
try:
logger.info(f"接车宝日常回访开始执行")
data_JCB = common_module.get_jcb_details()
if data_JCB is None:
logger.error("获取接车宝数据失败,返回None")
raise ValueError("获取接车宝数据失败,返回None")
logger.info(f"数据加载完成")
# data_JCB.to_csv(os.path.join(output_dir, 'JCB_all_data.csv'), index=False)
@@ -164,12 +172,14 @@ class JCBEfficientCarPickup:
row['日期'] = row["日期"].strftime("%Y-%m-%d")
new_sign_abnormal.append(row)
new_sign_abnormal = pd.DataFrame(new_sign_abnormal)
new_sign_abnormal["表单类型"] = "新签异常待办"
new_sign_abnormal["派发日期"] = current_date_str
self.send_request(new_sign_abnormal) # 发送请求
logger.info(f"新签异常待办回访完成")
new_sign_abnormal = pd.DataFrame(new_sign_abnormal) if new_sign_abnormal else None
if new_sign_abnormal is not None and not new_sign_abnormal.empty:
new_sign_abnormal["表单类型"] = "新签异常待办"
new_sign_abnormal["派发日期"] = current_date_str
self.send_request(new_sign_abnormal) # 发送请求
logger.info(f"新签异常待办回访完成")
else:
logger.info(f"新签异常待办回访无数据,跳过")
# 优质客户转商机
# current_date = datetime.now()
@@ -199,12 +209,14 @@ class JCBEfficientCarPickup:
# 推送给客服
pass
customer_to_opportunity = pd.DataFrame(customer_to_opportunity)
customer_to_opportunity["表单类型"] = "续约优质客户转商机"
customer_to_opportunity["派发日期"] = current_date_str
self.send_request(customer_to_opportunity)
logger.info(f"优质客户转商机完成")
customer_to_opportunity = pd.DataFrame(customer_to_opportunity) if customer_to_opportunity else None
if customer_to_opportunity is not None and not customer_to_opportunity.empty:
customer_to_opportunity["表单类型"] = "续约优质客户转商机"
customer_to_opportunity["派发日期"] = current_date_str
self.send_request(customer_to_opportunity)
logger.info(f"优质客户转商机完成")
else:
logger.info(f"优质客户转商机无数据,跳过")
# 过期7天客服回访
# current_date = datetime.now()
@@ -224,11 +236,14 @@ class JCBEfficientCarPickup:
# 推送给客服
pass
outdated_30 = pd.DataFrame(outdated_30)
outdated_30["表单类型"] = "过期7天回访"
outdated_30["派发日期"] = current_date_str
self.send_request(outdated_30)
logger.info(f"过期7天客服回访完成")
outdated_30 = pd.DataFrame(outdated_30) if outdated_30 else None
if outdated_30 is not None and not outdated_30.empty:
outdated_30["表单类型"] = "过期7天回访"
outdated_30["派发日期"] = current_date_str
self.send_request(outdated_30)
logger.info(f"过期7天客服回访完成")
else:
logger.info(f"过期7天客服回访无数据,跳过")
common_module.send_task_status(task_start_time, "接车宝日常派发")
logger.info(f"接车宝日常派发执行完成")
@@ -266,4 +281,4 @@ class JCBEfficientCarPickup:
if __name__ == "__main__":
start = JCBEfficientCarPickup()
start.main()
start.main()
+3
View File
@@ -10,3 +10,6 @@
2025-08-21 09:54:25,836 - update_denominator_reporting_adjustment_to_bi.py - error_task_logger - ERROR - 写入数据时发生错误: 1054 (42S22): Unknown column 'nan' in 'field list'
2025-09-05 14:57:31,453 - update_BI_CRM_info.py - error_task_logger - ERROR - 导入数据时发生错误: 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'end date, Contract start date, url) VALUES ('C-241113-001', 'Haikarnyang', '全' at line 1
2025-09-05 14:57:31,894 - update_BI_CRM_info.py - error_task_logger - ERROR - 任务简道云海外项目CRM客户档案迁移BI执行失败。
2025-09-15 14:06:08,361 - JCB_efficient_car_pickup.py - error_task_logger - ERROR - 接车宝日常派发执行出错:'NoneType' object has no attribute 'iterrows'
2025-09-15 14:14:19,894 - JCB_efficient_car_pickup.py - error_task_logger - ERROR - 接车宝日常派发执行出错:'NoneType' object has no attribute 'iterrows'
2025-09-15 14:17:26,819 - JCB_efficient_car_pickup.py - error_task_logger - ERROR - 接车宝日常派发执行出错:获取接车宝数据失败,返回None
+20
View File
@@ -23912,3 +23912,23 @@
2025-09-05 14:59:06,078 - update_BI_CRM_info.py - task_logger - INFO - 数据导入完成
2025-09-05 14:59:06,078 - update_BI_CRM_info.py - task_logger - INFO - 数据处理流程完成
2025-09-05 14:59:06,229 - common_module.py - task_logger - INFO - 任务状态发送成功: {'data': {'creator': {'name': 'F6汽车科技', 'username': '#admin', 'status': 1, 'type': 0}, 'updater': {'name': 'F6汽车科技', 'username': '#admin', 'status': 1, 'type': 0}, 'deleter': None, 'createTime': '2025-09-05T06:59:05.499Z', 'updateTime': '2025-09-05T06:59:05.499Z', 'deleteTime': None, '_widget_1744873387500': '2025-09-05T00:00:00.000Z', '_widget_1743644977694': '简道云海外项目CRM客户档案迁移BI', '_widget_1744873387501': '2025-09-05T06:59:04.000Z', '_widget_1744873387502': '2025-09-05T06:59:06.000Z', '_widget_1744873387504': '2', '_id': '68ba8a394e83b39f799f845c', 'appId': '6694d3c4fcb69ca9a111a6c4', 'entryId': '67ede908eb9c22261016466e'}}
2025-09-15 14:06:07,901 - JCB_efficient_car_pickup.py - task_logger - INFO - 接车宝日常回访开始执行
2025-09-15 14:06:08,021 - JCB_efficient_car_pickup.py - task_logger - INFO - 数据加载完成
2025-09-15 14:06:08,361 - common_module.py - task_logger - INFO - 任务错误发生成功: {'data': {'creator': {'name': 'F6汽车科技', 'username': '#admin', 'status': 1, 'type': 0}, 'updater': {'name': 'F6汽车科技', 'username': '#admin', 'status': 1, 'type': 0}, 'deleter': None, 'createTime': '2025-09-15T06:06:06.633Z', 'updateTime': '2025-09-15T06:06:06.633Z', 'deleteTime': None, '_widget_1744873387500': '2025-09-15T00:00:00.000Z', '_widget_1743644977694': '接车宝日常派发', '_widget_1744873387501': '2025-09-15T06:06:07.000Z', '_widget_1744873387502': '2025-09-15T06:06:08.000Z', '_widget_1744873387504': '1', '_widget_1754981992215': "'NoneType' object has no attribute 'iterrows'", '_id': '68c7acced9d53fde8e2281b1', 'appId': '6694d3c4fcb69ca9a111a6c4', 'entryId': '689ae65da00c17578e27cd74'}}
2025-09-15 14:14:19,609 - JCB_efficient_car_pickup.py - task_logger - INFO - 接车宝日常回访开始执行
2025-09-15 14:14:19,700 - JCB_efficient_car_pickup.py - task_logger - INFO - 数据加载完成
2025-09-15 14:14:19,894 - common_module.py - task_logger - INFO - 任务错误发生成功: {'data': {'creator': {'name': 'F6汽车科技', 'username': '#admin', 'status': 1, 'type': 0}, 'updater': {'name': 'F6汽车科技', 'username': '#admin', 'status': 1, 'type': 0}, 'deleter': None, 'createTime': '2025-09-15T06:14:18.330Z', 'updateTime': '2025-09-15T06:14:18.330Z', 'deleteTime': None, '_widget_1744873387500': '2025-09-15T00:00:00.000Z', '_widget_1743644977694': '接车宝日常派发', '_widget_1744873387501': '2025-09-15T06:14:19.000Z', '_widget_1744873387502': '2025-09-15T06:14:19.000Z', '_widget_1744873387504': '0', '_widget_1754981992215': "'NoneType' object has no attribute 'iterrows'", '_id': '68c7aebaf79ac1f9a0c31527', 'appId': '6694d3c4fcb69ca9a111a6c4', 'entryId': '689ae65da00c17578e27cd74'}}
2025-09-15 14:17:26,395 - JCB_efficient_car_pickup.py - task_logger - INFO - 接车宝日常回访开始执行
2025-09-15 14:17:26,546 - JCB_efficient_car_pickup.py - task_logger - ERROR - 获取接车宝数据失败,返回None
2025-09-15 14:17:26,819 - common_module.py - task_logger - INFO - 任务错误发生成功: {'data': {'creator': {'name': 'F6汽车科技', 'username': '#admin', 'status': 1, 'type': 0}, 'updater': {'name': 'F6汽车科技', 'username': '#admin', 'status': 1, 'type': 0}, 'deleter': None, 'createTime': '2025-09-15T06:17:25.217Z', 'updateTime': '2025-09-15T06:17:25.217Z', 'deleteTime': None, '_widget_1744873387500': '2025-09-15T00:00:00.000Z', '_widget_1743644977694': '接车宝日常派发', '_widget_1744873387501': '2025-09-15T06:17:26.000Z', '_widget_1744873387502': '2025-09-15T06:17:26.000Z', '_widget_1744873387504': '0', '_widget_1754981992215': '获取接车宝数据失败,返回None', '_id': '68c7af751461add382445ed1', 'appId': '6694d3c4fcb69ca9a111a6c4', 'entryId': '689ae65da00c17578e27cd74'}}
2025-09-15 14:42:07,779 - JCB_efficient_car_pickup.py - task_logger - INFO - 接车宝日常回访开始执行
2025-09-15 14:42:08,578 - JCB_efficient_car_pickup.py - task_logger - INFO - 数据加载完成
2025-09-15 14:42:10,098 - JCB_efficient_car_pickup.py - task_logger - INFO - 新签异常待办回访无数据,跳过
2025-09-15 14:42:11,692 - JCB_efficient_car_pickup.py - task_logger - INFO - 优质客户转商机无数据,跳过
2025-09-15 14:42:13,277 - api.py - task_logger - INFO - 已获取 14 条数据
2025-09-15 14:42:13,370 - api.py - task_logger - INFO - 多数据写入行数: 3
2025-09-15 14:42:14,323 - JCB_efficient_car_pickup.py - task_logger - INFO - 数据发送成功:[{'status': 'success', 'success_count': 3, 'success_ids': ['68c7b543c5d479bfa3826a3d', '68c7b543c5d479bfa3826a3e', '68c7b543c5d479bfa3826a3f']}]
2025-09-15 14:42:14,772 - JCB_efficient_car_pickup.py - task_logger - INFO - 明日派发人员信息已修改:{'data': {'creator': {'name': 'F6汽车科技', 'username': '#admin', 'status': 1, 'type': 0}, 'updater': {'name': 'F6汽车科技', 'username': '#admin', 'status': 1, 'type': 0}, 'deleter': None, 'createTime': '2025-02-28T06:08:09.442Z', 'updateTime': '2025-09-15T06:42:13.155Z', 'deleteTime': None, '_widget_1740042824214': {'name': '郭波波', 'username': '245308451136546029', 'status': 1, 'type': 0, 'departments': [177751223], 'integrate_id': '245308451136546029'}, '_widget_1740117343937': '开', '_widget_1740042824216': '是', '_id': '67c152c923d51e787c59b40f', 'appId': '6717470a0b3975ef583c6df1', 'entryId': '67b6f2462f9ac03b783d409a'}}
2025-09-15 14:42:14,772 - JCB_efficient_car_pickup.py - task_logger - INFO - 过期7天客服回访完成
2025-09-15 14:42:15,009 - common_module.py - task_logger - INFO - 任务状态发送成功: {'data': {'creator': {'name': 'F6汽车科技', 'username': '#admin', 'status': 1, 'type': 0}, 'updater': {'name': 'F6汽车科技', 'username': '#admin', 'status': 1, 'type': 0}, 'deleter': None, 'createTime': '2025-09-15T06:42:13.356Z', 'updateTime': '2025-09-15T06:42:13.356Z', 'deleteTime': None, '_widget_1744873387500': '2025-09-15T00:00:00.000Z', '_widget_1743644977694': '接车宝日常派发', '_widget_1744873387501': '2025-09-15T06:42:07.000Z', '_widget_1744873387502': '2025-09-15T06:42:14.000Z', '_widget_1744873387504': '7', '_id': '68c7b545999d6975416a1d74', 'appId': '6694d3c4fcb69ca9a111a6c4', 'entryId': '67ede908eb9c22261016466e'}}
2025-09-15 14:42:15,021 - JCB_efficient_car_pickup.py - task_logger - INFO - 接车宝日常派发执行完成
+1 -1
View File
@@ -27,7 +27,7 @@ def main():
# 主循环,用于持续检查和执行定时任务
while True:
schedule.run_pending()
time.sleep(1)
time.sleep(60)
# 每秒检查一次
now = datetime.now()
if now.hour == 23:
+101
View File
@@ -0,0 +1,101 @@
{
"cells": [
{
"cell_type": "code",
"id": "initial_id",
"metadata": {
"collapsed": true,
"ExecuteTime": {
"end_time": "2025-09-15T06:38:10.678825Z",
"start_time": "2025-09-15T06:38:10.523582Z"
}
},
"source": [
"from datetime import datetime, timezone, timedelta, date, UTC\n",
"import holidays\n",
"from config import Config\n",
"import psycopg2\n",
"import pandas as pd\n",
"import pymysql\n",
"from api import API\n",
"from log_config import configure_task_logger, configure_error_task_logger\n",
"\n",
"\n",
"def get_jcb_details():\n",
" \"\"\"\n",
" 从固定的数据库中获取前几天的NGV明细。\n",
" 参数 `days_back` 表示相对于今天的天数偏移量,默认为1(即前一天)。\n",
" 返回包含NGV明细的pandas DataFrame。\n",
" \"\"\"\n",
" # 保存为CSV文件\n",
" output_dir = \"output\" # 设置输出目录\n",
"\n",
" # 创建输出目录(如果不存在)\n",
" import os\n",
" os.makedirs(output_dir, exist_ok=True)\n",
"\n",
" try:\n",
" # 获得连接并创建游标\n",
" conn = pymysql.connect(\n",
" host=Config.BI_CONN_host,\n",
" database=Config.BI_CONN_INFO_database,\n",
" user=Config.BI_CONN_INFO_user,\n",
" password=Config.BI_CONN_INFO_password,\n",
" # charset='utf8mb4', # 设置字符集以避免编码问题\n",
" # cursorclass=pymysql.cursors.DictCursor # 返回字典形式的结果\n",
" )\n",
" cursor = conn.cursor()\n",
"\n",
" # 获取指定天数前的日期\n",
" # now_time = datetime.now()\n",
" # target_time = now_time + timedelta(days=-days_back)\n",
" target_date_id = \"接车宝\" # 获取目标日期\n",
"\n",
" # SQL 查询语句\n",
" sql = f\"\"\"\n",
" SELECT * FROM jdy_hs_holo_dws_sales_magic_box_ngv_d;\n",
" \"\"\"\n",
"\n",
" # 执行查询并获取结果\n",
" cursor.execute(sql)\n",
" rows = cursor.fetchall() # pymysql 的 DictCursor 会返回字典列表\n",
" print(rows)\n",
" except:\n",
" pass\n",
"\n",
"get_jcb_details()"
],
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"()\n"
]
}
],
"execution_count": 5
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 5
}