tableWidgetDispaly_66.py 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524
  1. from unitls.baseFunction import TuplefindInList,TuplefindInList11,TuplefindInList3
  2. from .flightDB import flightDB
  3. from unitls.LogerinTxt import app_logger
  4. from .getSortFlightdata import getSortFlightdata
  5. from .waringMessageID import waringMessageID
  6. import concurrent.futures
  7. def tableWidgetDispaly(fdb:flightDB,selectedtime,date):#1,昨天。2今天3明天4其他
  8. try:
  9. tableWidgetDispalydata = {}
  10. nowDayStr = selectedtime
  11. sorttable = getSortFlightdata(fdb, selectedtime, "sortFlight")
  12. TaskFlightinfoAlldata = fdb.getAlldata('TaskFlightinfo{}'.format(nowDayStr))
  13. flightStsDataAll = fdb.getAlldata('flightsts{}'.format(nowDayStr))
  14. peopleScheduleDataAll = fdb.getAlldata("peopleSchedule{}".format(nowDayStr))
  15. workjobDataAll = fdb.getAlldata('workjob')
  16. tasklistall = fdb.getAlldata('TaskList{}'.format(nowDayStr))
  17. flightSearchALl= fdb.sort_queryTable2('*','FlightSearch{}'.format(nowDayStr),"FLIGHT_ID !=''",'ACNO','ASC','STD','ASC')
  18. waringMessageIDs = waringMessageID(fdb)
  19. executor = concurrent.futures.ThreadPoolExecutor()
  20. all_task = []
  21. for i in range(len(sorttable)):
  22. all_task.append(executor.submit(functionDisaplay, sorttable[i],i, TaskFlightinfoAlldata,workjobDataAll, flightStsDataAll,peopleScheduleDataAll,waringMessageIDs,tasklistall,flightSearchALl))
  23. for future in concurrent.futures.as_completed(all_task):
  24. data = future.result()
  25. tableWidgetDispalydata.update(data)
  26. #t8 = datetime.datetime.now()
  27. #print(f'【航班刷新】【处理数据】:{t8 - t7}')
  28. newdic = {"A": '"{}"'.format(tableWidgetDispalydata)}
  29. if date == "1":
  30. fdb.upDateItem("display", newdic, "ID = '1'")
  31. elif date == "2":
  32. fdb.upDateItem("display", newdic, "ID = '2'")
  33. elif date == "3":
  34. fdb.upDateItem("display", newdic, "ID = '3'")
  35. #t9 = datetime.datetime.now()
  36. #print(f'【航班刷新】【保存数据】:{t9 - t8}')
  37. #print(f'【航班刷新】【总时间】:{t9 - t1}')
  38. return tableWidgetDispalydata
  39. except Exception as e:
  40. #dingding_alert(traceback.format_exc())
  41. app_logger.log_error(e)
  42. def functionDisaplay(row,rowNum,TaskFlightinfoAlldata, workjobDataAll, flightStsDataAll,peopleScheduleDataAll, waringMessageID,TaskListAll,flightSearchALl):
  43. dic=["0","1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23",
  44. "24","25","26","27","28","29","30","31","32","33","34","35","36","37","38","39","40","41","42","43","44",
  45. "45","46","47","48","49","50","51","52","53","54","55","56","57","58","59","60","61","62","63","64","65"]
  46. TaskFlightinfo = TuplefindInList(TaskFlightinfoAlldata,row[1])
  47. infos="仅支持查询川航航班"
  48. dq = "--"
  49. dqxq = "电签工卡不适用"
  50. if TaskFlightinfo[21] and ('3U' in TaskFlightinfo[21] or 'CSC' in TaskFlightinfo[21]):
  51. singleflightsearch = TuplefindInList11(flightSearchALl, TaskFlightinfo[1],2)
  52. for info in singleflightsearch:
  53. if info[8] != "":
  54. time1="[实]"+info[8][-8:-3]
  55. elif info[7] != "":
  56. time1="[预]"+info[7][-8:-3]
  57. else:
  58. time1="[计]"+info[6][-8:-3]
  59. if info[11] !="":
  60. time2="[实]"+info[11][-8:-3]
  61. elif info[10] != "":
  62. time2="[预]"+info[10][-8:-3]
  63. else:
  64. time2="[计]"+info[9][-8:-3]
  65. mesg=info[4]+time1+"--"+time2+info[5]
  66. infos = mesg if infos == "仅支持查询川航航班" else infos+"\n"+mesg
  67. tasksts = TuplefindInList3(TaskListAll, TaskFlightinfo[0], 0, 8)
  68. if TaskFlightinfo[3] == "AP":
  69. dq = "√" if 'P-PRE-FLIGHT' in str(tasksts) and 'DEPARTURE-SERVICE' in str(tasksts) else ""
  70. if 'P-PRE-FLIGHT' in str(tasksts) and 'DEPARTURE-SERVICE' in str(tasksts):
  71. dqxq="航前工卡√\n送机勤务工卡√"
  72. elif 'P-PRE-FLIGHT' in str(tasksts):
  73. dqxq="航前工卡√\n送机勤务工卡X"
  74. elif 'DEPARTURE-SERVICE' in str(tasksts):
  75. dqxq="航前工卡X\n送机勤务工卡√"
  76. else:
  77. dqxq = "航前工卡X\n送机勤务工卡X"
  78. elif TaskFlightinfo[3] == "TR" and "接" in row[3]:
  79. dq = "√" if 'ARRIVAL-SERVICE' in str(tasksts) else ""
  80. dqxq = "接机勤务工卡√" if 'ARRIVAL-SERVICE' in str(tasksts) else "接机勤务工卡X"
  81. elif TaskFlightinfo[3] in ["TAF","停场"]:
  82. dq = "--"
  83. dqxq= "暂无完成的电签工卡"
  84. elif TaskFlightinfo[3] == "TR" and "送" in row[3]:
  85. dq = "√" if 'P-TRANSIT' in str(tasksts) and 'DEPARTURE-SERVICE' in str(tasksts) else ""
  86. if 'P-TRANSIT' in str(tasksts) and 'DEPARTURE-SERVICE' in str(tasksts):
  87. dqxq = "短停工卡√\n送机勤务工卡√"
  88. elif 'P-TRANSIT' in str(tasksts):
  89. dqxq = "短停工卡√\n送机勤务工卡X"
  90. elif 'DEPARTURE-SERVICE' in str(tasksts):
  91. dqxq ="短停工卡X\n送机勤务工卡√"
  92. else:
  93. dqxq = "短停工卡X\n送机勤务工卡X"
  94. elif TaskFlightinfo[3] == "AF":
  95. dq = "√" if 'P-POST-FLIGHT' in str(tasksts) and 'ARRIVAL-SERVICE' in str(tasksts) else ""
  96. if 'P-POST-FLIGHT' in str(tasksts) and 'ARRIVAL-SERVICE' in str(tasksts):
  97. dqxq = "航后工卡√\n接机勤务工卡√"
  98. elif 'P-POST-FLIGHT' in str(tasksts):
  99. dqxq = "航后工卡√\n接机勤务工卡X"
  100. elif 'ARRIVAL-SERVICE' in str(tasksts):
  101. dqxq = "航后工卡X\n接机勤务工卡√"
  102. else:
  103. dqxq = "航后工卡X\n接机勤务工卡X"
  104. #print(tasksts)
  105. #print(singleflightsearch)
  106. e = ""
  107. F = ""
  108. if TaskFlightinfo != None and TaskFlightinfo[16] != "":
  109. e = "保留"
  110. if TaskFlightinfo != None :
  111. takinfo = TuplefindInList(workjobDataAll, TaskFlightinfo[0])
  112. JWA = TaskFlightinfo[10]
  113. JWB = TaskFlightinfo[11]
  114. if JWA =="" and JWB !="":
  115. JWA=JWB
  116. elif JWB =="" and JWA !="":
  117. JWB=JWA
  118. if TaskFlightinfo[18] != "":
  119. #takinfo = fdb.queryTabel('workjob', '*', "任务编号= '%s'" % TaskFlightinfo[0][21])
  120. F = "工作包无法正常获取请通过AMRO人工查询"
  121. if takinfo != None and takinfo[4] != "":
  122. F = takinfo[4] + "\n<+++++++++++++++++++++++++++++++++++++++++>\n" + takinfo[6] + "\n<+++++++++++++++++++++++++++++++++++++++++>\n" + takinfo[7]
  123. elif takinfo != None:
  124. F = "工作包暂未获取请点击右键工作包查询后再查看"
  125. else:
  126. JWA =""
  127. JWB =""
  128. wx_people = ""
  129. fx_people = ""
  130. ecsj_people = ""
  131. ta_td = ""
  132. type31 = ""
  133. if TaskFlightinfo != None:
  134. wx_people = TaskFlightinfo[12]
  135. fx_people = TaskFlightinfo[13]
  136. ecsj_people = TaskFlightinfo[19]
  137. ta_td = TaskFlightinfo[9]
  138. type31 = TaskFlightinfo[3]
  139. flightstsdata = TuplefindInList(flightStsDataAll, row[1]) if TuplefindInList(flightStsDataAll, row[1]) != None else ["", "","", "", "", "","", "", "", "","", "", "", ""]
  140. jjdw = "√" if flightstsdata[3] != "" else ""
  141. FX = "√" if flightstsdata[4] != "" else ""
  142. XJ = "√" if flightstsdata[5] != "" else ""
  143. ESDW = "√" if flightstsdata[7] != "" else ""
  144. if TaskFlightinfo[3] == "AF":
  145. postion = str(TaskFlightinfo[23]).split("</br>")[0]
  146. elif TaskFlightinfo[3] == "TR" or TaskFlightinfo[3] == "TAF":
  147. postion = str(TaskFlightinfo[23]).replace("</br>天府","").replace("</br>成都天府","")
  148. elif "</br>" in str(TaskFlightinfo[23]):
  149. postion = str(TaskFlightinfo[23]).split("</br>")[1]
  150. else:
  151. postion = "无信息"
  152. if TaskFlightinfo[4] != "" and (TaskFlightinfo[8] == "" or TaskFlightinfo[30] == ""): #如果sta不为空,且eta或flying为空,显示sta
  153. a = TaskFlightinfo[4][-8:-3]
  154. else:
  155. a=""
  156. if TaskFlightinfo[6] != "" : #当ata不为空显示ata,eta不为空显示eta否则为空
  157. b = TaskFlightinfo[6][-8:-3]
  158. elif TaskFlightinfo[8] != "":
  159. b = TaskFlightinfo[8][-8:-3]
  160. else:
  161. b = ''
  162. if TaskFlightinfo[7] != "" :
  163. c = '[实]' + TaskFlightinfo[7][-8:-3]
  164. elif TaskFlightinfo[5] != "":
  165. c = '[预]' + TaskFlightinfo[5][-8:-3]
  166. else:
  167. c = ''
  168. QColorList = ['black', 'white', '#F3ECD9', '#BAD1D1', '#DDE2E3', '#647277', '#00FFFF', 'blue']
  169. #QColorList = ['black', 'white', '#F3ECD9', '#BAD1D1', '#DDE2E3', '#647277', 'red', 'blue']
  170. waringMessageIDs = waringMessageID
  171. if str(row[1]) in str(waringMessageIDs["通用警告"]):
  172. color_code = QColorList[6]
  173. color_code1 = QColorList[0]
  174. color_code2 = QColorList[1]
  175. color_code3 = QColorList[1]
  176. elif row[3] == "短停接" and (str(row[1]) in str(waringMessageIDs["到位警告"]) or str(row[1]) in str(waringMessageIDs["ETA"]) or str(row[1]) in str(waringMessageIDs["BAY_2"])):
  177. color_code = QColorList[6]
  178. color_code1 = QColorList[0]
  179. color_code2 = QColorList[1]
  180. color_code3 = QColorList[1]
  181. elif row[3] == "短停送" and (str(row[1]) in str(waringMessageIDs["二送警告"]) or str(row[1]) in str(waringMessageIDs["TD"])):
  182. color_code = QColorList[6]
  183. color_code1 = QColorList[0]
  184. color_code2 = QColorList[1]
  185. color_code3 = QColorList[1]
  186. elif row[5] == "4":
  187. color_code = QColorList[5]
  188. color_code1 = QColorList[1]
  189. color_code2 = QColorList[1]
  190. color_code3 = QColorList[1]
  191. elif row[5] == "3":
  192. color_code = QColorList[3]
  193. color_code1 = QColorList[0]
  194. color_code2 = QColorList[0]
  195. color_code3 = QColorList[0]
  196. elif row[5] == "2":
  197. color_code = QColorList[2]
  198. color_code1 = QColorList[0]
  199. color_code2 = QColorList[0]
  200. color_code3 = QColorList[0]
  201. elif row[5] == "1":
  202. if (rowNum + 2) % 2 == 0:
  203. color_code = QColorList[4]
  204. else:
  205. color_code = QColorList[1]
  206. color_code1 = QColorList[0]
  207. color_code2 = QColorList[6]
  208. color_code3 = QColorList[7]
  209. findid = row[0] + "-A"
  210. peopleSchedule = TuplefindInList(peopleScheduleDataAll, findid)
  211. if peopleSchedule != None:
  212. fx = peopleSchedule[3]
  213. qw1 = peopleSchedule[4]
  214. qw2 = peopleSchedule[5]
  215. g1 = peopleSchedule[6]
  216. g2 = peopleSchedule[7]
  217. g3 = peopleSchedule[8]
  218. fj = str(peopleSchedule[9])
  219. else:
  220. fx = ""
  221. qw1 = ""
  222. qw2 = ""
  223. g1 = ""
  224. g2 = ""
  225. g3 = ""
  226. fj = ""
  227. if "随机离港" in str(fj):
  228. SJDW = "√" if flightstsdata[6] != "" else ""
  229. else:
  230. SJDW ="--"
  231. ggy = "【高高原】" if TaskFlightinfo[29] == "Y" else ""
  232. JBRY = "交班人员:" + TaskFlightinfo[37] if TaskFlightinfo[37] != "" else "无交班人员"
  233. if TaskFlightinfo[3] == "AF":
  234. item_dic = {"1": rowNum,
  235. "3": TaskFlightinfo[1],
  236. "4": TaskFlightinfo[1]+"\n"+TaskFlightinfo[21],
  237. "5": TaskFlightinfo[26],
  238. "6": TaskFlightinfo[26]+"\n"+TaskFlightinfo[25],
  239. "7": TaskFlightinfo[25],
  240. "8": JWA,
  241. "9": TaskFlightinfo[21],
  242. "11": a,
  243. "13": b,
  244. "15": "--",
  245. "17": TaskFlightinfo[24],
  246. "18": JWA,
  247. "19": row[3],
  248. "21": fx,
  249. "23": qw1,
  250. "25": qw2,
  251. "27": g1,
  252. "29": g2,
  253. "31": g3,
  254. "33": jjdw,
  255. "35": "--",
  256. "37": "--",
  257. "38":dq,
  258. "62":infos,
  259. "40":dqxq,
  260. "41": "--",
  261. "43": e,
  262. "45": F,
  263. "47": postion + ggy,
  264. "49": wx_people, # flightinfodata[22],
  265. "50":JBRY,
  266. "51": fx_people, # flightinfodata[23],
  267. "53": row[1],
  268. "55": row[1],
  269. "57": ta_td,
  270. "59": type31,
  271. "61": fj,
  272. "99": color_code,
  273. "101": color_code1,
  274. "102": color_code2,
  275. "103": color_code3,
  276. "109": row[5]
  277. }
  278. elif TaskFlightinfo[3] == "停场":
  279. item_dic = {"1": rowNum,
  280. "3": TaskFlightinfo[1],
  281. "4": TaskFlightinfo[1]+"\n"+TaskFlightinfo[21],
  282. "5": TaskFlightinfo[26],
  283. "6": TaskFlightinfo[26]+"\n"+TaskFlightinfo[25],
  284. "7": TaskFlightinfo[25],
  285. "8": TaskFlightinfo[10],
  286. "9": "--",
  287. "11": a,
  288. "13": "--",
  289. "15": "--",
  290. "17": "--",
  291. "18": TaskFlightinfo[10],
  292. "19": row[3],
  293. "21": fx,
  294. "23": qw1,
  295. "25": qw2,
  296. "27": g1,
  297. "29": g2,
  298. "31": g3,
  299. "33": "--",
  300. "35": "--",
  301. "37": "--",
  302. "39": "--",
  303. "41": "--",
  304. "43": "--",
  305. "45": "--",
  306. "47": "停场",
  307. "49": "--", # flightinfodata[22],
  308. "50":JBRY,
  309. "51": "--", # flightinfodata[23],
  310. "53": row[1],
  311. "55": "TSK",
  312. "57": "--",
  313. "59": "--",
  314. "61": fj,
  315. "99": color_code,
  316. "101": color_code1,
  317. "102": color_code2,
  318. "103": color_code3,
  319. "109": row[5]
  320. }
  321. elif TaskFlightinfo[3] == "AP":
  322. item_dic = {"1": rowNum,
  323. "3": TaskFlightinfo[1],
  324. "4": TaskFlightinfo[1]+"\n"+TaskFlightinfo[21],
  325. "5": TaskFlightinfo[26],
  326. "6": TaskFlightinfo[26]+"\n"+TaskFlightinfo[25],
  327. "7": TaskFlightinfo[25],
  328. "8": JWB,
  329. "9": TaskFlightinfo[21],
  330. "11": "",
  331. "13": "",
  332. "15": c,
  333. "17": TaskFlightinfo[24],
  334. "18": JWB,
  335. "19": row[3],
  336. "21": fx,
  337. "23": qw1,
  338. "25": qw2,
  339. "27": g1,
  340. "29": g2,
  341. "31": g3,
  342. "33": jjdw,
  343. "35": FX,
  344. "37": XJ,
  345. "38":dq,
  346. "62":infos,
  347. "40":dqxq,
  348. "41": SJDW,
  349. "43": e,
  350. "45": F,
  351. "47": postion + ggy,
  352. "49": wx_people, # flightinfodata[22],
  353. "50":JBRY,
  354. "51": fx_people, # flightinfodata[23],
  355. "53": row[1],
  356. "55": row[1],
  357. "57": ta_td,
  358. "59": type31,
  359. "61": fj,
  360. "99": color_code,
  361. "101": color_code1,
  362. "102": color_code2,
  363. "103": color_code3,
  364. "109": row[5]
  365. }
  366. elif (TaskFlightinfo[3] == "TR" or TaskFlightinfo[3] == "TAF") and (row[3] == "短停接" or row[3] == "特后前接"):
  367. item_dic = {"1": rowNum,
  368. "3": TaskFlightinfo[1],
  369. "4": TaskFlightinfo[1]+"\n"+TaskFlightinfo[21],
  370. "5": TaskFlightinfo[26],
  371. "6": TaskFlightinfo[26]+"\n"+TaskFlightinfo[25],
  372. "7": TaskFlightinfo[25],
  373. "8": JWA,
  374. "9": TaskFlightinfo[21],
  375. "11": a,
  376. "13": b,
  377. "15": c,
  378. "17": TaskFlightinfo[24],
  379. "18": JWA,
  380. "19": row[3],
  381. "21": fx,
  382. "23": qw1,
  383. "25": qw2,
  384. "27": g1,
  385. "29": g2,
  386. "31": g3,
  387. "33": jjdw,
  388. "35": FX,
  389. "37": "--",
  390. "38":dq,
  391. "62":infos,
  392. "40":dqxq,
  393. "41": SJDW,
  394. "43": e,
  395. "45": F,
  396. "47": postion + ggy,
  397. "49": wx_people, # flightinfodata[22],
  398. "50":JBRY,
  399. "51": fx_people, # flightinfodata[23],
  400. "53": row[1],
  401. "55": row[1],
  402. "57": ta_td,
  403. "59": type31,
  404. "61": fj,
  405. "99": color_code,
  406. "101": color_code1,
  407. "102": color_code2,
  408. "103": color_code3,
  409. "109": row[5]
  410. }
  411. elif (TaskFlightinfo[3] == "TR" or TaskFlightinfo[3] == "TAF") and (row[3] == "短停送" or row[3] == "特后前送"):
  412. item_dic = {"1": rowNum,
  413. "3": TaskFlightinfo[1],
  414. "4": TaskFlightinfo[1]+"\n"+TaskFlightinfo[21],
  415. "5": TaskFlightinfo[26],
  416. "6": TaskFlightinfo[26]+"\n"+TaskFlightinfo[25],
  417. "7": TaskFlightinfo[25],
  418. "8": JWA,
  419. "9": TaskFlightinfo[21],
  420. "11": a,
  421. "13": b,
  422. "15": c,
  423. "17": TaskFlightinfo[24],
  424. "18": JWA,
  425. "19": row[3],
  426. "21": fx,
  427. "23": qw1,
  428. "25": qw2,
  429. "27": g1,
  430. "29": g2,
  431. "31": g3,
  432. "33": ESDW,
  433. "35": FX,
  434. "37": "--",
  435. "38":dq,
  436. "62":infos,
  437. "40":dqxq,
  438. "41": SJDW,
  439. "43": e,
  440. "45": F,
  441. "47": postion + ggy,
  442. "49": ecsj_people, # flightinfodata[22],
  443. "50":JBRY,
  444. "51": fx_people, # flightinfodata[23],
  445. "53": row[1],
  446. "55": row[1],
  447. "57": ta_td,
  448. "59": type31,
  449. "61": fj,
  450. "99": color_code,
  451. "101": color_code1,
  452. "102": color_code2,
  453. "103": color_code3,
  454. "109": row[5]
  455. }
  456. else:
  457. item_dic = {"1": rowNum,
  458. "3": TaskFlightinfo[1],
  459. "4": TaskFlightinfo[1]+"\n"+TaskFlightinfo[21],
  460. "5": TaskFlightinfo[26],
  461. "6": TaskFlightinfo[26]+"\n"+TaskFlightinfo[25],
  462. "7": TaskFlightinfo[25],
  463. "8": JWA,
  464. "9": TaskFlightinfo[21],
  465. "11": a,
  466. "13": b,
  467. "15": c,
  468. "17": TaskFlightinfo[24],
  469. "18": JWA,
  470. "19": row[3],
  471. "21": fx,
  472. "23": qw1,
  473. "25": qw2,
  474. "27": g1,
  475. "29": g2,
  476. "31": g3,
  477. "33": jjdw,
  478. "35": FX,
  479. "37": "--",
  480. "38":dq,
  481. "62":infos,
  482. "40": dqxq,
  483. "41": SJDW,
  484. "43": e,
  485. "45": F,
  486. "47": postion + ggy,
  487. "49": wx_people, # flightinfodata[22],
  488. "50": JBRY,
  489. "51": fx_people, # flightinfodata[23],
  490. "53": row[1],
  491. "55": row[1],
  492. "57": ta_td,
  493. "59": type31,
  494. "61": fj,
  495. "99": color_code,
  496. "101": color_code1,
  497. "102": color_code2,
  498. "103": color_code3,
  499. "109": row[5]
  500. }
  501. for i in dic:
  502. if i not in item_dic.keys():
  503. item_dic[i] = ''
  504. #tableWidgetDispalydata[rowNum] = item_dic
  505. #rowNum += 1
  506. # print(rowNum)
  507. # print(item_dic)
  508. # print({rowNum:item_dic})
  509. return {rowNum:item_dic}