lmstack 3 vuotta sitten
vanhempi
commit
d301cea3cb

+ 2 - 7
.gitignore

@@ -17,12 +17,7 @@
 /CONFIGURE/PathSetting.py
 *.log
 /demo.ipynb
-<<<<<<< HEAD
-# /*/*/deploy.py
-# /*/*/*/deploy.py
-=======
-/*/*/deploy.py
-/*/*/*/deploy.py
+
 !数据分析平台手册.doc
->>>>>>> origin/dev
+
 

+ 63 - 0
LIB/FRONTEND/LeakCurrent/create_table.py

@@ -0,0 +1,63 @@
+'''
+定义表的结构,并在数据库中创建对应的数据表
+'''
+__author__ = 'lmstack'
+
+from sqlalchemy.ext.declarative import declarative_base
+from sqlalchemy import Column, String, create_engine, Integer, DateTime, BigInteger, FLOAT, TIMESTAMP, func
+from urllib import parse
+Base = declarative_base()
+
+
+class ConsistencyDeltaSoc(Base):
+    __tablename__ = "consistency_leak_current"
+    __table_args__ = ({'comment': '电池一致性:漏电流'})  # 添加索引和表注释
+
+    id = Column(Integer, primary_key=True, autoincrement=True, comment="主键")
+    add_time = Column(TIMESTAMP(True), server_default=func.now()) # 创建时间
+    update_time = Column(TIMESTAMP(True), nullable=False, server_default=func.now(), onupdate=func.now()) # 更新时间
+    sn = Column(String(64), comment="sn")
+    time = Column(DateTime, comment="时间")
+    cell1 = Column(FLOAT, comment="cell1")
+    cell2 = Column(FLOAT, comment="cell2")
+    cell3 = Column(FLOAT, comment="cell3")
+    cell4 = Column(FLOAT, comment="cell4")
+    cell5 = Column(FLOAT, comment="cell5")
+    cell6 = Column(FLOAT, comment="cell6")
+    cell7 = Column(FLOAT, comment="cell7")
+    cell8 = Column(FLOAT, comment="cell8")
+    cell9 = Column(FLOAT, comment="cell9")
+    cell10 = Column(FLOAT, comment="cell10")
+    cell11 = Column(FLOAT, comment="cell11")
+    cell12 = Column(FLOAT, comment="cell12")
+    cell13 = Column(FLOAT, comment="cell13")
+    cell14 = Column(FLOAT, comment="cell14")
+    cell15 = Column(FLOAT, comment="cell15")
+    cell16 = Column(FLOAT, comment="cell16")
+    cell17 = Column(FLOAT, comment="cell17")
+    cell18 = Column(FLOAT, comment="cell18")
+    cell19 = Column(FLOAT, comment="cell19")
+    cell20 = Column(FLOAT, comment="cell20")
+
+
+
+    # def __init__(self, sn, current, time_stamp, pack_state, line_state):
+    #     self.sn = sn
+    #     self.current = current
+    #     self.time_stamp = time_stamp
+    #     self.pack_state = pack_state
+    #     self.line_state = line_state
+
+# 执行该文件,创建表格到对应的数据库中
+if __name__ == "__main__":
+    host = 'rm-bp10j10qy42bzy0q77o.mysql.rds.aliyuncs.com'
+    port = 3306
+    user = 'qx_cas'
+    password = parse.quote_plus('Qx@123456')
+    database = 'qx_cas'
+    
+    db_engine = create_engine(
+        "mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8".format(
+            user, password, host, port, database
+        ))
+    Base.metadata.create_all(db_engine)

+ 94 - 0
LIB/FRONTEND/LeakCurrent/deploy_6060.py

@@ -0,0 +1,94 @@
+#coding=utf-8
+import os
+import datetime
+import pandas as pd
+from LIB.BACKEND import DBManager, Log
+from LIB.MIDDLE import SignalMonitor
+from sqlalchemy import create_engine
+from sqlalchemy.orm import sessionmaker
+import time, datetime
+import traceback
+from LIB.MIDDLE.LeakCurrent import LFPLeakCurrent20210812 as LFPLeakCurrent
+from urllib import parse
+import pymysql
+import dateutil.relativedelta
+
+dbManager = DBManager.DBManager()
+if __name__ == "__main__":
+    
+    # 时间设置
+    now_time = datetime.datetime.now()
+    pre_time = now_time + dateutil.relativedelta.relativedelta(weeks=-2)
+    end_time=datetime.datetime.strftime(now_time,"%Y-%m-%d 09:00:00")
+    start_time=datetime.datetime.strftime(pre_time,"%Y-%m-%d 09:00:00")
+    
+    end_time = "2021-08-13 09:00:00"
+    start_time = "2018-06-01 00:00:00"
+    
+    # 更新sn列表
+    host='rm-bp10j10qy42bzy0q7.mysql.rds.aliyuncs.com'
+    port=3306
+    db='qixiang_oss'
+    user='qixiang_oss'
+    password='Qixiang2021'
+    conn = pymysql.connect(host=host, port=port, user=user, password=password, database=db)
+    cursor = conn.cursor()
+    cursor.execute("select sn, imei from app_device")
+    res = cursor.fetchall()
+    df_sn = pd.DataFrame(res, columns=['sn', 'imei'])
+    df_sn = df_sn.reset_index(drop=True)
+    conn.close();
+    
+    # 数据库配置
+    host = 'rm-bp10j10qy42bzy0q77o.mysql.rds.aliyuncs.com'
+    port = 3306
+    user = 'qx_cas'
+    password = parse.quote_plus('Qx@123456')
+    database = 'qx_cas'
+
+    db_engine = create_engine(
+        "mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8".format(
+            user, password, host, port, database
+        ))
+    DbSession = sessionmaker(bind=db_engine)
+    
+    
+    # 日志配置
+    now_str = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()).replace(":","_")
+    log_path = 'log/6060/' + now_str
+    if not os.path.exists(log_path):
+        os.makedirs(log_path)
+    log = Log.Mylog(log_name='leak_current', log_level = 'info')
+    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()))
+    
+    # SNdata_6060 = pd.read_excel('骑享资产梳理-20210621.xlsx', sheet_name='6060')
+    # SNnums_6060=SNdata_6060['SN号']
+    # # SNnums_6060 = ['PK504B00100004019','PK504B00100004029', 'PK504B00100004080', 'PK504B00100004264', 'PK504B10100004331']
+    # now_time=datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
+    # now_time = "2021-08-01 00:00:00" # 定时任务开启时,需要删除改行!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
+
+    # now_time=datetime.datetime.strptime(now_time,'%Y-%m-%d %H:%M:%S')
+    # start_time=now_time-datetime.timedelta(days=1000)
+    # end_time=str(now_time)
+    # start_time=str(start_time)
+    for i in range(0, len(df_sn)):
+        try:
+            if df_sn.loc[i, 'imei'][6:9] != '660':
+                continue
+            sn = df_sn.loc[i, 'sn']
+            logger.info("6060 SN: {} START!".format(sn))
+            res = LFPLeakCurrent.cal_LFPLeakCurrent(sn, end_time, start_time)
+            if not res.empty:
+                res.columns = ['time', 'sn', 'cell1', 'cell2', 'cell3', 'cell4', 'cell5', 'cell6', 'cell7', 'cell8', 'cell9', 'cell10',
+                               'cell11', 'cell12', 'cell13', 'cell14', 'cell15', 'cell16', 'cell17', 'cell18', 'cell19', 'cell20']
+                res.to_sql("consistency_leak_current",con=db_engine, if_exists="append",index=False)
+            logger.info("6060 SN: {} DONE!".format(sn))
+        except:
+            logger.error(traceback.format_exc)
+            logger.error(u"{} :{},{} 任务运行错误\n".format(sn,start_time,end_time), exc_info=True)
+
+

+ 27 - 0
LIB/FRONTEND/LeakCurrent/main.py

@@ -0,0 +1,27 @@
+#coding=utf-8
+import os
+import datetime
+import pandas as pd
+from LIB.BACKEND import DBManager, Log
+from LIB.MIDDLE import SignalMonitor
+from sqlalchemy import create_engine
+from sqlalchemy.orm import sessionmaker
+import time, datetime
+import traceback
+from LIB.MIDDLE.LeakCurrent import LFPLeakCurrent20210812 as LFPLeakCurrent
+
+from urllib import parse
+
+dbManager = DBManager.DBManager()
+if __name__ == "__main__":
+    SNdata_6060 = pd.read_excel('骑享资产梳理-20210621.xlsx', sheet_name='6060')
+    SNnums_6060=SNdata_6060['SN号']
+    now_time=datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
+    now_time=datetime.datetime.strptime(now_time,'%Y-%m-%d %H:%M:%S')
+    start_time=now_time-datetime.timedelta(days=31)
+    end_time=str(now_time)
+    start_time=str(start_time)
+
+    for sn in SNnums_6060.tolist():
+        res = LFPLeakCurrent.cal_LFPLeakCurrent(sn, end_time, start_time)
+        res.to_csv('BMS_LeakCurrent_'+sn+'.csv',encoding='GB18030')

+ 2 - 0
LIB/FRONTEND/LeakCurrent/run_6060.bat

@@ -0,0 +1,2 @@
+cd /d D:\deploy\python_platform\data_analyze_platform\LIB\FRONTEND\LeakCurrent
+D:\env\py_pro\python.exe D:\deploy\python_platform\data_analyze_platform\LIB\FRONTEND\LeakCurrent\deploy_6060.py

+ 23 - 61
LIB/FRONTEND/SignalMonitor/deploy.py

@@ -10,10 +10,18 @@ import time, datetime
 import traceback
 import pymysql
 from urllib import parse
-
+import dateutil.relativedelta
 dbManager = DBManager.DBManager()
 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")
+    end_time = "2021-08-12 12:00:00"
+    start_time = "2021-08-12 00:00:00"
+    
     # 更新sn列表
     host='rm-bp10j10qy42bzy0q7.mysql.rds.aliyuncs.com'
     port=3306
@@ -28,20 +36,6 @@ if __name__ == "__main__":
     df_sn = df_sn.reset_index(drop=True)
     conn.close();
     
-    # 读取结果
-    host='rm-bp10j10qy42bzy0q77o.mysql.rds.aliyuncs.com'
-    port=3306
-    db='qx_cas'
-    user='qx_read'
-    password='Qx@123456'
-    conn = pymysql.connect(host=host, port=port, user=user, password=password, database=db)
-    cursor = conn.cursor()
-    cursor.execute("select sn, end_time from signal_monitor_bms")
-    res = cursor.fetchall()
-    df_res_old = pd.DataFrame(res, columns=["sn", "end_time"])
-    df_res_old = df_res_old.reset_index(drop=True)
-    conn.close();
-    
     # 数据库配置
     host = 'rm-bp10j10qy42bzy0q77o.mysql.rds.aliyuncs.com'
     port = 3306
@@ -57,57 +51,25 @@ if __name__ == "__main__":
     
     # 日志配置
     now_str = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()).replace(":","_")
-    if not os.path.exists('log/' + now_str):
-        os.makedirs('log/' + now_str)
-    log = Log.Mylog(log_name='signal_monitor_旧表sn统一运行到8月12日', 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_path = 'log/' + now_str
+    if not os.path.exists(log_path):
+        os.makedirs(log_path)
+    log = Log.Mylog(log_name='signal_monitor', log_level = 'info')
+    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()))
 
-    # 读取sn列表
-    df_sn_excel = pd.read_csv('./sn_list.csv')
-    df_sn_excel = df_sn_excel.reset_index(drop=True)
-    # df_sn['StartTime'] = pd.to_datetime(df_sn['StartTime'])
-    # df_sn['EndTime'] = pd.to_datetime(df_sn['EndTime'])
-    # df_sn['ExitTime'] = pd.to_datetime(df_sn['ExitTime'])
+    # # 算法运行
+    count = 0
     signalMonitor = SignalMonitor.SignalMonitor()
     cal_period = 24    # 计算间隔,单位h
-    count = 0
     for i in range(0, len(df_sn['sn'])):    # 遍历SN号
-        
+        count = count + 1
         sn = [df_sn.loc[i,'sn']]
-        if sn[0] in df_sn_excel['sn'].tolist():
-            df = df_res_old[df_res_old['sn']==sn[0]]
-            if not df.empty:
-                df = df.sort_values(['end_time'])
-                df = df.reset_index(drop=True)
-                st = pd.to_datetime(df.loc[len(df)-1, 'end_time'])
-            else:
-                st = datetime.datetime.strptime("2021-07-12 00:00:00", "%Y-%m-%d %H:%M:%S")
-            et = datetime.datetime.strptime("2021-08-12 00:00:00", "%Y-%m-%d %H:%M:%S")
-        # else:
-        #     count = count + 1
-        #     continue
-        #     st = datetime.datetime.strptime("2018-08-12 00:00:00", "%Y-%m-%d %H:%M:%S")
-        #     et = datetime.datetime.strptime("2021-08-12 00:00:00", "%Y-%m-%d %H:%M:%S")
-        # st = time.strftime("%Y-%m-%d 00:00:00", time.localtime(time.time()-86400))
-        # et = time.strftime("%Y-%m-%d 00:00:00", time.localtime(time.time()))
-        # st = time.strftime("%Y-%m-%d 00:00:00", time.localtime(time.time()-86400))
-        # et = time.strftime("%Y-%m-%d 00:00:00", time.localtime(time.time()))
-        # if df_sn.loc[i, 'Service'] == 0:
-        #     if pd.isnull(df_sn.loc[i, 'EndTime']) and pd.isnull(df_sn.loc[i, 'ExitTime']):
-        #         continue
-        #     elif pd.isnull(df_sn.loc[i, 'ExitTime']):
-        #         et = df_sn.loc[i, 'EndTime']
-        #     else:
-        #         et = df_sn.loc[i, 'ExitTime']
-        # elif pd.isnull(df_sn.loc[i, 'EndTime']):
-        #     otherStyleTime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time()))
-        #     et = pd.to_datetime(otherStyleTime)
-        # else:
-        #     et = df_sn.loc[i, 'EndTime']
+        st = datetime.datetime.strptime(start_time, "%Y-%m-%d %H:%M:%S")
+        et = datetime.datetime.strptime(end_time, "%Y-%m-%d %H:%M:%S")
         df_last_state = pd.DataFrame(
             columns=['sn', 'current', 'Timestamp', 'PackState', 'LineState'])    # 每日最后BMS数据
         df_last_state_gps = pd.DataFrame(
@@ -116,7 +78,7 @@ if __name__ == "__main__":
                             'sn', 'PackState', 'LineState', 'StartTime', 'EndTime', 'OfflineTime'])    # 初始化BMS信号统计数据
         df_res_gps = pd.DataFrame(columns=[
                                 'sn', 'PackState', 'LineState', 'StartTime', 'EndTime', 'OfflineTime', 'latitude', 'longitude'])    # 初
-        logger.info("{} {} START!".format(sn, str(st)))
+        logger.info("{}/{}, {} {} START!".format(str(count), str(len(df_sn)), sn, str(st)))
         while st < et:
             try:
                 df_res, df_state, df_last_state = signalMonitor.get_bms_offline_stat(
@@ -147,6 +109,6 @@ if __name__ == "__main__":
         df_tosql.columns = ['sn', 'time_stamp', 'pack_state', 'line_state','latitude', 'longitude']
         df_tosql.to_sql("signal_monitor_gps_last_day",con=db_engine, if_exists="append",index=False)
 
-        logger.info("{} {} DONE!".format(sn, str(st)))
-    # print(count)
+        logger.info("{}/{}, {} {} DONE!".format(str(count), str(len(df_sn)), sn, str(st)))
+    print(count)
 

+ 30 - 17
LIB/FRONTEND/deltsoc/deploy.py → LIB/FRONTEND/deltsoc/deploy_6060.py

@@ -11,10 +11,17 @@ import traceback
 from LIB.MIDDLE.DeltSoc import LFPDeltSoc20210804 as LFPDeltSoc
 from urllib import parse
 import pymysql
+import dateutil.relativedelta
 
 dbManager = DBManager.DBManager()
 if __name__ == "__main__":
     
+    # 时间设置
+    now_time = datetime.datetime.now()
+    pre_time = now_time + dateutil.relativedelta.relativedelta(weeks=-2)
+    end_time=datetime.datetime.strftime(now_time,"%Y-%m-%d 09:00:00")
+    start_time=datetime.datetime.strftime(pre_time,"%Y-%m-%d 09:00:00")
+    
     # 更新sn列表
     host='rm-bp10j10qy42bzy0q7.mysql.rds.aliyuncs.com'
     port=3306
@@ -26,7 +33,9 @@ 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.reset_index(drop=True)
     conn.close();
+    
     # 数据库配置
     host = 'rm-bp10j10qy42bzy0q77o.mysql.rds.aliyuncs.com'
     port = 3306
@@ -42,34 +51,38 @@ if __name__ == "__main__":
     
     
     # 日志配置
-    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/6060/' + now_str
+    if not os.path.exists(log_path):
+        os.makedirs(log_path)
     log = Log.Mylog(log_name='delta_soc', 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()))
     
-    SNdata_6060 = pd.read_excel('骑享资产梳理-20210621.xlsx', sheet_name='6060')
-    SNnums_6060=SNdata_6060['SN号']
-    # SNnums_6060 = ['PK504B00100004019','PK504B00100004029', 'PK504B00100004080', 'PK504B00100004264', 'PK504B10100004331']
-    now_time=datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
-    now_time = "2021-08-01 00:00:00" # 定时任务开启时,需要删除改行!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
-    now_time=datetime.datetime.strptime(now_time,'%Y-%m-%d %H:%M:%S')
-    start_time=now_time-datetime.timedelta(days=1000)
-    end_time=str(now_time)
-    start_time=str(start_time)
+    # SNdata_6060 = pd.read_excel('骑享资产梳理-20210621.xlsx', sheet_name='6060')
+    # SNnums_6060=SNdata_6060['SN号']
+    # # SNnums_6060 = ['PK504B00100004019','PK504B00100004029', 'PK504B00100004080', 'PK504B00100004264', 'PK504B10100004331']
+    # now_time=datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
+    # now_time = "2021-08-01 00:00:00" # 定时任务开启时,需要删除改行!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 
-    for sn in SNnums_6060.tolist():
+    # now_time=datetime.datetime.strptime(now_time,'%Y-%m-%d %H:%M:%S')
+    # start_time=now_time-datetime.timedelta(days=1000)
+    # end_time=str(now_time)
+    # start_time=str(start_time)
+    for i in range(0, len(df_sn)):
         try:
+            if df_sn.loc[i, 'imei'][6:9] != '660':
+                continue
+            sn = df_sn.loc[i, 'sn']
+            logger.info("6060 SN: {} START!".format(sn))
             res = LFPDeltSoc.cal_deltsoc(sn, end_time, start_time)
             if not res.empty:
                 res.columns = ['time', 'sn', 'delta_soc']
                 res.to_sql("consistency_delta_soc",con=db_engine, if_exists="append",index=False)
-            logger.info("6040 SN: {} DONE!".format(sn))
+            logger.info("6060 SN: {} DONE!".format(sn))
         except:
             logger.error(traceback.format_exc)
             logger.error(u"{} :{},{} 任务运行错误\n".format(sn,start_time,end_time), exc_info=True)

+ 1 - 1
LIB/FRONTEND/deltsoc/run.bat → LIB/FRONTEND/deltsoc/run_6060.bat

@@ -1,2 +1,2 @@
 cd /d D:\deploy\python_platform\data_analyze_platform\LIB\FRONTEND\deltsoc
-D:\env\py_pro\python.exe D:\deploy\python_platform\data_analyze_platform\LIB\FRONTEND\deltsoc\deploy.py
+D:\env\py_pro\python.exe D:\deploy\python_platform\data_analyze_platform\LIB\FRONTEND\deltsoc\deploy_6060.py

+ 46 - 55
LIB/FRONTEND/odo/deploy.py

@@ -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")
+    
+    # end_time = "2021-08-13 00:00:00"
+    # start_time = "2019-01-01 00:00:00"
+    
+    # start_hour='00:00:00'#每日查询最早时间
+    # end_hour='23:59:00'#每日查询最晚时间
+    
     # 更新sn列表
     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]#月-日,用于建立sheet
-
-        drive_info_aday=pd.DataFrame()
-        SN_list_short=SN_list#先选择了0:50,50:end
-
-        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
+    # date_index=pd.date_range(start_time[:10], end_time[:10])
+    # for date in date_index:
+    #     '''遍历日期'''
+    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)
 

+ 2 - 0
LIB/FRONTEND/soh/deploy_4840.py

@@ -1,3 +1,5 @@
+
+__author__ = 'lmstack'
 #coding=utf-8
 import os
 import datetime

+ 2 - 0
LIB/FRONTEND/soh/deploy_6040.py

@@ -1,3 +1,5 @@
+
+__author__ = 'lmstack'
 #coding=utf-8
 import os
 import datetime

+ 2 - 0
LIB/FRONTEND/soh/deploy_6060.py

@@ -1,3 +1,5 @@
+
+__author__ = 'lmstack'
 #coding=utf-8
 import os
 import datetime

+ 5 - 2
test.py

@@ -1,3 +1,6 @@
-import time 
+import time,datetime
+import dateutil.relativedelta
 
-time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())[0:10]
+now_time = datetime.datetime.now()
+pre_time = now_time + dateutil.relativedelta.relativedelta(weeks=-2)
+print(now_time, pre_time)