Eric412V 3 лет назад
Родитель
Сommit
0cd8320498

+ 32 - 7
LIB/MIDDLE/SaftyCenter/DataDiag_Static/SC_BMSUploadError.py

@@ -22,11 +22,15 @@ import pymysql
 class BMSReportError:
     def __init__(self):
         pass
-    def main(sn,bms_info,df_Diag_Ram_in,FactoryType,errorcode_map ):
+    def main(sn,bms_info,df_Diag_Ram_in,FactoryType,errorcode_map):
         newCode_total=[]
         if len(df_Diag_Ram_in):
+            df_Diag_Ram_in['code']=df_Diag_Ram_in['code'].apply(str)
             df_Diag_Ram_BMS=df_Diag_Ram_in[df_Diag_Ram_in['code'].str.contains('B')].copy()
             df_Diag_Ram_Cloud=df_Diag_Ram_in[df_Diag_Ram_in['code'].str.contains('C')].copy()
+        else:
+            df_Diag_Ram_BMS=DataFrame(columns=['start_time', 'end_time', 'product_id', 'code', 'level', 'info','advice'])
+            df_Diag_Ram_Cloud=DataFrame(columns=['start_time', 'end_time', 'product_id', 'code', 'level', 'info','advice'])
         if len(bms_info):
             df_bms=bms_info[['时间戳','故障等级','故障代码']]
             newCode=[]
@@ -48,16 +52,18 @@ class BMSReportError:
                                 nCode=int(math.pow(2,power))
                                 newCode.append(nCode)
                                 code=code-nCode
-                                newCode_total=newCode_total.append(nCode)
-                        else:
+                                newCode_total.append(nCode)
+                        elif code>0:
                             newCode=newCode.append(code)
-                            newCode_total=newCode_total.append(code)
+                            newCode_total.append(code)
+                        else:
+                            newCode=[]
                     else:
                         newCode=[]
                 else:
                     newCode=df_bms.loc[i,'故障代码']
-                    if not pd.isnull(newCode):
-                        newCode_total=newCode_total.append(newCode)
+                    if not pd.isnull(newCode) and newCode!=0:
+                        newCode_total.append(newCode)
                         newCode=[newCode]
                     else:
                         newCode=[]                        
@@ -66,14 +72,33 @@ class BMSReportError:
 
                 if  len(newCode):
                     for j in range(0,len(newCode)):
+                        # host='rm-bp10j10qy42bzy0q77o.mysql.rds.aliyuncs.com'
+                        # port=3306
+                        # database='algo_dict'
+                        # user='qx_algo_readonly'
+                        # password='qx@123456'
+
+                        # db_engine = create_engine("mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8".format(user, password, host, port, database))
+                        # DbSession = sessionmaker(bind=db_engine)
+
+                        # errorcode_map = pd.read_sql("select * from faultcode_map", db_engine)
+                        # if 'k50' in sn:
+                        #     FactoryType=1
+                        # elif 'MGMCL' in sn or 'UD' in sn:
+                        #     FactoryType=2
+                        # else:
+                        #     FactoryType=3
+                        
+                             
                         code = newCode[j] # 终端故障码
                         platform_code = errorcode_map[(errorcode_map['protocol']==FactoryType)&(errorcode_map['end_errorcode']==str(code))]['platform_errorcode']                   
+                        # db_engine.dispose()
                         if len(platform_code) == 0:
                             pass
                         else:
                             newCode[j]=platform_code.values[0]
                             if not platform_code.values[0] in df_Diag_Ram_BMS['code'].values.tolist():
-                                df_Diag_Ram_BMS.loc[len(df_Diag_Ram_BMS)]=[df_bms.loc[i,'时间戳'],'0000-00-00 00:00:00',sn,platform_code.values[0],df_bms.loc[i,'故障等级'],'']
+                                df_Diag_Ram_BMS.loc[len(df_Diag_Ram_BMS)]=[df_bms.loc[i,'时间戳'],'0000-00-00 00:00:00',sn,platform_code.values[0],df_bms.loc[i,'故障等级'],'','']
                             else:
                                 pass
         if len(df_Diag_Ram_BMS):

BIN
all_statistic_info.xlsx