Browse Source

soh 定时部署完毕

lmstack 3 years ago
parent
commit
72d1f78adc

+ 70 - 24
LIB/FRONTEND/SignalMonitor/deploy.py

@@ -8,11 +8,40 @@ from sqlalchemy import create_engine
 from sqlalchemy.orm import sessionmaker
 import time, datetime
 import traceback
-
+import pymysql
 from urllib import parse
 
 dbManager = DBManager.DBManager()
 if __name__ == "__main__":
+    
+    # 更新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
+    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
@@ -27,42 +56,58 @@ if __name__ == "__main__":
     DbSession = sessionmaker(bind=db_engine)
     
     # 日志配置
-    now_str = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())[0:10]
+    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', log_level = 'info')
+    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)
     logger = log.get_logger()
 
-    logger.info("pid is + {}".format(os.getpid()))
+    logger.info("pid is + {}. ".format(os.getpid()))
 
     # 读取sn列表
-    df_sn = pd.read_csv('sn_list.csv')
-    df_sn = df_sn.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'])
+    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'])
     signalMonitor = SignalMonitor.SignalMonitor()
     cal_period = 24    # 计算间隔,单位h
-    for i in range(1450, len(df_sn['sn'])):    # 遍历SN号
+    count = 0
+    for i in range(0, len(df_sn['sn'])):    # 遍历SN号
         
         sn = [df_sn.loc[i,'sn']]
-        if not (sn[0][0:2] == 'PK' or sn[0][0:2] == 'MG' or sn[0][0:2] == 'UD'):
-            continue
-        st = df_sn.loc[i, 'StartTime']
-        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']
+        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:
-                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("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']
         df_last_state = pd.DataFrame(
             columns=['sn', 'current', 'Timestamp', 'PackState', 'LineState'])    # 每日最后BMS数据
         df_last_state_gps = pd.DataFrame(
@@ -103,4 +148,5 @@ if __name__ == "__main__":
         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)
 

+ 150 - 0
LIB/FRONTEND/SignalMonitor/deploy_2.py

@@ -0,0 +1,150 @@
+#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
+import pymysql
+from urllib import parse
+
+dbManager = DBManager.DBManager()
+if __name__ == "__main__":
+    
+    # 更新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
+    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
+    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(":","_")
+    if not os.path.exists('log/' + now_str):
+        os.makedirs('log/' + now_str)
+    log = Log.Mylog(log_name='signal_monitor_新增sn统一运行至0812', 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)
+    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'])
+    signalMonitor = SignalMonitor.SignalMonitor()
+    cal_period = 24    # 计算间隔,单位h
+    count = 0
+    for i in range(0, len(df_sn['sn'])):    # 遍历SN号
+        
+        sn = [df_sn.loc[i,'sn']]
+        if sn[0] not in df_sn_excel['sn'].tolist():
+            print (count)
+            count = count + 1
+            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")
+        else:
+            continue
+        # 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']
+        df_last_state = pd.DataFrame(
+            columns=['sn', 'current', 'Timestamp', 'PackState', 'LineState'])    # 每日最后BMS数据
+        df_last_state_gps = pd.DataFrame(
+            columns=['sn', 'Timestamp', 'PackState', 'LineState', 'latitude', 'longitude'])    # 每日最后GPS数据
+        df_res = pd.DataFrame(columns=[
+                            '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)))
+        while st < et:
+            try:
+                df_res, df_state, df_last_state = signalMonitor.get_bms_offline_stat(
+                    sn, st, et, df_res, df_last_state, cal_period)    # 计算每日BMS信号统计数据
+                df_res_gps, df_last_state_gps = signalMonitor.get_gps_offline_stat(
+                    sn, st, et, df_state, df_res_gps, df_last_state_gps, cal_period)    # 计算每日GPS信号统计数据
+                st = st + datetime.timedelta(hours=cal_period)
+            except Exception as e:
+                st = st + datetime.timedelta(hours=cal_period)
+                logger.error(traceback.format_exc)
+                logger.error(u"{} :{},{} 任务运行错误".format(sn,st,et), exc_info=True)
+
+        # 数据入库
+        df_tosql = df_res_gps.copy()
+        df_tosql.columns = ['sn', 'pack_state', 'line_state', 'start_time', 'end_time', 'offline_time','latitude', 'longitude']
+        df_tosql.to_sql("signal_monitor_gps",con=db_engine, if_exists="append",index=False)
+
+        df_tosql = df_res.copy()
+        df_tosql.columns = ['sn', 'pack_state', 'line_state', 'start_time', 'end_time', 'offline_time']
+        df_tosql.to_sql("signal_monitor_bms",con=db_engine, if_exists="append",index=False)
+
+    # 数据入库
+        df_tosql = df_last_state.copy()
+        df_tosql.columns = ['sn', 'current', 'time_stamp', 'pack_state', 'line_state']
+        df_tosql.to_sql("signal_monitor_bms_last_day",con=db_engine, if_exists="append",index=False)
+
+        df_tosql = df_last_state_gps.copy()
+        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)
+

+ 120 - 0
LIB/FRONTEND/SignalMonitor/deploy_old.py

@@ -0,0 +1,120 @@
+#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
+import pymysql
+from urllib import parse
+
+dbManager = DBManager.DBManager()
+if __name__ == "__main__":
+    
+    # 更新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'])
+    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(":","_")
+    if not os.path.exists('log/' + now_str):
+        os.makedirs('log/' + now_str)
+    log = Log.Mylog(log_name='signal_monitor', 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)
+    logger = log.get_logger()
+
+    logger.info("pid is + {}".format(os.getpid()))
+
+    # 读取sn列表
+    df_sn = pd.read_csv('sn_list.csv')
+    df_sn = df_sn.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'])
+    signalMonitor = SignalMonitor.SignalMonitor()
+    cal_period = 24    # 计算间隔,单位h
+    for i in range(1450, len(df_sn['sn'])):    # 遍历SN号
+        
+        sn = [df_sn.loc[i,'sn']]
+        if not (sn[0][0:2] == 'PK' or sn[0][0:2] == 'MG' or sn[0][0:2] == 'UD'):
+            continue
+        st = df_sn.loc[i, 'StartTime']
+        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']
+        df_last_state = pd.DataFrame(
+            columns=['sn', 'current', 'Timestamp', 'PackState', 'LineState'])    # 每日最后BMS数据
+        df_last_state_gps = pd.DataFrame(
+            columns=['sn', 'Timestamp', 'PackState', 'LineState', 'latitude', 'longitude'])    # 每日最后GPS数据
+        df_res = pd.DataFrame(columns=[
+                            '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)))
+        while st < et:
+            try:
+                df_res, df_state, df_last_state = signalMonitor.get_bms_offline_stat(
+                    sn, st, et, df_res, df_last_state, cal_period)    # 计算每日BMS信号统计数据
+                df_res_gps, df_last_state_gps = signalMonitor.get_gps_offline_stat(
+                    sn, st, et, df_state, df_res_gps, df_last_state_gps, cal_period)    # 计算每日GPS信号统计数据
+                st = st + datetime.timedelta(hours=cal_period)
+            except Exception as e:
+                st = st + datetime.timedelta(hours=cal_period)
+                logger.error(traceback.format_exc)
+                logger.error(u"{} :{},{} 任务运行错误".format(sn,st,et), exc_info=True)
+
+        # 数据入库
+        df_tosql = df_res_gps.copy()
+        df_tosql.columns = ['sn', 'pack_state', 'line_state', 'start_time', 'end_time', 'offline_time','latitude', 'longitude']
+        df_tosql.to_sql("signal_monitor_gps",con=db_engine, if_exists="append",index=False)
+
+        df_tosql = df_res.copy()
+        df_tosql.columns = ['sn', 'pack_state', 'line_state', 'start_time', 'end_time', 'offline_time']
+        df_tosql.to_sql("signal_monitor_bms",con=db_engine, if_exists="append",index=False)
+
+    # 数据入库
+        df_tosql = df_last_state.copy()
+        df_tosql.columns = ['sn', 'current', 'time_stamp', 'pack_state', 'line_state']
+        df_tosql.to_sql("signal_monitor_bms_last_day",con=db_engine, if_exists="append",index=False)
+
+        df_tosql = df_last_state_gps.copy()
+        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)))
+

+ 2 - 2
LIB/FRONTEND/SignalMonitor/run.bat

@@ -1,2 +1,2 @@
-cd /d D:\Platform\Users\WLM\work\data_analyze_platform\LIB\FRONTEND\SignalMonitor
-D:\Platform\Users\WLM\work\py_pro_env\pro_env\python.exe D:\Platform\Users\WLM\work\data_analyze_platform\LIB\FRONTEND\SignalMonitor\deploy.py
+cd /d D:\deploy\python_platform\data_analyze_platform\LIB\FRONTEND\SignalMonitor
+D:\env\py_pro\python.exe D:\deploy\python_platform\data_analyze_platform\LIB\FRONTEND\SignalMonitor\deploy.py

+ 14 - 0
LIB/FRONTEND/deltsoc/deploy.py

@@ -10,9 +10,23 @@ import time, datetime
 import traceback
 from LIB.MIDDLE.DeltSoc import LFPDeltSoc20210804 as LFPDeltSoc
 from urllib import parse
+import pymysql
 
 dbManager = DBManager.DBManager()
 if __name__ == "__main__":
+    
+    # 更新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'])
+    conn.close();
     # 数据库配置
     host = 'rm-bp10j10qy42bzy0q77o.mysql.rds.aliyuncs.com'
     port = 3306

+ 16 - 1
LIB/FRONTEND/odo/deploy.py

@@ -17,9 +17,24 @@ from urllib import parse
 import traceback
 import os
 import time
+import pymysql
 
 if __name__ == "__main__":
-    # 数据库配置
+    
+    # 更新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'])
+    conn.close();
+    
+    # 结果数据库配置
     host = 'rm-bp10j10qy42bzy0q77o.mysql.rds.aliyuncs.com'
     port = 3306
     user = 'qx_cas'

+ 0 - 77
LIB/FRONTEND/soh/deploy.py

@@ -1,77 +0,0 @@
-#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.soh import NCMSoh_20210716 as NCMSoh
-from LIB.MIDDLE.soh import LFPSoh_20210711 as LFPSoh
-from urllib import parse
-
-dbManager = DBManager.DBManager()
-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
-        ))
-    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)
-    log = Log.Mylog(log_name='soh', 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)
-    logger = log.get_logger()
-
-    logger.info("pid is {}".format(os.getpid()))
-    
-
-    SNdata_6040 = pd.read_excel('骑享资产梳理-20210621.xlsx', sheet_name='6040骑享')
-    SNdata_6060 = pd.read_excel('骑享资产梳理-20210621.xlsx', sheet_name='6060')
-    SNnums_6060=SNdata_6060['SN号']
-    SNnums_6040=SNdata_6040['SN号']
-    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 sn in SNnums_6040.tolist():
-        try:
-            logger.info("6040 SN: {} START!".format(sn))
-            res = NCMSoh.cal_soh(sn, end_time, start_time)
-            if not res.empty:
-                res.columns = ['time', 'sn', 'bms_soh', 'soh', 'soh_err']
-                res.to_sql("soh_result",con=db_engine, if_exists="append",index=False)
-            logger.info("6040 SN: {} DONE!".format(sn))
-        except:
-            logger.error(traceback.format_exc)
-            logger.error(u"{} :{},{} 任务运行错误\n".format(sn,start_time,end_time), exc_info=True)
-
-    for sn in SNnums_6060.tolist():
-        try:
-            logger.info("6060 SN: {} START!".format(sn))
-            res = LFPSoh.cal_soh(sn, end_time, start_time)
-            if not res.empty:
-                res.columns = ['time', 'sn', 'bms_soh', 'soh', 'soh_err']
-                res.to_sql("soh_result",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)
-

+ 38 - 19
LIB/FRONTEND/soh/deploy_4840.py

@@ -3,16 +3,38 @@ 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 dateutil.relativedelta
 import traceback
-from LIB.MIDDLE.soh import NCMSoh_4842 as NCMSoh
+from LIB.MIDDLE.soh import NCMSoh_4840 as NCMSoh
 from urllib import parse
-
+import pymysql
 dbManager = DBManager.DBManager()
 if __name__ == "__main__":
+    
+    # 时间设置
+    now_time = datetime.datetime.now()
+    pre_time = now_time + dateutil.relativedelta.relativedelta(months=-1)#上个月时间
+    end_time=datetime.datetime.strftime(now_time,"%Y-%m-%d 01:00:00")
+    start_time=datetime.datetime.strftime(pre_time,"%Y-%m-%d 01: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
@@ -26,31 +48,28 @@ 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/4840/' + now_str
+    if not os.path.exists(log_path):
+        os.makedirs(log_path)
     log = Log.Mylog(log_name='soh', log_level = 'info')
-    log.set_file_hl(file_name='log/{}/info_4840.log'.format(now_str), log_level='info', size=1024* 1024 * 100)
-    log.set_file_hl(file_name='log/{}/error_4840.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()))
-    logger.error("pid is {}".format(os.getpid()))
     
 
-    SNdata_4840 = pd.read_excel('骑享资产梳理-20210621.xlsx', sheet_name='4840骑享')
-    SNnums_4840=SNdata_4840['SN号']
-    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_4840 = pd.read_excel('骑享资产梳理-20210621.xlsx', sheet_name='4840骑享')
+    # SNnums_4840=SNdata_4840['SN号']
+
 
-    for sn in SNnums_4840.tolist():
+    for i in range(0, len(df_sn)):
         try:
+            if df_sn.loc[i, 'imei'][6:9] != '440':
+                continue
+            sn = df_sn.loc[i, 'sn']
             logger.info("4840 SN: {} START!".format(sn))
             res = NCMSoh.cal_soh(sn, end_time, start_time)
             if not res.empty:

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

@@ -0,0 +1,85 @@
+#coding=utf-8
+import os
+import datetime
+import pandas as pd
+from LIB.BACKEND import DBManager, Log
+from sqlalchemy import create_engine
+from sqlalchemy.orm import sessionmaker
+import time, datetime
+import dateutil.relativedelta
+import traceback
+from LIB.MIDDLE.soh import NCMSoh_20210716 as NCMSoh
+from urllib import parse
+import pymysql
+dbManager = DBManager.DBManager()
+if __name__ == "__main__":
+    
+    # 时间设置
+    now_time = datetime.datetime.now()
+    pre_time = now_time + dateutil.relativedelta.relativedelta(months=-1)#上个月时间
+    end_time=datetime.datetime.strftime(now_time,"%Y-%m-%d 01:00:00")
+    start_time=datetime.datetime.strftime(pre_time,"%Y-%m-%d 01: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/6040/' + now_str
+    if not os.path.exists(log_path):
+        os.makedirs(log_path)
+    log = Log.Mylog(log_name='soh', 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_6040 = pd.read_excel('骑享资产梳理-20210621.xlsx', sheet_name='6040骑享')
+    # SNnums_6040=SNdata_6040['SN号']
+    # 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] != '640':
+                continue
+            sn = df_sn.loc[i, 'sn']
+            logger.info("6040 SN: {} START!".format(sn))
+            res = NCMSoh.cal_soh(sn, end_time, start_time)
+            if not res.empty:
+                res.columns = ['time', 'sn', 'bms_soh', 'soh', 'soh_err']
+                res.to_sql("soh_result",con=db_engine, if_exists="append",index=False)
+            logger.info("6040 SN: {} DONE!".format(sn))
+        except:
+            logger.error(traceback.format_exc)
+            logger.error(u"{} :{},{} 任务运行错误\n".format(sn,start_time,end_time), exc_info=True)
+

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

@@ -0,0 +1,91 @@
+#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 dateutil.relativedelta
+import traceback
+from LIB.MIDDLE.soh import NCMSoh_20210716 as NCMSoh
+from LIB.MIDDLE.soh import LFPSoh_20210711 as LFPSoh
+from urllib import parse
+import pymysql
+dbManager = DBManager.DBManager()
+if __name__ == "__main__":
+    
+    # 时间设置
+    now_time = datetime.datetime.now()
+    pre_time = now_time + dateutil.relativedelta.relativedelta(months=-1)#上个月时间
+    end_time=datetime.datetime.strftime(now_time,"%Y-%m-%d 01:00:00")
+    start_time=datetime.datetime.strftime(pre_time,"%Y-%m-%d 01: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='soh', 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_6040 = pd.read_excel('骑享资产梳理-20210621.xlsx', sheet_name='6040骑享')
+    # SNdata_6060 = pd.read_excel('骑享资产梳理-20210621.xlsx', sheet_name='6060')
+    # SNnums_6060=SNdata_6060['SN号']
+    # SNnums_6040=SNdata_6040['SN号']
+    # 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 = LFPSoh.cal_soh(sn, end_time, start_time)
+            if not res.empty:
+                res.columns = ['time', 'sn', 'bms_soh', 'soh', 'soh_err']
+                res.to_sql("soh_result",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)
+

+ 1 - 1
LIB/FRONTEND/soh/run.bat → LIB/FRONTEND/soh/run_4840.bat

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

+ 2 - 0
LIB/FRONTEND/soh/run_6040.bat

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

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

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

+ 0 - 0
LIB/MIDDLE/soh/NCMSoh_4842.py → LIB/MIDDLE/soh/NCMSoh_4840.py


+ 1 - 6
test.py

@@ -1,8 +1,3 @@
 import time 
-from LIB.BACKEND import Log
 
-log = Log.Mylog(log_name='signal_monitor', log_level = 'info')
-log.set_file_hl(file_name='info.log', log_level='info', size=1024* 1024 * 100)
-logger = log.get_logger()
-
-logger.info("111")
+time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())[0:10]