corp20250923

This commit is contained in:
2025-09-23 17:28:37 +08:00
parent 89c79bdaa1
commit 5c8d07e5d7
13 changed files with 1366 additions and 86 deletions
+81 -17
View File
@@ -1,6 +1,8 @@
import requests
import time
import logging
import requests
from ewcc2 import Sinopec_ewcc
# 配置日志
handlers = [logging.FileHandler('query_processor.log'), logging.StreamHandler()]
@@ -81,9 +83,17 @@ def get_pending_queries():
return []
# 更新查询结果
def update_query_result(query_id, results_count):
def update_query_result(query_id, results_count, cars_info=None):
"""
更新查询结果到后端API
更新查询结果到后端API,可选地包含车辆信息
参数:
query_id: 查询ID
results_count: 结果数量
cars_info: 可选,车辆信息列表,将被保存到car_owner表
返回:
bool: 更新是否成功
"""
try:
url = f'{BASE_URL}/api/update-query-result'
@@ -92,6 +102,10 @@ def update_query_result(query_id, results_count):
'results_count': results_count
}
# 如果提供了车辆信息,添加到请求数据中
if cars_info:
data['cars_info'] = cars_info
response = requests.post(url, json=data)
response.raise_for_status()
result = response.json()
@@ -106,36 +120,86 @@ def update_query_result(query_id, results_count):
logger.error(f"更新查询结果时发生错误: {str(e)}")
return False
# 保存param4值到后端API
def save_param4(param4_value):
"""
保存param4的值到后端API
如果param4_value是复杂对象,会尝试将其转换为JSON字符串
"""
try:
url = f'{BASE_URL}/api/save-param4'
# 尝试将cookies对象转换为JSON字符串,以便能够序列化
import json
try:
# 首先尝试直接序列化,如果失败则进行转换
json.dumps(param4_value)
# 如果能够直接序列化,就使用原始值
processed_param4 = param4_value
except (TypeError, OverflowError):
# 如果不能直接序列化,尝试将其转换为字典或字符串
if hasattr(param4_value, '__dict__'):
# 如果是有__dict__属性的对象,转换为字典
processed_param4 = param4_value.__dict__
else:
# 否则转换为字符串
processed_param4 = str(param4_value)
data = {
'param4': processed_param4
}
response = requests.post(url, json=data)
response.raise_for_status()
result = response.json()
if result['success']:
logger.info(f"成功保存param4值")
return True
else:
logger.error(f"保存param4值失败: {result['error']}")
return False
except Exception as e:
logger.error(f"保存param4值时发生错误: {str(e)}")
return False
# 主处理函数
def main():
logger.info("查询处理代码启动")
# 获取参数配置
parameters = get_parameters()
if not parameters:
logger.warning("无法获取参数配置,使用默认参数继续")
# 使用默认参数继续
parameters = {
'param1': 'default1',
'param2': 'default2',
'param3': 'default3',
'param4': 'default4',
'param5': 'default5'
}
# 主循环
while True:
ewcc = Sinopec_ewcc()
try:
# 获取参数配置
parameters = get_parameters()
if not parameters:
logger.warning("无法获取参数配置,停止30秒后继续")
time.sleep(30)
continue
# 登录浏览器
if not ewcc.Autologin(parameters['param1'],parameters['param2'],parameters['param3'],parameters['param4']):
time.sleep(30)
continue
# 只留浏览器cookies
save_param4( ewcc.tab.cookies())
# 获取待处理查询
pending_queries = get_pending_queries()
# 处理每条查询
ewcc.query_car_info("湘AB5W21")
for query in pending_queries:
# 处理查询数据
results_count = process_query_data(query, parameters)
rtn_cars_info=ewcc.query_car_info(query['plate_number'],query['phone'])
#results_count = process_query_data(query, parameters)
# 更新查询结果
update_query_result(query['id'], results_count)
update_query_result(query['id'], len(rtn_cars_info), rtn_cars_info)
# 等待一段时间后再次检查
wait_time = 60 # 默认等待60秒