def craft_off_prop(dtype: int,craft: str,res: ResponseBase): data = {'seed_off':0,'seed_total':0,'shoulder_off':0,'shoulder_total':0} r_key = f'craft_off_{craft}_{dtype}' session = mysql_session.session() try: if redis_session.exists(r_key): data = redis_session.get_redis_str(r_key) pass else: # 查询数据库 condition = [] db_data = [] if craft == 'shoulder': condition.append(ShoulderCraft.gmt_update >= get_startdate(dtype)) db_data = session.query(ShoulderCraft.shoulder_off,func.count('*')).filter(and_(*condition)).group_by(ShoulderCraft.shoulder_off).order_by(ShoulderCraft.shoulder_off).all() if len(db_data)>0: l = np.array(db_data)[:,1] data['shoulder_off'] = int(l[1]) data['shoulder_total'] = int(l[0] + l[1]) if craft == 'seed': condition.append(SeedCraft.gmt_update >= get_startdate(dtype)) db_data = session.query(SeedCraft.seed_off,func.count('*')).filter(and_(*condition)).group_by(SeedCraft.seed_off).order_by(SeedCraft.seed_off).all() if len(db_data)>0: l = np.array(db_data)[:,1] data['seed_off'] = int(l[1]) data['seed_total'] = int(l[0] + l[1]) except Exception as e: res.error(Error.SERVER_EXCEPTION) logger.error(e) pass session.close() res.data = data return res
def current_fur_list(series: str, res: ResponseBase): session = mysql_session.session() data = {'fur_list': [], 'series': ''} r_key = f'current_fur_list_{series}' try: if redis_session.exists(r_key): data = redis_session.get_redis_str(r_key) pass else: db_data = session.query( FurnaceList.furnace_id, FurnaceList.furnace_state).filter( FurnaceList.furnace_series == series).order_by( FurnaceList.furnace_id).all() fur_list = [] if len(db_data) > 0: for i in db_data: fur_list.append( CurrentFurList(series + str(i[0]), i[1]).__dict__) data['fur_list'] = fur_list data['series'] = series if len(fur_list) > 0: redis_session.set_redis_str(data, r_key, 30) pass else: res.error(Error.NO_DATA) pass except Exception as e: res.error(Error.SERVER_EXCEPTION) logger.error(e) pass session.close() res.data = data return res.__dict__
def shoulder_type_stic(dtype: int, res: ResponseBase): data = {'shoulder_type_list': [], 'total': 0} r_key = f'shoulder_type_list_{dtype}' session = mysql_session.session() try: if redis_session.exists(r_key): data = redis_session.get_redis_str(r_key) pass else: shoulder_type_list = [] condition = [] condition.append(ShoulderCraft.gmt_update >= get_startdate(dtype)) db_data = session.query(ShoulderCraft.shoulder_type,func.count('*')).filter(and_(*condition)).group_by(ShoulderCraft.shoulder_type).order_by(ShoulderCraft.shoulder_type).all() for child in db_data: data['total'] += child[1] shoulder_type_list = mysql_init_data(db_data,shoulder_model,CommonListItem) data['shoulder_type_list'] = shoulder_type_list if len(shoulder_type_list) > 0: redis_session.set_redis_str(data,r_key, 1) pass except Exception as e: res.error(Error.SERVER_EXCEPTION) logger.error(e) pass session.close() res.data = data return res
def shoulder_pd_dist(dtype: int,res: ResponseBase): data = {'shoulder_pd_list': []} r_key = f'shoulder_pd_list_{dtype}' session = mysql_session.session() try: if redis_session.exists(r_key): data = redis_session.get_redis_str(r_key) pass else: # 查询数据库 condition = [] condition.append(ShoulderCraft.gmt_update >= get_startdate(dtype)) db_data = session.query(ShoulderCraft.shoulder_powerdec).filter(and_(*condition)).all() shoulder_pd_list = [] if len(db_data)>0: l = np.array(db_data)[:,0] cso = CommonSticOp(l) cso.get_dist(5) for item in cso.result: shoulder_pd_list.append(CommonListItem(item[0],item[1]).__dict__) data['shoulder_pd_list'] = shoulder_pd_list if len(shoulder_pd_list) > 0: redis_session.set_redis_str(data,r_key, 1) pass except Exception as e: res.error(Error.SERVER_EXCEPTION) logger.error(e) pass session.close() res.data = data return res
def temp_type_stic(dtype: int, res: ResponseBase): data = {'temp_type_list': [],'total':0} r_key = f'temp_type_list_{dtype}' session = mysql_session.session() try: if redis_session.exists(r_key): data = redis_session.get_redis_str(r_key) pass else: temp_type_list = [] condition = [] condition.append(TempCraft.gmt_update >= get_startdate(dtype)) db_data = session.query(TempCraft.weld_type,func.count('*')).filter(and_(*condition)).group_by(TempCraft.weld_type).order_by(TempCraft.weld_type).all() for child in db_data: data['total'] += child[1] # tm_keys_list = list(temp_model.keys()) # temp_keys_list = [] # for item in db_data: # temp_keys_list.append(f'{item[0]}') # temp_type_list.append(CommonListItem(temp_model[f'{item[0]}'],item[1]).__dict__) # d_set = sort(list(set(tm_keys_list).difference(set(temp_keys_list)))) # for i in d_set: # temp_type_list.insert(tm_keys_list.index(i),CommonListItem(temp_model[f'{i}'],0).__dict__) temp_type_list = mysql_init_data(db_data,temp_model,CommonListItem) data['temp_type_list'] = temp_type_list if len(temp_type_list) > 0: redis_session.set_redis_str(data,r_key, gr_sec(0)) pass except Exception as e: res.error(Error.SERVER_EXCEPTION) logger.error(e) pass session.close() res.data = data return res
def shoulder_wt_dist(dtype: int, res:ResponseBase): data = {'shoulder_wt_list': [], 'mean':0, 'total':0} r_key = f'shoulder_wt_list_{dtype}' session = mysql_session.session() try: if redis_session.exists(r_key): data = redis_session.get_redis_str(r_key) pass else: # 查询数据库 condition = [] condition.append(ShoulderCraft.gmt_update >= get_startdate(dtype)) db_data = session.query(ShoulderCraft.shoulder_wt).filter(and_(*condition)).all() shoulder_wt_list = [] if len(db_data)>0: l = np.array(db_data)[:,0] data['mean'] = round(np.mean(l),4) data['total'] = len(l) # for key,value in interval_static(l).items(): # shoulder_wt_list.append(CommonFitListItem(key,value,0).__dict__) cso = CommonSticOp(l) cso.get_dist_fit() for item in cso.result: shoulder_wt_list.append(CommonFitListItem(item[0],item[1],round(item[2],4)).__dict__) data['shoulder_wt_list'] = shoulder_wt_list if len(shoulder_wt_list) > 0: redis_session.set_redis_str(data,r_key, 1) pass except Exception as e: res.error(Error.SERVER_EXCEPTION) logger.error(e) pass session.close() res.data = data return res
def server_list(res: ResponseBase): session = mysql_session.session() data = {'server_list': []} r_key = 'server_list' try: if redis_session.exists(r_key): data = redis_session.get_redis_str(r_key) pass else: db_data = session.query( ServerList.server_ip).filter(ServerList.state > 0).all() server_list = [] for i in db_data: server_list.append(i[0]) data['server_list'] = server_list if len(server_list) > 0: redis_session.set_redis_str(data, r_key, 60 * 60 * 24) else: res.code = 1 pass except Exception as e: res.error(Error.SERVER_EXCEPTION) logger.error(e) pass session.close() res.data = data return res.__dict__
def temp_std(dtype: int, res: ResponseBase): data = {'temp_std_list': [],'total':0} r_key = f'temp_std_list_{dtype}' session = mysql_session.session() try: if redis_session.exists(r_key): data = redis_session.get_redis_str(r_key) pass else: temp_std_list = [] condition = [] condition.append(TempCraft.gmt_update >= get_startdate(dtype)) db_data = session.query(TempCraft.weld_std,func.count('*')).filter(and_(*condition)).group_by(TempCraft.weld_std).order_by(TempCraft.weld_std).all() for child in db_data: data['total'] += child[1] std_dict = {'0':'控制不达标','1':'控制达标'} temp_std_list = mysql_init_data(db_data,std_dict,CommonListItem) data['temp_std_list'] = temp_std_list if len(temp_std_list) > 0: redis_session.set_redis_str(data,r_key, gr_sec(0)) pass except Exception as e: res.error(Error.SERVER_EXCEPTION) logger.error(e) pass session.close() res.data = data return res
def get_server_lists(res: ResponseBase, ipt: str, idx: int, size: int): session = mysql_session.session() data = CommonList() r_key = "server_lists_" + ipt try: if redis_session.exists(r_key): # data = redis_session.hash2obj(data.__dict__, r_key) data = redis_session.get_redis_str(r_key) pass else: ipt = '%{}%'.format(ipt) db_data = session.query(ServerList).filter( and_(ServerList.server_ip.like(ipt), ServerList.state > 0)).all() for i in db_data: re = RespServerList(i).__dict__ data.list.append(re) data.total = len(db_data) if len(data.list) > 0: # redis_session.set_redis(data.__dict__, r_key, 60*60) redis_session.set_redis_str(data.__dict__, r_key, 60 * 60) pass res.data = data except Exception as e: res.error(Error.OPTION_ERR) logger.error(e) pass session.close() # 关闭session return res
def get_furnace_lists(res: ResponseBase, id: str, series: str, status: str, idx: int, size: int): session = mysql_session.session() data = CommonList() # r_key = "furnace_lists_{}_{}".format(series, id) r_key = f'furnace_lists_{series}_{id}' try: if redis_session.exists(r_key): data = redis_session.get_redis_str(r_key) pass else: # 多条件查询 condition = [] if series != '': condition.append(FurnaceList.furnace_series == series) if id != '': condition.append(FurnaceList.furnace_id == int(id)) if status != '': condition.append(FurnaceList.furnace_state == int(status)) db_data = session.query(FurnaceList).filter(and_(*condition)).all() for i in db_data: re = RespFurnaceList(i).__dict__ data.list.append(re) data.total = len(db_data) if len(data.list) > 0: redis_session.set_redis_str(data.__dict__, r_key, 60) pass res.data = data except Exception as e: res.error(Error.OPTION_ERR) logger.error(e) pass session.close() # 关闭session return res
def series_list(res: ResponseBase): session = mysql_session.session() data = {'series_list': []} r_key = 'series_list' try: if redis_session.exists(r_key): data = redis_session.get_redis_str(r_key) pass else: db_data = session.query(FurnaceList.furnace_series, func.count('*').label("count")).group_by( FurnaceList.furnace_series).all() series_list = [] for i in db_data: series_list.append(i[0]) series_list.sort(key=None, reverse=False) data['series_list'] = series_list if len(series_list) > 0: redis_session.set_redis_str(data, r_key, 60 * 60 * 24) pass pass except Exception as e: res.error(Error.SERVER_EXCEPTION) logger.error(e) pass session.close() res.data = data return res.__dict__
def model_state(server_ip: str, res: ResponseBase): data = {'model_list': []} r_key = f'model_list_{server_ip}' try: if redis_session.exists(r_key): data = redis_session.get_redis_str(r_key) pass else: addr = 'http://{}:5000/model_status'.format(server_ip) resp = s_reqs.get(addr, timeout=5) res_dict = resp.json() model_list = [] for key in res_dict: if key in dict_model_index.keys(): model_list.append( RespModelState(key, dict_model_index.get(key), res_dict.get(key)).__dict__) continue model_list.sort(key=lambda x: x['key'], reverse=False) data['model_list'] = model_list if len(model_list) > 0: redis_session.set_redis_str(data, r_key, 30) pass res.data = data except Exception as e: res.error(Error.SERVER_EXCEPTION) logger.error(e) pass return res.__dict__
def history_broken(type: int, res: ResponseBase): session = mysql_session.session() data = {'broken_list': []} r_key = f'history_broken_{type}' try: if redis_session.exists(r_key): data = redis_session.get_redis_str(r_key) pass else: dt_ago = (datetime.now() - timedelta(days=30)).date() if type == '1': # shouldering db_data = session.query( BrokenHistoryResult.date, func.sum( BrokenHistoryResult.shouldering_broken_nums).label( "count")).filter( BrokenHistoryResult.date >= dt_ago).group_by( BrokenHistoryResult.date).order_by( BrokenHistoryResult.date).all() elif type == '2': db_data = session.query( BrokenHistoryResult.date, func.sum(BrokenHistoryResult.diameter_broken_nums).label( "count")).filter( BrokenHistoryResult.date >= dt_ago).group_by( BrokenHistoryResult.date).order_by( BrokenHistoryResult.date).all() else: db_data = [] pass broken_list = [] for i in db_data: broken_list.append( CommonListItem(str(i[0]), int(i[1])).__dict__) data['broken_list'] = broken_list if len(broken_list) > 0: redis_session.set_redis_str(data, r_key, 60 * 60 * 2) except Exception as e: res.error(Error.SERVER_EXCEPTION) logger.error(e) pass session.close() res.data = data return res.__dict__
def seed_type_stic(dtype: int, res: ResponseBase): data = {'seed_type_list': [], 'total':0} r_key = f'seed_type_list_{dtype}' session = mysql_session.session() try: if redis_session.exists(r_key): data = redis_session.get_redis_str(r_key) pass else: seed_type_list = [] condition = [] condition.append(SeedCraft.gmt_update >= get_startdate(dtype)) condition.append(SeedCraft.seed_type <= 4) db_data = session.query(SeedCraft.seed_type,func.count('*')).filter(and_(*condition)).group_by(SeedCraft.seed_type).order_by(SeedCraft.seed_type).all() for child in db_data: data['total'] += child[1] # db_data = session.query(SeedCraft.seed_type,func.count(case(whens=((SeedCraft.seed_type.in_([1,2,3,4]),1),),else_=0))).filter(and_(*condition)).group_by(SeedCraft.seed_type).all() # sm_keys_list = list(seed_model.keys()) # temp_keys_list = [] # for item in db_data: # temp_keys_list.append(f'{item[0]}') # seed_type_list.append(CommonListItem(seed_model[f'{item[0]}'],item[1]).__dict__) # # 初始化未添加的内容 # d_map = map(int,list(set(sm_keys_list).difference(set(temp_keys_list)))) # d_set = sorted(list(d_map)) # for i in d_set: # seed_type_list.insert(sm_keys_list.index(f'{i}'),CommonListItem(seed_model[f'{i}'],0).__dict__) seed_type_list = mysql_init_data(db_data,seed_model,CommonListItem) data['seed_type_list'] = seed_type_list if len(seed_type_list) > 0: redis_session.set_redis_str(data,r_key, 60) pass except Exception as e: res.error(Error.SERVER_EXCEPTION) logger.error(e) pass session.close() res.data = data return res
def temp_wt_group_dist(dtype: int, res: ResponseBase): data = {'temp_wtg_list': [],'mean_list':[]} r_key = f'temp_wtg_list_{dtype}' session = mysql_session.session() try: if redis_session.exists(r_key): data = redis_session.get_redis_str(r_key) pass else: # 查询数据库 temp_wtg_list = [] mean_list = [] for i in temp_model.keys(): condition = [] condition.append(TempCraft.gmt_update >= get_startdate(dtype)) condition.append(TempCraft.weld_type == int(i)) db_data = session.query(TempCraft.weld_wt,TempCraft.weld_type).filter(and_(*condition)).all() if len(db_data): l = np.array(db_data)[:,0] # mean_list.append({'type':temp_model[i],'mean':np.mean(l),'count':len(l)}) cso = CommonSticOp(l) cso.get_dist(interv=1) for item in cso.result: temp_wtg_list.append(GroupListItem(temp_model[i],item[0],item[1]).__dict__) data['temp_wtg_list'] = temp_wtg_list # data['mean_list'] = mean_list if len(temp_wtg_list) > 0 and len(mean_list) > 0: # redis_session.set_redis_str(data,r_key, 10) redis_session.set_redis_str(data,r_key,gr_sec(0)) pass except Exception as e: res.error(Error.SERVER_EXCEPTION) logger.error(e) pass session.close() res.data = data return res
def server_state(server_ip: str, res: ResponseBase): data = {'gpu_info': [], 'memory_info': {}, 'disk_info': {}, 'cpu_info': {}} r_key = f'server_state_{server_ip}' try: if redis_session.exists(r_key): data = redis_session.get_redis_str(r_key) pass else: addr = 'http://{}:5000/server_status'.format(server_ip) resp = s_reqs.get(addr, timeout=5) res_obj = dict2obj(resp.json()) data['cpu_info'] = CpuInfo(res_obj.cpu_info).__dict__ data['memory_info'] = MemoryInfo(res_obj.memory_info).__dict__ data['disk_info'] = DiskInfo(res_obj.disk_info).__dict__ for item in res_obj.gpu_info: data['gpu_info'].append(GpuInfo(item).__dict__) redis_session.set_redis_str(data, r_key, 31) res.data = data except Exception as e: res.error(Error.SERVER_EXCEPTION) # logger.error(e) pass return res.__dict__
def temp_ot(dtype: int, res: ResponseBase): data = {'temp_ot_list':[]} r_key = f'temp_ot_list_{dtype}' session = mysql_session.session() try: if redis_session.exists(r_key): data = redis_session.get_redis_str(r_key) pass else: temp_ot_list = [] for i in temp_model.keys(): condition = [] condition.append(TempCraft.gmt_update >= get_startdate(dtype)) condition.append(TempCraft.weld_type == int(i)) db_data = session.query(TempCraft.weld_wt,TempCraft.weld_type).filter(and_(*condition)).all() # 计算超时 if len(db_data)>0: l = np.array(db_data)[:,0] rest = calculate_ot(l,2) temp_ot_list.append(GroupListItem('超时',temp_model[i],rest[0]).__dict__) temp_ot_list.append(GroupListItem('未超时',temp_model[i],rest[1]).__dict__) else: temp_ot_list.append(GroupListItem('超时',temp_model[i],0).__dict__) temp_ot_list.append(GroupListItem('未超时',temp_model[i],0).__dict__) data['temp_ot_list'] = temp_ot_list if len(temp_ot_list) > 0: redis_session.set_redis_str(data,r_key, 60) pass pass except Exception as e: res.error(Error.SERVER_EXCEPTION) logger.error(e) pass session.close() res.data = data return res
def online_fur(res: ResponseBase): session = mysql_session.session() data = {'online_list': []} r_key = 'online_list' try: if redis_session.exists(r_key): data = redis_session.get_redis_str(r_key) pass else: db_data = session.query( FurnaceList.furnace_state, func.count('*').label("count")).filter( FurnaceList.furnace_state < 99).group_by( FurnaceList.furnace_state).order_by( FurnaceList.furnace_state).all() # dm_keys_list = list(dict_model.keys()) # temp_keys_list = [] # for item in db_data: # temp_keys_list.append(f'{item[0]}') # data.online_list.append(CommonListItem(dict_model[f'{item[0]}'], item[1]).__dict__) # d_map = map(int,list(set(dm_keys_list).difference(set(temp_keys_list)))) # d_set = sorted(list(d_map)) # for i in d_set: # data.online_list.insert(dm_keys_list.index(f'{i}'),CommonListItem(dict_model[f'{i}'],0).__dict__) online_list = mysql_init_data(db_data, dict_model, CommonListItem) data['online_list'] = online_list if len(online_list) > 0: redis_session.set_redis_str(data, r_key, 60) pass except Exception as e: res.error(Error.SERVER_EXCEPTION) logger.error(e) pass session.close() res.data = data return res.__dict__