123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465 |
- import ast
- import pickle
- from bs4 import BeautifulSoup
- import amro_progress
- #张翔B
- import os
- import time
- import random
- date_list =['2023-02-01', '2023-02-02', '2023-02-05', '2023-02-04', '2023-02-08', '2023-02-09', '2023-02-10',
- '2023-02-12', '2023-02-13', '2023-02-14', '2023-02-16', '2023-02-17', '2023-02-18', '2023-02-20',
- ]
- part1 =['陈尚',
- '石常林',
- '谭文强',
- '张祖文',
- '林世鹏',
- '徐培昊',
- '张杨第',
- '肖兴虎',
- '李南',#李南
- '王瑁',
- '郭子豪',
- '宋朱陶',
- '李洪洋',
- '胡陈文焕',
- '张潇爽',
- '那超']
- #任轩宇
- part2 =['周凯',
- '雷一鸣',
- '符颖奇',
- '谢明杰',
- '谢友为',
- '叶林青',
- '陈浠平',
- '王文智',
- '杨宜欣',
- '权志勤',
- '陈思嘉B',
- '陶彦桥',
- '吴昕阳',
- '李俊峰',
- '李成斌',
- '张礼雍']
- #于冬雪
- part3 =[
- '黄立博',
- '孙伟C',
- '任悍',
- '张良', #张良A
- '孙胜涛',
- '金星宇',
- '滕昭科',
- '陶柏旭',
- '谢德成',
- '雷扬',
- '杨国晟',
- '王勇I',
- '王思捷',
- '汤其秋',
- '张路平',
- ]
- nameAll = part1+part2+part3
- def getAllData(path):
- tasktype = {"AP": "航前", "TR": "短停", "AF": "航后"}
- keyList = ['WXRY', 'TA', 'TD', 'FLIGHT_NO', 'ACTYPE', 'ARR_CH1', 'DEP_CH1', 'BAY', 'FXRY', 'ENG_TYPE', 'ACNO',
- 'TASKTYPE', 'REMARK_BUSINESS']
- with open(path,'r', encoding='utf-8') as f:
- text = f.read()
- data = ast.literal_eval(text)
- uselly = data['data']
- dic = {}
- number = 0
- for key in uselly:
- number +=1
- bay = 'BAY'
- for kl in keyList:
- if kl not in key:
- if kl == bay:
- # print(key)
- bay = 'BAY_2'
- if key[bay] == '':
- bay = 'BAY_1'
- # print(bay)
- else:
- key[kl] = ''
- # print(key[kl])
- try:
- dic[number] = {'FX':'{},{}'.format(key['FXRY'],key['WXRY']),'bay':'{}'.format(key[bay]),
- 'bnum':'{}'.format(key['ACNO']), 'tasktype':'{}'.format(tasktype[key['TASKTYPE']]),
- 'MODIFY_TIME':'{}'.format(key['MODIFY_TIME'])}
- except KeyError as e:
- print(e)
- #print(dic)
- return dic
- def dataprocess():
- dic_list = []
- new_data = []
- for _, _, name in os.walk('./hb'):
- for i in name:
- #print(os.path.join('hb', i))
- dic = getAllData(os.path.join('hb', i))
- dic_list.append(dic)
- for dic in dic_list:
- #print(dic)
- flag = 0
- for key in dic:
- subdata = ['','','','']
- # print(dic[key])
- lr = ''
- ltype = ''
- lbay = ''
- lbnum = ''
- ltime = ''
- for i in dic[key]:
- if i == 'FX':
- flag = 0
- nameList = dic[key][i].split(',')
- for n in nameList:
- if n in nameAll:
- flag = 1
- else:
- flag = 0
- if flag == 1:
- if i == 'FX':
- lr = dic[key][i]
- elif i == 'tasktype':
- ltype = dic[key][i]
- elif i == 'bnum':
- lbnum = "B-{}".format(dic[key][i])
- elif i == 'MODIFY_TIME':
- ntime = time.strptime(dic[key][i], "%Y-%m-%d %H:%M:%S")
- ltime="{}.{}.{}".format(ntime[0], ntime[1], ntime[2])
- else:
- lbay = dic[key][i]
- if ltime!='':
- if len(lbay)>2 and (lbay[0]=='1' or lbay[0]=='2' or lbay[0]=='6'):
- ldic={}
- ldic['时间']=ltime
- ldic['类型'] = ltype
- ldic['人员'] = lr
- ldic['机号'] = lbnum
- ldic['机位'] = lbay
- new_data.append(ldic)
- #print("时间:{},类型:{},人员:{},机号:{},机位:{}".format(ltime,ltype,lr,lbnum,lbay))
- #print(new_data)
- return new_data
- def chooseData():
- hq = []
- chq = []
- dt = []
- cdt = []
- hh = []
- chh = []
- data = dataprocess()
- for i in data:
- if i['类型'] == '航前':
- hq.append(i)
- if i['类型'] == '航后':
- hh.append(i)
- if i['类型'] == '短停':
- dt.append(i)
- print(len(hq),len(dt),len(hh))
- if len(hq)<10:
- chq=hq
- else:
- for i in range(10):
- num = random.randint(1,len(hq)-1)
- #print(num)
- #print(hq[num])
- chq.append(hq[num])
- if len(dt)<10:
- cdt = dt
- else:
- for i in range(10):
- num = random.randint(1,len(dt)-1)
- #print(num)
- #print(dt[num])
- cdt.append(dt[num])
- if len(hh)<10:
- chh = hh
- else:
- for i in range(10):
- num = random.randint(1,len(hh)-1)
- #print(num)
- #print(hh[num])
- chh.append(hh[num])
- # print(chq)
- # print(len(chq))
- return chq,cdt,chh
- def getDataFromAmro(*args):
- if args!=():
- AMRO = args[0]
- else:
- AMRO = amro_progress.amro()
- AMRO.openAmro()
- AMRO.openMaintitle("航线维修")
- # AMRO.openSubTitle("工作指令(WO)管理")
- AMRO.openSubTitle("航班动态")
- data_all_list = []
- data_list = AMRO.getFlightData()
- data_all_list.append(data_list)
- print(data_all_list)
- # for i in range(len(date_list)):
- #
- # with open('flightDate{}.pkl'.format(date_list[i]), 'wb') as f:
- # pickle.dump(data_all_list[i], f, pickle.HIGHEST_PROTOCOL)
- def searchData(amro):
- data = amro.searchFlight()
- print('searchFLight---')
- print(data)
- return data
- def loadData(*args):
- if args != ():
- with open('./static/flightdata/flight{}.txt'.format(args[0]),'rb') as f:
- flightDataContent = f.read().decode('utf-8')
- else:
- with open('./static/flightdata/flight{}.txt'.format(time.strftime("%Y%m%d", time.localtime())),'rb')as f:
- flightDataContent = f.read().decode('utf-8')
- soup = BeautifulSoup(flightDataContent, "html5lib")
- flight_list = []
- for idx, tr in enumerate(soup.find_all('tr')):
- tds = tr.find_all('td')
- temp_list = []
- for i in tds:
- try:
- temp = i.contents[0].contents[0].contents[0]
- except:
- try:
- temp = i.contents[0].contents[0]
- except:
- temp = ""
- temp_list.append(temp)
- flight_list.append({
- "机号": temp_list[0],
- "机型": temp_list[1],
- "发动机": temp_list[2],
- "航班号": temp_list[3],
- "进港起飞": temp_list[4],
- "进港到达时间": temp_list[5],
- "航站": temp_list[6],
- "离港起飞时间": temp_list[7],
- "离港到达": temp_list[8],
- "进港机位": temp_list[9],
- "离港机位": temp_list[10],
- "保留": temp_list[11],
- "任务类型": temp_list[12],
- "随机": temp_list[13],
- "维修人员": temp_list[14],
- "放行人员": temp_list[15],
- "工作状态": temp_list[16],
- "工作状态时间": temp_list[17],
- "重要航班": temp_list[18],
- "备降/返航": temp_list[19],
- "延误": temp_list[20],
- "附加信息": temp_list[21],
- })
- print(flight_list)
- # print(flight_list)
- # print(data_all)
- return flight_list
- def changedata(flight_list):
- data = {}
- for i in flight_list:
- if i['离港起飞时间'].find('实') == -1:
- if i['任务类型'] == '航前':
- if i['离港机位'] !='':
- if i['离港机位'] in data:
- print('航前重复机位:{}'.format(i['离港机位']))
- data[i['离港机位']]={"bnum":i['机号'], 'actype':i['机型'], 'engtype':i["发动机"],
- 'tasktype':i['任务类型'], 'timein':i['进港到达时间'],'timeout':i['离港起飞时间'],
- 'ftnum':i['航班号'], 'pos1':i['进港起飞'], 'pos2':i["离港到达"],
- 'FX':i["放行人员"], 'WX':i["维修人员"], 'remark':i["附加信息"]}
- else:
- if i['进港机位'] != '':
- if i['进港机位'] in data:
- print('重复机位:{}'.format(i['进港机位']))
- data[i['进港机位']] = {"bnum": i['机号'], 'actype': i['机型'], 'engtype': i["发动机"],
- 'tasktype': i['任务类型'], 'timein': i['进港到达时间'], 'timeout': i['离港起飞时间'],
- 'ftnum': i['航班号'], 'pos1': i['进港起飞'], 'pos2': i["离港到达"],
- 'FX': i["放行人员"], 'WX': i["维修人员"], 'remark': i["附加信息"]}
- print(data)
- for key in data:
- print(key,data[key])
- return data
- def changeAlldata(flight_list):
- dic = {}
- number = 0
- for i in flight_list:
- number +=1
- if i["任务类型"]=='航前':
- dic[number] = {'bay':'{}'.format(i["离港机位"]),'bnum': '{}'.format(i["机号"]),
- 'actype': '{}'.format(i["机型"]), 'engtype': '{}'.format(i["发动机"]),
- 'tasktpye': '{}'.format(i["任务类型"]),'timein':'{}'.format(i['进港到达时间']),
- 'timeout':'{}'.format(i['离港起飞时间']), 'ftnum':'{}'.format(i['航班号']),
- 'pos1':'{}'.format(i['进港起飞']),'pos2':'{}'.format(i['离港到达']),'FX':'{}'.format(i['放行人员']),
- 'WX':'{}'.format(i['维修人员']),'remark':'{}'.format(i['附加信息']),
- }
- else:
- dic[number] = {'bay': '{}'.format(i["进港机位"]), 'bnum': '{}'.format(i["机号"]),
- 'actype': '{}'.format(i["机型"]), 'engtype': '{}'.format(i["发动机"]),
- 'tasktpye': '{}'.format(i["任务类型"]), 'timein': '{}'.format(i['进港到达时间']),
- 'timeout': '{}'.format(i['离港起飞时间']), 'ftnum': '{}'.format(i['航班号']),
- 'pos1': '{}'.format(i['进港起飞']), 'pos2': '{}'.format(i['离港到达']), 'FX': '{}'.format(i['放行人员']),
- 'WX': '{}'.format(i['维修人员']), 'remark': '{}'.format(i['附加信息']),
- }
- return dic
- def chooseData2():
- data = loadData()
- flag = 0
- hq = []
- dt = []
- hh = []
- for i in data:
- for ii in i:
- if ii['任务类型'] == '航前':
- wxry = ii['维修人员'].split(',')
- fxry = ii['放行人员'].split(',')
- ry = wxry+fxry
- for name in ry:
- if name in nameAll:
- flag =1
- else:
- flag =0
- break
- if flag ==1 :
- hq.append(ii)
- if ii['任务类型'] == '短停':
- wxry = ii['维修人员'].split(',')
- fxry = ii['放行人员'].split(',')
- ry = wxry+fxry
- for name in ry:
- if name in nameAll:
- flag =1
- else:
- flag =0
- break
- if flag ==1 :
- dt.append(ii)
- if ii['任务类型'] == '航后':
- wxry = ii['维修人员'].split(',')
- fxry = ii['放行人员'].split(',')
- ry = wxry+fxry
- for name in ry:
- if name in nameAll:
- flag =1
- else:
- flag =0
- break
- if flag ==1 :
- hh.append(ii)
- print(hq)
- print(len(hq))
- print(dt)
- print(len(dt))
- print(hh)
- print(len(hh))
- return hq, dt, hh
- def selectData():
- hq, dt, hh = chooseData2()
- new_hq = []
- new_hq_pool = []
- new_dt = []
- new_dt_pool = []
- new_hh = []
- new_hh_pool = []
- for i in range(10):
- flag = True
- while flag:
- num = random.randint(1,len(hq)-1)
- if num not in new_hq_pool:
- new_hq_pool.append(num)
- flag = False
- for i in range(10):
- flag = True
- while flag:
- num = random.randint(1, len(dt) - 1)
- if num not in new_dt_pool:
- new_dt_pool.append(num)
- flag = False
- for i in range(10):
- flag = True
- while flag:
- num = random.randint(1, len(hh) - 1)
- if num not in new_hh_pool:
- new_hh_pool.append(num)
- flag = False
- print(new_hq_pool)
- print(new_dt_pool)
- print(new_hh_pool)
- for i in new_hq_pool:
- new_hq.append(hq[i])
- for i in new_dt_pool:
- new_dt.append(dt[i])
- for i in new_hh_pool:
- new_hh.append(hh[i])
- print(new_hq)
- print(new_dt)
- print(new_hh)
- return new_hq, new_dt, new_hh
- if __name__ == '__main__':
- import sys
- #sys.setrecursionlimit(1000000)
- AMRO = amro_progress.amro()
- AMRO.quitWeb()
- searchData(AMRO)
- #selectData()
- #l = loadData()
- #changedata(l)
- for i in range(5):
- time.sleep(10)
- searchData(AMRO)
|