履约表日期调整
This commit is contained in:
@@ -137,7 +137,7 @@ class GDMatchPhoneNumber:
|
||||
if count > 150:
|
||||
params.update({"key": "f61b09d406ac49f8a034bf585e60c442"})
|
||||
res = requests.get(url=url, params=params)
|
||||
# print(res.json())
|
||||
# print(res.json.json())
|
||||
return res.json().get("pois", [])
|
||||
|
||||
# 初始搜索关键词
|
||||
|
||||
@@ -218,7 +218,7 @@ class CommonModule:
|
||||
|
||||
def get_jcb_details(self, ):
|
||||
"""
|
||||
从固定的数据库中获取前几天的NGV明细。
|
||||
从固定的数据库中获取前几天的借车宝。
|
||||
参数 `days_back` 表示相对于今天的天数偏移量,默认为1(即前一天)。
|
||||
返回包含NGV明细的pandas DataFrame。
|
||||
"""
|
||||
|
||||
@@ -122,7 +122,7 @@ class APIClient:
|
||||
def __init__(self):
|
||||
self.headers = {
|
||||
'Authorization': Config.JIANDAOYUN_API_TOKEN,
|
||||
'Content-Type': 'application/json'
|
||||
'Content-Type': 'application/json.json'
|
||||
}
|
||||
|
||||
def request(self, url, payload, method='POST'):
|
||||
|
||||
@@ -100,28 +100,12 @@ class ImportPerformanceData:
|
||||
time_columns = ['saas开户时间', '服务期起始时间', '下单支付成功时间', '操作时间',
|
||||
"下单支付成功日期", "服务期结束时间"]
|
||||
|
||||
for col in tqdm(time_columns):
|
||||
if col in tqdm(new_df.columns): # 安全检查列是否存在
|
||||
try:
|
||||
# 1. 转换为datetime(自动推断格式,处理无效值为NaT)
|
||||
new_df[col] = pd.to_datetime(new_df[col], errors='coerce', utc=False)
|
||||
|
||||
# 2. 时区转换(仅对有效日期操作)
|
||||
mask = new_df[col].notna() # 只处理非空值
|
||||
if mask.any(): # 如果有有效日期才转换
|
||||
# 本地化为北京时间,然后转换为UTC
|
||||
new_df.loc[mask, col + '_utc'] = (
|
||||
new_df.loc[mask, col]
|
||||
.dt.tz_localize('Asia/Shanghai', ambiguous='infer', nonexistent='shift_forward')
|
||||
.dt.tz_convert('UTC')
|
||||
.dt.strftime('%Y-%m-%dT%H:%M:%SZ')
|
||||
)
|
||||
else:
|
||||
new_df[col + '_utc'] = pd.NA # 全部为空时保持一致性
|
||||
|
||||
except Exception as e:
|
||||
print(f"处理列 {col} 时出错: {str(e)}")
|
||||
new_df[col + '_utc'] = pd.NA # 出错时设为NA
|
||||
new_df[time_columns] = new_df[time_columns].apply(
|
||||
lambda col: pd.to_datetime(col, errors='coerce')
|
||||
.dt.tz_localize('Asia/Shanghai') # 假设原时间是北京时间
|
||||
.dt.tz_convert('UTC') # 转为 UTC
|
||||
.dt.strftime('%Y-%m-%d %H:%M:%S') # 格式化为字符串(无时区标记)
|
||||
)
|
||||
|
||||
return new_df
|
||||
|
||||
|
||||
@@ -13,3 +13,5 @@
|
||||
2025-11-18 09:16:52,668 - update_BI_CRM_info.py - error_task_logger - ERROR - 任务简道云海外项目CRM客户档案迁移BI执行失败。
|
||||
2025-11-18 09:17:05,585 - update_BI_CRM_info.py - error_task_logger - ERROR - 导入数据时发生错误: 1054 (42S22): Unknown column 'nan' in 'field list'
|
||||
2025-11-18 09:17:05,912 - update_BI_CRM_info.py - error_task_logger - ERROR - 任务简道云海外项目CRM客户档案迁移BI执行失败。
|
||||
2025-11-27 09:08:41,105 - common_module.py - error_task_logger - ERROR - 获取借车宝NGV明细时出错: Length mismatch: Expected axis has 0 elements, new values have 16 elements
|
||||
2025-11-27 09:08:41,278 - JCB_efficient_car_pickup.py - error_task_logger - ERROR - 接车宝日常派发执行出错:获取接车宝数据失败,返回None
|
||||
|
||||
@@ -39,7 +39,7 @@ class update_ID_form:
|
||||
def __init__(self):
|
||||
self.headers = {
|
||||
'Authorization': 'Bearer qygHulymo1fekJk4CIZyNKjyQAzG8CFN', # 曹伟应用api测试 app_key
|
||||
'Content-Type': 'application/json'
|
||||
'Content-Type': 'application/json.json'
|
||||
}
|
||||
self.url = "https://api.jiandaoyun.com/api/v5/corp/department/user/list"
|
||||
self.payload1 = {
|
||||
@@ -82,7 +82,7 @@ class update_ID_form:
|
||||
|
||||
headers = {
|
||||
'Authorization': 'Bearer qygHulymo1fekJk4CIZyNKjyQAzG8CFN', # 曹伟应用api测试 app_key
|
||||
'Content-Type': 'application/json'
|
||||
'Content-Type': 'application/json.json'
|
||||
}
|
||||
|
||||
"""
|
||||
@@ -130,7 +130,7 @@ class update_ID_form:
|
||||
|
||||
headers = {
|
||||
'Authorization': "Bearer qygHulymo1fekJk4CIZyNKjyQAzG8CFN", # 曹伟应用api测试 app_key
|
||||
'Content-Type': 'application/json'
|
||||
'Content-Type': 'application/json.json'
|
||||
}
|
||||
|
||||
payload = json.dumps({
|
||||
@@ -197,7 +197,7 @@ class update_ID_form:
|
||||
|
||||
headers = {
|
||||
'Authorization': 'Bearer qygHulymo1fekJk4CIZyNKjyQAzG8CFN', # 曹伟应用api测试 app_key
|
||||
'Content-Type': 'application/json'
|
||||
'Content-Type': 'application/json.json'
|
||||
}
|
||||
all_data_batches = [] # 用于存储每次请求返回的数据批次
|
||||
last_data_id = None
|
||||
@@ -308,7 +308,7 @@ class update_ID_form:
|
||||
|
||||
headers = {
|
||||
'Authorization': 'Bearer qygHulymo1fekJk4CIZyNKjyQAzG8CFN', # 曹伟应用api测试 appKey
|
||||
'Content-Type': 'application/json'
|
||||
'Content-Type': 'application/json.json'
|
||||
}
|
||||
|
||||
"""
|
||||
@@ -385,7 +385,7 @@ class update_ID_form:
|
||||
|
||||
headers = {
|
||||
'Authorization': 'Bearer qygHulymo1fekJk4CIZyNKjyQAzG8CFN', # 曹伟应用api测试 appKey
|
||||
'Content-Type': 'application/json'
|
||||
'Content-Type': 'application/json.json'
|
||||
}
|
||||
|
||||
# 获取data_list长度
|
||||
@@ -460,7 +460,7 @@ class update_ID_form:
|
||||
|
||||
headers = {
|
||||
'Authorization': 'Bearer qygHulymo1fekJk4CIZyNKjyQAzG8CFN',
|
||||
'Content-Type': 'application/json'
|
||||
'Content-Type': 'application/json.json'
|
||||
}
|
||||
|
||||
response = requests.post(url, headers=headers)
|
||||
|
||||
Reference in New Issue
Block a user