checkflightplan.py 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. import datetime
  2. import unitls.baseFunction as baseFunction
  3. from unitls.LogerinTxt import app_logger
  4. from unitls.StaticDataclass import get_dic
  5. from .flightDB import flightDB
  6. from .initFlightDatabase import initFlightDatabase
  7. def waringinsert(database,text,taskid,col):
  8. try:
  9. newDic = {"警告信息": text,"航班编号":taskid, "信息状态": "", "提示信息": "", "产生时间": "%s" % datetime.datetime.now(),
  10. "处理人": "", "处理时间": "","变更字段": col, "显示对象": "", "提示内容": ""}
  11. database.lazyInsertData('logs', newDic)
  12. except Exception as e:
  13. app_logger.log_error(f"警告信息插入错误,插入信息{text},{taskid},{col},错误信息见下一条")
  14. app_logger.log_error(e)
  15. def checkFlightplan(database:flightDB,wokload:flightDB):
  16. updatedic = {2: 11, 4: 13,5:14,6: 16,7: 17, 8: 9,10: 7, 11: 8, 15: 18, 16: 18,21: 12, 25: 3, 26: 2, 33 : 20} #taskinfo :flightplan
  17. try:
  18. print(datetime.datetime.now(),'[数据库操作]开始校验航班')
  19. nowDay = datetime.datetime.now().strftime("%Y%m%d")
  20. nowDay_1 = (datetime.date.today() - datetime.timedelta(days=1)).strftime("%Y%m%d")
  21. nowDay_2 = (datetime.date.today() + datetime.timedelta(days=1)).strftime("%Y%m%d")
  22. now_20 = (datetime.datetime.now() + datetime.timedelta(hours=5)).strftime("%Y%m%d")
  23. initFlightDatabase(database, wokload, now_20)
  24. initFlightDatabase(database, wokload, nowDay_1)
  25. initFlightDatabase(database, wokload, nowDay_2)
  26. initFlightDatabase(database, wokload, nowDay)
  27. if now_20 == nowDay:
  28. day = [nowDay, nowDay_1]
  29. else:
  30. day = [nowDay, nowDay_1, nowDay_2]
  31. for nowDayStr in day:
  32. flightplan_flight_ids = database.queryTabel('flightplaninfo{}'.format(nowDayStr),"*","备1 ='1' and flgCs =''")
  33. TaskFlightinfo_flight_ids = database.queryTabel('TaskFlightinfo{}'.format(nowDayStr), '备4,备5', "航班编号!=''")
  34. TaskFlightinfo_ids = database.queryTabel('TaskFlightinfo{}'.format(nowDayStr), '航班编号', "航班编号!=''")
  35. flight_id_now = []
  36. if flightplan_flight_ids and len(flightplan_flight_ids) != 0:
  37. for sortkey in flightplan_flight_ids:
  38. if str(sortkey[0]) not in str(TaskFlightinfo_flight_ids):
  39. flight_id_now.append(f"System{sortkey[0]}")
  40. TaskflightinfoLabel=get_dic("TaskflightinfoLabel")
  41. if f"System{sortkey[0]}" not in str(TaskFlightinfo_ids):
  42. peopleSchedule_ids = database.queryTabel('peopleSchedule{}'.format(nowDayStr) , '编号,附加消息', "航班编号 ='%s'"%f"System{sortkey[0]}")
  43. newdic={"航班编号":f"System{sortkey[0]}","进出港城市":sortkey[5]+"-"+sortkey[6],"航班来源":"飞机排班","机号":sortkey[1].replace("B",""),"取消标志":0}
  44. if sortkey[6] == "天府":
  45. newdic["航班类型"] = "AF"
  46. else:
  47. newdic["航班类型"] = "AP"
  48. for key,value in updatedic.items():
  49. newdic[TaskflightinfoLabel[key]]= sortkey[value]
  50. for key in TaskflightinfoLabel:
  51. if key not in newdic.keys():
  52. newdic[key]=""
  53. database.lazyInsertData('TaskFlightinfo{}'.format(nowDayStr), newdic)
  54. if sortkey[6] == "天府":
  55. if f"System{sortkey[0]}-1-A" not in str(peopleSchedule_ids):
  56. newdic={"编号":f"System{sortkey[0]}-1-A","航班编号":f"System{sortkey[0]}","显示模式":"A","放行":"","勤务1":"","勤务2":"","工1":"","工2":"","工3":"","附加消息":"AMRO航班缺失,无法派工,航班信息来源于飞机排班,请核实航班类型和保障时间"}
  57. database.lazyInsertData('peopleSchedule{}'.format(nowDayStr), newdic)
  58. else:
  59. fj = peopleSchedule_ids[0][1]
  60. if "AMRO航班缺失,无法派工,航班信息来源于飞机排班,请核实航班类型和保障时间" not in fj:
  61. newdic={"附加消息":"'%s'"%(fj+";AMRO航班缺失,无法派工,航班信息来源于飞机排班,请核实航班类型和保障时间")}
  62. else:
  63. newdic={"附加消息":"'AMRO航班缺失,无法派工,航班信息来源于飞机排班,请核实航班类型和保障时间'"}
  64. database.lazyUpdateItem('peopleSchedule{}'.format(nowDayStr), newdic,"编号='%s'"%f"System{sortkey[0]}-1-A")
  65. elif sortkey[5] == "天府":
  66. if f"System{sortkey[0]}-2-A" not in str(peopleSchedule_ids):
  67. newdic={"编号":f"System{sortkey[0]}-2-A","航班编号":f"System{sortkey[0]}","显示模式":"A","放行":"","勤务1":"","勤务2":"","工1":"","工2":"","工3":"","附加消息":"AMRO航班缺失,无法派工,航班信息来源于飞机排班,请核实航班类型和保障时间"}
  68. database.lazyInsertData('peopleSchedule{}'.format(nowDayStr), newdic)
  69. else:
  70. fj = peopleSchedule_ids[0][1]
  71. if "AMRO航班缺失,无法派工,航班信息来源于飞机排班,请核实航班类型和保障时间" not in fj:
  72. newdic={"附加消息":"'%s'"%(fj+";AMRO航班缺失,无法派工,航班信息来源于飞机排班,请核实航班类型和保障时间")}
  73. else:
  74. newdic={"附加消息":"'AMRO航班缺失,无法派工,航班信息来源于飞机排班,请核实航班类型和保障时间'"}
  75. database.lazyUpdateItem('peopleSchedule{}'.format(nowDayStr), newdic,"编号='%s'"%f"System{sortkey[0]}-2-A")
  76. waringinsert(database,f"{sortkey[1]}/{sortkey[12]}在Amro任务派工模块无显示,已读取飞机排班系统信息显示,航班将无法派工,请核对航班、随机等信息并加强监控!",f"System{sortkey[0]}","航班缺失警告")
  77. else:
  78. TaskFlightinfos = database.queryTabel('TaskFlightinfo{}'.format(nowDayStr), '*' ,"航班编号='%s'"%f"System{sortkey[0]}")[0]
  79. for key,value in updatedic.items():
  80. if TaskFlightinfos[key] != sortkey[value]:
  81. newdic={TaskflightinfoLabel[key]:"'%s'"%sortkey[value]}
  82. database.lazyUpdateItem('TaskFlightinfo{}'.format(nowDayStr),newdic,"航班编号='%s'"%f"System{sortkey[0]}")
  83. if (sortkey[5]+sortkey[6]) !=TaskFlightinfos[23]:
  84. newdic={TaskflightinfoLabel[23]:"'%s'"%(sortkey[5]+"-"+sortkey[6])}
  85. database.lazyUpdateItem('TaskFlightinfo{}'.format(nowDayStr),newdic,"航班编号='%s'"%f"System{sortkey[0]}")
  86. if sortkey[1].replace("B","") != TaskFlightinfos[1]:
  87. newdic={"机号":"'%s'"%sortkey[1].replace("B","")}
  88. database.lazyUpdateItem('TaskFlightinfo{}'.format(nowDayStr),newdic,"航班编号='%s'"%f"System{sortkey[0]}")
  89. if sortkey[6] == "天府" and TaskFlightinfos[3] != "AF":
  90. newdic={"航班类型":"'AF'"}
  91. database.lazyUpdateItem('TaskFlightinfo{}'.format(nowDayStr), newdic,"航班编号='%s'" % f"System{sortkey[ 0 ]}")
  92. elif sortkey[5] == "天府" and TaskFlightinfos[3] != "AP":
  93. newdic={"航班类型":"'AP'"}
  94. database.lazyUpdateItem('TaskFlightinfo{}'.format(nowDayStr), newdic,"航班编号='%s'" % f"System{sortkey[ 0 ]}")
  95. elif str(sortkey[0]) in str(TaskFlightinfo_flight_ids) and f"System{sortkey[0]}" in str(TaskFlightinfo_ids):
  96. database.deleteSingledata('TaskFlightinfo{}'.format(nowDayStr),"航班编号='%s'"%f"System{sortkey[0]}")
  97. waringinsert(database,f"{sortkey[1]}/{sortkey[12]}在Amro任务派工模块中恢复显示,如未派工请前往派工!飞机排班显示航班将在5min中后自动删除,做好人员安排信息备份!",f"System{sortkey[0]}","航班缺失恢复警告")
  98. database.FunctionCommit()
  99. flightinfo_flight_ids = database.queryTabel('TaskFlightinfo{}'.format(nowDayStr), '*',"航班来源 ='飞机排班'")
  100. if len(flightinfo_flight_ids) != 0 :
  101. for iii in flightinfo_flight_ids:
  102. datas = baseFunction.TuplefindInList1(flightinfo_flight_ids , iii[0], 0)[0]
  103. if str(iii[0]) not in flight_id_now:
  104. cancelid = datas[35] if datas[35] else 0
  105. newcancelid = int(cancelid) + 1
  106. if int(newcancelid) < 3:
  107. newdic = {"取消标志" : "'%s'" % newcancelid}
  108. database.lazyUpdateItem('TaskFlightinfo{}'.format(nowDayStr) , newdic ,"航班编号='%s'" % iii[0])
  109. else:
  110. database.deleteSingledata("TaskFlightinfo{}".format(nowDayStr),"航班编号='%s'" %f"{iii[0]}")
  111. #waringinsert(database,f"{datas[1]}/{datas[12]}Sytem航班删除!",f"System{datas[0]}","Sytem航班自动删除")
  112. database.FunctionCommit()
  113. except Exception as e:
  114. #print(e)
  115. database.FunctionCommit()
  116. app_logger.log_error(e)
  117. app_logger.log_error("飞机排班系统校验航班失败")
  118. print(datetime.datetime.now(),'[数据库操作]结束校验航班')