|
@@ -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):
|