sortFlighttime.py 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333
  1. from .flightDB import flightDB
  2. import datetime
  3. from .initFlightDatabase import initFlightDatabase
  4. import unitls.baseFunction as baseFunction
  5. from unitls.LogerinTxt import app_logger
  6. def updateData(database:flightDB, id,taskid,time,flighttype,flight_date_str,classstr,nowDayStr):
  7. try:
  8. newdic = {"编号": "'%s'" % id, "航班编号": "'%s'" % taskid, "保障时间": "'%s'" % time, "航班类型": "'%s'"%flighttype,
  9. "航班日期": "'%s'" % flight_date_str, "级别": "%s"%classstr}
  10. database.lazyUpdateItem("sortFlight{}".format(nowDayStr), newdic, "编号='%s'" % id)
  11. except Exception as e:
  12. #print(e)
  13. app_logger.log_error(e)
  14. def insertData(database:flightDB, id,taskid,time,flighttype,flight_date_str,classstr,nowDayStr):
  15. if id not in lazyinsert:
  16. try:
  17. newdic = {"编号": "%s" % id, "航班编号": "%s" % taskid, "保障时间": "%s" % time, "航班类型": "%s"%flighttype,
  18. "航班日期": '%s' % flight_date_str, "级别": classstr}
  19. database.lazyInsertData("sortFlight{}".format(nowDayStr), newdic)
  20. lazyinsert.append(id)
  21. except Exception as e:
  22. #print(e)
  23. app_logger.log_error(e)
  24. else:
  25. updateData(database, id, taskid, time, flighttype, flight_date_str, classstr, nowDayStr)
  26. def checkData(database,taskid,sendtime,flighttype,flight_date_str,sort_flight_ids_arr,nowDayStr,classstr):
  27. if flighttype == "航前":
  28. ii = str(taskid) + "-2" # 送
  29. iii = str(taskid) + "-1" # 接
  30. elif flighttype == "航后":
  31. ii = str(taskid) + "-1"
  32. iii = str(taskid) + "-2"
  33. else:
  34. ii = str(taskid) + "-1"
  35. iii = ""
  36. if ii in str(sort_flight_ids_arr):
  37. updateData(database, ii, taskid, sendtime, flighttype, flight_date_str, classstr, nowDayStr)
  38. else:
  39. insertData(database, ii, taskid, sendtime, flighttype, flight_date_str, classstr, nowDayStr)
  40. if iii and iii in str(sort_flight_ids_arr):
  41. database.deleteSingledata('sortFlight{}'.format(nowDayStr), "编号='%s'" % iii)
  42. sort_flight_ids_arr.remove(iii)
  43. def sortFlighttime(database:flightDB,wokload:flightDB):
  44. global lazyinsert
  45. lazyinsert = []
  46. try:
  47. print(datetime.datetime.now(),'[数据库操作]开始排序')
  48. nowDay = datetime.datetime.now().strftime("%Y%m%d")
  49. nowDay_1 = (datetime.date.today() - datetime.timedelta(days=1)).strftime("%Y%m%d")
  50. nowDay_2 = (datetime.date.today() + datetime.timedelta(days=1)).strftime("%Y%m%d")
  51. now = datetime.datetime.now()
  52. now_20 = (datetime.datetime.now() + datetime.timedelta(minutes=200)).strftime("%Y%m%d")
  53. initFlightDatabase(database, wokload, now_20)
  54. initFlightDatabase(database, wokload, nowDay_1)
  55. initFlightDatabase(database, wokload, nowDay_2)
  56. initFlightDatabase(database, wokload, nowDay)
  57. if now_20 == nowDay:
  58. day = [nowDay, nowDay_1]
  59. else:
  60. day = [nowDay, nowDay_1, nowDay_2]
  61. for nowDayStr in day:
  62. sort_flight_ids_arr = []
  63. sort_flight_ids = database.queryTabel('sortFlight{}'.format(nowDayStr),"*","编号 !=''")
  64. flightinfo_flight_ids = database.queryTabel('TaskFlightinfo{}'.format(nowDayStr), '*', "航班编号!=''")
  65. if sort_flight_ids and len(sort_flight_ids) != 0:
  66. for sortkey in sort_flight_ids:
  67. sort_flight_id = baseFunction.TuplefindInList3(sort_flight_ids, sortkey[0],0,1)
  68. if str(sort_flight_id) in str(flightinfo_flight_ids):
  69. sort_flight_ids_arr.append(sortkey[0])
  70. else:
  71. database.deleteSingledata('sortFlight{}'.format(nowDayStr),"编号='%s'"%sortkey[0])
  72. for i in flightinfo_flight_ids:
  73. flight_date_str = i[2]
  74. if i[3] == "AP" and "MAN" not in str(i[0]):
  75. if i[7] == "" and i[5] != "": #flying 空 and std 不空
  76. sendtime = datetime.datetime.strptime(i[5], "%Y-%m-%d %H:%M:%S") - datetime.timedelta(minutes=90)
  77. checkData(database,i[0],sendtime,"航前",flight_date_str,sort_flight_ids_arr,nowDayStr,1)
  78. elif i[7] != "":
  79. sendtime = datetime.datetime.strptime(i[7], "%Y-%m-%d %H:%M:%S")
  80. checkData(database,i[0],sendtime,"航前",flight_date_str,sort_flight_ids_arr,nowDayStr,4)
  81. elif i[3] == "AP" and "MAN" in str(i[0]):
  82. sendtime = datetime.datetime.strptime(i[5], "%Y-%m-%d %H:%M:%S") - datetime.timedelta(minutes=90)
  83. sendtime2 = datetime.datetime.strptime(i[5], "%Y-%m-%d %H:%M:%S")
  84. if now < sendtime2:
  85. checkData(database,i[0],sendtime,"航前",flight_date_str,sort_flight_ids_arr,nowDayStr,1)
  86. else:
  87. checkData(database,i[0],sendtime2,"航前",flight_date_str,sort_flight_ids_arr,nowDayStr,4)
  88. elif i[3] == "停场":
  89. receivetime = datetime.datetime.strptime(i[6], "%Y-%m-%d %H:%M:%S")
  90. checkData(database, i[0], receivetime, "停场", flight_date_str, sort_flight_ids_arr, nowDayStr, 3)
  91. elif i[3] == "AF" and "MAN" not in str(i[0]):
  92. if i[6]=="" and i[8] !="" and i[30] != "":
  93. receivetime = datetime.datetime.strptime(i[8], "%Y-%m-%d %H:%M:%S") - datetime.timedelta(minutes=15)
  94. checkData(database, i[0], receivetime, "航后", flight_date_str, sort_flight_ids_arr, nowDayStr, 1)
  95. elif i[6]=="" and i[8] =="" and i[30] != "":
  96. receivetime = datetime.datetime.strptime(i[4], "%Y-%m-%d %H:%M:%S") - datetime.timedelta(minutes=15)
  97. checkData(database, i[0], receivetime, "航后", flight_date_str, sort_flight_ids_arr, nowDayStr, 1)
  98. elif i[6] == "" and i[30] == "" and i[8] == "" and i[4] != "":
  99. receivetime = datetime.datetime.strptime(i[4], "%Y-%m-%d %H:%M:%S") - datetime.timedelta(minutes=15)
  100. checkData(database,i[0],receivetime,"航后",flight_date_str,sort_flight_ids_arr,nowDayStr,2)
  101. elif i[6] !="":
  102. receivetime = datetime.datetime.strptime(i[6], "%Y-%m-%d %H:%M:%S")
  103. checkData(database, i[0], receivetime, "航后", flight_date_str, sort_flight_ids_arr, nowDayStr, 3)
  104. elif i[6] =="" and i[30] == "" and i[8] != "":
  105. receivetime = datetime.datetime.strptime(i[8], "%Y-%m-%d %H:%M:%S") - datetime.timedelta(minutes=15)
  106. checkData(database, i[0], receivetime, "航后", flight_date_str, sort_flight_ids_arr, nowDayStr, 2)
  107. elif i[3] == "AF" and "MAN" in str(i[0]):
  108. receivetime = datetime.datetime.strptime(i[8], "%Y-%m-%d %H:%M:%S") - datetime.timedelta(minutes=15)
  109. receivetime2= datetime.datetime.strptime(i[8], "%Y-%m-%d %H:%M:%S")
  110. if now < receivetime2:
  111. checkData(database, i[0], receivetime, "航后", flight_date_str, sort_flight_ids_arr, nowDayStr, 1)
  112. else:
  113. checkData(database, i[0], receivetime2, "航后", flight_date_str, sort_flight_ids_arr, nowDayStr, 3)
  114. elif i[3] == "TR" and "MAN" not in str(i[0]):
  115. if i[6] == "" and i[8] != "" and i[30] != "":
  116. receivetime = datetime.datetime.strptime(i[8], "%Y-%m-%d %H:%M:%S") - datetime.timedelta(minutes=15)
  117. ii=str(i[0])+ "-1"
  118. if ii in str(sort_flight_ids_arr):
  119. updateData(database,ii,i[0],receivetime,"短停接",flight_date_str,1,nowDayStr)
  120. else:
  121. insertData(database,ii,i[0],receivetime,"短停接",flight_date_str,1,nowDayStr)
  122. elif i[6] =="" and i[8] == "" and i[30] != "":
  123. receivetime = datetime.datetime.strptime(i[4], "%Y-%m-%d %H:%M:%S") - datetime.timedelta(minutes=15)
  124. ii=str(i[0])+ "-1"
  125. if ii in str(sort_flight_ids_arr):
  126. updateData(database,ii,i[0],receivetime,"短停接",flight_date_str,1,nowDayStr)
  127. else:
  128. insertData(database,ii,i[0],receivetime,"短停接",flight_date_str,1,nowDayStr)
  129. elif i[6] =="" and i[30] =="" and i[8] == "" and i[4] !="":
  130. receivetime = datetime.datetime.strptime(i[4], "%Y-%m-%d %H:%M:%S") - datetime.timedelta(minutes=15)
  131. ii=str(i[0])+ "-1"
  132. if ii in str(sort_flight_ids_arr):
  133. updateData(database,ii,i[0],receivetime,"短停接",flight_date_str,2,nowDayStr)
  134. else:
  135. insertData(database,ii,i[0],receivetime,"短停接",flight_date_str,2,nowDayStr)
  136. elif i[6] =="" and i[30] =="" and i[8] !="":
  137. receivetime = datetime.datetime.strptime(i[8], "%Y-%m-%d %H:%M:%S") - datetime.timedelta(minutes=15)
  138. ii=str(i[0])+ "-1"
  139. if ii in str(sort_flight_ids_arr):
  140. updateData(database,ii,i[0],receivetime,"短停接",flight_date_str,2,nowDayStr)
  141. else:
  142. insertData(database,ii,i[0],receivetime,"短停接",flight_date_str,2,nowDayStr)
  143. elif i[6] !="":
  144. receivetime = datetime.datetime.strptime(i[6], "%Y-%m-%d %H:%M:%S")
  145. ii=str(i[0])+ "-1"
  146. if ii in str(sort_flight_ids_arr):
  147. updateData(database,ii,i[0],receivetime,"短停接",flight_date_str,4,nowDayStr)
  148. else:
  149. insertData(database,ii,i[0],receivetime,"短停接",flight_date_str,4,nowDayStr)
  150. elif i[3] == "TR" and "MAN" in str(i[0]):
  151. receivetime = datetime.datetime.strptime(i[8], "%Y-%m-%d %H:%M:%S") - datetime.timedelta(minutes=15)
  152. receivetime2 = datetime.datetime.strptime(i[8], "%Y-%m-%d %H:%M:%S")
  153. if now < receivetime2:
  154. ii=str(i[0])+ "-1"
  155. if ii in str(sort_flight_ids_arr):
  156. updateData(database,ii,i[0],receivetime,"短停接",flight_date_str,1,nowDayStr)
  157. else:
  158. insertData(database,ii,i[0],receivetime,"短停接",flight_date_str,1,nowDayStr)
  159. else:
  160. ii=str(i[0])+ "-1"
  161. if ii in str(sort_flight_ids_arr):
  162. updateData(database,ii,i[0],receivetime2,"短停接",flight_date_str,4,nowDayStr)
  163. else:
  164. insertData(database,ii,i[0],receivetime2,"短停接",flight_date_str,4,nowDayStr)
  165. elif i[3] == "TAF" and "MAN" not in str(i[0]):
  166. if i[6] == "" and i[8] != "" and i[30] != "":
  167. receivetime = datetime.datetime.strptime(i[8], "%Y-%m-%d %H:%M:%S") - datetime.timedelta(minutes=15)
  168. ii = str(i[0]) + "-1"
  169. if ii in str(sort_flight_ids_arr):
  170. updateData(database, ii, i[0], receivetime, "特后前接", flight_date_str, 1, nowDayStr)
  171. else:
  172. insertData(database, ii, i[0], receivetime, "特后前接", flight_date_str, 1, nowDayStr)
  173. elif i[6] == "" and i[8] == "" and i[30] != "":
  174. receivetime = datetime.datetime.strptime(i[4], "%Y-%m-%d %H:%M:%S") - datetime.timedelta(minutes=15)
  175. ii = str(i[0]) + "-1"
  176. if ii in str(sort_flight_ids_arr):
  177. updateData(database, ii, i[0], receivetime, "特后前接", flight_date_str, 1, nowDayStr)
  178. else:
  179. insertData(database, ii, i[0], receivetime, "特后前接", flight_date_str, 1, nowDayStr)
  180. elif i[6] == "" and i[30] == "" and i[8] == "" and i[4] != "":
  181. receivetime = datetime.datetime.strptime(i[4], "%Y-%m-%d %H:%M:%S") - datetime.timedelta(minutes=15)
  182. ii = str(i[0]) + "-1"
  183. if ii in str(sort_flight_ids_arr):
  184. updateData(database, ii, i[0], receivetime, "特后前接", flight_date_str, 2, nowDayStr)
  185. else:
  186. insertData(database, ii, i[0], receivetime, "特后前接", flight_date_str, 2, nowDayStr)
  187. elif i[6] == "" and i[30] == "" and i[8] != "":
  188. receivetime = datetime.datetime.strptime(i[8], "%Y-%m-%d %H:%M:%S") - datetime.timedelta(minutes=15)
  189. ii = str(i[0]) + "-1"
  190. if ii in str(sort_flight_ids_arr):
  191. updateData(database, ii, i[0], receivetime, "特后前接", flight_date_str, 2, nowDayStr)
  192. else:
  193. insertData(database, ii, i[0], receivetime, "特后前接", flight_date_str, 2, nowDayStr)
  194. elif i[6] != "":
  195. receivetime = datetime.datetime.strptime(i[6], "%Y-%m-%d %H:%M:%S")
  196. ii = str(i[0]) + "-1"
  197. if ii in str(sort_flight_ids_arr):
  198. updateData(database, ii, i[0], receivetime, "特后前接", flight_date_str, 4, nowDayStr)
  199. else:
  200. insertData(database, ii, i[0], receivetime, "特后前接", flight_date_str, 4, nowDayStr)
  201. elif i[3] == "TAF" and "MAN" in str(i[0]):
  202. receivetime = datetime.datetime.strptime(i[8], "%Y-%m-%d %H:%M:%S") - datetime.timedelta(minutes=15)
  203. receivetime2 = datetime.datetime.strptime(i[8], "%Y-%m-%d %H:%M:%S")
  204. if now < receivetime2:
  205. ii = str(i[0]) + "-1"
  206. if ii in str(sort_flight_ids_arr):
  207. updateData(database, ii, i[0], receivetime, "特后前接", flight_date_str, 1, nowDayStr)
  208. else:
  209. insertData(database, ii, i[0], receivetime, "特后前接", flight_date_str, 1, nowDayStr)
  210. else:
  211. ii = str(i[0]) + "-1"
  212. if ii in str(sort_flight_ids_arr):
  213. updateData(database, ii, i[0], receivetime2, "特后前接", flight_date_str, 4, nowDayStr)
  214. else:
  215. insertData(database, ii, i[0], receivetime2, "特后前接", flight_date_str, 4, nowDayStr)
  216. if i[3] == "TR" and "MAN" not in str(i[0]):
  217. if i[7] != "":
  218. receivetime = datetime.datetime.strptime(i[7], "%Y-%m-%d %H:%M:%S")- datetime.timedelta(minutes=25)
  219. ii=str(i[0])+ "-2"
  220. if ii in str(sort_flight_ids_arr):
  221. updateData(database,ii,i[0],receivetime,"短停送",flight_date_str,4,nowDayStr)
  222. else:
  223. insertData(database,ii,i[0],receivetime,"短停送",flight_date_str,4,nowDayStr)
  224. elif i[6] != "" and i[5] != "":
  225. receivetime = datetime.datetime.strptime(i[5], "%Y-%m-%d %H:%M:%S")- datetime.timedelta(minutes=25)
  226. ii = str(i[0]) + "-2"
  227. if ii in str(sort_flight_ids_arr):
  228. updateData(database, ii, i[0], receivetime, "短停送", flight_date_str, 1, nowDayStr)
  229. else:
  230. insertData(database, ii, i[0], receivetime, "短停送", flight_date_str, 1, nowDayStr)
  231. elif i[5] != "":
  232. receivetime = datetime.datetime.strptime(i[5], "%Y-%m-%d %H:%M:%S")- datetime.timedelta(minutes=25)
  233. ii = str(i[0]) + "-2"
  234. if ii in str(sort_flight_ids_arr):
  235. updateData(database, ii, i[0], receivetime, "短停送", flight_date_str, 2, nowDayStr)
  236. else:
  237. insertData(database, ii, i[0], receivetime, "短停送", flight_date_str, 2, nowDayStr)
  238. elif i[3] == "TR" and "MAN" in str(i[0]):
  239. receivetime1 = datetime.datetime.strptime(i[8], "%Y-%m-%d %H:%M:%S")
  240. receivetime = datetime.datetime.strptime(i[5], "%Y-%m-%d %H:%M:%S") - datetime.timedelta(minutes=25)
  241. receivetime2 = datetime.datetime.strptime(i[5],"%Y-%m-%d %H:%M:%S") #std
  242. if now < receivetime1:
  243. ii = str(i[0]) + "-2"
  244. if ii in str(sort_flight_ids_arr):
  245. updateData(database, ii, i[0], receivetime, "短停送", flight_date_str, 2, nowDayStr)
  246. else:
  247. insertData(database, ii, i[0], receivetime, "短停送", flight_date_str, 2, nowDayStr)
  248. elif receivetime1 < now < receivetime2:
  249. ii = str(i[0]) + "-2"
  250. if ii in str(sort_flight_ids_arr):
  251. updateData(database, ii, i[0], receivetime, "短停送", flight_date_str, 1, nowDayStr)
  252. else:
  253. insertData(database, ii, i[0], receivetime, "短停送", flight_date_str, 1, nowDayStr)
  254. else:
  255. ii=str(i[0])+ "-2"
  256. if ii in str(sort_flight_ids_arr):
  257. updateData(database, ii, i[0], receivetime2, "短停送", flight_date_str, 4, nowDayStr)
  258. else:
  259. insertData(database, ii, i[0], receivetime2, "短停送", flight_date_str, 4, nowDayStr)
  260. elif i[3] == "TAF" and "MAN" not in str(i[0]):
  261. if i[7] != "":
  262. receivetime = datetime.datetime.strptime(i[5], "%Y-%m-%d %H:%M:%S")- datetime.timedelta(minutes=25)
  263. ii=str(i[0])+ "-2"
  264. if ii in str(sort_flight_ids_arr):
  265. updateData(database,ii,i[0],receivetime,"特后前送",flight_date_str,4,nowDayStr)
  266. else:
  267. insertData(database,ii,i[0],receivetime,"特后前送",flight_date_str,4,nowDayStr)
  268. elif i[7] == "" and i[6] !="" and i[5] !="":
  269. receivetime = datetime.datetime.strptime(i[5], "%Y-%m-%d %H:%M:%S")- datetime.timedelta(minutes=25)
  270. ii = str(i[0]) + "-2"
  271. if ii in str(sort_flight_ids_arr):
  272. updateData(database, ii, i[0], receivetime, "特后前送", flight_date_str, 1, nowDayStr)
  273. else:
  274. insertData(database, ii, i[0], receivetime, "特后前送", flight_date_str, 1, nowDayStr)
  275. elif i[7] == "" and i[6] =="" and i[5] !="":
  276. receivetime = datetime.datetime.strptime(i[5], "%Y-%m-%d %H:%M:%S")- datetime.timedelta(minutes=25)
  277. ii = str(i[0]) + "-2"
  278. if ii in str(sort_flight_ids_arr):
  279. updateData(database, ii, i[0], receivetime, "特后前送", flight_date_str, 2, nowDayStr)
  280. else:
  281. insertData(database, ii, i[0], receivetime, "特后前送", flight_date_str, 2, nowDayStr)
  282. elif i[3] == "TAF" and "MAN" in str(i[0]):
  283. receivetime1 = datetime.datetime.strptime(i[8], "%Y-%m-%d %H:%M:%S")
  284. receivetime = datetime.datetime.strptime(i[5], "%Y-%m-%d %H:%M:%S") - datetime.timedelta(minutes=25)
  285. receivetime2 = datetime.datetime.strptime(i[5],"%Y-%m-%d %H:%M:%S") #std
  286. if now < receivetime1:
  287. ii = str(i[0]) + "-2"
  288. if ii in str(sort_flight_ids_arr):
  289. updateData(database, ii, i[0], receivetime, "特后前送", flight_date_str, 2, nowDayStr)
  290. else:
  291. insertData(database, ii, i[0], receivetime, "特后前送", flight_date_str, 2, nowDayStr)
  292. elif receivetime1 < now < receivetime2:
  293. ii = str(i[0]) + "-2"
  294. if ii in str(sort_flight_ids_arr):
  295. updateData(database, ii, i[0], receivetime, "特后前送", flight_date_str, 1, nowDayStr)
  296. else:
  297. insertData(database, ii, i[0], receivetime, "特后前送", flight_date_str, 1, nowDayStr)
  298. else:
  299. ii = str(i[0]) + "-2"
  300. if ii in str(sort_flight_ids_arr):
  301. updateData(database, ii, i[0], receivetime2, "特后前送", flight_date_str, 4, nowDayStr)
  302. else:
  303. insertData(database, ii, i[0], receivetime2, "特后前送", flight_date_str, 4, nowDayStr)
  304. database.FunctionCommit()
  305. except Exception as e:
  306. #print(e)
  307. database.FunctionCommit()
  308. app_logger.log_error(e)
  309. app_logger.log_error("排序失败,可能缺失航班")
  310. print(datetime.datetime.now(),'[数据库操作]结束排序')