|
@@ -24,11 +24,11 @@ def diag_cal():
|
|
|
#..................................设置时间..........................................................
|
|
|
start=time.time()
|
|
|
end_time=datetime.datetime.now()
|
|
|
- start_time=end_time-datetime.timedelta(days=1)#10分钟跑一次,一次取10分钟数据
|
|
|
+ start_time=end_time-datetime.timedelta(seconds=900)#10分钟跑一次,一次取10分钟数据
|
|
|
start_time=start_time.strftime('%Y-%m-%d %H:%M:%S')
|
|
|
end_time=end_time.strftime('%Y-%m-%d %H:%M:%S')
|
|
|
|
|
|
-
|
|
|
+ print('起',len(df_Diag_Ram))
|
|
|
for sn in SNnums:#SN遍历
|
|
|
print(sn)
|
|
|
if 'PK500' in sn:
|
|
@@ -85,19 +85,20 @@ def diag_cal():
|
|
|
#电池诊断.....................................................................................................................................................................
|
|
|
CellFltInfo=DataFrame(columns=['start_time', 'end_time', 'product_id', 'code', 'level', 'info','advice'])
|
|
|
df_Diag_Ram_sn = df_Diag_Ram.loc[df_Diag_Ram['product_id']==sn]#历史故障
|
|
|
- df_Diag_Ram_sn_else = pd.concat([df_Diag_Ram,df_Diag_Ram_sn,df_Diag_Ram_sn]).drop_duplicates(subset=['product_id','code','start_time','Batpos','info'],keep=False)#sn之外的故障
|
|
|
+ df_Diag_Ram_sn_else = df_Diag_Ram.loc[df_Diag_Ram['product_id']!=sn]#sn之外的故障
|
|
|
CellFltInfo = df_Diag_Ram_sn.drop('Batpos',axis=1)
|
|
|
#获取当前故障电池的历史故障信息↑↑↑↑↑↑↑↑↑↑↑.......................................................................................................................................
|
|
|
if not df_bms.empty:
|
|
|
df_Diag_Batdiag_update_xq=SamplingSafty.main(sn,param,df_bms,CellFltInfo)#学琦计算故障
|
|
|
- batDiag=CBMSBatDiag.BatDiag(sn,celltype,df_bms, df_soh, df_uniform, CellFltInfo)#鹏飞计算
|
|
|
+ batDiag=CBMSBatDiag.BatDiag(sn,celltype,df_bms, df_soh, df_uniform, df_Diag_Batdiag_update_xq)#鹏飞计算
|
|
|
df_Diag_Batdiag_update=batDiag.diag()
|
|
|
# df_Diag_Batdiag_update=BatDiag.diag()
|
|
|
else:
|
|
|
df_Diag_Batdiag_update_xq=DataFrame(columns=['start_time','end_time','product_id','code','level','info','advice','Batpos'])
|
|
|
df_Diag_Batdiag_update=DataFrame(columns=['start_time','end_time','product_id','code','level','info','advice','Batpos'])
|
|
|
- df_Diag_Ram,df_Diag_Ram_add,df_Diag_Ram_Update=DiagDataMerge.DetaMerge(df_Diag_Ram_sn,df_Diag_Batdiag_update_xq,df_Diag_Batdiag_update,df_OprtnSta,df_Diag_Ram_sn_else)
|
|
|
+ df_Diag_Ram,df_Diag_Ram_add,df_Diag_Ram_Update=DiagDataMerge.DetaMerge(df_Diag_Ram_sn,df_Diag_Batdiag_update,df_OprtnSta,df_Diag_Ram_sn_else)
|
|
|
task_on=0
|
|
|
+ print('止',len(df_Diag_Ram))
|
|
|
#.................................统计程序...............................
|
|
|
def DaTa_Sta_Week_Task():
|
|
|
task_on=1
|
|
@@ -117,11 +118,11 @@ def DaTa_Sta_Week_Task():
|
|
|
#............................获取时间................................
|
|
|
end_time=datetime.datetime.now()
|
|
|
# end_time=datetime.datetime.strptime(end_time,'%Y-%m-%d')
|
|
|
- start_time=end_time-datetime.timedelta(days=7)
|
|
|
- start_time=start_time.strftime('%Y-%m-%d')
|
|
|
+ start_time_week=end_time-datetime.timedelta(days=7)
|
|
|
+ start_time_week=start_time_week.strftime('%Y-%m-%d')
|
|
|
end_time=end_time.strftime('%Y-%m-%d')
|
|
|
- FltAlarmInfo,Celltype=DataSta.SaftyWarningSta(df_fltinfo,start_time,end_time)
|
|
|
- FaultLvlCount=DataSta.WeekInfoSta(df_fltinfo,start_time,end_time)
|
|
|
+ FltAlarmInfo,Celltype=DataSta.SaftyWarningSta(df_fltinfo,start_time_week,end_time)
|
|
|
+ FaultLvlCount=DataSta.WeekInfoSta(df_fltinfo,start_time_week,end_time)
|
|
|
for i in range(1,6):
|
|
|
if not FaultLvlCount[FaultLvlCount['level']==i]['product_id'].empty:
|
|
|
all_period_fault_info.loc[0,'level'+str(i)+'_count']=int(FaultLvlCount[FaultLvlCount['level']==i]['product_id'].values)
|
|
@@ -131,7 +132,7 @@ def DaTa_Sta_Week_Task():
|
|
|
all_period_fault_info.loc[0,'week']=toweek
|
|
|
all_period_fault_info.loc[0,'solve_rate']=FltAlarmInfo.loc[0,'OprationManageRate']
|
|
|
all_period_fault_info.fillna(0,inplace=False)
|
|
|
- all_period_fault_info.to_excel('all_period_fault_info.xlsx')
|
|
|
+
|
|
|
task_on=0
|
|
|
def DaTa_Sta_Minutes_Task():
|
|
|
task_on=1
|
|
@@ -182,7 +183,7 @@ def DaTa_Sta_Minutes_Task():
|
|
|
FltAlarmInfo,Celltype=DataSta.SaftyWarningSta(df_fltinfo,start_time,end_time)
|
|
|
SatftyCount=DataSta.SftyWrngClsfy(df_fltinfo)
|
|
|
MaxAccumAh,TotalAccumAh,MaxCycle,MaxRunningHour,TotalRunHour=DataSta.AccumInfo(df_last_accum,df_FirstDataTime,end_time)
|
|
|
- all_location_info=DataSta.FltBatPosition(df_last_pos,df_Diag_Ram)
|
|
|
+ all_location_info=DataSta.FltBatPosition(df_last_pos,df_fltinfo)
|
|
|
|
|
|
all_statistic_info=DataFrame(columns=['factory','total_alarm','alarm_total_today','alarm_not_close_today','alarm_close_today','alarm_uregent_total_today','alarm_uregent_close_today','alarm_uregent_not_close_today','alarm_close_total','run_time_total','dischrg_total','odo_total','max_dischrg_one','max_runtime_one','max_cycle_one','max_odo_one','alarm_close_total','alarm_total','cell_type','cell_type_count','cell_safety_risk_count','data_safety_risk_count','status_safety_risk_count','hv_safety_risk_count','system_safety_risk_count','sample_safety_risk_count','controller_safety_risk_count','design_safety_risk_count'])
|
|
|
all_statistic_info.loc[0,'factory']='骑享'
|
|
@@ -217,8 +218,6 @@ def DaTa_Sta_Minutes_Task():
|
|
|
all_statistic_info.loc[0,'sample_safety_risk_count']=SatftyCount.loc[0,'SamplingSatyCount']
|
|
|
all_statistic_info.loc[0,'controller_safety_risk_count']=SatftyCount.loc[0,'CtrlSaftyCodeCount']
|
|
|
all_statistic_info.loc[0,'design_safety_risk_count']=SatftyCount.loc[0,'DsnSaftyCodeCount']
|
|
|
- all_statistic_info.to_excel('all_statistic_info.xlsx')
|
|
|
-
|
|
|
end=time.time()
|
|
|
print(end-start)
|
|
|
task_on=0
|
|
@@ -246,7 +245,7 @@ if __name__ == "__main__":
|
|
|
SNnums_U7255=SNdata_U7255['SN号'].tolist()
|
|
|
SNnums=SNnums_L7255 + SNnums_C7255 + SNnums_6040 + SNnums_4840 + SNnums_U7255+ SNnums_6060
|
|
|
# SNnums=['MGMCLN750N215I005','PK504B10100004341','PK504B00100004172','MGMLXN750N2189014']
|
|
|
- SNnums = ['PK504B10100004365'] #SNnums_6040
|
|
|
+ #SNnums = ['MGMLXN750N218G006'] #SNnums_6040
|
|
|
|
|
|
mylog=log.Mylog('log_diag.txt','error')
|
|
|
mylog.logcfg()
|
|
@@ -262,19 +261,20 @@ if __name__ == "__main__":
|
|
|
with DBRead as DBRead:
|
|
|
df_Diag_Ram = DBRead.getdata('start_time','end_time','product_id','code','level','info','advice','Batpos',tablename=tablename2,factory='骑享',sn='',timename='',st='',sp='')
|
|
|
# result=pd.read_csv(r'D:\Work\Code_write\data_analyze_platform\USER\01Screen_Problem\result.csv',encoding='gbk')
|
|
|
- diag_cal()
|
|
|
- DaTa_Sta_Minutes_Task()
|
|
|
- DaTa_Sta_Week_Task()
|
|
|
|
|
|
#定时任务.......................................................................................................................................................................
|
|
|
scheduler = BlockingScheduler()
|
|
|
+ diag_cal()
|
|
|
+ DaTa_Sta_Minutes_Task()
|
|
|
+ DaTa_Sta_Week_Task()
|
|
|
|
|
|
if task_on==0:
|
|
|
scheduler.add_job(DaTa_Sta_Week_Task, 'interval', days=7, id='Week_Task')
|
|
|
- scheduler.add_job(diag_cal, 'interval', seconds=600, id='diag_job')
|
|
|
+ scheduler.add_job(diag_cal, 'interval', seconds=900, id='diag_job')
|
|
|
scheduler.add_job(DaTa_Sta_Minutes_Task, 'interval', seconds=180, id='Hour_Task')
|
|
|
|
|
|
- try:
|
|
|
+ try:
|
|
|
+
|
|
|
scheduler.start()
|
|
|
except Exception as e:
|
|
|
scheduler.shutdown()
|