Browse Source

Merge remote-tracking branch 'origin/dev' into pro

lmstack 3 years ago
parent
commit
331169faad
1 changed files with 32 additions and 30 deletions
  1. 32 30
      LIB/MIDDLE/SaftyCenter/DataDiag_Static/SC_BMSUploadError.py

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

@@ -23,44 +23,46 @@ class BMSReportError:
     def __init__(self):
         pass
     def main(sn,bms_info,df_Diag_Ram_in,FactoryType,errorcode_map ):
-        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()
-        df_bms=bms_info[['时间戳','故障等级','故障代码']]
-        newCode=[]
-        for i in range (0,len(df_bms)):
-            #拆解故障码,PK专用
-            if FactoryType ==1:
-                code=df_bms.loc[i,'故障代码']
-                newCode=[]
-                if code>2:
-                    num=math.log(code)/math.log(2)
-                    power=int(num)
-                    nCode=int(math.pow(2,power))
-                    newCode.append(nCode)
-                    code=code-nCode
-                    while(code>0):
-                        num=float(math.log(code)/math.log(2))
-                        power=int(num)
-                        nCode=int(math.pow(2,power))
-                        newCode.append(nCode)
-                        code=code-nCode
+        if len(df_Diag_Ram_in):
+            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()
+        if len(bms_info):
+            df_bms=bms_info[['时间戳','故障等级','故障代码']]
+            newCode=[]
+            for i in range (0,len(df_bms)):
+                #拆解故障码,PK专用
+                if FactoryType ==1:
+                    code=df_bms.loc[i,'故障代码']
+                    newCode=[]
+                    if len(code):
+                        if code>2:
+                            num=math.log(code)/math.log(2)
+                            power=int(num)
+                            nCode=int(math.pow(2,power))
+                            newCode.append(nCode)
+                            code=code-nCode
+                            while(code>0):
+                                num=float(math.log(code)/math.log(2))
+                                power=int(num)
+                                nCode=int(math.pow(2,power))
+                                newCode.append(nCode)
+                                code=code-nCode
+                        else:
+                            newCode=newCode.append(nCode)
+                    else:
+                        pass
                 else:
-                    newCode=newCode.append(nCode)
-            else:
-                newCode=df_bms.loc[i,'故障代码']
-                
+                    newCode=df_bms.loc[i,'故障代码']
             # 数据库配置
 
             if len(newCode):
                 for j in range(0,len(newCode)):
-                                
-                    
                     code = newCode[j] # 终端故障码
-                    platform_code = errorcode_map[(errorcode_map['protocol']==FactoryType)&(errorcode_map['end_errorcode']==str(code))]['platform_errorcode']
-                    newCode[j]=platform_code.values[0]
-                    if pd.isnull(platform_code.values[0]):
+                    platform_code = errorcode_map[(errorcode_map['protocol']==FactoryType)&(errorcode_map['end_errorcode']==str(code))]['platform_errorcode']                   
+                    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,'故障等级'],'']
                         else: