|
@@ -3,7 +3,6 @@
|
|
|
from math import radians, cos, sin, asin, sqrt
|
|
|
import pandas as pd
|
|
|
import numpy as np
|
|
|
-from datetime import datetime
|
|
|
from datetime import timedelta
|
|
|
from sqlalchemy import create_engine
|
|
|
from sqlalchemy.orm import sessionmaker
|
|
@@ -16,11 +15,24 @@ import pdb
|
|
|
from urllib import parse
|
|
|
import traceback
|
|
|
import os
|
|
|
-import time
|
|
|
+import time, datetime
|
|
|
import pymysql
|
|
|
+import dateutil.relativedelta
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
|
|
+
|
|
|
+ now_time = datetime.datetime.now()
|
|
|
+ pre_time = now_time + dateutil.relativedelta.relativedelta(days=-1)
|
|
|
+ end_time=datetime.datetime.strftime(now_time,"%Y-%m-%d 00:00:00")
|
|
|
+ start_time=datetime.datetime.strftime(pre_time,"%Y-%m-%d 00:00:00")
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
|
|
|
host='rm-bp10j10qy42bzy0q7.mysql.rds.aliyuncs.com'
|
|
|
port=3306
|
|
@@ -32,6 +44,8 @@ if __name__ == "__main__":
|
|
|
cursor.execute("select sn, imei from app_device")
|
|
|
res = cursor.fetchall()
|
|
|
df_sn = pd.DataFrame(res, columns=['sn', 'imei'])
|
|
|
+ df_sn = df_sn.sort_values(['sn'])
|
|
|
+ df_sn = df_sn.reset_index(drop=True)
|
|
|
conn.close();
|
|
|
|
|
|
|
|
@@ -48,64 +62,41 @@ if __name__ == "__main__":
|
|
|
DbSession = sessionmaker(bind=db_engine)
|
|
|
|
|
|
|
|
|
- now_str = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())[0:10]
|
|
|
- if not os.path.exists('log/' + now_str):
|
|
|
- os.makedirs('log/' + now_str)
|
|
|
+ now_str = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()).replace(":","_")
|
|
|
+ log_path = 'log/' + now_str
|
|
|
+ if not os.path.exists(log_path):
|
|
|
+ os.makedirs(log_path)
|
|
|
log = Log.Mylog(log_name='odo', log_level = 'info')
|
|
|
- log.set_file_hl(file_name='log/{}/info.log'.format(now_str), log_level='info', size=1024* 1024 * 100)
|
|
|
- log.set_file_hl(file_name='log/{}/error.log'.format(now_str), log_level='error', size=1024* 1024 * 100)
|
|
|
+ log.set_file_hl(file_name='{}/info.log'.format(log_path), log_level='info', size=1024* 1024 * 100)
|
|
|
+ log.set_file_hl(file_name='{}/error.log'.format(log_path), log_level='error', size=1024* 1024 * 100)
|
|
|
logger = log.get_logger()
|
|
|
|
|
|
logger.info("pid is + {}".format(os.getpid()))
|
|
|
|
|
|
-
|
|
|
- asset_table_path='asset_table.xlsx'
|
|
|
-
|
|
|
- asset_sheet_num=2
|
|
|
- usecols_list=[4,5]
|
|
|
-
|
|
|
- asset_table=pd.read_excel(asset_table_path,sheet_name=asset_sheet_num,skiprows=1,usecols=usecols_list)
|
|
|
- SN_list=asset_table['SN号'].values.tolist()
|
|
|
-
|
|
|
- asset_table=asset_table.rename(columns={'SN号':'SN','状态':'state'})
|
|
|
-
|
|
|
- asset_table.set_index(["SN"],inplace=True)
|
|
|
- col_name=asset_table.columns.tolist()
|
|
|
- col_name.extend(['range','accum_soc','day_start_soc','day_end_soc','day_start_time','day_end_time'])
|
|
|
- asset_table=asset_table.reindex(columns=col_name)
|
|
|
-
|
|
|
- start_hour='00:00:00'
|
|
|
- end_hour='23:59:00'
|
|
|
-
|
|
|
-
|
|
|
- date_index=pd.date_range('2021-07-01','2021-07-31')
|
|
|
- for date in date_index:
|
|
|
- '''遍历日期'''
|
|
|
-
|
|
|
- str_date=str(date)[:10]
|
|
|
- input_starttime=str_date+' '+start_hour
|
|
|
- input_endtime=str_date+' '+end_hour
|
|
|
- test_day=str_date[5:10]
|
|
|
-
|
|
|
- drive_info_aday=pd.DataFrame()
|
|
|
- SN_list_short=SN_list
|
|
|
-
|
|
|
- for SN in SN_list_short:
|
|
|
- '''遍历SN号'''
|
|
|
- SN=SN.strip('\t')
|
|
|
- SN=SN.strip('\n')
|
|
|
-
|
|
|
- try:
|
|
|
- logger.info("{}---{} START!".format(SN, str(str_date)))
|
|
|
- range=GetDistInfo(SN,input_starttime,input_endtime)
|
|
|
- range_df=pd.DataFrame([range])
|
|
|
- drive_info_aday=pd.concat([drive_info_aday,range_df],axis=0)
|
|
|
- logger.info("{}---{} DONE!".format(SN, str(str_date)))
|
|
|
-
|
|
|
- except Exception as e:
|
|
|
- logger.error(traceback.format_exc)
|
|
|
- logger.error(u"{} :{},{} 任务运行错误".format(SN,input_starttime,input_endtime), exc_info=True)
|
|
|
- drive_info_aday['time'] = str_date
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ input_starttime = start_time
|
|
|
+ input_endtime = end_time
|
|
|
+
|
|
|
+ drive_info_aday=pd.DataFrame()
|
|
|
+
|
|
|
+ for SN in df_sn['sn'].tolist()[1200:]:
|
|
|
+ '''遍历SN号'''
|
|
|
+ SN=SN.strip('\t')
|
|
|
+ SN=SN.strip('\n')
|
|
|
+ try:
|
|
|
+ logger.info("{}---{} START!".format(SN, str(input_starttime)))
|
|
|
+ range=GetDistInfo(SN,input_starttime,input_endtime)
|
|
|
+ range_df=pd.DataFrame([range])
|
|
|
+ drive_info_aday=pd.concat([drive_info_aday,range_df],axis=0)
|
|
|
+ logger.info("{}---{} DONE!".format(SN, str(input_starttime)))
|
|
|
+
|
|
|
+ except Exception as e:
|
|
|
+ logger.error(traceback.format_exc)
|
|
|
+ logger.error(u"{} :{},{} 任务运行错误".format(SN,input_starttime,input_endtime), exc_info=True)
|
|
|
+ if not drive_info_aday.empty:
|
|
|
+ drive_info_aday['time'] = input_starttime[0:10]
|
|
|
drive_info_aday.columns = ['sn', 'odo', 'accum_soc', 'start_soc', 'end_soc', 'start_time','end_time', 'min_soc', 'time']
|
|
|
drive_info_aday.to_sql("odo_result",con=db_engine, if_exists="append",index=False)
|
|
|
|