sortFlighttime.py 22 KB

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