sortFlighttime.py 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336
  1. import datetime
  2. from unitls.LogerinTxt import app_logger
  3. from .flightDB import flightDB
  4. from .initFlightDatabase import initFlightDatabase
  5. def updateData(database:flightDB, id,taskid,time,flighttype,flight_date_str,classstr,nowDayStr):
  6. try:
  7. newdic = {"编号": "'%s'" % id, "航班编号": "'%s'" % taskid, "保障时间": "'%s'" % time, "航班类型": "'%s'"%flighttype,
  8. "航班日期": "'%s'" % flight_date_str, "级别": "%s"%classstr}
  9. database.lazyUpdateItem("sortFlight{}".format(nowDayStr), newdic, "编号='%s'" % id)
  10. except Exception as e:
  11. #print(e)
  12. app_logger.log_error(e)
  13. def insertData(database:flightDB, id,taskid,time,flighttype,flight_date_str,classstr,nowDayStr):
  14. if id not in lazyinsert:
  15. try:
  16. newdic = {"编号": "%s" % id, "航班编号": "%s" % taskid, "保障时间": "%s" % time, "航班类型": "%s"%flighttype,
  17. "航班日期": '%s' % flight_date_str, "级别": classstr}
  18. database.lazyInsertData("sortFlight{}".format(nowDayStr), newdic)
  19. lazyinsert.append(id)
  20. except Exception as e:
  21. #print(e)
  22. app_logger.log_error(e)
  23. else:
  24. updateData(database, id, taskid, time, flighttype, flight_date_str, classstr, nowDayStr)
  25. def checkData(database,taskid,sendtime,flighttype,flight_date_str,sort_flight_ids_arr,nowDayStr,classstr):
  26. if flighttype == "航前":
  27. ii = str(taskid) + "-2" # 送
  28. iii = str(taskid) + "-1" # 接
  29. elif flighttype == "航后":
  30. ii = str(taskid) + "-1"
  31. iii = str(taskid) + "-2"
  32. else:
  33. ii = str(taskid) + "-1"
  34. iii = ""
  35. if ii in str(sort_flight_ids_arr):
  36. updateData(database, ii, taskid, sendtime, flighttype, flight_date_str, classstr, nowDayStr)
  37. else:
  38. insertData(database, ii, taskid, sendtime, flighttype, flight_date_str, classstr, nowDayStr)
  39. if iii and iii in str(sort_flight_ids_arr):
  40. database.deleteSingledata('sortFlight{}'.format(nowDayStr), "编号='%s'" % iii)
  41. sort_flight_ids_arr.remove(iii)
  42. def sortFlighttime(database:flightDB,wokload:flightDB):
  43. global lazyinsert
  44. lazyinsert = []
  45. try:
  46. print(datetime.datetime.now(),'[数据库操作]开始排序')
  47. nowDay = datetime.datetime.now().strftime("%Y%m%d")
  48. nowDay_1 = (datetime.date.today() - datetime.timedelta(days=1)).strftime("%Y%m%d")
  49. nowDay_2 = (datetime.date.today() + datetime.timedelta(days=1)).strftime("%Y%m%d")
  50. now = datetime.datetime.now()
  51. #now_20 = (datetime.datetime.now() + datetime.timedelta(minutes=200)).strftime("%Y%m%d")
  52. now_20 = (datetime.datetime.now() + datetime.timedelta(hours=5)).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=sortkey[1]
  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(),'[数据库操作]结束排序')