tableWidgetDispaly_66.py 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526
  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', 'red', 'blue']
  169. waringMessageIDs = waringMessageID
  170. if str(row[1]) in str(waringMessageIDs["通用警告"]):
  171. color_code = QColorList[6]
  172. color_code1 = QColorList[1]
  173. color_code2 = QColorList[1]
  174. color_code3 = QColorList[1]
  175. elif row[3] == "短停接" and (
  176. str(row[1]) in str(waringMessageIDs["到位警告"]) or str(row[1]) in str(waringMessageIDs["ETA"]) or str(
  177. row[1]) in str(waringMessageIDs["BAY_2"])):
  178. color_code = QColorList[6]
  179. color_code1 = QColorList[1]
  180. color_code2 = QColorList[1]
  181. color_code3 = QColorList[1]
  182. elif row[3] == "短停送" and (
  183. str(row[1]) in str(waringMessageIDs["二送警告"]) or str(row[1]) in str(waringMessageIDs["TD"])):
  184. color_code = QColorList[6]
  185. color_code1 = QColorList[1]
  186. color_code2 = QColorList[1]
  187. color_code3 = QColorList[1]
  188. elif row[5] == "4":
  189. color_code = QColorList[5]
  190. color_code1 = QColorList[1]
  191. color_code2 = QColorList[1]
  192. color_code3 = QColorList[1]
  193. elif row[5] == "3":
  194. color_code = QColorList[3]
  195. color_code1 = QColorList[0]
  196. color_code2 = QColorList[0]
  197. color_code3 = QColorList[0]
  198. elif row[5] == "2":
  199. color_code = QColorList[2]
  200. color_code1 = QColorList[0]
  201. color_code2 = QColorList[0]
  202. color_code3 = QColorList[0]
  203. elif row[5] == "1":
  204. if (rowNum + 2) % 2 == 0:
  205. color_code = QColorList[4]
  206. else:
  207. color_code = QColorList[1]
  208. color_code1 = QColorList[0]
  209. color_code2 = QColorList[6]
  210. color_code3 = QColorList[7]
  211. findid = row[0] + "-A"
  212. peopleSchedule = TuplefindInList(peopleScheduleDataAll, findid)
  213. if peopleSchedule != None:
  214. fx = peopleSchedule[3]
  215. qw1 = peopleSchedule[4]
  216. qw2 = peopleSchedule[5]
  217. g1 = peopleSchedule[6]
  218. g2 = peopleSchedule[7]
  219. g3 = peopleSchedule[8]
  220. fj = str(peopleSchedule[9])
  221. else:
  222. fx = ""
  223. qw1 = ""
  224. qw2 = ""
  225. g1 = ""
  226. g2 = ""
  227. g3 = ""
  228. fj = ""
  229. if "随机离港" in str(fj):
  230. SJDW = "√" if flightstsdata[6] != "" else ""
  231. else:
  232. SJDW ="--"
  233. ggy = "【高高原】" if TaskFlightinfo[29] == "Y" else ""
  234. JBRY = "交班人员:" + TaskFlightinfo[37] if TaskFlightinfo[37] != "" else "无交班人员"
  235. if TaskFlightinfo[3] == "AF":
  236. item_dic = {"1": rowNum,
  237. "3": TaskFlightinfo[1],
  238. "4": TaskFlightinfo[1]+"\n"+TaskFlightinfo[21],
  239. "5": TaskFlightinfo[26],
  240. "6": TaskFlightinfo[26]+"\n"+TaskFlightinfo[25],
  241. "7": TaskFlightinfo[25],
  242. "8": JWA,
  243. "9": TaskFlightinfo[21],
  244. "11": a,
  245. "13": b,
  246. "15": "--",
  247. "17": TaskFlightinfo[24],
  248. "18": JWA,
  249. "19": row[3],
  250. "21": fx,
  251. "23": qw1,
  252. "25": qw2,
  253. "27": g1,
  254. "29": g2,
  255. "31": g3,
  256. "33": jjdw,
  257. "35": "--",
  258. "37": "--",
  259. "38":dq,
  260. "62":infos,
  261. "40":dqxq,
  262. "41": "--",
  263. "43": e,
  264. "45": F,
  265. "47": postion + ggy,
  266. "49": wx_people, # flightinfodata[22],
  267. "50":JBRY,
  268. "51": fx_people, # flightinfodata[23],
  269. "53": row[1],
  270. "55": row[1],
  271. "57": ta_td,
  272. "59": type31,
  273. "61": fj,
  274. "99": color_code,
  275. "101": color_code1,
  276. "102": color_code2,
  277. "103": color_code3,
  278. "109": row[5]
  279. }
  280. elif TaskFlightinfo[3] == "停场":
  281. item_dic = {"1": rowNum,
  282. "3": TaskFlightinfo[1],
  283. "4": TaskFlightinfo[1]+"\n"+TaskFlightinfo[21],
  284. "5": TaskFlightinfo[26],
  285. "6": TaskFlightinfo[26]+"\n"+TaskFlightinfo[25],
  286. "7": TaskFlightinfo[25],
  287. "8": TaskFlightinfo[10],
  288. "9": "--",
  289. "11": a,
  290. "13": "--",
  291. "15": "--",
  292. "17": "--",
  293. "18": TaskFlightinfo[10],
  294. "19": row[3],
  295. "21": fx,
  296. "23": qw1,
  297. "25": qw2,
  298. "27": g1,
  299. "29": g2,
  300. "31": g3,
  301. "33": "--",
  302. "35": "--",
  303. "37": "--",
  304. "39": "--",
  305. "41": "--",
  306. "43": "--",
  307. "45": "--",
  308. "47": "停场",
  309. "49": "--", # flightinfodata[22],
  310. "50":JBRY,
  311. "51": "--", # flightinfodata[23],
  312. "53": row[1],
  313. "55": "TSK",
  314. "57": "--",
  315. "59": "--",
  316. "61": fj,
  317. "99": color_code,
  318. "101": color_code1,
  319. "102": color_code2,
  320. "103": color_code3,
  321. "109": row[5]
  322. }
  323. elif TaskFlightinfo[3] == "AP":
  324. item_dic = {"1": rowNum,
  325. "3": TaskFlightinfo[1],
  326. "4": TaskFlightinfo[1]+"\n"+TaskFlightinfo[21],
  327. "5": TaskFlightinfo[26],
  328. "6": TaskFlightinfo[26]+"\n"+TaskFlightinfo[25],
  329. "7": TaskFlightinfo[25],
  330. "8": JWB,
  331. "9": TaskFlightinfo[21],
  332. "11": "",
  333. "13": "",
  334. "15": c,
  335. "17": TaskFlightinfo[24],
  336. "18": JWB,
  337. "19": row[3],
  338. "21": fx,
  339. "23": qw1,
  340. "25": qw2,
  341. "27": g1,
  342. "29": g2,
  343. "31": g3,
  344. "33": jjdw,
  345. "35": FX,
  346. "37": XJ,
  347. "38":dq,
  348. "62":infos,
  349. "40":dqxq,
  350. "41": SJDW,
  351. "43": e,
  352. "45": F,
  353. "47": postion + ggy,
  354. "49": wx_people, # flightinfodata[22],
  355. "50":JBRY,
  356. "51": fx_people, # flightinfodata[23],
  357. "53": row[1],
  358. "55": row[1],
  359. "57": ta_td,
  360. "59": type31,
  361. "61": fj,
  362. "99": color_code,
  363. "101": color_code1,
  364. "102": color_code2,
  365. "103": color_code3,
  366. "109": row[5]
  367. }
  368. elif (TaskFlightinfo[3] == "TR" or TaskFlightinfo[3] == "TAF") and (row[3] == "短停接" or row[3] == "特后前接"):
  369. item_dic = {"1": rowNum,
  370. "3": TaskFlightinfo[1],
  371. "4": TaskFlightinfo[1]+"\n"+TaskFlightinfo[21],
  372. "5": TaskFlightinfo[26],
  373. "6": TaskFlightinfo[26]+"\n"+TaskFlightinfo[25],
  374. "7": TaskFlightinfo[25],
  375. "8": JWA,
  376. "9": TaskFlightinfo[21],
  377. "11": a,
  378. "13": b,
  379. "15": c,
  380. "17": TaskFlightinfo[24],
  381. "18": JWA,
  382. "19": row[3],
  383. "21": fx,
  384. "23": qw1,
  385. "25": qw2,
  386. "27": g1,
  387. "29": g2,
  388. "31": g3,
  389. "33": jjdw,
  390. "35": FX,
  391. "37": "--",
  392. "38":dq,
  393. "62":infos,
  394. "40":dqxq,
  395. "41": SJDW,
  396. "43": e,
  397. "45": F,
  398. "47": postion + ggy,
  399. "49": wx_people, # flightinfodata[22],
  400. "50":JBRY,
  401. "51": fx_people, # flightinfodata[23],
  402. "53": row[1],
  403. "55": row[1],
  404. "57": ta_td,
  405. "59": type31,
  406. "61": fj,
  407. "99": color_code,
  408. "101": color_code1,
  409. "102": color_code2,
  410. "103": color_code3,
  411. "109": row[5]
  412. }
  413. elif (TaskFlightinfo[3] == "TR" or TaskFlightinfo[3] == "TAF") and (row[3] == "短停送" or row[3] == "特后前送"):
  414. item_dic = {"1": rowNum,
  415. "3": TaskFlightinfo[1],
  416. "4": TaskFlightinfo[1]+"\n"+TaskFlightinfo[21],
  417. "5": TaskFlightinfo[26],
  418. "6": TaskFlightinfo[26]+"\n"+TaskFlightinfo[25],
  419. "7": TaskFlightinfo[25],
  420. "8": JWA,
  421. "9": TaskFlightinfo[21],
  422. "11": a,
  423. "13": b,
  424. "15": c,
  425. "17": TaskFlightinfo[24],
  426. "18": JWA,
  427. "19": row[3],
  428. "21": fx,
  429. "23": qw1,
  430. "25": qw2,
  431. "27": g1,
  432. "29": g2,
  433. "31": g3,
  434. "33": ESDW,
  435. "35": FX,
  436. "37": "--",
  437. "38":dq,
  438. "62":infos,
  439. "40":dqxq,
  440. "41": SJDW,
  441. "43": e,
  442. "45": F,
  443. "47": postion + ggy,
  444. "49": ecsj_people, # flightinfodata[22],
  445. "50":JBRY,
  446. "51": fx_people, # flightinfodata[23],
  447. "53": row[1],
  448. "55": row[1],
  449. "57": ta_td,
  450. "59": type31,
  451. "61": fj,
  452. "99": color_code,
  453. "101": color_code1,
  454. "102": color_code2,
  455. "103": color_code3,
  456. "109": row[5]
  457. }
  458. else:
  459. item_dic = {"1": rowNum,
  460. "3": TaskFlightinfo[1],
  461. "4": TaskFlightinfo[1]+"\n"+TaskFlightinfo[21],
  462. "5": TaskFlightinfo[26],
  463. "6": TaskFlightinfo[26]+"\n"+TaskFlightinfo[25],
  464. "7": TaskFlightinfo[25],
  465. "8": JWA,
  466. "9": TaskFlightinfo[21],
  467. "11": a,
  468. "13": b,
  469. "15": c,
  470. "17": TaskFlightinfo[24],
  471. "18": JWA,
  472. "19": row[3],
  473. "21": fx,
  474. "23": qw1,
  475. "25": qw2,
  476. "27": g1,
  477. "29": g2,
  478. "31": g3,
  479. "33": jjdw,
  480. "35": FX,
  481. "37": "--",
  482. "38":dq,
  483. "62":infos,
  484. "40": dqxq,
  485. "41": SJDW,
  486. "43": e,
  487. "45": F,
  488. "47": postion + ggy,
  489. "49": wx_people, # flightinfodata[22],
  490. "50": JBRY,
  491. "51": fx_people, # flightinfodata[23],
  492. "53": row[1],
  493. "55": row[1],
  494. "57": ta_td,
  495. "59": type31,
  496. "61": fj,
  497. "99": color_code,
  498. "101": color_code1,
  499. "102": color_code2,
  500. "103": color_code3,
  501. "109": row[5]
  502. }
  503. for i in dic:
  504. if i not in item_dic.keys():
  505. item_dic[i] = ''
  506. #tableWidgetDispalydata[rowNum] = item_dic
  507. #rowNum += 1
  508. # print(rowNum)
  509. # print(item_dic)
  510. # print({rowNum:item_dic})
  511. return {rowNum:item_dic}