sortFlighttime.py 22 KB

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