QTMain.py 197 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088
  1. import datetime
  2. import socket
  3. import sys
  4. from PyQt6 import QtCore
  5. from PyQt6.QtCore import Qt, QThread, QThreadPool, QTimer
  6. from PyQt6.QtGui import QColor, QFont,QPalette
  7. from PyQt6.QtTextToSpeech import QTextToSpeech
  8. from PyQt6.QtWidgets import QApplication, QWidget, QMessageBox, QPushButton, QTableWidgetItem, QFileDialog, QMenu
  9. import requests
  10. import os
  11. import json
  12. from openpyxl import Workbook
  13. from UI.main2 import Ui_Form
  14. from .openPdf import open_with_system_viewer
  15. #####################
  16. from Functions.QtFunctions.LogerinTxt import app_logger
  17. from Functions.QtFunctions import findServerWidget as FindServerWidget
  18. from Functions.QtFunctions import addUserWidget as AddUserWidget
  19. from Functions.QtFunctions import handoverFlightWidget as HandoverFlightWidget
  20. from Functions.QtFunctions import addFlightWidget as AddFlightWidget
  21. from Functions.QtFunctions import AddPGWidget as addPGWidget
  22. from Functions.QtFunctions import changePassword as ChangePassword
  23. from Functions.QtFunctions import changeAuth as ChangeAuth
  24. from Functions.QtFunctions import checkLogs as CheckLogs
  25. from Functions.QtFunctions import localipset as Localipset
  26. from Functions.QtFunctions import searchpeople_get as Searchpeople_get
  27. from Functions.QtFunctions import checkCalllist as CheckCalllist
  28. from Functions.QtFunctions import amroLoginWidget2 as AmroLoginWidget2
  29. from Functions.QtFunctions import amroLoginWidget as AmroLoginWidget
  30. from Functions.QtFunctions import LoginWidget as loginWidget
  31. from Functions.QtFunctions import setlocalip as Setlocalip
  32. from Functions.QtFunctions import sortdisplaySever as SortdisplaySever
  33. from Functions.QtFunctions import workloadinfos
  34. headerlabel0= ["序号","数据序号","备","机号","航班信息","机型","机型信息","发动机","机位","航班号","备","计达","备","预达",
  35. "备","计飞","备","备","机位","类型","备","放行","备","工1","备","工2","备","工3","备","工4",
  36. "备","班组长","备","到位","备","放行","备","销夹","电签","随机","备","随机","备","保留","备","工作包",
  37. "备","进出港城市","备","维修人员","交班人员","放行","备","航班编号","备","任务编号","备","TATD","备","类型",
  38. "备","附加消息","备","备","备","备"]
  39. headerlabel_B=["序号", "机号", "机型", "发动机", "航班号", "计达", "预达", "计飞", "机位", "类型", "工作单", "飞单", "客舱单",
  40. "临工单","AMRO记录", "电签复查", "接机电签", "任务电签", "二送电签", "备", "备", "备", "备", "备", "进出港城市",
  41. "维修人员", "二送人员","放行", "航班编号", "电签工卡", "备", "类型", "附加消息"]
  42. versionNumber = "20.0.0"
  43. class MainWidget(QWidget, Ui_Form):
  44. AddPG_signal = QtCore.pyqtSignal(str, str, str)
  45. LoginWidget_signal = QtCore.pyqtSignal(str)
  46. addUserWidget_signal = QtCore.pyqtSignal(str)
  47. def __init__(self):
  48. super().__init__()
  49. try:
  50. # 新增:防抖定时器
  51. self.debounce_timer = QtCore.QTimer(self)
  52. self.debounce_timer.setSingleShot(True)
  53. self.debounce_timer.timeout.connect(self.debounced_search)
  54. self.debounce_delay = 300 # 防抖延迟时间(毫秒)
  55. # 新增:防抖定时器
  56. self.debounce_timer_phone = QtCore.QTimer(self)
  57. self.debounce_timer_phone.setSingleShot(True)
  58. self.debounce_timer_phone.timeout.connect(self.debounced_search_phone)
  59. # 新增:防抖定时器
  60. self.debounce_timer_deal = QtCore.QTimer(self)
  61. self.debounce_timer_deal.setSingleShot(True)
  62. self.debounce_timer_deal.timeout.connect(self.debounced_search_deal)
  63. # 新增:防抖定时器
  64. self.debounce_timer_people = QtCore.QTimer(self)
  65. self.debounce_timer_people.setSingleShot(True)
  66. self.debounce_timer_people.timeout.connect(self.debounced_search_people)
  67. # 新增:防抖定时器
  68. self.debounce_timer_log= QtCore.QTimer(self)
  69. self.debounce_timer_log.setSingleShot(True)
  70. self.debounce_timer_log.timeout.connect(self.debounced_search_log)
  71. self.displaySelectstr3 = "0"
  72. self.displaySelect_mode = "1"
  73. self.sum = 0
  74. self.flightsum = 0
  75. self.localip = None
  76. self.severupdatests = "0"
  77. self.localtoken = None
  78. self.searchpeoplestr = []
  79. self.sorttableWidgetDispalydata = {}
  80. self.sorttableWidgetDispalydataALL = {}
  81. self.sortlogchange = {}
  82. self.sortlog = {}
  83. self.sortdiplaylist = {}
  84. self.peopleOnJob = [""]
  85. self.loginSts = False
  86. self.amroLoginSts = False
  87. self.findSever = False
  88. self.FLIGHTonChange_text = ""
  89. self.changeonChange_text = ""
  90. self.logonChange_text = ""
  91. self.threadpool = QThreadPool()
  92. self.doubleclickLock = 0
  93. self.vin="328"
  94. self.timelock=datetime.datetime.now()
  95. self.doubleclickLockUpdate = 0
  96. self.maintainAuthCheckSts = 1
  97. self.peolpleonChange_text = ""
  98. self.changeupdatetime=datetime.datetime.now()
  99. self.setupUi(self)
  100. # self.show()
  101. self.loginWidget = loginWidget.LoginWidget()
  102. self.findServerWidget = FindServerWidget.findServerWidget()
  103. self.mapWebPage = FindServerWidget.mapWebWidget()
  104. self.checkCalllist = CheckCalllist.checkCalllist()
  105. self.checkCalllist.checkCalllist_signal.connect(self.checkCalllistclose)
  106. if self.findSever:
  107. pass
  108. else:
  109. self.findServerWidget.show()
  110. self.findServerWidget.selectServer_signal.connect(self.setServer)
  111. except Exception as e:
  112. app_logger.log_error(e)
  113. def setServer(self, *args):
  114. try:
  115. #self.ipinfo = args[0] + ':9527'
  116. self.ipinfo = args[0] + ':7162'
  117. self.clickrow = ""
  118. self.clickcolumn = ""
  119. self.version= versionNumber
  120. # print(self.ipinfo)
  121. self.findServerWidget.close()
  122. self.loginWidget.ipinfo = self.ipinfo
  123. self.loginWidget.login_signal.connect(self.displayMain)
  124. self.loginWidget.login_user.connect(self.setUser)
  125. checksts="ok"
  126. ip = "http://" + str(self.ipinfo) + "/static/remoteCheck/"+self.version
  127. res=requests.get(url=ip, timeout=180).json()
  128. if res["返回值"] != "ok":
  129. checksts = res["返回值"]
  130. if checksts == "ok":
  131. if self.loginSts:
  132. self.initDisplay()
  133. self.show()
  134. else:
  135. self.loginWidget.show()
  136. else:
  137. QMessageBox.warning(self, "提示", "有新版更新!请前往NAS共享平台[机务一队/天府机务分部/31准备组无纸化办公/1航班助手]获取综合平台最新版本【最新版版本号:%s】!!"%checksts)
  138. self.close()
  139. except Exception as e:
  140. app_logger.log_error(e)
  141. def remotelogin(self):
  142. self.amrologin = AmroLoginWidget.amroLoginWidget()
  143. self.amrologin.ipinfo = self.ipinfo
  144. self.amrologin.show()
  145. def remoteCookielogin(self):
  146. self.amrologin = AmroLoginWidget2.amroLoginWidget2()
  147. self.amrologin.ipinfo = self.ipinfo
  148. self.amrologin.show()
  149. def setIpPhone(self):
  150. try:
  151. res=""
  152. if os.path.exists("ipPhoneIp.code") is True:
  153. read_path = os.getcwd() + "\\ipPhoneIp.code"
  154. with open(read_path, "r", encoding="utf-8") as f2:
  155. rember_2 = f2.read()
  156. try:
  157. ip = "http://" + str(self.ipinfo) + "/static/setIpPhone/%s" % rember_2
  158. res=requests.get(url=ip, timeout=180).json()["返回值"]
  159. except Exception as e:
  160. app_logger.log_error(e)
  161. QMessageBox.warning(self, "提示", "服务器连接超时,请联系管理员!")
  162. if res =="ok":
  163. QMessageBox.warning(self, "提示", "服务器IP电话配置成功,请测试后启用自动拨号!")
  164. else:
  165. QMessageBox.warning(self, "警告", "服务器IP电话配置失败,建议重启自动拨号电话后再次配置!")
  166. else:
  167. QMessageBox.warning(self, "警告", "程序下未找到指定配置文件!")
  168. except Exception as e:
  169. app_logger.log_error(e)
  170. def setLocalIpPhone(self):
  171. try:
  172. self.localipset = Localipset.localipset()
  173. self.localipset.localipset_signal.connect(self.setLocalIpPhoneip)
  174. self.localipset.localip = self.localip
  175. self.localipset.start()
  176. except Exception as e:
  177. app_logger.log_error(e)
  178. def setLocalIpPhoneip(self, *args):
  179. try:
  180. self.localip = args[0]
  181. self.QThreadSortNow("setlocalip")
  182. self.localipset.close()
  183. # print(self.localip)
  184. except Exception as e:
  185. app_logger.log_error(e)
  186. def checkCalllistupdate(self):
  187. try:
  188. self.checkCalllist.ipinfo = self.ipinfo
  189. self.checkCalllist.selectedtime = self.selectedtime
  190. self.checkCalllist.start()
  191. except Exception as e:
  192. app_logger.log_error(e)
  193. def checkCalllistclose(self, *args):
  194. try:
  195. reply = args[0]
  196. # print(reply)
  197. if reply == "StandardButton.Yes":
  198. self.checkCalllist.hide()
  199. except Exception as e:
  200. app_logger.log_error(e)
  201. def showcheckLogs(self):
  202. try:
  203. self.checkLogs = CheckLogs.checkLogs()
  204. self.checkLogs.ipinfo = self.ipinfo
  205. self.checkLogs.start()
  206. except Exception as e:
  207. app_logger.log_error(e)
  208. def showWorkloadinfos(self):
  209. try:
  210. self.Workloadinfos = workloadinfos.Workloadinfos()
  211. self.Workloadinfos.ipinfo = self.ipinfo
  212. self.Workloadinfos.user = self.user
  213. self.Workloadinfos.selectedbc =self.selectedbc
  214. self.Workloadinfos.selectedtime=self.selectedtime
  215. self.Workloadinfos.start()
  216. except Exception as e:
  217. app_logger.log_error(e)
  218. def initDisplay(self):
  219. try:
  220. self.oldjsondata = None
  221. self.cookie = None
  222. self.fl = None
  223. self.Auth=9999
  224. self.tts = QTextToSpeech()
  225. self.tts.setEngine('sapi')
  226. nowDay = datetime.datetime.now()
  227. nowDayStr = nowDay.strftime("%Y%m%d")
  228. self.dateEdit.setDateTime(nowDay)
  229. self.selectedtime = self.dateEdit.date().toString('yyyyMMdd')
  230. # self.setipinfo()
  231. self.initFlightDatabase()
  232. # self.radioButtonDay.
  233. phoneLabel = ["序号", "姓名", "部门", "电话","name"]
  234. self.tableWidget_3.setColumnCount(len(phoneLabel))
  235. self.tableWidget_3.verticalHeader().setVisible(False)
  236. self.tableWidget_3.setHorizontalHeaderLabels(phoneLabel)
  237. self.tableWidget_3.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)
  238. self.tableWidget_3.customContextMenuRequested.connect(self.generateMenu3)
  239. peopleLabel = ["序号", "姓名", "角色", "授权"]
  240. self.tableWidgetPerson.setColumnCount(len(peopleLabel))
  241. self.tableWidgetPerson.verticalHeader().setVisible(False)
  242. self.tableWidgetPerson.setHorizontalHeaderLabels(peopleLabel)
  243. self.tableWidgetPerson.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)
  244. self.tableWidgetPerson.customContextMenuRequested.connect(self.generateMenu2)
  245. self.pushButton.clicked.connect(self.selectedtime_bc)
  246. self.radioButtonDay.toggled.connect(self.selected_bc_A)
  247. self.radioButtonNight.toggled.connect(self.selected_bc_B)
  248. judge_bc = self.severpost_nomeassge("judge_bc", "", "", "", "")["bc"]
  249. if judge_bc == "A":
  250. self.radioButtonDay.setChecked(True)
  251. elif judge_bc == "B":
  252. self.radioButtonNight.setChecked(True)
  253. self.AddPG = addPGWidget.AddPGWidget()
  254. self.AddPG_signal.connect(self.AddPG.getname)
  255. self.pushButtonAddPG.clicked.connect(self.AddPG_widget)
  256. self.displayMode = "A"
  257. self.displayLabel = headerlabel0
  258. # self.lineEdit_phonenum.setText("")
  259. self.tableWidgetFlight.setColumnCount(len(self.displayLabel))
  260. self.tableWidgetFlight.verticalHeader().setVisible(False)
  261. self.tableWidgetFlight.setHorizontalHeaderLabels(self.displayLabel)
  262. self.tableWidgetFlight.cellDoubleClicked.connect(self.itemclick2)
  263. self.tableWidgetFlight.cellClicked.connect(self.itemclick)
  264. # 允许单机右键响应
  265. self.tableWidgetFlight.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu)
  266. # 构建右键的点击事件
  267. self.tableWidgetFlight.customContextMenuRequested.connect(self.generateMenu)
  268. loglabel = ["序号", "待办信息", "操作", "编号", "航班编号", "提示内容"]
  269. self.tableWidget.setColumnCount(len(loglabel))
  270. self.tableWidget.verticalHeader().setVisible(False)
  271. self.tableWidget.setHorizontalHeaderLabels(loglabel)
  272. self.tableWidgetLOG.setColumnCount(2)
  273. self.tableWidgetLOG.verticalHeader().setVisible(False)
  274. self.tableWidgetLOG.setHorizontalHeaderLabels(["序号", '日志信息'])
  275. self.checkBox.stateChanged.connect(self.displayChange)
  276. self.checkBox.setChecked(True)
  277. self.checkBox_2.stateChanged.connect(self.displaySelect2)
  278. self.checkBox_2.setChecked(True)
  279. self.checkBox_3.stateChanged.connect(self.displaySelect3)
  280. self.checkBox_3.setChecked(False)
  281. self.severpost_nomeassge("createWorkloadtablesFromPg", "/%s" % self.selectedtime, "", "", "")
  282. self.pushbutton_searchflight.clicked.connect(self.FLIGHTonChangeman)
  283. self.pushButton_searchpeople.clicked.connect(self.searchpeople)
  284. self.pushButton_5.clicked.connect(self.disearchpeople)
  285. self.pushButton_2.clicked.connect(self.call)
  286. self.pushButton_3.clicked.connect(self.calldown)
  287. self.pushButton_4.clicked.connect(self.relogin)
  288. self.pushButton_searchchange.clicked.connect(self.on_search_text_deal)
  289. self.pushButton_searchlog.clicked.connect(self.on_search_text_log)
  290. self.lineEdit_flight.textEdited[str].connect(lambda: self.changebackground())
  291. self.lineEdit_people.textEdited[str].connect(lambda: self.changebackground())
  292. self.lineEdit_change.textEdited[str].connect(lambda: self.changebackground())
  293. self.lineEdit_log.textEdited[str].connect(lambda: self.changebackground())
  294. self.lineEdit_flight.textChanged.connect(self.on_search_text_changed)
  295. self.lineEdit_log.textChanged.connect(self.on_search_text_log)
  296. self.lineEdit_people.textChanged.connect(self.on_search_text_people)
  297. self.lineEdit_change.textChanged.connect(self.on_search_text_deal)
  298. self.lineEdit_phonenum.textChanged.connect(self.on_search_text_phone)
  299. self.serchTimer = QTimer()
  300. self.serchTimer.start(3 * 1000)
  301. self.serchTimer.timeout.connect(self.QThreadSortTimer)
  302. self.updatecheck()
  303. self.taskAtuoCheck("1")
  304. except Exception as e:
  305. app_logger.log_error(e)
  306. def searchpeople(self):
  307. try:
  308. self.searchpeoplelist = Searchpeople_get.searchpeople_get()
  309. self.searchpeoplelist.searchpeoplelist_signal.connect(self.searchpeople_get)
  310. self.searchpeoplelist.ipinfo = self.ipinfo
  311. self.searchpeoplelist.selectedtime = self.selectedtime
  312. self.searchpeoplelist.selectedbc = self.selectedbc
  313. self.searchpeoplelist.Allpeoplelist = self.sortdiplaylist
  314. # self.searchpeoplelist.show()
  315. self.searchpeoplelist.start()
  316. except Exception as e:
  317. app_logger.log_error(e)
  318. def searchpeople_get(self, *args):
  319. try:
  320. # print(args)
  321. self.searchpeoplestr = args[0]
  322. self.QThreadSortNow("people")
  323. except Exception as e:
  324. app_logger.log_error(e)
  325. def disearchpeople(self):
  326. try:
  327. self.searchpeoplestr = []
  328. self.QThreadSortNow("people")
  329. except Exception as e:
  330. app_logger.log_error(e)
  331. def call(self):
  332. try:
  333. if self.localtoken != None and self.localip != None:
  334. callnum = self.lineEdit_phonenum.text()
  335. try:
  336. data = {"PHB_AutoDialNumber": callnum,
  337. "ReturnPage": "/contacts.htm",
  338. "AutoDialSubmit": "submit",
  339. "PHB_AutoDialLine": "1"
  340. }
  341. header = {
  342. "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
  343. "Connection": "keep-alive",
  344. "Cookie": self.localtoken
  345. }
  346. requests.post(url="http://%s/contacts.htm" % self.localip, data=data, headers=header)
  347. except Exception as e:
  348. app_logger.log_error(e)
  349. QMessageBox.warning(self, "提示", "IP电话连接失败,请重新配置或再登陆!")
  350. else:
  351. QMessageBox.warning(self, "提示", "未配置本地IP电话,请先配置!")
  352. except Exception as e:
  353. app_logger.log_error(e)
  354. def calldown(self):
  355. try:
  356. if self.localtoken != None and self.localip != None:
  357. try:
  358. data1 = {"HangupSubmit": "submit"}
  359. header1 = {
  360. "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
  361. "Connection": "keep-alive",
  362. "Cookie": self.localtoken,
  363. }
  364. requests.post(url="http://%s/contacts.htm" % self.localip, data=data1, headers=header1)
  365. except Exception as e:
  366. app_logger.log_error(e)
  367. QMessageBox.warning(self, "提示", "IP电话连接失败,请重新配置或再登陆!")
  368. else:
  369. QMessageBox.warning(self, "提示", "未配置本地IP电话,请先配置!")
  370. except Exception as e:
  371. app_logger.log_error(e)
  372. def relogin(self):
  373. try:
  374. if self.localip != None:
  375. self.QThreadSortNow("setlocalip")
  376. else:
  377. QMessageBox.warning(self, "提示", "未配置本地IP电话,请先配置!")
  378. except Exception as e:
  379. app_logger.log_error(e)
  380. def changebackground(self):
  381. try:
  382. FLIGHTonChange_text = self.lineEdit_flight.text()
  383. peolpleonChange_text = self.lineEdit_people.text()
  384. changeonChange_text = self.lineEdit_change.text()
  385. logonChange_text = self.lineEdit_log.text()
  386. if FLIGHTonChange_text != "":
  387. self.lineEdit_flight.setStyleSheet("background-color:yellow;color:red;font-weight:bold")
  388. else:
  389. self.lineEdit_flight.setStyleSheet("background-color:white")
  390. if peolpleonChange_text != "":
  391. self.lineEdit_people.setStyleSheet("background-color:yellow;color:red;font-weight:bold")
  392. else:
  393. self.lineEdit_people.setStyleSheet("background-color:white")
  394. if changeonChange_text != "":
  395. self.lineEdit_change.setStyleSheet("background-color:yellow;color:red;font-weight:bold")
  396. else:
  397. self.lineEdit_change.setStyleSheet("background-color:white")
  398. if logonChange_text != "":
  399. self.lineEdit_log.setStyleSheet("background-color:yellow;color:red;font-weight:bold")
  400. else:
  401. self.lineEdit_log.setStyleSheet("background-color:white")
  402. except Exception as e:
  403. app_logger.log_error(e)
  404. def debounced_search_phone(self):
  405. try:
  406. self.changeonPhone_text = self.lineEdit_phonenum.text()
  407. self.QThreadSortNow("phone")
  408. except Exception as e:
  409. app_logger.log_error(e)
  410. def on_search_text_changed(self):
  411. """文本变化时重置定时器"""
  412. self.debounce_timer.start(self.debounce_delay)
  413. def on_search_text_deal(self):
  414. """文本变化时重置定时器"""
  415. self.debounce_timer_deal.start(self.debounce_delay)
  416. def on_search_text_people(self):
  417. """文本变化时重置定时器"""
  418. self.debounce_timer_people.start(self.debounce_delay)
  419. def on_search_text_log(self):
  420. """文本变化时重置定时器"""
  421. self.debounce_timer_log.start(self.debounce_delay)
  422. def on_search_text_changed(self):
  423. """文本变化时重置定时器"""
  424. self.debounce_timer.start(self.debounce_delay)
  425. def on_search_text_phone(self):
  426. """文本变化时重置定时器"""
  427. self.debounce_timer_phone.start(self.debounce_delay)
  428. def debounced_search(self):
  429. """实际触发搜索的方法"""
  430. self.FLIGHTonChange_text = self.lineEdit_flight.text()
  431. self.QThreadSortNow("search")
  432. def FLIGHTonChangeman(self):
  433. try:
  434. now=datetime.datetime.now()- datetime.timedelta(seconds=5)
  435. if now > self.timelock:
  436. #print("点击")
  437. self.timelock=now + datetime.timedelta(seconds=5)
  438. self.FLIGHTonChange_text = self.lineEdit_flight.text()
  439. # print(self.FLIGHTonChange_text)
  440. #self.QThreadSortNow("ALL")
  441. self.QThreadSortNow("main")
  442. except Exception as e:
  443. app_logger.log_error(e)
  444. def debounced_search_people(self):
  445. try:
  446. self.peolpleonChange_text = self.lineEdit_people.text()
  447. self.QThreadSortNow("people")
  448. except Exception as e:
  449. app_logger.log_error(e)
  450. def debounced_search_deal(self):
  451. try:
  452. self.changeonChange_text = self.lineEdit_change.text()
  453. self.QThreadSortNow("change")
  454. except Exception as e:
  455. app_logger.log_error(e)
  456. def debounced_search_log(self):
  457. try:
  458. self.logonChange_text = self.lineEdit_log.text()
  459. self.QThreadSortNow("log")
  460. except Exception as e:
  461. app_logger.log_error(e)
  462. def taskAtuoCheck(self, time):
  463. try:
  464. ip = "http://" + str(self.ipinfo) + "/static/taskAtuoCheck/%s" % time
  465. requests.get(url=ip, timeout=30).json()
  466. # print("准备组任务自动更新") #客户端连接监测一次,12H监测一次
  467. # logging.info("准备组任务自动更新")
  468. except Exception as e:
  469. app_logger.log_error(e)
  470. QMessageBox.warning(self, "提示", "服务器连接超时,请联系管理员检查服务器!")
  471. def updatecheck(self):
  472. try:
  473. ip = "http://" + str(self.ipinfo) + "/static/updatecheck"
  474. res = requests.get(url=ip, timeout=30).json()
  475. if res["返回值"] == "1":
  476. self.label_11.setText("正 常")
  477. self.label_11.setStyleSheet(
  478. "background-color:green;color:white;border-radius:5px;padding:2px;font-weight:bold")
  479. if self.severupdatests != "1":
  480. self.severupdatests = "1"
  481. try:
  482. ip = "http://" + str(self.ipinfo) + "/static/insertLogs2/" + "服务器状态变更为正常/" + "%s/" % str("系统上报") + "%s" % str(datetime.datetime.now())
  483. requests.get(url=ip, timeout=30).json()
  484. except Exception as e:
  485. app_logger.log_error(e)
  486. QMessageBox.warning(self,"日志功能失效", "操作日志功能失效请联系管理员!")
  487. elif res["返回值"] == "0":
  488. self.label_11.setText("未更新")
  489. self.label_11.setStyleSheet("background-color:yellow;red:white;border-radius:5px;padding:2px;font-weight:bold")
  490. if self.severupdatests != "0":
  491. self.severupdatests = "0"
  492. try:
  493. ip = "http://" + str(self.ipinfo) + "/static/insertLogs2/" + "服务器状态变更为未更新,航班数据暂停刷新/" + "%s/" % str("系统上报") + "%s" % str(datetime.datetime.now())
  494. requests.get(url=ip, timeout=30).json()
  495. except Exception as e:
  496. app_logger.log_error(e)
  497. QMessageBox.warning(self,"日志功能失效", "操作日志功能失效请联系管理员!")
  498. QMessageBox.warning(self, "警告", "服务器状态变更为未更新,航班数据暂停刷新,请检查服务器端AMRO登录情况或联系管理员!")
  499. except Exception as e:
  500. app_logger.log_error(e)
  501. self.label_11.setText("已断开")
  502. self.label_11.setStyleSheet("background-color:red;color:white;border-radius:5px;padding:2px;font-weight:bold")
  503. if self.severupdatests != "-":
  504. self.severupdatests = "-"
  505. try:
  506. ip = "http://" + str(self.ipinfo) + "/static/insertLogs2/" + "服务器状态变更为断开,航班数据暂停刷新/" + "%s/" % str("系统上报") + "%s" % str(datetime.datetime.now())
  507. requests.get(url=ip, timeout=30).json()
  508. except Exception as e:
  509. app_logger.log_error(e)
  510. QMessageBox.warning(self, "日志功能失效", "操作日志功能失效请联系管理员!")
  511. self.restartServer(self.ipinfo.split(':')[0],9935)
  512. def initFlightDatabase(self):
  513. try:
  514. ip = "http://" + str(self.ipinfo) + "/static/initFlightDatabase/" + str(self.selectedtime)
  515. requests.get(url=ip, timeout=30).json()
  516. except Exception as e:
  517. app_logger.log_error(e)
  518. QMessageBox.warning(self, "提示", "服务器连接超时,请联系管理员检查服务器!")
  519. def severpost_nomeassge(self, postname, postdata, postdata2, postdata3, postdata4):
  520. try:
  521. ip = "http://" + str(self.ipinfo) + "/static/" + str(postname) + str(postdata) + str(postdata2) + str(postdata3) + str(postdata4)
  522. res = requests.get(url=ip, timeout=30).json()
  523. return res
  524. except Exception as e:
  525. app_logger.log_error(e)
  526. QMessageBox.warning(self, "提示", "服务器连接超时,请联系管理员检查服务器!")
  527. def severpostData_nomeassge(self, postname, data: dict):
  528. try:
  529. ip = "http://" + str(self.ipinfo) + "/static/" + str(postname)
  530. data = json.dumps(data)
  531. res = requests.post(url=ip, data=data, timeout=120).json()
  532. return res
  533. except Exception as e:
  534. app_logger.log_error(e)
  535. QMessageBox.warning(self, "提示", "服务器连接超时,请联系管理员检查服务器!")
  536. def AddPG_widget(self):
  537. if int(self.authority) != 3:
  538. try:
  539. self.AddPG.show()
  540. self.AddPG_signal.emit(self.user, self.selectedtime, self.ipinfo)
  541. except Exception as e:
  542. app_logger.log_error(e)
  543. else:
  544. self.show_message2("提示", "权限不够,请联系管理员!")
  545. def selected_bc_A(self):
  546. try:
  547. bc = self.sender()
  548. if bc.isChecked():
  549. self.selectedbc = "A"
  550. # print("白班")
  551. self.severpost_nomeassge("createWorkloadtablesFromPg", "/%s" % self.selectedtime, "", "", "")
  552. if self.loginSts == True:
  553. self.QThreadSortNow("people")
  554. except Exception as e:
  555. app_logger.log_error(e)
  556. def selected_bc_B(self):
  557. try:
  558. bc = self.sender()
  559. if bc.isChecked():
  560. self.selectedbc = "B"
  561. # print("夜班")
  562. self.severpost_nomeassge("createWorkloadtablesFromPg", "/%s" % self.selectedtime, "", "", "")
  563. if self.loginSts == True:
  564. self.QThreadSortNow("people")
  565. except Exception as e:
  566. app_logger.log_error(e)
  567. def displaySelect2(self):
  568. try:
  569. displaySelect = self.sender()
  570. if displaySelect.isChecked():
  571. self.displaySelectstr2 = "1"
  572. if self.loginSts == True:
  573. if self.displaySelectstr3 == "1":
  574. self.displaySelect_mode = "3"
  575. else:
  576. self.displaySelect_mode = "1"
  577. #self.QThreadSortNow("main")
  578. self.QThreadSortNow("search")
  579. else:
  580. self.displaySelectstr2 = "0"
  581. self.displaySelect_mode = "0"
  582. if self.loginSts == True:
  583. if self.displaySelectstr3 == "1":
  584. self.checkBox_3.setChecked(False)
  585. else:
  586. # self.QThreadSortNow("main")
  587. self.QThreadSortNow("search")
  588. except Exception as e:
  589. app_logger.log_error(e)
  590. def displaySelect3(self):
  591. try:
  592. displaySelect = self.sender()
  593. if displaySelect.isChecked():
  594. self.displaySelectstr3 = "1"
  595. self.displaySelect_mode = "3"
  596. if self.loginSts == True:
  597. if self.displaySelectstr2 == "0":
  598. self.checkBox_2.setChecked(True)
  599. else:
  600. # self.QThreadSortNow("main")
  601. self.QThreadSortNow("search")
  602. else:
  603. self.displaySelectstr3 = "0"
  604. if self.loginSts == True:
  605. if self.displaySelectstr2 == "0":
  606. self.displaySelect_mode = "0"
  607. else:
  608. self.displaySelect_mode = "1"
  609. # self.QThreadSortNow("main")
  610. self.QThreadSortNow("search")
  611. except Exception as e:
  612. app_logger.log_error(e)
  613. def displayChange(self):
  614. try:
  615. bc = self.sender()
  616. if bc.isChecked():
  617. if self.loginSts == True:
  618. self.displayMode = "A"
  619. self.QThreadSortNow("main")
  620. # print("A模式")
  621. else:
  622. if self.loginSts == True:
  623. self.displayMode = "B"
  624. self.QThreadSortNow("main")
  625. # print("B模式")
  626. except Exception as e:
  627. app_logger.log_error(e)
  628. def selectedtime_bc(self):
  629. try:
  630. self.selectedtime = self.dateEdit.date().toString('yyyyMMdd')
  631. judgedate = (datetime.date.today() + datetime.timedelta(days=1)).strftime("%Y%m%d")
  632. if self.selectedtime == judgedate:
  633. QMessageBox.warning(self, "重要提示","明日航班20:30后提供查询功能!由于第二日航班波动较大,22:00前仅提供查询功能,22:00以后提供第二日航班的航班变更以及节点监控功能!")
  634. self.initFlightDatabase()
  635. ip = "http://" + str(self.ipinfo) + "/map/" + str(self.selectedtime)
  636. self.QThreadSortNow("main")
  637. self.QThreadSortNow("people")
  638. # print(self.selectedtime)
  639. except Exception as e:
  640. app_logger.log_error(e)
  641. def show_info(self, title, text):
  642. try:
  643. reply = QMessageBox.question(self, title, text,QMessageBox.StandardButton.Yes | QMessageBox.StandardButton.Cancel,QMessageBox.StandardButton.Cancel)
  644. if reply == QMessageBox.StandardButton.Yes:
  645. return 1
  646. else:
  647. return 0
  648. except Exception as e:
  649. app_logger.log_error(e)
  650. def displayMain(self, *args):
  651. try:
  652. if args[0]:
  653. self.initDisplay()
  654. self.loginSts = True
  655. self.loginWidget.close()
  656. self.show()
  657. self.QThreadSortNow("main")
  658. self.QThreadSortNow("change")
  659. self.QThreadSortNow("people")
  660. self.QThreadSortNow("log")
  661. self.initlocalipback()
  662. except Exception as e:
  663. app_logger.log_error(e)
  664. def setUser(self, args):
  665. try:
  666. self.user = args[1]
  667. self.authority = args[3]
  668. self.label_username.setText(self.user)
  669. except Exception as e:
  670. app_logger.log_error(e)
  671. def AddFlight(self):
  672. try:
  673. self.addFlight = AddFlightWidget.addFlightWidget()
  674. self.addFlight.ipinfo = self.ipinfo
  675. self.addFlight.user = self.user
  676. self.addFlight.show()
  677. except Exception as e:
  678. app_logger.log_error(e)
  679. def HandoverFlight(self):
  680. try:
  681. self.handoverFlight = HandoverFlightWidget.handoverFlightWidget()
  682. self.handoverFlight.ipinfo = self.ipinfo
  683. self.handoverFlight.user = self.user
  684. self.handoverFlight.Allflight = self.sorttableWidgetDispalydataALL
  685. self.handoverFlight.selectedtime=self.selectedtime
  686. self.handoverFlight.handoverFlight_signal.connect(self.handoverFlight_update)
  687. self.handoverFlight.show()
  688. self.handoverFlight.start()
  689. except Exception as e:
  690. app_logger.log_error(e)
  691. def handoverFlight_update(self, *args):
  692. try:
  693. # print(args)
  694. self.QThreadSortNow("main")
  695. except Exception as e:
  696. app_logger.log_error(e)
  697. def showAdduser(self):
  698. try:
  699. self.addUser = AddUserWidget.addUserWidget()
  700. self.addUser.ipinfo = self.ipinfo
  701. self.addUser.user = self.user
  702. self.addUser.authority=self.authority
  703. self.addUser.show()
  704. except Exception as e:
  705. app_logger.log_error(e)
  706. def showChangePassword(self):
  707. try:
  708. self.changePassword = ChangePassword.changePassword()
  709. self.changePassword.ipinfo = self.ipinfo
  710. self.changePassword.user = self.user
  711. self.changePassword.show()
  712. except Exception as e:
  713. app_logger.log_error(e)
  714. def showchangeAuth(self):
  715. try:
  716. self.changeAuth = ChangeAuth.changeAuth()
  717. self.changeAuth.ipinfo = self.ipinfo
  718. self.changeAuth.user = self.user
  719. self.changeAuth.start()
  720. except Exception as e:
  721. app_logger.log_error(e)
  722. def openFile(self):
  723. try:
  724. fileName, _ = QFileDialog.getOpenFileName(self, '打开文件', '/')
  725. # print(fileName)
  726. data = {"fileName": fileName}
  727. res = self.severpostData_nomeassge("get_dic", data)["返回值"]
  728. if res != "ok":
  729. self.show_message2("警告", "文件错误")
  730. elif res == "ok":
  731. self.show_message2("提示", "人员信息添加成功!")
  732. except Exception as e:
  733. app_logger.log_error(e)
  734. def saveCase(self):
  735. try:
  736. fileName, _ = QFileDialog.getSaveFileName(None, "选取文件夹", "/停场航班导入模板.xlsx", "xlsx(*.xlsx)")
  737. if fileName:
  738. wb = Workbook()
  739. wb.create_sheet(title="停场航班导入模板", index=0)
  740. ws = wb.active
  741. ws.title = '航班数据'
  742. ws = wb['航班数据']
  743. for row in range(1, 50):
  744. for cloumn in range(1, 7):
  745. ws.cell(row, cloumn).number_format = '@'
  746. ws.cell(1, 1).value = "序号"
  747. ws.cell(1, 2).value = "日期"
  748. ws.cell(1, 3).value = "机号"
  749. ws.cell(1, 4).value = "机位"
  750. ws.cell(1, 5).value = "机型"
  751. ws.cell(1, 6).value = "发动机"
  752. ws.cell(1, 7).value = "录入数据请从第三行开始录入,切勿覆盖第一二行数据!!!"
  753. ws.cell(2, 1).value = "1"
  754. ws.cell(2, 2).value = "2024/03/21"
  755. ws.cell(2, 3).value = "1663"
  756. ws.cell(2, 4).value = "722"
  757. ws.cell(2, 5).value = "A321"
  758. ws.cell(2, 6).value = "V2500"
  759. ws.cell(2, 7).value = "录入数据请从第三行开始录入,切勿覆盖第一二行数据!!!"
  760. wb.save(fileName)
  761. self.show_message2("提示", "导出成功!文件已保存至%s" % fileName)
  762. except Exception as e:
  763. app_logger.log_error(e)
  764. self.show_message2("警告", "导出失败,确认%s是否被打开或联系管理员!!!")
  765. def saveRisktable(self):
  766. try:
  767. fileName, _ = QFileDialog.getSaveFileName(None, "选取文件夹", "/风险数据库.xlsx","xlsx(*.xlsx)")
  768. if fileName:
  769. ip = "http://" + str(self.ipinfo) + "/static/saveRisktable"
  770. res = requests.get(url=ip, timeout=30).json()["返回值"]
  771. wb = Workbook()
  772. wb.create_sheet(title="风险数据库.xlsx", index=0)
  773. ws = wb.active
  774. ws.title = '风险数据库'
  775. ws = wb['风险数据库']
  776. for row in range(1, len(res)+1):
  777. for cloumn in range(1, 8):
  778. ws.cell(row, cloumn).number_format = '@'
  779. ws.cell(1, 1).value = "风险编号"
  780. ws.cell(1, 2).value = "状态"
  781. ws.cell(1, 3).value = "提示内容"
  782. ws.cell(1, 4).value = "机位"
  783. ws.cell(1, 5).value = "进出港触发"
  784. ws.cell(1, 6).value = "机号"
  785. ws.cell(1, 7).value = "触发条件4"
  786. ws.cell(1, 8).value = "触发条件5"
  787. if len(res) != 0:
  788. ii=1
  789. for i in res:
  790. for j in range(0, 8):
  791. #print(ii,j)
  792. ws.cell(int(ii) + 1, j+1).value = i[j]
  793. ii+=1
  794. wb.save(fileName)
  795. except Exception as e:
  796. app_logger.log_error(e)
  797. def saveAllflight(self):
  798. try:
  799. index = {"序号": "0", "类型": "9", "航班号": "4", "机型": "2", "发动机": "3", "机号": "1", "计达": "5", "预达": "6","计飞": "7", "机位": "8"}
  800. index2 = {1: "序号", 2: "类型", 3: "航班号", 4: "机型", 5: "发动机", 6: "机号", 7: "计达", 8: "预达", 9: "计飞", 10: "机位"}
  801. fileName, _ = QFileDialog.getSaveFileName(None, "选取文件夹", "/%s全天航班导出(未含保障结束).xlsx" % self.selectedtime,"xlsx(*.xlsx)")
  802. # print(fileName)
  803. if fileName:
  804. ip = "http://" + str(self.ipinfo) + "/static/" + "tableWidgetDispaly22/" + "%s" % self.selectedtime
  805. res = requests.get(url=ip, timeout=30).json()
  806. # print(res)
  807. wb = Workbook()
  808. wb.create_sheet(title="%s全天航班导出(未含保障结束).xlsx" % self.selectedtime, index=0)
  809. ws = wb.active
  810. ws.title = '航班数据'
  811. ws = wb['航班数据']
  812. for row in range(1, 400):
  813. for cloumn in range(1, 10):
  814. ws.cell(row, cloumn).number_format = '@'
  815. ws.cell(1, 1).value = "序号"
  816. ws.cell(1, 2).value = "类型"
  817. ws.cell(1, 3).value = "航班号"
  818. ws.cell(1, 4).value = "机型"
  819. ws.cell(1, 5).value = "发动机"
  820. ws.cell(1, 6).value = "机号"
  821. ws.cell(1, 7).value = "计达"
  822. ws.cell(1, 8).value = "预达"
  823. ws.cell(1, 9).value = "计飞"
  824. ws.cell(1, 10).value = "机位"
  825. if len(res) != 0:
  826. for i in res.keys():
  827. if res[i]["109"] != "4":
  828. for j in range(1, 11):
  829. if j == 2 and "3U" in res[i]["4"] and "CSC" in res[i]["4"]:
  830. ws.cell(int(i) + 2, j).value = "外" + str(res[i][index[index2[j]]])
  831. elif j == 7 or j == 8:
  832. text = str(res[i][index[index2[j]]]).replace(":","") if str(res[i][index[index2[j]]]) != "" else ""
  833. ws.cell(int(i) + 2, j).value = text
  834. elif j == 9:
  835. text = str(str(res[i][index[index2[j]]]).split("]")[1]).replace(":","") if "]" in str(res[i][index[index2[j]]]) else ""
  836. ws.cell(int(i) + 2, j).value = text
  837. else:
  838. ws.cell(int(i) + 2, j).value = res[i][index[index2[j]]]
  839. wb.save(fileName)
  840. self.show_message2("提示", "%s全天航班导出成功!文件已保存至%s" % (self.selectedtime, fileName))
  841. except Exception as e:
  842. app_logger.log_error(e)
  843. self.show_message2("警告", "导出失败,确认%s是否被打开或联系管理员!!!" % fileName)
  844. def saveAllflight2(self):
  845. try:
  846. time2 = datetime.datetime.strptime(self.selectedtime, "%Y%m%d")
  847. time1 = str((time2 - datetime.timedelta(days=1)).strftime("%Y%m%d"))
  848. index = {"序号": "1", "类型": "19", "航班号": "9", "机型": "5", "发动机": "7", "机号": "3", "计达": "11", "预达": "13","计飞": "15", "机位": "8","放行":"21","工1":"23","工2":"25","工3":"27","工4":"29","备注":"61","班组长":"31"}
  849. index2 = {1: "序号", 2: "类型", 3: "航班号", 4: "机型", 5: "发动机", 6: "机号", 7: "计达", 8: "预达", 9: "计飞", 10: "机位",11: "放行",12: "工1",13: "工2",14: "工3",15: "工4",16: "备注",17: "班组长"}
  850. fileName, _ = QFileDialog.getSaveFileName(None, "选取文件夹", "/%s航班安排备份导出.xlsx" %(str(time1)+"-"+str(self.selectedtime)[-2:]),"xlsx(*.xlsx)")
  851. # print(fileName)
  852. wb = Workbook()
  853. if fileName:
  854. for selectedtime in [self.selectedtime,time1]:
  855. ip = "http://" + str(self.ipinfo) + "/static/" + "tableWidgetDispaly11/" + "%s" %selectedtime
  856. res = requests.get(url=ip, timeout=30).json()
  857. # print(res)
  858. wb.create_sheet(title="%s" % selectedtime, index=0)
  859. ws = wb.active
  860. ws.title = "%s" % selectedtime
  861. ws = wb["%s" % selectedtime]
  862. for row in range(1, 400):
  863. for cloumn in range(1, 18):
  864. ws.cell(row, cloumn).number_format = '@'
  865. ws.cell(1, 1).value = "序号"
  866. ws.cell(1, 2).value = "类型"
  867. ws.cell(1, 3).value = "航班号"
  868. ws.cell(1, 4).value = "机型"
  869. ws.cell(1, 5).value = "发动机"
  870. ws.cell(1, 6).value = "机号"
  871. ws.cell(1, 7).value = "计达"
  872. ws.cell(1, 8).value = "预达"
  873. ws.cell(1, 9).value = "计飞"
  874. ws.cell(1, 10).value = "机位"
  875. ws.cell(1, 11).value = "放行"
  876. ws.cell(1, 12).value = "工1"
  877. ws.cell(1, 13).value = "工2"
  878. ws.cell(1, 14).value = "工3"
  879. ws.cell(1, 15).value = "工4"
  880. ws.cell(1, 16).value = "备注"
  881. ws.cell(1, 17).value = "班组长"
  882. if len(res) != 0:
  883. for i in res.keys():
  884. for j in range(1, 18):
  885. if j == 2:
  886. if "3U" not in res[i]["4"] and "CSC" not in res[i]["4"]:
  887. ws.cell(int(i) + 2, j).value = "外" + str(res[i][index[index2[j]]])
  888. else:
  889. ws.cell(int(i) + 2, j).value = res[i][index[index2[j]]]
  890. elif j == 7 or j == 8:
  891. text = str(res[i][index[index2[j]]]).replace(":","") if str(res[i][index[index2[j]]]) != "" else ""
  892. ws.cell(int(i) + 2, j).value = text
  893. elif j == 9:
  894. text = str(str(res[i][index[index2[j]]]).split("]")[1]).replace(":","") if "]" in str(res[i][index[index2[j]]]) else ""
  895. ws.cell(int(i) + 2, j).value = text
  896. else:
  897. ws.cell(int(i) + 2, j).value = res[i][index[index2[j]]]
  898. wb.save(fileName)
  899. self.show_message2("提示", "%s全天航班导出成功!文件已保存至%s" % (self.selectedtime, fileName))
  900. except Exception as e:
  901. app_logger.log_error(e)
  902. self.show_message2("警告", "导出失败,确认%s是否被打开或联系管理员!!!" % fileName)
  903. def saveAllflight3(self):
  904. try:
  905. time2 = datetime.datetime.strptime(self.selectedtime, "%Y%m%d")
  906. time1 = str((time2 - datetime.timedelta(days=1)).strftime("%Y%m%d"))
  907. index = {"序号": "0", "类型": "9", "航班号": "4", "机型": "2", "发动机": "3", "机号": "1", "计达": "5", "预达": "6","计飞": "7", "机位": "8","工作单":"10","飞单":"11","客舱单":"12","临工单":"13","AMRO记录":"14","备注":"32","电签":"15"}
  908. index2 = {1: "序号", 2: "类型", 3: "航班号", 4: "机型", 5: "发动机", 6: "机号", 7: "计达", 8: "预达", 9: "计飞", 10: "机位",11: "工作单",12: "飞单",13: "客舱单",14: "临工单",15: "AMRO记录",16: "备注",17: "电签"}
  909. fileName, _ = QFileDialog.getSaveFileName(None, "选取文件夹", "/%s维修记录备份导出.xlsx" %(str(time1)+"-"+str(self.selectedtime)[-2:]),"xlsx(*.xlsx)")
  910. # print(fileName)
  911. wb = Workbook()
  912. if fileName:
  913. for selectedtime in [self.selectedtime,time1]:
  914. ip = "http://" + str(self.ipinfo) + "/static/" + "tableWidgetDispaly22/" + "%s" %selectedtime
  915. res = requests.get(url=ip, timeout=30).json()
  916. # print(res)
  917. wb.create_sheet(title="%s" % selectedtime, index=0)
  918. ws = wb.active
  919. ws.title = "%s" % selectedtime
  920. ws = wb["%s" % selectedtime]
  921. for row in range(1, 400):
  922. for cloumn in range(1, 18):
  923. ws.cell(row, cloumn).number_format = '@'
  924. ws.cell(1, 1).value = "序号"
  925. ws.cell(1, 2).value = "类型"
  926. ws.cell(1, 3).value = "航班号"
  927. ws.cell(1, 4).value = "机型"
  928. ws.cell(1, 5).value = "发动机"
  929. ws.cell(1, 6).value = "机号"
  930. ws.cell(1, 7).value = "计达"
  931. ws.cell(1, 8).value = "预达"
  932. ws.cell(1, 9).value = "计飞"
  933. ws.cell(1, 10).value = "机位"
  934. ws.cell(1, 11).value = "工作单"
  935. ws.cell(1, 12).value = "飞单"
  936. ws.cell(1, 13).value = "客舱单"
  937. ws.cell(1, 14).value = "临工单"
  938. ws.cell(1, 15).value = "AMRO记录"
  939. ws.cell(1, 16).value = "备注"
  940. ws.cell(1, 17).value = "电签"
  941. if len(res) != 0:
  942. for i in res.keys():
  943. for j in range(1, 18):
  944. if j == 2:
  945. if "3U" not in res[i]["4"] and "CSC" not in res[i]["4"]:
  946. ws.cell(int(i) + 2, j).value = "外" + str(res[i][index[index2[j]]])
  947. else:
  948. ws.cell(int(i) + 2, j).value = res[i][index[index2[j]]]
  949. elif j == 6:
  950. text = "B-"+str(res[i][index[index2[j]]])
  951. ws.cell(int(i) + 2, j).value = text
  952. elif j == 7 or j == 8:
  953. text = str(res[i][index[index2[j]]]).replace(":","") if str(res[i][index[index2[j]]]) != "" else ""
  954. ws.cell(int(i) + 2, j).value = text
  955. elif j == 9:
  956. text = str(str(res[i][index[index2[j]]]).split("]")[1]).replace(":","") if "]" in str(res[i][index[index2[j]]]) else ""
  957. ws.cell(int(i) + 2, j).value = text
  958. else:
  959. ws.cell(int(i) + 2, j).value = res[i][index[index2[j]]]
  960. wb.save(fileName)
  961. self.show_message2("提示", "%s全天航班导出成功!文件已保存至%s" % (self.selectedtime, fileName))
  962. except Exception as e:
  963. app_logger.log_error(e)
  964. self.show_message2("警告", "导出失败,确认%s是否被打开或联系管理员!!!" % fileName)
  965. def saveDealflight(self):
  966. try:
  967. index = {"序号": "0", "类型": "9", "航班号": "4", "机型": "2", "发动机": "3", "机号": "1", "计达": "5", "预达": "6","计飞": "7", "机位": "8"}
  968. index2 = {1: "序号", 2: "类型", 3: "航班号", 4: "机型", 5: "发动机", 6: "机号", 7: "计达", 8: "预达", 9: "计飞", 10: "机位"}
  969. fileName, _ = QFileDialog.getSaveFileName(None, "选取文件夹", "/%s交班航班导出.xlsx" % self.selectedtime,"xlsx(*.xlsx)")
  970. # print(fileName)
  971. if fileName:
  972. ip = "http://" + str(self.ipinfo) + "/static/" + "tableWidgetDispaly22/" + "%s" % self.selectedtime
  973. res = requests.get(url=ip, timeout=30).json()
  974. # print(res)
  975. wb = Workbook()
  976. wb.create_sheet(title="%s交班航班导出.xlsx" % self.selectedtime, index=0)
  977. ws = wb.active
  978. ws.title = '航班数据'
  979. ws = wb['航班数据']
  980. for row in range(1, 400):
  981. for cloumn in range(1, 10):
  982. ws.cell(row, cloumn).number_format = '@'
  983. ws.cell(1, 1).value = "序号"
  984. ws.cell(1, 2).value = "类型"
  985. ws.cell(1, 3).value = "航班号"
  986. ws.cell(1, 4).value = "机型"
  987. ws.cell(1, 5).value = "发动机"
  988. ws.cell(1, 6).value = "机号"
  989. ws.cell(1, 7).value = "计达"
  990. ws.cell(1, 8).value = "预达"
  991. ws.cell(1, 9).value = "计飞"
  992. ws.cell(1, 10).value = "机位"
  993. if len(res) != 0:
  994. for i in res.keys():
  995. if res[i]["109"] == "1" or res[i]["109"] == "3":
  996. for j in range(1, 11):
  997. if j == 2:
  998. if "3U" not in res[i]["4"] and "CSC" not in res[i]["4"]:
  999. ws.cell(int(i) + 2, j).value = "外" + str(res[i][index[index2[j]]])
  1000. else:
  1001. ws.cell(int(i) + 2, j).value = res[i][index[index2[j]]]
  1002. elif j == 7 or j == 8:
  1003. text = str(res[i][index[index2[j]]]).replace(":","") if str(res[i][index[index2[j]]]) != "" else ""
  1004. ws.cell(int(i) + 2, j).value = text
  1005. elif j == 9:
  1006. text = str(str(res[i][index[index2[j]]]).split("]")[1]).replace(":","") if "]" in str(res[i][index[index2[j]]]) else ""
  1007. ws.cell(int(i) + 2, j).value = text
  1008. else:
  1009. ws.cell(int(i) + 2, j).value = res[i][index[index2[j]]]
  1010. wb.save(fileName)
  1011. self.show_message2("提示", "%s交班航班导出成功!文件已保存至%s" % (self.selectedtime, fileName))
  1012. except Exception as e:
  1013. app_logger.log_error(e)
  1014. self.show_message2("警告", "导出失败,确认%s是否被打开或联系管理员!!!" % fileName)
  1015. ################################################################################################################################################
  1016. def updateStopFlight(self):
  1017. try:
  1018. fileName, _ = QFileDialog.getOpenFileName(self, '打开文件', '/')
  1019. # print(fileName)
  1020. data = {"fileName": fileName}
  1021. res = self.severpostData_nomeassge("updateStopFlight", data)["返回值"]
  1022. if res != "ok":
  1023. self.show_message2("警告", "停场航班添加失败!")
  1024. elif res == "ok":
  1025. self.show_message2("提示", "停场航班添加成功!")
  1026. self.QThreadSortNow("main")
  1027. except Exception as e:
  1028. app_logger.log_error(e)
  1029. def updateTaskAuto(self):
  1030. try:
  1031. if int(self.authority) <= 1:
  1032. fileName, _ = QFileDialog.getOpenFileName(self, '打开文件', '/')
  1033. # print(fileName)
  1034. data = {"fileName": fileName}
  1035. res = self.severpostData_nomeassge("updateTaskAuto", data)["返回值"]
  1036. if res != "ok":
  1037. self.show_message2("警告", "文件错误")
  1038. elif res == "ok":
  1039. self.taskAtuoCheck("3")
  1040. self.show_message2("提示", "准备组任务更新成功!")
  1041. else:
  1042. self.show_message2("提示", "权限不够,请联系管理员!")
  1043. except Exception as e:
  1044. app_logger.log_error(e)
  1045. QMessageBox.warning(self, "提示", "服务器连接超时,请联系管理员检查服务器!")
  1046. def updateRiskdb(self):
  1047. try:
  1048. if int(self.authority) <= 1:
  1049. fileName, _ = QFileDialog.getOpenFileName(self, '打开文件', '/')
  1050. # print(fileName)
  1051. data = {"fileName": fileName}
  1052. res = self.severpostData_nomeassge("updateRiskdb", data)["返回值"]
  1053. if res != "ok":
  1054. self.show_message2("警告", "文件错误")
  1055. elif res == "ok":
  1056. self.show_message2("提示", "风险数据库更新成功!")
  1057. else:
  1058. self.show_message2("提示", "权限不够,请联系管理员!")
  1059. except Exception as e:
  1060. app_logger.log_error(e)
  1061. QMessageBox.warning(self, "提示", "服务器连接超时,请联系管理员检查服务器!")
  1062. def show_message2(self, type, str):
  1063. try:
  1064. QMessageBox.warning(self, "%s" % type, "%s" % str)
  1065. except Exception as e:
  1066. app_logger.log_error(e)
  1067. def QThreadSortDispalyTimer(self, name, dict, dict2, seversts, displayMode):
  1068. try:
  1069. if name == "sortTableWidgetDispaly":
  1070. if displayMode == "A":
  1071. self.displayLabel = headerlabel0
  1072. self.tableWidgetFlight.setColumnCount(len(self.displayLabel))
  1073. self.tableWidgetFlight.verticalHeader().setVisible(False)
  1074. self.tableWidgetFlight.setHorizontalHeaderLabels(self.displayLabel)
  1075. elif displayMode == "B":
  1076. self.displayLabel = headerlabel_B
  1077. self.tableWidgetFlight.setColumnCount(len(self.displayLabel))
  1078. self.tableWidgetFlight.verticalHeader().setVisible(False)
  1079. self.tableWidgetFlight.setHorizontalHeaderLabels(self.displayLabel)
  1080. self.sorttableWidgetDispalydata = {}
  1081. self.sorttableWidgetDispalydata = dict
  1082. if self.doubleclickLockUpdate == 0:
  1083. self.tableWidgetDispaly()
  1084. # print(self.sorttableWidgetDispalydata)
  1085. elif name == "sortTableWidgetDispalyALL":
  1086. self.sorttableWidgetDispalydataALL = {}
  1087. self.sorttableWidgetDispalydataALL = dict
  1088. elif name == "sorttableWidgetDisplayChange":
  1089. self.sortlogchange = {}
  1090. self.sortlogchange = dict
  1091. self.tableWidgetDisplayChange()
  1092. # print(self.sortlogchange)
  1093. elif name == "sorttableWidgetPeopleDisplay":
  1094. self.sortdiplaylist = {}
  1095. self.sortdiplaylist = dict
  1096. self.peopleOnJob = [""]
  1097. self.peopleOnJob = dict2
  1098. self.tableWidgetPeopleDisplay()
  1099. # print(self.peopleOnJob)
  1100. # print(self.sortdiplaylist)
  1101. elif name == "sorttableWidgetLOGDispaly":
  1102. self.sortlog = {}
  1103. self.sortlog = dict
  1104. self.tableWidgetLOGDispaly()
  1105. # print(self.sortlog)
  1106. if seversts == "0":
  1107. self.severupdatests = "-"
  1108. self.label_11.setText("已断开")
  1109. self.label_11.setStyleSheet(
  1110. "background-color:red;color:white;border-radius:5px;padding:2px;font-weight:bold")
  1111. self.restartServer(self.ipinfo.split(':')[0],9935)
  1112. elif seversts == "1" and self.severupdatests == "1":
  1113. self.label_11.setText("正 常")
  1114. self.label_11.setStyleSheet(
  1115. "background-color:green;color:white;border-radius:5px;padding:2px;font-weight:bold")
  1116. elif seversts == "1" and self.severupdatests == "0":
  1117. self.label_11.setText("未更新")
  1118. self.label_11.setStyleSheet(
  1119. "background-color:yellow;color:red;border-radius:5px;padding:2px;font-weight:bold")
  1120. except Exception as e:
  1121. app_logger.log_error(e)
  1122. def QThreadSortDispalyNow(self, name, dict, dict2, seversts, displayMode):
  1123. try:
  1124. if name == "sortTableWidgetDispaly":
  1125. if displayMode == "A":
  1126. self.displayLabel=headerlabel0
  1127. self.tableWidgetFlight.setColumnCount(len(self.displayLabel))
  1128. self.tableWidgetFlight.verticalHeader().setVisible(False)
  1129. self.tableWidgetFlight.setHorizontalHeaderLabels(self.displayLabel)
  1130. else:
  1131. self.displayLabel = headerlabel_B
  1132. self.tableWidgetFlight.setColumnCount(len(self.displayLabel))
  1133. self.tableWidgetFlight.verticalHeader().setVisible(False)
  1134. self.tableWidgetFlight.setHorizontalHeaderLabels(self.displayLabel)
  1135. self.sorttableWidgetDispalydata = {}
  1136. self.sorttableWidgetDispalydata = dict
  1137. # print(self.sorttableWidgetDispalydata)
  1138. if self.doubleclickLockUpdate == 0:
  1139. self.tableWidgetDispaly()
  1140. elif name == "SearchsortTableWidgetDispaly":
  1141. if displayMode == "A":
  1142. self.displayLabel = headerlabel0
  1143. self.tableWidgetFlight.setColumnCount(len(self.displayLabel))
  1144. self.tableWidgetFlight.verticalHeader().setVisible(False)
  1145. self.tableWidgetFlight.setHorizontalHeaderLabels(self.displayLabel)
  1146. elif displayMode == "B":
  1147. self.displayLabel =headerlabel_B
  1148. self.tableWidgetFlight.setColumnCount(len(self.displayLabel))
  1149. self.tableWidgetFlight.verticalHeader().setVisible(False)
  1150. self.tableWidgetFlight.setHorizontalHeaderLabels(self.displayLabel)
  1151. self.sorttableWidgetDispalydata = {}
  1152. self.sorttableWidgetDispalydata = dict
  1153. if self.doubleclickLockUpdate == 0:
  1154. self.tableWidgetDispaly()
  1155. # print(self.sorttableWidgetDispalydata)
  1156. elif name == "sortTableWidgetDispalyALL":
  1157. self.sorttableWidgetDispalydataALL = {}
  1158. self.sorttableWidgetDispalydataALL = dict
  1159. elif name == "sorttableWidgetDisplayChange":
  1160. self.sortlogchange = {}
  1161. self.sortlogchange = dict
  1162. self.tableWidgetDisplayChange()
  1163. # print(self.sortlogchange)
  1164. elif name == "sorttableWidgetPeopleDisplay":
  1165. self.sortdiplaylist = {}
  1166. self.sortdiplaylist = dict
  1167. self.peopleOnJob = [""]
  1168. self.peopleOnJob = dict2
  1169. self.tableWidgetPeopleDisplay()
  1170. # print(self.peopleOnJob)
  1171. # print(self.sortdiplaylist)
  1172. elif name == "sorttableWidgetLOGDispaly":
  1173. self.sortlog = {}
  1174. self.sortlog = dict
  1175. self.tableWidgetLOGDispaly()
  1176. # print(self.sortlog)
  1177. elif name == "sorttableWidgetPHONEDispaly":
  1178. self.sorttableWidgetPHONEDispalydata = {}
  1179. self.sorttableWidgetPHONEDispalydata = dict
  1180. self.tableWidgetPhoneDispaly()
  1181. if seversts == "0":
  1182. self.severupdatests = "-"
  1183. self.label_11.setText("已断开")
  1184. self.label_11.setStyleSheet(
  1185. "background-color:red;color:white;border-radius:5px;padding:2px;font-weight:bold")
  1186. self.restartServer(self.ipinfo.split(':')[0],9935)
  1187. elif seversts == "1" and self.severupdatests == "1":
  1188. self.label_11.setText("正 常")
  1189. self.label_11.setStyleSheet(
  1190. "background-color:green;color:white;border-radius:5px;padding:2px;font-weight:bold")
  1191. elif seversts == "1" and self.severupdatests == "0":
  1192. self.label_11.setText("未更新")
  1193. self.label_11.setStyleSheet(
  1194. "background-color:yellow;color:red;border-radius:5px;padding:2px;font-weight:bold")
  1195. except Exception as e:
  1196. app_logger.log_error(e)
  1197. def restartServer(self,serverIP,serverPort):
  1198. client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  1199. client.settimeout(120)
  1200. client.connect((serverIP, serverPort))
  1201. client.send("restart".encode())
  1202. client.close()
  1203. QMessageBox.warning(self, "提示", "服务器端正在尝试自动重启服务器,请等待30S后刷新查看显示状态!若仍然断开,请联系管理员!")
  1204. def initlocalipback(self):
  1205. try:
  1206. if os.path.exists("D:/flightinfo/logs/localip.code") is True:
  1207. read_path = "D:/flightinfo/logs/localip.code"
  1208. with open(read_path, "r", encoding="utf-8") as f2:
  1209. rember_2 = f2.read()
  1210. if ';;' in rember_2:
  1211. self.localip = rember_2.split(';;')[0]
  1212. self.localtoken = rember_2.split(';;')[-1]
  1213. QMessageBox.warning(self, "提示", "本地网络电话获取缓存成功,可拨号尝试,如拨号失败则需重新配置!")
  1214. except Exception as e:
  1215. app_logger.log_error(e)
  1216. def openmaintainAuthCheck(self):
  1217. self.maintainAuthCheckSts=1
  1218. QMessageBox.warning(self, "提示", "授权检查已开启,将核对人员发动机授权情况!")
  1219. def closemaintainAuthCheck(self):
  1220. self.maintainAuthCheckSts=0
  1221. QMessageBox.warning(self, "提示", "授权检查已关闭,将无法核对人员发动机授权情况!")
  1222. def setlocalipback(self, token):
  1223. try:
  1224. self.localtoken = None
  1225. self.localtoken = token
  1226. if "auth=" in token:
  1227. QMessageBox.warning(self, "提示", "本地网络电话配置成功!")
  1228. save_path = "D:/flightinfo/logs/localip.code"
  1229. with open(save_path, "w", encoding="utf-8") as f1:
  1230. f1.write(str(self.localip) + ";;" + str(self.localtoken))
  1231. self.lineEdit_phonenum.setText("")
  1232. else:
  1233. QMessageBox.warning(self, "提示", "本地网络电话配置失败,本地呼叫无法使用,请确认IP正确,可尝试重启IP电话后再试!")
  1234. except Exception as e:
  1235. app_logger.log_error(e)
  1236. def QThreadSortTimer(self):
  1237. try:
  1238. nowDay = datetime.datetime.now().strftime("%Y%m%d")
  1239. tomorr = (datetime.date.today() + datetime.timedelta(days=1)).strftime("%Y%m%d")
  1240. yester = (datetime.date.today() - datetime.timedelta(days=1)).strftime("%Y%m%d")
  1241. if self.selectedtime == nowDay:
  1242. datestr = "2"
  1243. elif self.selectedtime == tomorr:
  1244. datestr = "3"
  1245. elif self.selectedtime == yester:
  1246. datestr = "1"
  1247. else:
  1248. datestr = "4"
  1249. ip = "http://"+self.ipinfo+"/static/VinCheck/"+self.vin+"/"+self.displayMode+"/%s"%datestr
  1250. res = requests.get(url=ip, timeout=30).json()["返回值"]
  1251. self.sum += 1
  1252. self.flightsum += 1
  1253. #print(self.doubleclickLockUpdate)
  1254. if self.loginSts == True:
  1255. # print("多线程刷新1")
  1256. self.FLIGHTonChange_text = self.lineEdit_flight.text()
  1257. self.peolpleonChange_text = self.lineEdit_people.text()
  1258. self.changeonChange_text = self.lineEdit_change.text()
  1259. self.logonChange_text = self.lineEdit_log.text()
  1260. if (self.doubleclickLockUpdate==0 and res =="ok" and self.flightsum % 20 == 0) or\
  1261. (self.doubleclickLockUpdate==0 and datestr =="4" and self.flightsum % 20 == 0):
  1262. #print(datetime.datetime.now(),"开始数据库刷新", self.vin)
  1263. th1 = QThread()
  1264. self.sortTableWidgetDispalyThread1 = SortdisplaySever.sortdisplaySever("sortTableWidgetDispaly", self.ipinfo,
  1265. self.selectedtime, self.FLIGHTonChange_text,
  1266. self.displayMode, "0", self.displaySelect_mode,
  1267. th1)
  1268. self.sortTableWidgetDispalyThread1.sortupdate.connect(self.QThreadSortDispalyTimer)
  1269. self.sortTableWidgetDispalyThread1.moveToThread(th1)
  1270. th1.started.connect(self.sortTableWidgetDispalyThread1.run)
  1271. th1.start()
  1272. if datestr !="4":
  1273. ip = "http://"+self.ipinfo+"/static/updateVin/" + self.displayMode + "/%s" % datestr
  1274. self.vin = requests.get(url=ip, timeout=30).json()["返回值"]
  1275. #print(datetime.datetime.now(),"更新刷新",self.vin)
  1276. elif self.doubleclickLockUpdate==0 and res !="ok":
  1277. #print(datetime.datetime.now(),"开始读取刷新", self.vin)
  1278. th1234 = QThread()
  1279. self.sortTableWidgetDispalyThread1234 = SortdisplaySever.sortdisplaySever("sortTableWidgetDispaly", self.ipinfo,
  1280. self.selectedtime, self.FLIGHTonChange_text,
  1281. self.displayMode, "1", self.displaySelect_mode,
  1282. th1234)
  1283. self.sortTableWidgetDispalyThread1234.sortupdate.connect(self.QThreadSortDispalyTimer)
  1284. self.sortTableWidgetDispalyThread1234.moveToThread(th1234)
  1285. th1234.started.connect(self.sortTableWidgetDispalyThread1234.run)
  1286. th1234.start()
  1287. self.flightsum = 0
  1288. ip = "http://"+self.ipinfo+"/static/getVin/"+ self.displayMode + "/%s" % datestr
  1289. self.vin = requests.get(url=ip, timeout=30).json()["返回值"]
  1290. #print(datetime.datetime.now(),"仅仅读取",self.vin)
  1291. '''
  1292. else:
  1293. th11111 = QThread()
  1294. self.sortTableWidgetDispalyThread11111 = sortdisplaySever("sortTableWidgetDispalyALL", self.ipinfo,
  1295. self.selectedtime, self.FLIGHTonChange_text,
  1296. self.displayMode, "1", self.displaySelect_mode,
  1297. th11111)
  1298. self.sortTableWidgetDispalyThread11111.sortupdate.connect(self.QThreadSortDispalyTimer)
  1299. self.sortTableWidgetDispalyThread11111.moveToThread(th11111)
  1300. th11111.started.connect(self.sortTableWidgetDispalyThread11111.run)
  1301. th11111.start()
  1302. '''
  1303. if self.loginSts == True and self.sum % 20 == 0:
  1304. th2 = QThread()
  1305. self.sorttableWidgetDisplayChangeThread2 = SortdisplaySever.sortdisplaySever("sorttableWidgetDisplayChange", self.ipinfo,
  1306. self.selectedtime, self.changeonChange_text,
  1307. "", "", "", th2)
  1308. self.sorttableWidgetDisplayChangeThread2.sortupdate.connect(self.QThreadSortDispalyTimer)
  1309. self.sorttableWidgetDisplayChangeThread2.moveToThread(th2)
  1310. th2.started.connect(self.sorttableWidgetDisplayChangeThread2.run)
  1311. th2.start()
  1312. th3 = QThread()
  1313. self.sorttableWidgetPeopleDisplayThread3 = SortdisplaySever.sortdisplaySever("sorttableWidgetPeopleDisplay", self.ipinfo,
  1314. self.selectedtime,
  1315. self.peolpleonChange_text, "",
  1316. self.selectedbc, "", th3)
  1317. self.sorttableWidgetPeopleDisplayThread3.sortupdate.connect(self.QThreadSortDispalyTimer)
  1318. self.sorttableWidgetPeopleDisplayThread3.moveToThread(th3)
  1319. th3.started.connect(self.sorttableWidgetPeopleDisplayThread3.run)
  1320. th3.start()
  1321. th4 = QThread()
  1322. self.sorttableWidgetLOGDispalyThread4 = SortdisplaySever.sortdisplaySever("sorttableWidgetLOGDispaly", self.ipinfo,
  1323. self.selectedtime, self.logonChange_text, "",
  1324. "", "", th4)
  1325. self.sorttableWidgetLOGDispalyThread4.sortupdate.connect(self.QThreadSortDispalyTimer)
  1326. self.sorttableWidgetLOGDispalyThread4.moveToThread(th4)
  1327. th4.started.connect(self.sorttableWidgetLOGDispalyThread4.run)
  1328. th4.start()
  1329. self.updatecheck()
  1330. if self.loginSts == True and self.sum % 2400 == 0:
  1331. self.taskAtuoCheck("2")
  1332. self.sum=0
  1333. except Exception as e:
  1334. app_logger.log_error(e)
  1335. def QThreadSortNow(self, name):
  1336. try:
  1337. if "main" in str(name) and self.doubleclickLockUpdate == 0:
  1338. # print(datetime.datetime.now())
  1339. th11 = QThread()
  1340. self.sortTableWidgetDispalyThread11 = SortdisplaySever.sortdisplaySever("sortTableWidgetDispaly", self.ipinfo,
  1341. self.selectedtime, self.FLIGHTonChange_text,
  1342. self.displayMode, "0", self.displaySelect_mode,
  1343. th11)
  1344. self.sortTableWidgetDispalyThread11.sortupdate.connect(self.QThreadSortDispalyNow)
  1345. self.sortTableWidgetDispalyThread11.moveToThread(th11)
  1346. th11.started.connect(self.sortTableWidgetDispalyThread11.run)
  1347. th11.start()
  1348. nowDay = datetime.datetime.now().strftime("%Y%m%d")
  1349. tomorr = (datetime.date.today() + datetime.timedelta(days=1)).strftime("%Y%m%d")
  1350. yester = (datetime.date.today() - datetime.timedelta(days=1)).strftime("%Y%m%d")
  1351. if self.selectedtime == nowDay:
  1352. datestr = "2"
  1353. elif self.selectedtime == tomorr:
  1354. datestr = "3"
  1355. elif self.selectedtime == yester:
  1356. datestr = "1"
  1357. else:
  1358. datestr = "4"
  1359. if datestr != "4":
  1360. ip = "http://" + self.ipinfo + "/static/updateVin/" + self.displayMode + "/%s" % datestr
  1361. self.vin = requests.get(url=ip, timeout=30).json()["返回值"]
  1362. #print(datetime.datetime.now(), "人工更新刷新", self.vin)
  1363. elif "ALL" in str(name) and self.doubleclickLockUpdate == 0:
  1364. th111111 = QThread()
  1365. self.sortTableWidgetDispalyThread111111 = SortdisplaySever.sortdisplaySever("sortTableWidgetDispalyALL", self.ipinfo,
  1366. self.selectedtime, self.FLIGHTonChange_text,
  1367. self.displayMode, "1", self.displaySelect_mode,
  1368. th111111)
  1369. self.sortTableWidgetDispalyThread111111.sortupdate.connect(self.QThreadSortDispalyNow)
  1370. self.sortTableWidgetDispalyThread111111.moveToThread(th111111)
  1371. th111111.started.connect(self.sortTableWidgetDispalyThread111111.run)
  1372. th111111.start()
  1373. elif "search" in str(name) and self.doubleclickLockUpdate == 0:
  1374. # print(datetime.datetime.now())
  1375. th111 = QThread()
  1376. self.sortTableWidgetDispalyThread111 = SortdisplaySever.sortdisplaySever("SearchsortTableWidgetDispaly", self.ipinfo,
  1377. self.selectedtime, self.FLIGHTonChange_text,
  1378. self.displayMode, self.sorttableWidgetDispalydataALL, self.displaySelect_mode,
  1379. th111)
  1380. self.sortTableWidgetDispalyThread111.sortupdate.connect(self.QThreadSortDispalyNow)
  1381. self.sortTableWidgetDispalyThread111.moveToThread(th111)
  1382. th111.started.connect(self.sortTableWidgetDispalyThread111.run)
  1383. th111.start()
  1384. elif "change" in str(name):
  1385. # print(datetime.datetime.now())
  1386. th12 = QThread()
  1387. self.sorttableWidgetDisplayChangeThread12 = SortdisplaySever.sortdisplaySever("sorttableWidgetDisplayChange",
  1388. self.ipinfo, self.selectedtime,
  1389. self.changeonChange_text, "", "", "", th12)
  1390. self.sorttableWidgetDisplayChangeThread12.sortupdate.connect(self.QThreadSortDispalyNow)
  1391. self.sorttableWidgetDisplayChangeThread12.moveToThread(th12)
  1392. th12.started.connect(self.sorttableWidgetDisplayChangeThread12.run)
  1393. th12.start()
  1394. elif "people" in str(name):
  1395. # print(datetime.datetime.now())
  1396. th13 = QThread()
  1397. self.sorttableWidgetPeopleDisplayThread13 = SortdisplaySever.sortdisplaySever("sorttableWidgetPeopleDisplay",
  1398. self.ipinfo, self.selectedtime,
  1399. self.peolpleonChange_text, "",
  1400. self.selectedbc, self.searchpeoplestr,
  1401. th13)
  1402. self.sorttableWidgetPeopleDisplayThread13.sortupdate.connect(self.QThreadSortDispalyNow)
  1403. self.sorttableWidgetPeopleDisplayThread13.moveToThread(th13)
  1404. th13.started.connect(self.sorttableWidgetPeopleDisplayThread13.run)
  1405. th13.start()
  1406. elif "log" in str(name):
  1407. # print(datetime.datetime.now())
  1408. th14 = QThread()
  1409. self.sorttableWidgetLOGDispalyThread14 = SortdisplaySever.sortdisplaySever("sorttableWidgetLOGDispaly", self.ipinfo,
  1410. self.selectedtime, self.logonChange_text, "",
  1411. "", "", th14)
  1412. self.sorttableWidgetLOGDispalyThread14.sortupdate.connect(self.QThreadSortDispalyNow)
  1413. self.sorttableWidgetLOGDispalyThread14.moveToThread(th14)
  1414. th14.started.connect(self.sorttableWidgetLOGDispalyThread14.run)
  1415. th14.start()
  1416. elif "setlocalip" in str(name):
  1417. th99 = QThread()
  1418. self.setlocalipThread = Setlocalip.setlocalip(self.localip, th99)
  1419. self.setlocalipThread.localipupdate.connect(self.setlocalipback)
  1420. self.setlocalipThread.moveToThread(th99)
  1421. th99.started.connect(self.setlocalipThread.run)
  1422. th99.start()
  1423. elif "phone" in str(name):
  1424. th15 = QThread()
  1425. self.sorttableWidgetPHONEDispaly15 = SortdisplaySever.sortdisplaySever("sorttableWidgetPHONEDispaly", self.ipinfo, "",
  1426. self.changeonPhone_text, "", "", "", th15)
  1427. self.sorttableWidgetPHONEDispaly15.sortupdate.connect(self.QThreadSortDispalyNow)
  1428. self.sorttableWidgetPHONEDispaly15.moveToThread(th15)
  1429. th15.started.connect(self.sorttableWidgetPHONEDispaly15.run)
  1430. th15.start()
  1431. except Exception as e:
  1432. app_logger.log_error(e)
  1433. def tableWidgetLOGDispaly(self):
  1434. try:
  1435. log = self.sortlog
  1436. self.tableWidgetLOG.setRowCount(len(log.keys()))
  1437. if log != "":
  1438. for i in log.keys():
  1439. self.tableWidgetLOG.setItem(int(i), 0, QTableWidgetItem(str(int(i)+1)))
  1440. self.tableWidgetLOG.setItem(int(i), 1, QTableWidgetItem(str(log[i])))
  1441. self.tableWidgetLOG.item(int(i), 0).setTextAlignment(Qt.AlignmentFlag.AlignCenter)
  1442. self.tableWidgetLOG.resizeColumnToContents(0)
  1443. self.tableWidgetLOG.setColumnWidth(1, 240)
  1444. self.tableWidgetLOG.resizeRowsToContents()
  1445. except Exception as e:
  1446. app_logger.log_error(e)
  1447. def itemclick(self, row, column):
  1448. if self.doubleclickLockUpdate == 1 and self.doubleclickLock == 0:
  1449. self.doubleclickLockUpdate = 0
  1450. #self.QThreadSortNow("ALL")
  1451. #self.QThreadSortNow("main")
  1452. try:
  1453. self.tableWidgetFlight.cellChanged.disconnect(self.cellchanged)
  1454. except:
  1455. pass
  1456. def itemclick2(self, row, column):
  1457. try:
  1458. # print(self.doubleclickLock)
  1459. if (((int(column) - self.tableWidgetFlight.columnCount() == -1 or 9 < column < 16) and self.displayMode == "B" ) or( (column == 61 or 19 < column < 33) ) and self.displayMode == "A") and self.doubleclickLock == 0:
  1460. self.doubleclickLockUpdate=1
  1461. self.clickrow = row
  1462. self.clickcolumn = column
  1463. self.olditem = self.tableWidgetFlight.item(row, column).text()
  1464. item = self.tableWidgetFlight.item(row, column)
  1465. # 如果单元格对象不存在,则返回默认的背景色
  1466. if not item:
  1467. self.color=self.tableWidgetFlight.palette().color(QPalette.Base)
  1468. else:
  1469. # 获取并返回单元格的背景色
  1470. self.color=item.background()
  1471. self.tableWidgetFlight.cellChanged.connect(self.cellchanged)
  1472. else:
  1473. self.doubleclickLockUpdate = 0
  1474. except Exception as e:
  1475. app_logger.log_error(e)
  1476. def cellchanged(self, row, column):
  1477. if self.clickrow == row and self.clickcolumn == column and self.displayMode =="A":
  1478. self.clickrow = None
  1479. self.clickcolumn = None
  1480. try:
  1481. #t1 = datetime.datetime.now()
  1482. self.doubleclickLock = 1
  1483. self.newitem = self.tableWidgetFlight.item(row, column).text().replace("\"","*").replace("\\",";").replace("\'","*").replace("/","、").replace("#","*")
  1484. flightid = self.tableWidgetFlight.item(row, 53).text()
  1485. flighttype = self.tableWidgetFlight.item(row, 19).text()
  1486. acno = self.tableWidgetFlight.item(row, 5).text()
  1487. flightno = self.tableWidgetFlight.item(row, 9).text()
  1488. bgtype = str(self.displayLabel[column]).replace("/","")
  1489. if column == 61 and self.olditem != self.newitem:
  1490. item = self.tableWidgetFlight.item(row, column)
  1491. if item.text() != "":
  1492. text = item.text().replace("\"","*").replace("\\",";").replace("\'","*").replace("/","、").replace("#","*")
  1493. else:
  1494. text = "清空项目12345678987654321"
  1495. ip = "http://" + str(self.ipinfo) + "/static/updateEidteItem/" + "%s/" % str(text) + "%s/" % str(flightid) + "%s/" % str(self.displayMode) + "%s/" % str(flighttype) + "%s" % str(self.selectedtime)
  1496. # print(ip)
  1497. ip2 = "http://" + str(self.ipinfo) + "/static/insertLogs2/" + "航班显示模块:%s,%s%s由%s变更为%s%s/" % (acno, flightno, bgtype, self.olditem, self.newitem,datetime.datetime.now()) + "%s/" % str(self.user) + "%s" % str(datetime.datetime.now())
  1498. try:
  1499. requests.get(url=ip, timeout=30).json()
  1500. requests.get(url=ip2, timeout=30).json()
  1501. except Exception as e:
  1502. app_logger.log_error(e)
  1503. QMessageBox.warning(self, "提示", "服务器连接超时,请联系管理员检查服务器!")
  1504. elif 19 < column < 33 and self.olditem != self.newitem:
  1505. item = self.tableWidgetFlight.item(row, column)
  1506. if item.text() != "":
  1507. text = item.text().replace("\"","*").replace("\\",";").replace("\'","*").replace("/","、").replace("#","*")
  1508. if "!" in str(text):
  1509. text = text.replace("!", "")
  1510. if "√" in str(text):
  1511. text = text.replace("√", "")
  1512. else:
  1513. text = "清空项目12345678987654321"
  1514. ip = "http://" + str(self.ipinfo) + "/static/checkPglist/%s/%s/%s" % (text, self.selectedtime, self.selectedbc)
  1515. # print(ip)
  1516. try:
  1517. res = requests.get(url=ip, timeout=30).json()
  1518. if res["返回值"] == "fail":
  1519. self.tableWidgetFlight.setItem(int(row), column, QTableWidgetItem(str(self.olditem)))
  1520. self.tableWidgetFlight.item(int(row), column).setBackground(QColor(self.color))
  1521. self.tableWidgetFlight.item(int(row), column).setTextAlignment(Qt.AlignmentFlag.AlignCenter)
  1522. QMessageBox.warning(self, "警告", "%sAMRO未考勤,请核实考勤名单或者检查人员字母!" % text)
  1523. elif res["返回值"] == "OK" and self.maintainAuthCheckSts == 1 and text != "清空项目12345678987654321" and column == 21 and "3U" not in str(flightno) and "CSC" not in str(flightno):
  1524. ####需要加一把锁,有功能开关调用
  1525. airplanetype=self.tableWidgetFlight.item(row, 5).text()
  1526. engtype=self.tableWidgetFlight.item(row, 7).text()
  1527. if "A3" in airplanetype and engtype[0:3] =="LEA":
  1528. auttype="ALEAP"
  1529. elif "A3" in airplanetype and engtype[0:3] !="LEA":
  1530. auttype = "ACSC"
  1531. elif "737NG" in airplanetype:
  1532. auttype = "737NG"
  1533. elif "737MAX" in airplanetype:
  1534. auttype = "737MAX"
  1535. else:
  1536. auttype = "ALL"
  1537. ipp = "http://" + str(self.ipinfo) + "/static/maintainAuthCheck/%s/%s" % (text, auttype)
  1538. try:
  1539. res = requests.get(url=ipp, timeout=30).json()
  1540. if res["返回值"] == "fail":
  1541. self.tableWidgetFlight.setItem(int(row), column,QTableWidgetItem(str(self.olditem)))
  1542. self.tableWidgetFlight.item(int(row), column).setBackground(QColor(self.color))
  1543. self.tableWidgetFlight.item(int(row), column).setTextAlignment(Qt.AlignmentFlag.AlignCenter)
  1544. QMessageBox.warning(self, "警告", "%s不满足发动机授权条件!请核对信息或者更新授权信息!" % text)
  1545. elif res["返回值"] == "ok":
  1546. self.tableWidgetFlight.setItem(int(row), column,QTableWidgetItem(str(self.newitem)))
  1547. self.tableWidgetFlight.item(int(row), column).setBackground(QColor("yellow"))
  1548. self.tableWidgetFlight.item(int(row), column).setForeground(QColor("black"))
  1549. self.tableWidgetFlight.item(int(row), column).setTextAlignment(Qt.AlignmentFlag.AlignCenter)
  1550. ip = "http://" + str(self.ipinfo) + "/static/updateDragDropItem/%s/%s/%s/%s/%s/%s" % (column, text, flightid, self.displayMode, flighttype, self.selectedtime)
  1551. # print(ip)
  1552. ip2 = "http://" + str(self.ipinfo) + "/static/insertLogs2/" + "航班显示模块:%s,%s%s由%s变更为%s%s/" % (acno, flightno, bgtype, self.olditem, self.newitem,datetime.datetime.now()) + "%s/" % str(self.user) + "%s" % str(datetime.datetime.now())
  1553. try:
  1554. requests.get(url=ip, timeout=30).json()
  1555. requests.get(url=ip2, timeout=30).json()
  1556. except Exception as e:
  1557. app_logger.log_error(e)
  1558. QMessageBox.warning(self, "提示", "服务器连接超时,请联系管理员检查服务器!")
  1559. except Exception as e:
  1560. app_logger.log_error(e)
  1561. self.tableWidgetFlight.setItem(int(row), column, QTableWidgetItem(str(self.olditem)))
  1562. self.tableWidgetFlight.item(int(row), column).setBackground(QColor(self.color))
  1563. self.tableWidgetFlight.item(int(row), column).setTextAlignment(Qt.AlignmentFlag.AlignCenter)
  1564. QMessageBox.warning(self, "提示", "服务器连接超时,请联系管理员检查服务器!")
  1565. elif res["返回值"] == "OK" and self.maintainAuthCheckSts == 1 and text != "清空项目12345678987654321" and column != 21 and "3U" not in str(flightno) and "CSC" not in str(flightno):
  1566. ipp = "http://" + str(self.ipinfo) + "/static/maintainAuthCheck/%s/%s" % (text, "CZQW")
  1567. try:
  1568. res = requests.get(url=ipp, timeout=30).json()
  1569. if res["返回值"] == "fail":
  1570. self.tableWidgetFlight.setItem(int(row), column,QTableWidgetItem(str(self.olditem)))
  1571. self.tableWidgetFlight.item(int(row), column).setBackground(QColor(self.color))
  1572. self.tableWidgetFlight.item(int(row), column).setTextAlignment(Qt.AlignmentFlag.AlignCenter)
  1573. QMessageBox.warning(self, "警告", "%s不满足外委勤务授权条件!请核对信息或者更新授权信息!" % text)
  1574. elif res["返回值"] == "ok":
  1575. self.tableWidgetFlight.setItem(int(row), column,QTableWidgetItem(str(self.newitem)))
  1576. self.tableWidgetFlight.item(int(row), column).setBackground(QColor("yellow"))
  1577. self.tableWidgetFlight.item(int(row), column).setForeground(QColor("black"))
  1578. self.tableWidgetFlight.item(int(row), column).setTextAlignment(Qt.AlignmentFlag.AlignCenter)
  1579. ip = "http://" + str(self.ipinfo) + "/static/updateDragDropItem/%s/%s/%s/%s/%s/%s" % (column, text, flightid, self.displayMode, flighttype, self.selectedtime)
  1580. # print(ip)
  1581. ip2 = "http://" + str(self.ipinfo) + "/static/insertLogs2/" + "航班显示模块:%s,%s%s由%s变更为%s%s/" % (acno, flightno, bgtype, self.olditem, self.newitem,datetime.datetime.now()) + "%s/" % str(self.user) + "%s" % str(datetime.datetime.now())
  1582. try:
  1583. requests.get(url=ip, timeout=30).json()
  1584. requests.get(url=ip2, timeout=30).json()
  1585. except Exception as e:
  1586. app_logger.log_error(e)
  1587. QMessageBox.warning(self, "提示", "服务器连接超时,请联系管理员检查服务器!")
  1588. except Exception as e:
  1589. self.tableWidgetFlight.setItem(int(row), column, QTableWidgetItem(str(self.olditem)))
  1590. self.tableWidgetFlight.item(int(row), column).setBackground(QColor(self.color))
  1591. self.tableWidgetFlight.item(int(row), column).setTextAlignment(Qt.AlignmentFlag.AlignCenter)
  1592. QMessageBox.warning(self, "提示", "服务器连接超时,请联系管理员检查服务器!")
  1593. app_logger.log_error(e)
  1594. elif (res["返回值"] == "OK" and (self.maintainAuthCheckSts == 0 or "3U" in str(flightno) or "CSC" in str(flightno))) or text == "清空项目12345678987654321":
  1595. self.tableWidgetFlight.setItem(int(row), column, QTableWidgetItem(str(self.newitem)))
  1596. self.tableWidgetFlight.item(int(row), column).setBackground(QColor("yellow"))
  1597. self.tableWidgetFlight.item(int(row), column).setForeground(QColor("black"))
  1598. self.tableWidgetFlight.item(int(row), column).setTextAlignment(Qt.AlignmentFlag.AlignCenter)
  1599. ip = "http://" + str(self.ipinfo) + "/static/updateDragDropItem/%s/%s/%s/%s/%s/%s" % (column, text, flightid, self.displayMode, flighttype, self.selectedtime)
  1600. # print(ip)
  1601. ip2 = "http://" + str(self.ipinfo) + "/static/insertLogs2/" + "航班显示模块:%s,%s%s由%s变更为%s%s/" % (acno, flightno, bgtype, self.olditem, self.newitem,datetime.datetime.now()) + "%s/" % str(self.user) + "%s" % str(datetime.datetime.now())
  1602. try:
  1603. requests.get(url=ip, timeout=30).json()
  1604. requests.get(url=ip2, timeout=30).json()
  1605. except Exception as e:
  1606. QMessageBox.warning(self, "提示", "服务器连接超时,请联系管理员检查服务器!")
  1607. app_logger.log_error(e)
  1608. else:
  1609. self.tableWidgetFlight.setItem(int(row), column, QTableWidgetItem(str(self.olditem)))
  1610. self.tableWidgetFlight.item(int(row), column).setBackground(QColor(self.color))
  1611. self.tableWidgetFlight.item(int(row), column).setTextAlignment(Qt.AlignmentFlag.AlignCenter)
  1612. except Exception as e:
  1613. self.tableWidgetFlight.setItem(int(row), column, QTableWidgetItem(str(self.olditem)))
  1614. self.tableWidgetFlight.item(int(row), column).setBackground(QColor(self.color))
  1615. self.tableWidgetFlight.item(int(row), column).setTextAlignment(Qt.AlignmentFlag.AlignCenter)
  1616. QMessageBox.warning(self, "提示", "服务器连接超时,请联系管理员检查服务器!")
  1617. app_logger.log_error(e)
  1618. self.doubleclickLockUpdate = 0
  1619. self.doubleclickLock = 0
  1620. self.tableWidgetFlight.cellChanged.disconnect(self.cellchanged)
  1621. self.QThreadSortNow("main")
  1622. #t2 = datetime.datetime.now()
  1623. #print(f'【编辑操作】【客户端计时】:{t2 - t1}')
  1624. except Exception as e:
  1625. self.doubleclickLockUpdate = 0
  1626. self.clickrow = None
  1627. self.clickcolumn = None
  1628. try:
  1629. self.tableWidgetFlight.cellChanged.disconnect(self.cellchanged)
  1630. except:
  1631. pass
  1632. self.tableWidgetFlight.setItem(int(row), column, QTableWidgetItem(str(self.olditem)))
  1633. self.tableWidgetFlight.item(int(row), column).setBackground(QColor(self.color))
  1634. self.tableWidgetFlight.item(int(row), column).setTextAlignment(Qt.AlignmentFlag.AlignCenter)
  1635. app_logger.log_error(e)
  1636. self.doubleclickLock = 0
  1637. self.QThreadSortNow("main")
  1638. elif self.clickrow == row and self.clickcolumn == column and self.displayMode == "B":
  1639. self.clickrow = None
  1640. self.clickcolumn = None
  1641. try:
  1642. self.doubleclickLock = 1
  1643. self.newitem = self.tableWidgetFlight.item(row, column).text()
  1644. flightid = self.tableWidgetFlight.item(row , self.tableWidgetFlight.columnCount() - 5).text()
  1645. flighttype = self.tableWidgetFlight.item(row, 9).text()
  1646. acno = self.tableWidgetFlight.item(row, 1).text()
  1647. flightno = self.tableWidgetFlight.item(row, 4).text()
  1648. bgtype = str(self.displayLabel[column]).replace("/","")
  1649. if int(column) - self.tableWidgetFlight.columnCount() == -1:
  1650. item = self.tableWidgetFlight.item(row, column)
  1651. if item.text() != "":
  1652. text = item.text().replace("\"","#").replace("\\",";").replace("\'","#")
  1653. else:
  1654. text = "清空项目12345678987654321"
  1655. ip = "http://" + str(self.ipinfo) + "/static/updateEidteItem/" + "%s/" % str(text) + "%s/" % str(flightid) + "%s/" % str(self.displayMode) + "%s/" % str(flighttype) + "%s" % str(self.selectedtime)
  1656. # print(ip)
  1657. ip2 = "http://" + str(self.ipinfo) + "/static/insertLogs2/" + "维修记录模块:%s,%s%s由%s变更为%s%s/" % (acno, flightno, bgtype, self.olditem, self.newitem,datetime.datetime.now()) + "%s/" % str(self.user) + "%s" % str(datetime.datetime.now())
  1658. try:
  1659. requests.get(url=ip, timeout=30).json()
  1660. requests.get(url=ip2, timeout=30).json()
  1661. except Exception as e:
  1662. QMessageBox.warning(self, "提示", "服务器连接超时,请联系管理员检查服务器!")
  1663. app_logger.log_error(e)
  1664. elif 9 < column < 16 and self.olditem != self.newitem:
  1665. item = self.tableWidgetFlight.item(row, column)
  1666. if item.text() != "":
  1667. text = item.text().replace("\"","#").replace("\\",";").replace("\'","#")
  1668. if "!" in str(text):
  1669. text = text.replace("!", "")
  1670. if "√" in str(text):
  1671. text = text.replace("√", "")
  1672. else:
  1673. text = "清空项目12345678987654321"
  1674. # print(ip)
  1675. try:
  1676. if text != "清空项目12345678987654321":
  1677. ####需要加一把锁,有功能开关调用
  1678. ip = "http://" + str(self.ipinfo) + "/static/updateDragDropItem/%s/%s/%s/%s/%s/%s" % (column, text, flightid, self.displayMode, flighttype, self.selectedtime)
  1679. # print(ip)
  1680. ip2 = "http://" + str(self.ipinfo) + "/static/insertLogs2/" + "维修记录模块:%s,%s%s由%s变更为%s%s/" % (acno, flightno, bgtype, self.olditem, self.newitem,datetime.datetime.now()) + "%s/" % str(self.user) + "%s" % str(datetime.datetime.now())
  1681. try:
  1682. requests.get(url=ip, timeout=30).json()
  1683. self.tableWidgetFlight.setItem(int(row), column, QTableWidgetItem(str(self.newitem)))
  1684. self.tableWidgetFlight.item(int(row), column).setBackground(QColor("yellow"))
  1685. self.tableWidgetFlight.item(int(row), column).setForeground(QColor("black"))
  1686. self.tableWidgetFlight.item(int(row), column).setTextAlignment(Qt.AlignmentFlag.AlignCenter)
  1687. requests.get(url=ip2, timeout=30).json()
  1688. except Exception as e:
  1689. QMessageBox.warning(self, "提示", "服务器连接超时,请联系管理员检查服务器!")
  1690. app_logger.log_error(e)
  1691. elif text == "清空项目12345678987654321":
  1692. ip = "http://" + str(self.ipinfo) + "/static/updateDragDropItem/%s/%s/%s/%s/%s/%s" % (column, text, flightid, self.displayMode, flighttype, self.selectedtime)
  1693. # print(ip)
  1694. ip2 = "http://" + str(self.ipinfo) + "/static/insertLogs2/" + "维修记录模块:%s,%s%s由%s变更为%s%s/" % (acno, flightno, bgtype, self.olditem, self.newitem,datetime.datetime.now()) + "%s/" % str(self.user) + "%s" % str(datetime.datetime.now())
  1695. try:
  1696. requests.get(url=ip, timeout=300).json()
  1697. self.tableWidgetFlight.setItem(int(row), column, QTableWidgetItem(str(self.newitem)))
  1698. self.tableWidgetFlight.item(int(row), column).setBackground(QColor("yellow"))
  1699. self.tableWidgetFlight.item(int(row), column).setForeground(QColor("black"))
  1700. self.tableWidgetFlight.item(int(row), column).setTextAlignment(Qt.AlignmentFlag.AlignCenter)
  1701. requests.get(url=ip2, timeout=30).json()
  1702. except Exception as e:
  1703. QMessageBox.warning(self, "提示", "服务器连接超时,请联系管理员检查服务器!")
  1704. app_logger.log_error(e)
  1705. else:
  1706. self.tableWidgetFlight.setItem(int(row), column, QTableWidgetItem(str(self.olditem)))
  1707. self.tableWidgetFlight.item(int(row), column).setBackground(QColor(self.color))
  1708. self.tableWidgetFlight.item(int(row), column).setTextAlignment(Qt.AlignmentFlag.AlignCenter)
  1709. except Exception as e:
  1710. self.tableWidgetFlight.setItem(int(row), column, QTableWidgetItem(str(self.olditem)))
  1711. self.tableWidgetFlight.item(int(row), column).setBackground(QColor(self.color))
  1712. self.tableWidgetFlight.item(int(row), column).setTextAlignment(Qt.AlignmentFlag.AlignCenter)
  1713. QMessageBox.warning(self, "提示", "服务器连接超时,请联系管理员检查服务器!")
  1714. app_logger.log_error(e)
  1715. self.doubleclickLockUpdate = 0
  1716. self.doubleclickLock = 0
  1717. self.tableWidgetFlight.cellChanged.disconnect(self.cellchanged)
  1718. self.QThreadSortNow("main")
  1719. except Exception as e:
  1720. self.doubleclickLockUpdate = 0
  1721. self.clickrow = None
  1722. self.clickcolumn = None
  1723. try:
  1724. self.tableWidgetFlight.cellChanged.disconnect(self.cellchanged)
  1725. except:
  1726. pass
  1727. self.tableWidgetFlight.setItem(int(row), column, QTableWidgetItem(str(self.olditem)))
  1728. self.tableWidgetFlight.item(int(row), column).setBackground(QColor(self.color))
  1729. self.tableWidgetFlight.item(int(row), column).setTextAlignment(Qt.AlignmentFlag.AlignCenter)
  1730. app_logger.log_error(e)
  1731. self.doubleclickLock = 0
  1732. self.QThreadSortNow("main")
  1733. def btnClick(self, item):
  1734. if int(self.authority) != 3:
  1735. try:
  1736. btn = self.sender()
  1737. now_2=datetime.datetime.now()- datetime.timedelta(seconds=2)
  1738. #print(self.changeupdatetime,now_2)
  1739. if btn:
  1740. row = self.tableWidget.indexAt(btn.pos()).row()
  1741. a = self.tableWidget.item(row, 3).text()
  1742. self.severpost_nomeassge("dealLogs", "/%s" % self.user, "/%s" % a, "", "")
  1743. self.QThreadSortNow("change")
  1744. if self.changeupdatetime < now_2:
  1745. self.changeupdatetime = datetime.datetime.now()
  1746. self.QThreadSortNow("main")
  1747. except Exception as e:
  1748. app_logger.log_error(e)
  1749. else:
  1750. QMessageBox.warning(self, "提示", "权限不够,请联系管理员!")
  1751. def tableWidgetDisplayChange(self):
  1752. try:
  1753. log = self.sortlogchange
  1754. self.tableWidget.setRowCount(len(log.keys()))
  1755. if log != "":
  1756. for i in log.keys():
  1757. btnList = [QPushButton('处理')]
  1758. self.tableWidget.setItem(int(i), 0, QTableWidgetItem(str(int(i)+1)))
  1759. self.tableWidget.setItem(int(i), 1, QTableWidgetItem(str(log[i][2])))
  1760. self.tableWidget.setItem(int(i), 3, QTableWidgetItem(str(log[i][0])))
  1761. self.tableWidget.setItem(int(i), 4, QTableWidgetItem(str(log[i][1])))
  1762. self.tableWidget.setItem(int(i), 5, QTableWidgetItem(str(log[i][10])))
  1763. self.tableWidget.setCellWidget(int(i), 2, btnList[0])
  1764. self.tableWidget.item(int(i), 0).setForeground(QColor('red'))
  1765. self.tableWidget.item(int(i), 1).setForeground(QColor('red'))
  1766. self.tableWidget.item(int(i), 0).setTextAlignment(Qt.AlignmentFlag.AlignCenter)
  1767. self.tableWidget.item(int(i), 1).setToolTip("%s" % str(log[i][10]))
  1768. for btn in btnList:
  1769. btn.clicked.connect(self.btnClick)
  1770. self.tableWidget.setColumnHidden(5, True)
  1771. self.tableWidget.setColumnHidden(4, True)
  1772. self.tableWidget.setColumnHidden(3, True)
  1773. self.tableWidget.resizeColumnToContents(0)
  1774. self.tableWidget.setColumnWidth(2, 40)
  1775. self.tableWidget.setColumnWidth(1, 210)
  1776. self.tableWidget.resizeRowsToContents()
  1777. except Exception as e:
  1778. app_logger.log_error(e)
  1779. def generateMenu3(self, pos):
  1780. try:
  1781. for i in self.tableWidget_3.selectionModel().selection().indexes():
  1782. menu = QMenu()
  1783. item2 = menu.addAction('拨打IP电话')
  1784. screenPos = self.tableWidget_3.mapToGlobal(pos)
  1785. action = menu.exec(screenPos)
  1786. rowIndex = i.row()
  1787. phonenum = self.tableWidget_3.item(rowIndex, 3).text()
  1788. if action == item2:
  1789. if self.localip != None and self.localtoken != None:
  1790. try:
  1791. data = {"PHB_AutoDialNumber": phonenum,
  1792. "ReturnPage": "/contacts.htm",
  1793. "AutoDialSubmit": "submit",
  1794. "PHB_AutoDialLine": "1"
  1795. }
  1796. header = {
  1797. "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
  1798. "Connection": "keep-alive",
  1799. "Cookie": self.localtoken
  1800. }
  1801. requests.post(url="http://%s/contacts.htm" % self.localip, data=data, headers=header)
  1802. except Exception as e:
  1803. self.show_info("警告", "拨号失败,请检查IP后重新配置或联系管理员!")
  1804. app_logger.log_error(e)
  1805. else:
  1806. self.show_info("警告", "使用前请配置IP电话!")
  1807. return
  1808. except Exception as e:
  1809. app_logger.log_error(e)
  1810. def generateMenu2(self, pos):
  1811. try:
  1812. for i in self.tableWidgetPerson.selectionModel().selection().indexes():
  1813. menu = QMenu()
  1814. item2 = menu.addAction('拨打IP电话')
  1815. screenPos = self.tableWidgetPerson.mapToGlobal(pos)
  1816. action = menu.exec(screenPos)
  1817. rowIndex = i.row()
  1818. colnum = self.tableWidgetPerson.columnCount()
  1819. name = self.tableWidgetPerson.item(rowIndex, 1).text()
  1820. # print(name)
  1821. if action == item2:
  1822. ip = "http://" + str(self.ipinfo) + "/static/get_empNos_phoone/%s" % name
  1823. infos = requests.get(url=ip, timeout=30).json()
  1824. # print(self.localtoken)
  1825. # '''
  1826. if infos == {}:
  1827. self.show_info("警告", "无法查询到%s个人信息,请更新后尝试!!" % name)
  1828. else:
  1829. try:
  1830. # print(infos["电话"])
  1831. data = {"PHB_AutoDialNumber": infos["电话"],
  1832. "ReturnPage": "/contacts.htm",
  1833. "AutoDialSubmit": "submit",
  1834. "PHB_AutoDialLine": "1"
  1835. }
  1836. header = {
  1837. "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
  1838. "Connection": "keep-alive",
  1839. "Cookie": self.localtoken
  1840. }
  1841. requests.post(url="http://%s/contacts.htm" % self.localip, data=data, headers=header)
  1842. except Exception as e:
  1843. app_logger.log_error(e)
  1844. # '''
  1845. return
  1846. else:
  1847. return
  1848. except Exception as e:
  1849. app_logger.log_error(e)
  1850. def LM_TSK_SURE_PG_NOW(self, id, empNos, type, shiftDate, shift):
  1851. dict = {"taskid": id,
  1852. "empNos": empNos,
  1853. "type": type,
  1854. "shiftDate": shiftDate,
  1855. "shift": shift
  1856. }
  1857. res = self.severpostData_nomeassge("LM_TSK_SURE_PG", data=dict)["返回值"]
  1858. return res
  1859. def send_dingdong(self, a, b, c, d, e, f, g, h, i, j, k, l):
  1860. dict_dingdong = {"acno": a,
  1861. "actype": b,
  1862. "tasktype": c,
  1863. "tatd": d,
  1864. "bay": e,
  1865. "taskid": f,
  1866. "wxemp": g,
  1867. "fxemp": h,
  1868. "wx": i,
  1869. "fx": j,
  1870. "ecsj":k,
  1871. "msgInfo": l
  1872. }
  1873. res = self.severpostData_nomeassge("dingdong", data=dict_dingdong)["返回值"]
  1874. return res
  1875. def getRiskData(self,bay,flighttype,acno):
  1876. if "送" in flighttype or flighttype == "航前":
  1877. type="出港提示"
  1878. else:
  1879. type = "进港提示"
  1880. res=""
  1881. try:
  1882. ip = "http://" + str(self.ipinfo) + "/static/getRiskData/" + "%s/" % bay + "%s/" % type + "%s" % acno
  1883. res=requests.get(url=ip, timeout=30).json()["返回值"]
  1884. except Exception as e:
  1885. app_logger.log_error(e)
  1886. QMessageBox.warning(self, "风险提示失效", "风险提示推送功能失效请联系管理员!")
  1887. return res
  1888. def generateMenu(self, pos):
  1889. if int(self.authority) < 3 and self.displayMode =="A":
  1890. try:
  1891. zydy = {"短停": "TR", "航后": "AF", "航前": "AP", "特后前": "TAF", "未显示": ""}
  1892. for i in self.tableWidgetFlight.selectionModel().selection().indexes():
  1893. menu = QMenu()
  1894. item1 = menu.addAction('维修人员派工')
  1895. item2 = menu.addAction('放行人员派工')
  1896. item3 = menu.addAction('二送人员派工')
  1897. item4 = menu.addAction('推送维修人员')
  1898. item5 = menu.addAction('推送放行人员')
  1899. item6 = menu.addAction('推送二送人员')
  1900. item7 = menu.addAction('确认通知')
  1901. item8 = menu.addAction('人工接机到位')
  1902. item9 = menu.addAction('人工确认放行')
  1903. item10 = menu.addAction('人工确认随机到位')
  1904. item11 = menu.addAction('人工确认二送到位')
  1905. item12 = menu.addAction('人工确认销夹取下')
  1906. item13 = menu.addAction('一键派工&通知')
  1907. item15 = menu.addAction('电话通知')
  1908. item16 = menu.addAction('查看工作包')
  1909. item17 = menu.addAction('删除航班')
  1910. item18 = menu.addAction('工作交接')
  1911. screenPos = self.tableWidgetFlight.mapToGlobal(pos)
  1912. action = menu.exec(screenPos)
  1913. rowIndex = i.row()
  1914. colnum = self.tableWidgetFlight.columnCount()
  1915. # print(colnum)
  1916. acno = self.tableWidgetFlight.item(rowIndex, 3).text()
  1917. flightno = self.tableWidgetFlight.item(rowIndex, 9).text()
  1918. qw1 = self.tableWidgetFlight.item(rowIndex, 23).text().replace("!", "") if "!" in self.tableWidgetFlight.item(rowIndex, 23).text() else self.tableWidgetFlight.item(rowIndex, 23).text()
  1919. qw2 = self.tableWidgetFlight.item(rowIndex, 25).text().replace("!", "") if "!" in self.tableWidgetFlight.item(rowIndex, 25).text() else self.tableWidgetFlight.item(rowIndex, 25).text()
  1920. g1 = self.tableWidgetFlight.item(rowIndex, 27).text().replace("!", "") if "!" in self.tableWidgetFlight.item(rowIndex, 27).text() else self.tableWidgetFlight.item(rowIndex, 27).text()
  1921. g2 = self.tableWidgetFlight.item(rowIndex, 29).text().replace("!", "") if "!" in self.tableWidgetFlight.item(rowIndex, 29).text() else self.tableWidgetFlight.item(rowIndex, 29).text()
  1922. fx = self.tableWidgetFlight.item(rowIndex, 21).text().replace("!", "") if "!" in self.tableWidgetFlight.item(rowIndex, 21).text() else self.tableWidgetFlight.item(rowIndex, 21).text()
  1923. qw1_1 = "" if "√" in qw1 else qw1
  1924. qw2_1 = "" if "√" in qw2 else qw2
  1925. g1_1 = "" if "√" in g1 else g1
  1926. g2_1 = "" if "√" in g2 else g2
  1927. fx_1 = "" if "√" in fx else fx
  1928. qw1 = qw1.replace("√", "") if "√" in qw1 else qw1
  1929. qw2 = qw2.replace("√", "") if "√" in qw2 else qw2
  1930. g1 = g1.replace("√", "") if "√" in g1 else g1
  1931. g2 = g2.replace("√", "") if "√" in g2 else g2
  1932. fx = fx.replace("√", "") if "√" in fx else fx
  1933. fj = str(self.tableWidgetFlight.item(rowIndex, 61).text())
  1934. dict_people = {"工1": qw1,
  1935. "工2": qw2,
  1936. "工3": g1,
  1937. "工4": g2,
  1938. "放行": fx
  1939. }
  1940. dict_people_noCall = {"工1": qw1_1,
  1941. "工2": qw2_1,
  1942. "工3": g1_1,
  1943. "工4": g2_1,
  1944. "放行": fx_1
  1945. }
  1946. # print(dict_people)
  1947. if action == item1:
  1948. if str(self.tableWidgetFlight.item(rowIndex, 53).text()) != "" and "MAN" not in str(self.tableWidgetFlight.item(rowIndex, 53).text()) and str(self.tableWidgetFlight.item(rowIndex, 55).text()) != "" :
  1949. empNos = self.severpostData_nomeassge("get_empNos", dict_people)
  1950. # print(empNos)
  1951. if empNos["code"] != "fail":
  1952. res=self.LM_TSK_SURE_PG_NOW(self.tableWidgetFlight.item(rowIndex, 55).text(),empNos["WXempNos"],"WX",empNos["date"],empNos["bc"])
  1953. if res == "ok":
  1954. try:
  1955. ip = "http://" + str(self.ipinfo) + "/static/insertLogs2/" + "%s,%s%s派工成功%s/" % (acno, flightno, str(qw1 + "-" + qw2 + "-" + g1 + "-" + g2),datetime.datetime.now()) + "%s/" % str(self.user) + "%s" % str(datetime.datetime.now())
  1956. requests.get(url=ip, timeout=30).json()
  1957. except Exception as e:
  1958. app_logger.log_error(e)
  1959. QMessageBox.warning(self, "日志功能失效", "操作日志功能失效请联系管理员!")
  1960. self.show_info("成功提示", "派工成功!")
  1961. if empNos["faillist"] != []:
  1962. try:
  1963. ip = "http://" + str(self.ipinfo) + "/static/insertLogs2/" + "%s,%s%s派工失败%s/" % (acno, flightno,str(empNos["faillist"]).replace(",", "-").replace("'", "").replace("[", "").replace("]",""),datetime.datetime.now()) + "%s/" % str(self.user) + "%s" % str(datetime.datetime.now())
  1964. requests.get(url=ip, timeout=30).json()
  1965. except Exception as e:
  1966. app_logger.log_error(e)
  1967. QMessageBox.warning(self, "日志功能失效", "操作日志功能失效请联系管理员!")
  1968. self.show_info("派工错误", "以下人员派工失败:%s,请确认考勤打卡情况!" % empNos["faillist"])
  1969. else:
  1970. self.show_info("警告", "该航班非AMRO航班或者无任务编号,请确认是否为AMRO航班,如确认请使用AMRO人工派工!!")
  1971. return
  1972. elif action == item18:
  1973. if int(self.authority) <= 2:
  1974. if self.tableWidgetFlight.item(rowIndex, 49).text() !="" and "【交班航班】" not in fj and \
  1975. ("3U" in self.tableWidgetFlight.item(rowIndex, 9).text() or "CSC" in self.tableWidgetFlight.item(rowIndex, 9).text()):
  1976. relay = QMessageBox.warning(self, "警告", "是否确定要对B-%s,%s进行工作交接?"%(acno,self.tableWidgetFlight.item(rowIndex, 9).text()),
  1977. QMessageBox.StandardButton.Yes,
  1978. QMessageBox.StandardButton.Close)
  1979. if relay == QMessageBox.StandardButton.Yes:
  1980. data = {"taskid": self.tableWidgetFlight.item(rowIndex, 53).text(),"sts": "1"}
  1981. res = self.severpostData_nomeassge("handoverflight", data=data)["返回值"]
  1982. if res == "ok":
  1983. flightid = self.tableWidgetFlight.item(rowIndex, 53).text()
  1984. flighttype = self.tableWidgetFlight.item(rowIndex, 19).text()
  1985. fjxx = "【交班航班】" + fj
  1986. ip = "http://" + str(self.ipinfo) + "/static/updateEidteItem/" + "%s/" % str(fjxx) + "%s/" % str(flightid) + "A/%s/" % str(flighttype) + "%s" % str(self.selectedtime)
  1987. try:
  1988. requests.get(url=ip, timeout=30).json()
  1989. except Exception as e:
  1990. QMessageBox.warning(self, "提示", "服务器连接超时,请联系管理员检查服务器!")
  1991. app_logger.log_error(e)
  1992. self.QThreadSortNow("main")
  1993. QMessageBox.warning(self, "提示", "B-%s,%s工作交接推送成功"%(acno,self.tableWidgetFlight.item(rowIndex, 9).text()))
  1994. else:
  1995. QMessageBox.warning(self, "警告", "航班交接失败,请重新尝试")
  1996. elif "【交班航班】" in fj:
  1997. QMessageBox.warning(self, "提示", "该航班已交接,请勿重复交接!")
  1998. elif "3U" not in self.tableWidgetFlight.item(rowIndex, 9).text() and "CSC" not in self.tableWidgetFlight.item(rowIndex, 9).text():
  1999. QMessageBox.warning(self, "提示", "该航班为非川航航班,无需交接!!!")
  2000. else:
  2001. QMessageBox.warning(self, "提示", "无法对未安排人员的的航班无法进行交接班,请先进行派工后交班!")
  2002. else:
  2003. self.show_info("警告", "权限不够,请联系管理员!!!")
  2004. return
  2005. elif action == item17:
  2006. if int(self.authority) <= 1:
  2007. if "MAN" in str(self.tableWidgetFlight.item(rowIndex, 53).text()):
  2008. ip = "http://" + str(self.ipinfo) + "/static/" + "deleteFlight/" + "%s/%s/%s" % (
  2009. self.tableWidgetFlight.item(rowIndex, 53).text(), self.user, self.selectedtime)
  2010. res = requests.get(url=ip, timeout=30).json()
  2011. if res["返回值"] == "ok":
  2012. self.show_info("成功提示", "航班删除成功!")
  2013. try:
  2014. ip = "http://" + str(self.ipinfo) + "/static/insertLogs2/" + "%s,%s航班被删除%s/" % (acno, flightno,datetime.datetime.now()) + "%s/" % str(self.user) + "%s" % str(datetime.datetime.now())
  2015. requests.get(url=ip, timeout=30).json()
  2016. except Exception as e:
  2017. app_logger.log_error(e)
  2018. QMessageBox.warning(self, "日志功能失效", "操作日志功能失效请联系管理员!")
  2019. self.QThreadSortNow("main")
  2020. else:
  2021. self.show_info("提示", "航班删除失败,如需请联系管理员!")
  2022. else:
  2023. self.show_info("警告", "删除航班功能仅限于人工添加的航班,AMRO航班无法删除!!!")
  2024. else:
  2025. self.show_info("警告", "权限不够,请联系管理员!!!")
  2026. return
  2027. elif action == item16:
  2028. if str(self.tableWidgetFlight.item(rowIndex, 53).text()) != "" and "MAN" not in str(self.tableWidgetFlight.item(rowIndex, 53).text()) and str(self.tableWidgetFlight.item(rowIndex, 55).text()) != "":
  2029. taskid = self.tableWidgetFlight.item(rowIndex, 55).text()
  2030. ip = "http://" + str(self.ipinfo) + "/static/checkWorkjob/%s" % taskid
  2031. infos = requests.get(url=ip, timeout=30).json()
  2032. if infos["返回值"] == "ok":
  2033. self.show_info("成功提示", "工作包查询成功!")
  2034. self.QThreadSortNow("main")
  2035. else:
  2036. self.show_info("警告", "该航班非AMRO航班或者无任务编号,无法查询工作包!!")
  2037. return
  2038. elif action == item15:
  2039. # {"工号":"0","电话":"1","姓名":"2","航班编号":"3","航班号":"9","附加消息":"5","拨号次数":"6","":"8","":"9","":"10"}
  2040. if "人工" not in str(fj):
  2041. for i in dict_people_noCall.keys():
  2042. if dict_people_noCall[i] != "":
  2043. name = str(dict_people_noCall[i])
  2044. if "!" in name:
  2045. name = name.replace("!", "")
  2046. if "√" in name:
  2047. name = name.replace("√", "")
  2048. ip = "http://" + str(self.ipinfo) + "/static/get_empNos_phoone/%s" % name
  2049. infos = requests.get(url=ip, timeout=30).json()
  2050. # print(infos)
  2051. flightnumber = self.tableWidgetFlight.item(rowIndex, 9).text()
  2052. flighttype = self.tableWidgetFlight.item(rowIndex, 19).text()
  2053. flightids = str(self.tableWidgetFlight.item(rowIndex, 55).text()) + str(
  2054. flighttype) + str(name) + str(datetime.datetime.now().strftime("%H:%M:%S"))
  2055. if infos == {}:
  2056. self.show_info("警告", "无法查询到%s个人信息,请人工联系或更新后尝试!!" % name)
  2057. ip = "http://" + str(
  2058. self.ipinfo) + "/static/insertLogs/" + "%s%s%s未在通讯录,无法完成自动拨号,请人工联系或更新信息后尝试" % (
  2059. flightnumber, flighttype, name) + "/system/" + str(
  2060. datetime.datetime.now().strftime("%Y-%m-%d %H:%M"))
  2061. requests.get(url=ip, timeout=30).json()
  2062. else:
  2063. callnumber = 0
  2064. data = {"工号": "%s" % infos["工号"], "电话": "%s" % infos["电话"], "姓名": "%s" % name,
  2065. "航班编号": "%s" % flightids, "航班号": "%s" % flightnumber, "附加消息": "%s" % fj,
  2066. "拨号次数": callnumber}
  2067. self.severpostData_nomeassge("insertCalllist", data)
  2068. ip = "http://" + str(self.ipinfo) + "/static/calltry"
  2069. requests.get(url=ip, timeout=30).json()
  2070. self.severpost_nomeassge("infoConfirm", "/%s" % self.tableWidgetFlight.item(rowIndex, 19).text(),
  2071. "/%s" % self.tableWidgetFlight.item(rowIndex, 53).text(),
  2072. "/%s" % self.displayMode, "/%s" % self.selectedtime)
  2073. try:
  2074. ip = "http://" + str(self.ipinfo) + "/static/insertLogs2/" + "%s,%s电话通知%s/" % (
  2075. acno, flightno,datetime.datetime.now()) + "%s/" % str(self.user) + "%s" % str(datetime.datetime.now())
  2076. requests.get(url=ip, timeout=30).json()
  2077. except Exception as e:
  2078. app_logger.log_error(e)
  2079. QMessageBox.warning(self, "日志功能失效", "操作日志功能失效请联系管理员!")
  2080. self.QThreadSortNow("main")
  2081. # 需要一次拨号请求
  2082. else:
  2083. ip = "http://" + str(self.ipinfo) + "/static/insertLogs/" + "%s,%s附加消息有需要人工通知的内容,请人工介入,请通知到位后点击确认通知!!" % (acno, flightno) + "/system/" + str(datetime.datetime.now().strftime("%Y-%m-%d %H:%M"))
  2084. requests.get(url=ip, timeout=30).json()
  2085. QMessageBox.warning(self, "人工提醒", "%s,%s附加消息有需要人工通知的内容,将推送航班监控席位由人工通知!" % (acno, flightno) )
  2086. return
  2087. elif action == item2:
  2088. if str(self.tableWidgetFlight.item(rowIndex, 53).text()) != "" and "MAN" not in str(
  2089. self.tableWidgetFlight.item(rowIndex, 53).text()) and str(self.tableWidgetFlight.item(rowIndex, 55).text()) != "":
  2090. empNos = self.severpostData_nomeassge("get_empNos", dict_people)
  2091. if empNos["code"] != "fail":
  2092. res = self.LM_TSK_SURE_PG_NOW(self.tableWidgetFlight.item(rowIndex, 55).text(),empNos["FXempNos"], "FX", empNos["date"], empNos["bc"])
  2093. if res == "ok":
  2094. try:
  2095. ip = "http://" + str(self.ipinfo) + "/static/insertLogs2/" + "%s,%s%s派工成功%s/" % (acno, flightno, str(fx),datetime.datetime.now()) + "%s/" % str(self.user) + "%s" % str(datetime.datetime.now())
  2096. requests.get(url=ip, timeout=30).json()
  2097. except:
  2098. self.show_info("日志功能失效", "操作日志功能失效请联系管理员")
  2099. self.show_info("成功提示", "派工成功!")
  2100. if empNos["faillist"] != []:
  2101. try:
  2102. ip = "http://" + str(self.ipinfo) + "/static/insertLogs2/" + "%s,%s%s派工失败%s/" % (acno, flightno,str(empNos["faillist"]).replace(",", "-").replace("'", "").replace("[", "").replace("]",""),datetime.datetime.now()) + "%s/" % str(self.user) + "%s" % str(datetime.datetime.now())
  2103. requests.get(url=ip, timeout=30).json()
  2104. except Exception as e:
  2105. app_logger.log_error(e)
  2106. QMessageBox.warning(self, "日志功能失效", "操作日志功能失效请联系管理员!")
  2107. self.show_info("派工错误", "以下人员派工失败:%s,请确认考勤打卡情况!" % empNos["faillist"])
  2108. else:
  2109. self.show_info("警告", "该航班非AMRO航班或者无任务编号,请确认是否为AMRO航班,如确认请使用AMRO人工派工!!")
  2110. return
  2111. elif action == item3:
  2112. if str(self.tableWidgetFlight.item(rowIndex, 53).text()) != "" and "MAN" not in str(self.tableWidgetFlight.item(rowIndex, 53).text()) and str(self.tableWidgetFlight.item(rowIndex, 55).text()) != "":
  2113. empNos = self.severpostData_nomeassge("get_empNos", dict_people)
  2114. if empNos["code"] != "fail":
  2115. res = self.LM_TSK_SURE_PG_NOW(self.tableWidgetFlight.item(rowIndex, 55).text(),empNos["ESempNos"], "ECSJ", empNos["date"], empNos["bc"])
  2116. if res == "ok":
  2117. try:
  2118. ip = "http://" + str(self.ipinfo) + "/static/insertLogs2/" + "%s,%s%s派工成功%s/" % (acno, flightno, str(g1 + "-" + g2),datetime.datetime.now()) + "%s/" % str(self.user) + "%s" % str(datetime.datetime.now())
  2119. requests.get(url=ip, timeout=30).json()
  2120. except Exception as e:
  2121. app_logger.log_error(e)
  2122. QMessageBox.warning(self, "日志功能失效", "操作日志功能失效请联系管理员!")
  2123. self.show_info("成功提示", "派工成功!")
  2124. if empNos["faillist"] != []:
  2125. try:
  2126. ip = "http://" + str(self.ipinfo) + "/static/insertLogs2/" + "%s,%s%s派工失败%s/" % (acno, flightno,str(empNos["faillist"]).replace(",", "-").replace("'", "").replace("[", "").replace("]",""),datetime.datetime.now()) + "%s/" % str(self.user) + "%s" % str(datetime.datetime.now())
  2127. requests.get(url=ip, timeout=30).json()
  2128. except Exception as e:
  2129. app_logger.log_error(e)
  2130. QMessageBox.warning(self, "日志功能失效", "操作日志功能失效请联系管理员!")
  2131. self.show_info("派工错误", "以下人员派工失败:%s,请确认考勤打卡情况!" % empNos["faillist"])
  2132. else:
  2133. self.show_info("警告", "该航班非AMRO航班或者无任务编号,请确认是否为AMRO航班,如确认请使用AMRO人工派工!!")
  2134. return
  2135. elif action == item4:
  2136. if str(self.tableWidgetFlight.item(rowIndex, 53).text()) != "" and "MAN" not in str(
  2137. self.tableWidgetFlight.item(rowIndex, 53).text()) and str(self.tableWidgetFlight.item(rowIndex, 55).text()) != "":
  2138. empNos = self.severpostData_nomeassge("get_empNos", dict_people)
  2139. if empNos["code"] != "fail":
  2140. risktips=""
  2141. if self.tableWidgetFlight.item(rowIndex, 8).text() !="":
  2142. res=self.getRiskData(self.tableWidgetFlight.item(rowIndex, 8).text(), self.tableWidgetFlight.item(rowIndex, 19).text(), acno)
  2143. risktips=f"【风险提示】{res}" if res != "" else ""
  2144. msgInfo="进港维修任务保障推送!%s%s" % (fj,risktips)
  2145. res= self.send_dingdong(acno,self.tableWidgetFlight.item(rowIndex, 5).text(),
  2146. self.tableWidgetFlight.item(rowIndex, 59).text(),
  2147. "进" +self.tableWidgetFlight.item(rowIndex, 57).text().split("</br>")[0] + ",出" +self.tableWidgetFlight.item(rowIndex, 57).text().split("</br>")[1],
  2148. self.tableWidgetFlight.item(rowIndex, 8).text(),self.tableWidgetFlight.item(rowIndex, 55).text(),
  2149. empNos["WXempNos"],"",empNos["WX"],empNos["FX"],"",msgInfo)
  2150. if res != "ok":
  2151. self.show_info("失败提示", "%s维修人员%s派工信息推送失败!" % (acno, empNos["WX"]))
  2152. else:
  2153. try:
  2154. ip = "http://" + str(self.ipinfo) + "/static/insertLogs2/" + "%s,%s%s派工信息推送成功%s/" % (acno, flightno, str(qw1 + "-" + qw2 + "-" + g1 + "-" + g2),datetime.datetime.now()) + "%s/" % str(self.user) + "%s" % str(datetime.datetime.now())
  2155. requests.get(url=ip, timeout=30).json()
  2156. except Exception as e:
  2157. app_logger.log_error(e)
  2158. QMessageBox.warning(self, "日志功能失效", "操作日志功能失效请联系管理员!")
  2159. self.severpost_nomeassge("infoConfirm2", "/%s" % self.tableWidgetFlight.item(rowIndex, 19).text(),"/%s" % self.tableWidgetFlight.item(rowIndex,53).text(),"/%s" % self.displayMode, "/%s" % self.selectedtime)
  2160. self.show_info("成功提示", "%s维修人员%s派工信息推送成功!!!" % (acno, empNos["WX"]))
  2161. self.QThreadSortNow("main")
  2162. if empNos["faillist"] != []:
  2163. try:
  2164. ip = "http://" + str(self.ipinfo) + "/static/insertLogs2/" + "%s,%s%s派工信息推送失败%s/" % (acno, flightno,str(empNos["faillist"]).replace(",", "-").replace("'", "").replace("[", "").replace("]",""),datetime.datetime.now()) + "%s/" % str(self.user) + "%s" % str(datetime.datetime.now())
  2165. requests.get(url=ip, timeout=30).json()
  2166. except Exception as e:
  2167. app_logger.log_error(e)
  2168. QMessageBox.warning(self, "日志功能失效", "操作日志功能失效请联系管理员!")
  2169. self.show_info("通知错误", "以下人员通知失败:%s,请确认考勤打卡情况!" % empNos["faillist"])
  2170. else:
  2171. self.show_info("警告", "该航班非AMRO航班或者无任务编号,请确认是否为AMRO航班,如确认请使用AMRO人工叮咚消息通知!!")
  2172. return
  2173. elif action == item5:
  2174. if str(self.tableWidgetFlight.item(rowIndex, 53).text()) != "" and "MAN" not in str(
  2175. self.tableWidgetFlight.item(rowIndex, 53).text())and str(self.tableWidgetFlight.item(rowIndex, 55).text()) != "":
  2176. empNos = self.severpostData_nomeassge("get_empNos", dict_people)
  2177. if empNos["code"] != "fail":
  2178. risktips=""
  2179. if self.tableWidgetFlight.item(rowIndex, 8).text() !="":
  2180. res=self.getRiskData(self.tableWidgetFlight.item(rowIndex, 8).text(),self.tableWidgetFlight.item(rowIndex, 19).text(), acno)
  2181. risktips=f"\n 【风险提示】:{res}" if res !="" else ""
  2182. msgInfo="放行人员保障推送!%s%s" % (fj,risktips)
  2183. res= self.send_dingdong(acno,self.tableWidgetFlight.item(rowIndex, 5).text(),
  2184. self.tableWidgetFlight.item(rowIndex, 59).text(),
  2185. "进" +self.tableWidgetFlight.item(rowIndex, 57).text().split("</br>")[0] + ",出" +self.tableWidgetFlight.item(rowIndex, 57).text().split("</br>")[1],
  2186. self.tableWidgetFlight.item(rowIndex, 8).text(),self.tableWidgetFlight.item(rowIndex, 55).text(),
  2187. "", empNos["FXempNos"],empNos["WX"],empNos["FX"],"",msgInfo)
  2188. if res != "ok":
  2189. self.show_info("失败提示", "%s放行人员%s派工信息推送失败!" % (
  2190. acno, empNos["FX"]))
  2191. else:
  2192. try:
  2193. ip = "http://" + str(self.ipinfo) + "/static/insertLogs2/" + "%s,%s%s派工信息推送成功%s/" % (acno, flightno, str(fx),datetime.datetime.now()) + "%s/" % str(self.user) + "%s" % str(datetime.datetime.now())
  2194. requests.get(url=ip, timeout=30).json()
  2195. except Exception as e:
  2196. app_logger.log_error(e)
  2197. QMessageBox.warning(self, "日志功能失效", "操作日志功能失效请联系管理员!")
  2198. self.show_info("成功提示", "%s放行人员%s派工信息推成功!!!" % (
  2199. acno, empNos["FX"]))
  2200. self.severpost_nomeassge("infoConfirm2","/%s" % self.tableWidgetFlight.item(rowIndex, 19).text(),
  2201. "/%s" % self.tableWidgetFlight.item(rowIndex,53).text(),
  2202. "/%s" % self.displayMode, "/%s" % self.selectedtime)
  2203. self.QThreadSortNow("main")
  2204. if empNos["faillist"] != []:
  2205. try:
  2206. ip = "http://" + str(self.ipinfo) + "/static/insertLogs2/" + "%s,%s%s派工信息推送失败%s/" % (acno, flightno,str(empNos["faillist"]).replace(",", "-").replace("'", "").replace("[", "").replace("]",""),datetime.datetime.now()) + "%s/" % str(self.user) + "%s" % str(datetime.datetime.now())
  2207. requests.get(url=ip, timeout=30).json()
  2208. except Exception as e:
  2209. app_logger.log_error(e)
  2210. QMessageBox.warning(self, "日志功能失效", "操作日志功能失效请联系管理员!")
  2211. self.show_info("通知错误", "以下人员通知失败:%s,请确认考勤打卡情况!" % empNos["faillist"])
  2212. else:
  2213. self.show_info("警告","该航班非AMRO航班或者无任务编号,请确认是否为AMRO航班,如确认请使用AMRO人工叮咚消息通知!!")
  2214. return
  2215. elif action == item6:
  2216. if str(self.tableWidgetFlight.item(rowIndex, 53).text()) != "" and "MAN" not in str(
  2217. self.tableWidgetFlight.item(rowIndex, 53).text())and str(self.tableWidgetFlight.item(rowIndex, 55).text()) != "":
  2218. empNos = self.severpostData_nomeassge("get_empNos", dict_people)
  2219. if empNos["code"] != "fail":
  2220. risktips = ""
  2221. if self.tableWidgetFlight.item(rowIndex, 8).text() != "":
  2222. res = self.getRiskData(self.tableWidgetFlight.item(rowIndex, 8).text(),self.tableWidgetFlight.item(rowIndex, 19).text(), acno)
  2223. risktips = f"\n 【风险提示】:{res}" if res != "" else ""
  2224. msgInfo = "二次送机任务推送!%s%s" % (fj, risktips)
  2225. res= self.send_dingdong(acno,self.tableWidgetFlight.item(rowIndex, 5).text(),
  2226. self.tableWidgetFlight.item(rowIndex, 59).text(),
  2227. "进" +self.tableWidgetFlight.item(rowIndex, 57).text().split("</br>")[0] + ",出" +self.tableWidgetFlight.item(rowIndex, 57).text().split("</br>")[1],
  2228. self.tableWidgetFlight.item(rowIndex, 8).text(),self.tableWidgetFlight.item(rowIndex, 55).text(),
  2229. empNos["ESempNos"], "",empNos["WX"],empNos["FX"],empNos["ES"],msgInfo)
  2230. if res != "ok":
  2231. self.show_info("失败提示", "%s二次送机人员%s派工信息推送失败!" % (
  2232. acno, empNos["ES"]))
  2233. else:
  2234. try:
  2235. ip = "http://" + str(self.ipinfo) + "/static/insertLogs2/" + "%s,%s%s派工信息推送成功%s/" % (acno, flightno, str(g1 + "-" + g2),datetime.datetime.now()) + "%s/" % str(self.user) + "%s" % str(datetime.datetime.now())
  2236. requests.get(url=ip, timeout=30).json()
  2237. except Exception as e:
  2238. app_logger.log_error(e)
  2239. QMessageBox.warning(self, "日志功能失效", "操作日志功能失效请联系管理员!")
  2240. self.show_info("成功提示", "%s二次送机人员%s派工信息推送成功!!!" % (
  2241. acno, empNos["ES"]))
  2242. self.severpost_nomeassge("infoConfirm2","/%s" % self.tableWidgetFlight.item(rowIndex, 19).text(),
  2243. "/%s" % self.tableWidgetFlight.item(rowIndex,53).text(),
  2244. "/%s" % self.displayMode, "/%s" % self.selectedtime)
  2245. self.QThreadSortNow("main")
  2246. if empNos["faillist"] != []:
  2247. try:
  2248. ip = "http://" + str(self.ipinfo) + "/static/insertLogs2/" + "%s,%s%s派工信息推送失败%s/" % (acno, flightno,str(empNos["faillist"]).replace(",", "-").replace("'", "").replace("[", "").replace("]",""),datetime.datetime.now()) + "%s/" % str(self.user) + "%s" % str(datetime.datetime.now())
  2249. requests.get(url=ip, timeout=30).json()
  2250. except Exception as e:
  2251. app_logger.log_error(e)
  2252. QMessageBox.warning(self, "日志功能失效", "操作日志功能失效请联系管理员!")
  2253. self.show_info("通知错误", "以下人员通知失败:%s,请确认考勤打卡情况!" % empNos["faillist"])
  2254. else:
  2255. self.show_info("警告","该航班非AMRO航班或者无任务编号,请确认是否为AMRO航班,如确认请使用AMRO人工叮咚消息通知!!")
  2256. return
  2257. elif action == item7:
  2258. self.severpost_nomeassge("infoConfirm", "/%s" % self.tableWidgetFlight.item(rowIndex, 19).text(),
  2259. "/%s" % self.tableWidgetFlight.item(rowIndex, 53).text(),
  2260. "/%s" % self.displayMode, "/%s" % self.selectedtime)
  2261. try:
  2262. ip = "http://" + str(self.ipinfo) + "/static/insertLogs2/" + "%s,%s点击确认通知%s/" % (acno, flightno,datetime.datetime.now()) + "%s/" % str(self.user) + "%s" % str(datetime.datetime.now())
  2263. requests.get(url=ip, timeout=30).json()
  2264. except Exception as e:
  2265. app_logger.log_error(e)
  2266. QMessageBox.warning(self, "日志功能失效", "操作日志功能失效请联系管理员!")
  2267. self.QThreadSortNow("main")
  2268. return
  2269. elif action == item8:
  2270. self.severpost_nomeassge("manChangests",
  2271. "/%s" % self.tableWidgetFlight.item(rowIndex, 53).text(), "/接机到位",
  2272. "/%s" % self.selectedtime, "/%s" % self.user)
  2273. try:
  2274. ip = "http://" + str(self.ipinfo) + "/static/insertLogs2/" + "%s,%s人工点击接机到位%s/" % (acno, flightno,datetime.datetime.now()) + "%s/" % str(self.user) + "%s" % str(datetime.datetime.now())
  2275. requests.get(url=ip, timeout=30).json()
  2276. except Exception as e:
  2277. app_logger.log_error(e)
  2278. QMessageBox.warning(self, "日志功能失效", "操作日志功能失效请联系管理员!")
  2279. self.QThreadSortNow("main")
  2280. self.QThreadSortNow("change")
  2281. self.QThreadSortNow("log")
  2282. return
  2283. elif action == item9:
  2284. self.severpost_nomeassge("manChangests","/%s" % self.tableWidgetFlight.item(rowIndex, 53).text(), "/放行","/%s" % self.selectedtime, "/%s" % self.user)
  2285. # print("人工确认放行")
  2286. try:
  2287. ip = "http://" + str(self.ipinfo) + "/static/insertLogs2/" + "%s,%s人工点击放行%s/" % (acno, flightno,datetime.datetime.now()) + "%s/" % str(self.user) + "%s" % str(datetime.datetime.now())
  2288. requests.get(url=ip, timeout=30).json()
  2289. except Exception as e:
  2290. app_logger.log_error(e)
  2291. QMessageBox.warning(self, "日志功能失效", "操作日志功能失效请联系管理员!")
  2292. self.QThreadSortNow("main")
  2293. self.QThreadSortNow("change")
  2294. self.QThreadSortNow("log")
  2295. return
  2296. elif action == item10:
  2297. self.severpost_nomeassge("manChangests","/%s" % self.tableWidgetFlight.item(rowIndex, 53).text(), "/随机到位","/%s" % self.selectedtime, "/%s" % self.user)
  2298. # print("人工确认随机到位")
  2299. try:
  2300. ip = "http://" + str(self.ipinfo) + "/static/insertLogs2/" + "%s,%s人工点击随机到位%s/" % (acno, flightno,datetime.datetime.now()) + "%s/" % str(self.user) + "%s" % str(datetime.datetime.now())
  2301. requests.get(url=ip, timeout=30).json()
  2302. except Exception as e:
  2303. app_logger.log_error(e)
  2304. QMessageBox.warning(self, "日志功能失效", "操作日志功能失效请联系管理员!")
  2305. self.QThreadSortNow("main")
  2306. self.QThreadSortNow("change")
  2307. self.QThreadSortNow("log")
  2308. return
  2309. elif action == item11:
  2310. self.severpost_nomeassge("manChangests",
  2311. "/%s" % self.tableWidgetFlight.item(rowIndex, 53).text(), "/二送到位",
  2312. "/%s" % self.selectedtime, "/%s" % self.user)
  2313. # print("人工确认二送到位")
  2314. try:
  2315. ip = "http://" + str(self.ipinfo) + "/static/insertLogs2/" + "%s,%s人工点击二送到位%s/" % (acno, flightno,datetime.datetime.now()) + "%s/" % str(self.user) + "%s" % str(datetime.datetime.now())
  2316. requests.get(url=ip, timeout=30).json()
  2317. except Exception as e:
  2318. app_logger.log_error(e)
  2319. QMessageBox.warning(self, "日志功能失效", "操作日志功能失效请联系管理员!")
  2320. self.QThreadSortNow("main")
  2321. self.QThreadSortNow("change")
  2322. self.QThreadSortNow("log")
  2323. return
  2324. elif action == item12:
  2325. self.severpost_nomeassge("manChangests",
  2326. "/%s" % self.tableWidgetFlight.item(rowIndex, 53).text(), "/销子夹板",
  2327. "/%s" % self.selectedtime, "/%s" % self.user)
  2328. try:
  2329. ip = "http://" + str(self.ipinfo) + "/static/insertLogs2/" + "%s,%s人工点击销子夹板%s/" % (acno, flightno,datetime.datetime.now()) + "%s/" % str(self.user) + "%s" % str(datetime.datetime.now())
  2330. requests.get(url=ip, timeout=30).json()
  2331. except Exception as e:
  2332. app_logger.log_error(e)
  2333. QMessageBox.warning(self, "日志功能失效", "操作日志功能失效请联系管理员!")
  2334. self.QThreadSortNow("main")
  2335. self.QThreadSortNow("change")
  2336. self.QThreadSortNow("log")
  2337. return
  2338. elif action == item13:
  2339. msg = {}
  2340. if str(self.tableWidgetFlight.item(rowIndex, 53).text()) != "" and "MAN" not in str(self.tableWidgetFlight.item(rowIndex, 53).text())and str(self.tableWidgetFlight.item(rowIndex, 55).text()) != "":
  2341. if self.tableWidgetFlight.item(rowIndex, 19).text() != "短停送" and self.tableWidgetFlight.item(rowIndex, 19).text() != "特后前送":
  2342. empNos = self.severpostData_nomeassge("get_empNos", dict_people)
  2343. # print(empNos)
  2344. try:
  2345. if empNos["code"] != "fail":
  2346. res=self.LM_TSK_SURE_PG_NOW(self.tableWidgetFlight.item(rowIndex, 55).text(),empNos["WXempNos"],"WX",empNos["date"],empNos["bc"])
  2347. if res == "ok":
  2348. msg["aa"] = "%s维修人员派工成功!"% str(qw1 + "-" + qw2 + "-" + g1 + "-" + g2)
  2349. try:
  2350. ip = "http://" + str(self.ipinfo) + "/static/insertLogs2/" + "%s,%s%s派工成功%s/" % (acno, flightno, str(qw1 + "-" + qw2 + "-" + g1 + "-" + g2),datetime.datetime.now()) + "%s/" % str(self.user) + "%s" % str(datetime.datetime.now())
  2351. requests.get(url=ip, timeout=30).json()
  2352. except Exception as e:
  2353. app_logger.log_error(e)
  2354. QMessageBox.warning(self, "日志功能失效", "操作日志功能失效请联系管理员!")
  2355. if empNos["faillist"] != []:
  2356. msg["a"] = "以下维修人员派工失败:%s,请确认考勤打卡情况!" % empNos["faillist"]
  2357. try:
  2358. ip = "http://" + str(self.ipinfo) + "/static/insertLogs2/" + "%s,%s%s派工失败%s/" % (acno, flightno,str(empNos["faillist"]).replace(",", "-").replace("'", "").replace("[", "").replace("]", ""),datetime.datetime.now()) + "%s/" % str(self.user) + "%s" % str(datetime.datetime.now())
  2359. requests.get(url=ip, timeout=30).json()
  2360. except Exception as e:
  2361. app_logger.log_error(e)
  2362. QMessageBox.warning(self, "日志功能失效", "操作日志功能失效请联系管理员!")
  2363. except:
  2364. pass
  2365. try:
  2366. if empNos["code"] != "fail":
  2367. res = self.LM_TSK_SURE_PG_NOW(self.tableWidgetFlight.item(rowIndex, 55).text(),empNos["FXempNos"], "FX", empNos["date"], empNos["bc"])
  2368. if res == "ok":
  2369. msg["bb"] = "放行人员%s派工成功!"%str(fx)
  2370. try:
  2371. ip = "http://" + str(self.ipinfo) + "/static/insertLogs2/" + "%s,%s%s派工成功%s/" % (acno, flightno, str(fx),datetime.datetime.now()) + "%s/" % str(self.user) + "%s" % str(datetime.datetime.now())
  2372. requests.get(url=ip, timeout=30).json()
  2373. except Exception as e:
  2374. app_logger.log_error(e)
  2375. QMessageBox.warning(self, "日志功能失效", "操作日志功能失效请联系管理员!")
  2376. if empNos["faillist"] != []:
  2377. msg["b"] = "以下放行人员派工失败:%s,请确认考勤打卡情况!" % empNos["faillist"]
  2378. try:
  2379. ip = "http://" + str(self.ipinfo) + "/static/insertLogs2/" + "%s,%s%s派工失败%s/" % (acno, flightno,str(empNos["faillist"]).replace(",", "-").replace("'", "").replace("[", "").replace("]",""),datetime.datetime.now()) + "%s/" % str(self.user) + "%s" % str(datetime.datetime.now())
  2380. requests.get(url=ip, timeout=30).json()
  2381. except Exception as e:
  2382. app_logger.log_error(e)
  2383. QMessageBox.warning(self, "日志功能失效", "操作日志功能失效请联系管理员!")
  2384. except:
  2385. pass
  2386. try:
  2387. if empNos["code"] != "fail":
  2388. risktips = ""
  2389. if self.tableWidgetFlight.item(rowIndex, 8).text() != "":
  2390. res = self.getRiskData(self.tableWidgetFlight.item(rowIndex, 8).text(),self.tableWidgetFlight.item(rowIndex, 19).text(), acno)
  2391. risktips = f"\n 【风险提示】:{res}" if res != "" else ""
  2392. msgInfo = "进港维修任务保障推送!%s%s" % (fj, risktips)
  2393. res= self.send_dingdong(acno,self.tableWidgetFlight.item(rowIndex, 5).text(),
  2394. self.tableWidgetFlight.item(rowIndex, 59).text(),
  2395. "进" +self.tableWidgetFlight.item(rowIndex, 57).text().split("</br>")[0] + ",出" +self.tableWidgetFlight.item(rowIndex, 57).text().split("</br>")[1],
  2396. self.tableWidgetFlight.item(rowIndex, 8).text(),self.tableWidgetFlight.item(rowIndex, 55).text(),empNos["WXempNos"],"",empNos["WX"],empNos["FX"],"",msgInfo)
  2397. if res == "ok":
  2398. msg["cc"] = "%s维修人员%s派工信息推送成功!!!" % (acno, empNos["WX"])
  2399. self.severpost_nomeassge("infoConfirm2","/%s" % self.tableWidgetFlight.item(rowIndex, 19).text(),"/%s" % self.tableWidgetFlight.item(rowIndex,53).text(),"/%s" % self.displayMode, "/%s" % self.selectedtime)
  2400. try:
  2401. ip = "http://" + str(self.ipinfo) + "/static/insertLogs2/" + "%s,%s%s派工信息推送成功%s/" % (acno, flightno, str(qw1 + "-" + qw2 + "-" + g1 + "-" + g2),datetime.datetime.now()) + "%s/" % str(self.user) + "%s" % str(datetime.datetime.now())
  2402. requests.get(url=ip, timeout=30).json()
  2403. except Exception as e:
  2404. app_logger.log_error(e)
  2405. QMessageBox.warning(self, "日志功能失效", "操作日志功能失效请联系管理员!")
  2406. if empNos["faillist"] != []:
  2407. msg["c"] = "以下人员通知失败:%s,请确认考勤打卡情况!" % empNos["faillist"]
  2408. try:
  2409. ip = "http://" + str(self.ipinfo) + "/static/insertLogs2/" + "%s,%s%s派工信息推送失败%s/" % (acno, flightno,str(empNos["faillist"]).replace(",", "-").replace("'", "").replace("[", "").replace("]",""),datetime.datetime.now()) + "%s/" % str(self.user) + "%s" % str(datetime.datetime.now())
  2410. requests.get(url=ip, timeout=30).json()
  2411. except Exception as e:
  2412. app_logger.log_error(e)
  2413. QMessageBox.warning(self, "日志功能失效", "操作日志功能失效请联系管理员!")
  2414. except Exception as e:
  2415. app_logger.log_error(e)
  2416. try:
  2417. if empNos["code"] != "fail":
  2418. risktips = ""
  2419. if self.tableWidgetFlight.item(rowIndex, 8).text() != "":
  2420. res = self.getRiskData(self.tableWidgetFlight.item(rowIndex, 8).text(),self.tableWidgetFlight.item(rowIndex, 19).text(), acno)
  2421. risktips = f"\n 【风险提示】:{res}" if res != "" else ""
  2422. msgInfo = "放行任务保障信息!%s%s" % (fj, risktips)
  2423. res= self.send_dingdong(acno,self.tableWidgetFlight.item(rowIndex, 5).text(),
  2424. self.tableWidgetFlight.item(rowIndex, 59).text(),
  2425. "进" +self.tableWidgetFlight.item(rowIndex, 57).text().split("</br>")[0] + ",出" +self.tableWidgetFlight.item(rowIndex, 57).text().split("</br>")[1],
  2426. self.tableWidgetFlight.item(rowIndex, 8).text(),self.tableWidgetFlight.item(rowIndex, 55).text(),
  2427. "", empNos["FXempNos"],empNos["WX"],empNos["FX"],"",msgInfo)
  2428. if res == "ok":
  2429. msg["dd"] = "%s放行人员%s派工信息推成功!!!" % (
  2430. acno, empNos["FX"])
  2431. self.severpost_nomeassge("infoConfirm2","/%s" % self.tableWidgetFlight.item(rowIndex, 19).text(),"/%s" % self.tableWidgetFlight.item(rowIndex,53).text(),"/%s" % self.displayMode, "/%s" % self.selectedtime)
  2432. try:
  2433. ip = "http://" + str(self.ipinfo) + "/static/insertLogs2/" + "%s,%s%s派工信息推送成功%s/" % (acno, flightno, str(fx),datetime.datetime.now()) + "%s/" % str(self.user) + "%s" % str(datetime.datetime.now())
  2434. requests.get(url=ip, timeout=30).json()
  2435. except Exception as e:
  2436. app_logger.log_error(e)
  2437. QMessageBox.warning(self, "日志功能失效", "操作日志功能失效请联系管理员!")
  2438. if empNos["faillist"] != []:
  2439. msg["d"] = "以下人员通知失败:%s,请确认考勤打卡情况!" % empNos["faillist"]
  2440. try:
  2441. ip = "http://" + str(self.ipinfo) + "/static/insertLogs2/" + "%s,%s%s派工信息推送失败%s/" % (acno, flightno,str(empNos["faillist"]).replace(",", "-").replace("'", "").replace("[", "").replace("]",""),datetime.datetime.now()) + "%s/" % str(self.user) + "%s" % str(datetime.datetime.now())
  2442. requests.get(url=ip, timeout=30).json()
  2443. except Exception as e:
  2444. app_logger.log_error(e)
  2445. QMessageBox.warning(self, "日志功能失效", "操作日志功能失效请联系管理员!")
  2446. except:
  2447. pass
  2448. else:
  2449. empNos = self.severpostData_nomeassge("get_empNos", dict_people)
  2450. if "【交班航班】" in fj:
  2451. try:
  2452. if empNos["code"] != "fail":
  2453. res = self.LM_TSK_SURE_PG_NOW(self.tableWidgetFlight.item(rowIndex, 55).text(),empNos["FXempNos"], "FX", empNos["date"], empNos["bc"])
  2454. if res == "ok":
  2455. msg["bb"] = "放行人员%s派工成功!"%str(fx)
  2456. try:
  2457. ip = "http://" + str(self.ipinfo) + "/static/insertLogs2/" + "%s,%s%s派工成功%s/" % (acno, flightno, str(fx),datetime.datetime.now()) + "%s/" % str(self.user) + "%s" % str(datetime.datetime.now())
  2458. requests.get(url=ip, timeout=30).json()
  2459. except Exception as e:
  2460. app_logger.log_error(e)
  2461. QMessageBox.warning(self, "日志功能失效", "操作日志功能失效请联系管理员!")
  2462. if empNos["faillist"] != []:
  2463. msg["b"] = "以下放行人员派工失败:%s,请确认考勤打卡情况!" % empNos["faillist"]
  2464. try:
  2465. ip = "http://" + str(self.ipinfo) + "/static/insertLogs2/" + "%s,%s%s派工失败%s/" % (acno, flightno,str(empNos["faillist"]).replace(",", "-").replace("'", "").replace("[", "").replace("]",""),datetime.datetime.now()) + "%s/" % str(self.user) + "%s" % str(datetime.datetime.now())
  2466. requests.get(url=ip, timeout=30).json()
  2467. except Exception as e:
  2468. app_logger.log_error(e)
  2469. QMessageBox.warning(self, "日志功能失效", "操作日志功能失效请联系管理员!")
  2470. except:
  2471. pass
  2472. try:
  2473. if empNos["code"] != "fail":
  2474. risktips = ""
  2475. if self.tableWidgetFlight.item(rowIndex, 8).text() != "":
  2476. res = self.getRiskData(self.tableWidgetFlight.item(rowIndex, 8).text(),self.tableWidgetFlight.item(rowIndex, 19).text(),acno)
  2477. risktips = f"\n 【风险提示】:{res}" if res != "" else ""
  2478. msgInfo = "放行任务保障信息!%s%s" % (fj, risktips)
  2479. res= self.send_dingdong(acno,self.tableWidgetFlight.item(rowIndex, 5).text(),
  2480. self.tableWidgetFlight.item(rowIndex, 59).text(),
  2481. "进" +self.tableWidgetFlight.item(rowIndex, 57).text().split("</br>")[0] + ",出" +self.tableWidgetFlight.item(rowIndex, 57).text().split("</br>")[1],
  2482. self.tableWidgetFlight.item(rowIndex, 8).text(),self.tableWidgetFlight.item(rowIndex, 55).text(),
  2483. "", empNos["FXempNos"],empNos["WX"],empNos["FX"],"",msgInfo)
  2484. if res == "ok":
  2485. msg["dd"] = "%s放行人员%s派工信息推成功!!!" % (
  2486. acno, empNos["FX"])
  2487. self.severpost_nomeassge("infoConfirm2","/%s" % self.tableWidgetFlight.item(rowIndex, 19).text(),"/%s" % self.tableWidgetFlight.item(rowIndex,53).text(),"/%s" % self.displayMode, "/%s" % self.selectedtime)
  2488. try:
  2489. ip = "http://" + str(self.ipinfo) + "/static/insertLogs2/" + "%s,%s%s派工信息推送成功%s/" % (acno, flightno, str(fx),datetime.datetime.now()) + "%s/" % str(self.user) + "%s" % str(datetime.datetime.now())
  2490. requests.get(url=ip, timeout=30).json()
  2491. except Exception as e:
  2492. app_logger.log_error(e)
  2493. QMessageBox.warning(self, "日志功能失效", "操作日志功能失效请联系管理员!")
  2494. if empNos["faillist"] != []:
  2495. msg["d"] = "以下人员通知失败:%s,请确认考勤打卡情况!" % empNos["faillist"]
  2496. try:
  2497. ip = "http://" + str(self.ipinfo) + "/static/insertLogs2/" + "%s,%s%s派工信息推送失败%s/" % (acno, flightno,str(empNos["faillist"]).replace(",", "-").replace("'", "").replace("[", "").replace("]",""),datetime.datetime.now()) + "%s/" % str(self.user) + "%s" % str(datetime.datetime.now())
  2498. requests.get(url=ip, timeout=30).json()
  2499. except Exception as e:
  2500. app_logger.log_error(e)
  2501. QMessageBox.warning(self, "日志功能失效", "操作日志功能失效请联系管理员!")
  2502. except:
  2503. pass
  2504. # print(empNos)
  2505. if empNos["code"] != "fail":
  2506. res = self.LM_TSK_SURE_PG_NOW(self.tableWidgetFlight.item(rowIndex, 55).text(),empNos["ESempNos"], "ECSJ", empNos["date"], empNos["bc"])
  2507. if res == "ok":
  2508. msg["ee"] = "%s二次送机派工成功!"%str(g1 + "-" + g2)
  2509. try:
  2510. ip = "http://" + str(self.ipinfo) + "/static/insertLogs2/" + "%s,%s%s派工成功%s/" % (acno, flightno, str(g1 + "-" + g2),datetime.datetime.now()) + "%s/" % str(self.user) + "%s" % str(datetime.datetime.now())
  2511. requests.get(url=ip, timeout=30).json()
  2512. except Exception as e:
  2513. app_logger.log_error(e)
  2514. QMessageBox.warning(self, "日志功能失效", "操作日志功能失效请联系管理员!")
  2515. if empNos["faillist"] != []:
  2516. msg["e"] = "以下人员派工失败:%s,请确认考勤打卡情况!" % empNos["faillist"]
  2517. if empNos["code"] != "fail":
  2518. risktips = ""
  2519. if self.tableWidgetFlight.item(rowIndex, 8).text() != "":
  2520. res = self.getRiskData(self.tableWidgetFlight.item(rowIndex, 8).text(),self.tableWidgetFlight.item(rowIndex, 19).text(),acno)
  2521. risktips = f"\n 【风险提示】:{res}" if res != "" else ""
  2522. msgInfo = "二次送机任务推送!%s%s" % (fj, risktips)
  2523. res= self.send_dingdong(acno,self.tableWidgetFlight.item(rowIndex, 5).text(),
  2524. self.tableWidgetFlight.item(rowIndex, 59).text(),
  2525. "进" +self.tableWidgetFlight.item(rowIndex, 57).text().split("</br>")[0] + ",出" +self.tableWidgetFlight.item(rowIndex, 57).text().split("</br>")[1],
  2526. self.tableWidgetFlight.item(rowIndex, 8).text(),self.tableWidgetFlight.item(rowIndex, 55).text(),
  2527. empNos["ESempNos"], "",empNos["WX"],empNos["FX"],empNos["ES"],msgInfo)
  2528. if res == "ok":
  2529. msg["ff"] = "%s二次送机人员%s派工信息推送成功!!!" % (
  2530. acno, empNos["ES"])
  2531. self.severpost_nomeassge("infoConfirm2","/%s" % self.tableWidgetFlight.item(rowIndex, 19).text(),
  2532. "/%s" % self.tableWidgetFlight.item(rowIndex,53).text(),
  2533. "/%s" % self.displayMode, "/%s" % self.selectedtime)
  2534. try:
  2535. ip = "http://" + str(self.ipinfo) + "/static/insertLogs2/" + "%s,%s%s派工信息推送成功%s/" % (acno, flightno, str(g1 + "-" + g2),datetime.datetime.now()) + "%s/" % str(self.user) + "%s" % str(datetime.datetime.now())
  2536. requests.get(url=ip, timeout=30).json()
  2537. except Exception as e:
  2538. app_logger.log_error(e)
  2539. QMessageBox.warning(self, "日志功能失效", "操作日志功能失效请联系管理员!")
  2540. if empNos["faillist"] != []:
  2541. msg["f"] = "以下人员通知失败:%s,请确认考勤打卡情况!" % empNos["faillist"]
  2542. try:
  2543. ip = "http://" + str(self.ipinfo) + "/static/insertLogs2/" + "%s,%s%s派工信息推送失败%s/" % (acno, flightno,str(empNos["faillist"]).replace(",", "-").replace("'", "").replace("[", "").replace("]",""),datetime.datetime.now()) + "%s/" % str(self.user) + "%s" % str(datetime.datetime.now())
  2544. requests.get(url=ip, timeout=30).json()
  2545. except Exception as e:
  2546. app_logger.log_error(e)
  2547. QMessageBox.warning(self, "日志功能失效", "操作日志功能失效请联系管理员!")
  2548. msgs = ""
  2549. for j in ["aa", "bb", "cc", "dd", "ee", "ff", "a", "b", "c", "d", "e", "f"]:
  2550. if j in msg.keys():
  2551. if msgs == "":
  2552. msgs = msg[j]
  2553. else:
  2554. msgs = msgs + "\n" + msg[j]
  2555. self.show_info("一键派工提示信息", msgs)
  2556. self.QThreadSortNow("main")
  2557. else:
  2558. self.show_info("警告", "该航班非AMRO航班或者无任务编号,请确认是否为AMRO航班,如确认请使用AMRO人工派工和叮咚消息通知!!")
  2559. return
  2560. else:
  2561. return
  2562. except Exception as e:
  2563. app_logger.log_error(e)
  2564. elif self.displayMode=="B":
  2565. for i in self.tableWidgetFlight.selectionModel().selection().indexes():
  2566. rowIndex = i.row()
  2567. colnum = self.tableWidgetFlight.columnCount()
  2568. flightids = self.tableWidgetFlight.item(rowIndex, colnum - 5).text()
  2569. flighttype = self.tableWidgetFlight.item(rowIndex, 9).text()
  2570. jjdq = self.tableWidgetFlight.item(rowIndex, 16).text()
  2571. hbdq = self.tableWidgetFlight.item(rowIndex, 17).text()
  2572. esdq= self.tableWidgetFlight.item(rowIndex, 18).text()
  2573. dqfile= self.tableWidgetFlight.item(rowIndex, 29).text()
  2574. menu = QMenu()
  2575. item1 = menu.addAction("工作单确认检查")
  2576. if "√" in jjdq:
  2577. item2 = menu.addAction("查看接机电签")
  2578. else:
  2579. item2 = ""
  2580. if "√" in hbdq:
  2581. item3 = menu.addAction("查看航班电签")
  2582. else:
  2583. item3 = ""
  2584. if "√" in esdq:
  2585. item4 = menu.addAction("查看送机电签")
  2586. else:
  2587. item4 = ""
  2588. screenPos = self.tableWidgetFlight.mapToGlobal(pos)
  2589. action = menu.exec(screenPos)
  2590. if action == item1:
  2591. nowstr=self.user+str(datetime.datetime.now().timestamp()).split(".")[0]
  2592. ip = "http://" + str(self.ipinfo) + "/static/updateDragDropItem/%s/%s/%s/%s/%s/%s" % ("10", nowstr, flightids, self.displayMode, flighttype, self.selectedtime)
  2593. # print(ip)
  2594. #self.tableWidgetFlight.setItem(int(rowIndex), column, QTableWidgetItem(str(nowstr)))
  2595. try:
  2596. requests.get(url=ip, timeout=30).json()
  2597. except Exception as e:
  2598. QMessageBox.warning(self, "提示", "服务器连接超时,请联系管理员检查服务器!")
  2599. app_logger.log_error(e)
  2600. self.QThreadSortNow("main")
  2601. return
  2602. elif action == item2:
  2603. dqlist=dqfile.split(",")
  2604. result = [str(num) for num in dqlist if 'ARRIVAL-SERVICE' in str(num)]
  2605. # 构建请求参数
  2606. params = {"path": result}
  2607. # 发送GET请求
  2608. response = requests.get("http://" + str(self.ipinfo) + "/static/checkjobcard", params=params).content
  2609. open_with_system_viewer(response)
  2610. return
  2611. elif action == item3:
  2612. dqlist=dqfile.split(",")
  2613. result = [str(num) for num in dqlist if 'ARRIVAL-SERVICE' not in str(num) and 'DEPARTURE-SERVICE' not in str(num)]
  2614. # 构建请求参数
  2615. params = {"path": result}
  2616. # 发送GET请求
  2617. response = requests.get("http://" + str(self.ipinfo) + "/static/checkjobcard", params=params).content
  2618. open_with_system_viewer(response)
  2619. return
  2620. elif action == item4:
  2621. dqlist=dqfile.split(",")
  2622. result = [str(num) for num in dqlist if 'DEPARTURE-SERVICE' not in str(num)]
  2623. # 构建请求参数
  2624. params = {"path": result}
  2625. # 发送GET请求
  2626. response = requests.get("http://" + str(self.ipinfo) + "/static/checkjobcard", params=params).content
  2627. open_with_system_viewer(response)
  2628. return
  2629. else:
  2630. return
  2631. else:
  2632. QMessageBox.warning(self, "提示", "权限不够,请联系管理员!")
  2633. def tableWidgetPhoneDispaly(self):
  2634. try:
  2635. phoneLabel = ["序号", "姓名", "部门", "电话","name"]
  2636. col = len(phoneLabel)
  2637. diplaylist = self.sorttableWidgetPHONEDispalydata
  2638. self.tableWidget_3.setRowCount(len(diplaylist.keys()))
  2639. for row in diplaylist.keys():
  2640. for colNum in range(0, col):
  2641. if colNum == 0:
  2642. self.tableWidget_3.setItem(int(row), colNum, QTableWidgetItem(str(int(row)+1)))
  2643. self.tableWidget_3.item(int(row), colNum).setTextAlignment(Qt.AlignmentFlag.AlignCenter)
  2644. else:
  2645. self.tableWidget_3.setItem(int(row), colNum, QTableWidgetItem(diplaylist[row][phoneLabel[colNum]]))
  2646. self.tableWidget_3.item(int(row), colNum).setTextAlignment(Qt.AlignmentFlag.AlignCenter)
  2647. self.tableWidget_3.resizeColumnsToContents()
  2648. self.tableWidget_3.setColumnHidden(4, True)
  2649. except Exception as e:
  2650. app_logger.log_error(e)
  2651. def tableWidgetPeopleDisplay(self):
  2652. try:
  2653. peopleLabel = ["序号", "姓名", "角色", "授权"]
  2654. col = len(peopleLabel)
  2655. diplaylist = self.sortdiplaylist
  2656. self.tableWidgetPerson.setRowCount(len(diplaylist.keys()))
  2657. for row in diplaylist.keys():
  2658. for colNum in range(0, col):
  2659. if colNum == 0:
  2660. self.tableWidgetPerson.setItem(int(row), colNum, QTableWidgetItem(str(int(row)+1)))
  2661. else:
  2662. self.tableWidgetPerson.setItem(int(row), colNum,QTableWidgetItem(diplaylist[row][peopleLabel[colNum]]))
  2663. self.tableWidgetPerson.item(int(row), colNum).setTextAlignment(Qt.AlignmentFlag.AlignCenter)
  2664. if colNum == 3:
  2665. self.tableWidgetPerson.item(int(row), 3).setToolTip("%s" % (str(diplaylist[row][peopleLabel[colNum]])))
  2666. self.tableWidgetPerson.resizeColumnsToContents()
  2667. self.tableWidgetPerson.setWordWrap(True)
  2668. self.tableWidgetPerson.setColumnWidth(3, 125)
  2669. except Exception as e:
  2670. app_logger.log_error(e)
  2671. def enter_item_slot(self, item):
  2672. try:
  2673. self.tool_tip = item.text()
  2674. except Exception as e:
  2675. app_logger.log_error(e)
  2676. def tableWidgetDispaly(self):
  2677. try:
  2678. selftaxi = ["166", "166L", "166R", "167", "167L", "167R", "168", "169", "170", "171", "172", "173", "174",
  2679. "269", "270", "271", "272", "273", "274", "275", "287", "288", "601", "602", "603", "604",
  2680. "605", "606", "607", "607L", "607R"] # 自滑位
  2681. if self.sorttableWidgetDispalydata != "":
  2682. # print("刷新开始")
  2683. # dateNow=datetime.datetime.now()
  2684. tableWidgetDispalydata = self.sorttableWidgetDispalydata
  2685. col = len(self.displayLabel)
  2686. self.tableWidgetFlight.setRowCount(len(tableWidgetDispalydata.keys()))
  2687. for row in tableWidgetDispalydata.keys():
  2688. for colNum in range(0, col):
  2689. if colNum == 13:
  2690. self.tableWidgetFlight.setItem(int(row), colNum, QTableWidgetItem(str(tableWidgetDispalydata[row][str(colNum)])))
  2691. elif colNum == 15:
  2692. self.tableWidgetFlight.setItem(int(row), colNum, QTableWidgetItem(str(tableWidgetDispalydata[row][str(colNum)])))
  2693. elif colNum == 18:
  2694. if tableWidgetDispalydata[row][str(colNum)] in selftaxi and tableWidgetDispalydata[row][str(colNum)] != "":
  2695. self.tableWidgetFlight.setItem(int(row), colNum, QTableWidgetItem(str(tableWidgetDispalydata[row][str(colNum)])))
  2696. self.tableWidgetFlight.item(int(row), colNum).setBackground(QColor("lightgreen"))
  2697. self.tableWidgetFlight.item(int(row), colNum).setForeground(QColor("black"))
  2698. if "自滑机位" not in tableWidgetDispalydata[row][str(61)]:
  2699. flightid = tableWidgetDispalydata[row][str(53)]
  2700. # print(flightid)
  2701. flighttype = tableWidgetDispalydata[row]["19"]
  2702. fjxx = "自滑机位;" + str(tableWidgetDispalydata[row][str(61)])
  2703. ip = "http://" + str(self.ipinfo) + "/static/updateEidteItem/" + "%s/" % str(
  2704. fjxx) + "%s/" % str(flightid) + "%s/" % str(self.displayMode) + "%s/" % str(
  2705. flighttype) + "%s" % str(self.selectedtime)
  2706. try:
  2707. requests.get(url=ip, timeout=30).json()
  2708. except Exception as e:
  2709. QMessageBox.warning(self, "提示", "服务器连接超时,请联系管理员检查服务器!")
  2710. app_logger.log_error(e)
  2711. if self.displayMode =="A":
  2712. for colNum2 in (21, 23, 25, 27, 29):
  2713. if tableWidgetDispalydata[row][str(colNum2)] != "" and "*" not in str(tableWidgetDispalydata[row][str(colNum2)]):
  2714. self.severpost_nomeassge("selftaxiLogs", "/%s请通知%s,%s为自滑位,注意特殊机位保障要求!" % (tableWidgetDispalydata[row]["5"], tableWidgetDispalydata[row][str(colNum2)],
  2715. tableWidgetDispalydata[row]["8"]),"/%s" % tableWidgetDispalydata[row][str(53)], "","")
  2716. self.severpost_nomeassge("infoConfirm3","/%s" % tableWidgetDispalydata[row][str(19)],"/%s" % tableWidgetDispalydata[row][str(53)],
  2717. "/%s" % self.displayMode, "/%s" % self.selectedtime)
  2718. elif tableWidgetDispalydata[row][str(colNum)] not in selftaxi or tableWidgetDispalydata[row][str(colNum)] == "":
  2719. self.tableWidgetFlight.setItem(int(row), colNum, QTableWidgetItem(str(tableWidgetDispalydata[row][str(colNum)])))
  2720. self.tableWidgetFlight.item(int(row), colNum).setBackground(QColor(str(tableWidgetDispalydata[row]["99"])))
  2721. self.tableWidgetFlight.item(int(row), colNum).setForeground( QColor(str(tableWidgetDispalydata[row]["101"])))
  2722. font = QFont()
  2723. # font.setFamily("SimHei")
  2724. font.setFamily("Microsoft YaHei")
  2725. font.setBold(True)
  2726. self.tableWidgetFlight.item(int(row), colNum).setFont(font)
  2727. elif colNum == 19:
  2728. if tableWidgetDispalydata[row][str(colNum)] == "短停送" or tableWidgetDispalydata[row][str(colNum)] == "特后前送":
  2729. self.tableWidgetFlight.setItem(int(row), colNum, QTableWidgetItem(str(tableWidgetDispalydata[row][str(colNum)])))
  2730. self.tableWidgetFlight.item(int(row), colNum).setBackground(QColor(str(tableWidgetDispalydata[row]["99"])))
  2731. self.tableWidgetFlight.item(int(row), colNum).setForeground(QColor(str("blue")))
  2732. font = QFont()
  2733. font.setFamily("Microsoft YaHei")
  2734. font.setBold(True)
  2735. self.tableWidgetFlight.item(int(row), colNum).setFont(font)
  2736. else:
  2737. self.tableWidgetFlight.setItem(int(row), colNum, QTableWidgetItem(str(tableWidgetDispalydata[row][str(colNum)])))
  2738. self.tableWidgetFlight.item(int(row), colNum).setBackground(QColor(str(tableWidgetDispalydata[row]["99"])))
  2739. self.tableWidgetFlight.item(int(row), colNum).setForeground(QColor(str(tableWidgetDispalydata[row]["101"])))
  2740. elif 19 < colNum < 31:
  2741. if "√" in tableWidgetDispalydata[row][str(colNum)] or tableWidgetDispalydata[row][str(colNum)] == "":
  2742. self.tableWidgetFlight.setItem(int(row), colNum, QTableWidgetItem(str(tableWidgetDispalydata[row][str(colNum)]).replace("*","")))
  2743. self.tableWidgetFlight.item(int(row), colNum).setBackground(QColor(str(tableWidgetDispalydata[row]["99"])))
  2744. self.tableWidgetFlight.item(int(row), colNum).setForeground(QColor(str(tableWidgetDispalydata[row]["101"])))
  2745. if tableWidgetDispalydata[row][str(colNum)] != "" and "√" not in tableWidgetDispalydata[row][str(colNum)]:
  2746. self.tableWidgetFlight.setItem(int(row), colNum, QTableWidgetItem(str(tableWidgetDispalydata[row][str(colNum)]).replace("*","")))
  2747. self.tableWidgetFlight.item(int(row), colNum).setBackground(QColor("yellow"))
  2748. self.tableWidgetFlight.item(int(row), colNum).setForeground(QColor("black"))
  2749. elif colNum == 61:
  2750. if str(tableWidgetDispalydata[row][str(colNum)]) != "" and str(tableWidgetDispalydata[row][str(colNum)]) != None:
  2751. self.tableWidgetFlight.setItem(int(row), colNum, QTableWidgetItem(str(tableWidgetDispalydata[row][str(colNum)])))
  2752. self.tableWidgetFlight.item(int(row), colNum).setBackground(QColor("yellow"))
  2753. self.tableWidgetFlight.item(int(row), colNum).setForeground(QColor("red"))
  2754. font = QFont()
  2755. font.setFamily("Microsoft YaHei")
  2756. font.setBold(True)
  2757. self.tableWidgetFlight.item(int(row), colNum).setFont(font)
  2758. else:
  2759. self.tableWidgetFlight.setItem(int(row), colNum, QTableWidgetItem(str(tableWidgetDispalydata[row][str(colNum)])))
  2760. self.tableWidgetFlight.item(int(row), colNum).setBackground(QColor(str(tableWidgetDispalydata[row]["99"])))
  2761. self.tableWidgetFlight.item(int(row), colNum).setForeground(QColor(str(tableWidgetDispalydata[row]["101"])))
  2762. font = QFont()
  2763. font.setFamily("Microsoft YaHei")
  2764. font.setBold(True)
  2765. self.tableWidgetFlight.item(int(row), colNum).setFont(font)
  2766. if "二拖" in tableWidgetDispalydata[row][str(colNum)]:
  2767. for selftaxiPostion in selftaxi:
  2768. if selftaxiPostion in tableWidgetDispalydata[row][str(colNum)]:
  2769. for colNum2 in (21, 23, 25, 27, 29):
  2770. if tableWidgetDispalydata[row][str(colNum2)] != "":
  2771. self.severpost_nomeassge("selftaxiLogs","/%s请通知%s,%s二拖机位目的机位为自滑位,注意特殊机位保障要求!" % (
  2772. tableWidgetDispalydata[row]["5"],tableWidgetDispalydata[row][str(colNum2)],
  2773. tableWidgetDispalydata[row]["8"]),"/%s" % tableWidgetDispalydata[row][str(53)], "", "")
  2774. elif colNum == 49:
  2775. self.tableWidgetFlight.setItem(int(row), colNum, QTableWidgetItem(str(tableWidgetDispalydata[row][str(colNum)])))
  2776. if tableWidgetDispalydata[row][str(colNum)] != "":
  2777. for i in tableWidgetDispalydata[row][str(colNum)].split(","):
  2778. if "√" not in i:
  2779. self.tableWidgetFlight.item(int(row), colNum).setBackground(QColor("yellow"))
  2780. self.tableWidgetFlight.item(int(row), colNum).setForeground(QColor("black"))
  2781. break
  2782. else:
  2783. self.tableWidgetFlight.item(int(row), colNum).setBackground(QColor(str(tableWidgetDispalydata[row]["99"])))
  2784. self.tableWidgetFlight.item(int(row), colNum).setForeground(QColor(str(tableWidgetDispalydata[row]["101"])))
  2785. else:
  2786. self.tableWidgetFlight.item(int(row), colNum).setBackground(QColor(str(tableWidgetDispalydata[row]["99"])))
  2787. self.tableWidgetFlight.item(int(row), colNum).setForeground(QColor(str(tableWidgetDispalydata[row]["101"])))
  2788. elif colNum == 51:
  2789. self.tableWidgetFlight.setItem(int(row), colNum, QTableWidgetItem(str(tableWidgetDispalydata[row][str(colNum)])))
  2790. if tableWidgetDispalydata[row][str(colNum)] != "" and "√" not in tableWidgetDispalydata[row][str(colNum)]:
  2791. self.tableWidgetFlight.item(int(row), colNum).setBackground(QColor("yellow"))
  2792. self.tableWidgetFlight.item(int(row), colNum).setForeground(QColor("black"))
  2793. else:
  2794. self.tableWidgetFlight.item(int(row), colNum).setBackground(QColor(str(tableWidgetDispalydata[row]["99"])))
  2795. self.tableWidgetFlight.item(int(row), colNum).setForeground(QColor(str(tableWidgetDispalydata[row]["101"])))
  2796. elif 0 < colNum < 11:
  2797. self.tableWidgetFlight.setItem(int(row), colNum, QTableWidgetItem(str(tableWidgetDispalydata[row][str(colNum)])))
  2798. elif colNum == 0:
  2799. self.tableWidgetFlight.setItem(int(row), colNum, QTableWidgetItem(str(int(row)+1)))
  2800. else:
  2801. self.tableWidgetFlight.setItem(int(row), colNum, QTableWidgetItem( str(tableWidgetDispalydata[row][str(colNum)])))
  2802. if colNum not in [18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,49,51, 61]:
  2803. self.tableWidgetFlight.item(int(row), colNum).setBackground(QColor(str(tableWidgetDispalydata[row]["99"])))
  2804. self.tableWidgetFlight.item(int(row), colNum).setForeground(QColor(str(tableWidgetDispalydata[row]["101"])))
  2805. if colNum not in [4 , 6]:
  2806. self.tableWidgetFlight.item(int(row), colNum).setTextAlignment(Qt.AlignmentFlag.AlignCenter)
  2807. else:
  2808. self.tableWidgetFlight.item(int(row), colNum).setTextAlignment(Qt.AlignmentFlag.AlignTop | Qt.AlignmentFlag.AlignCenter)
  2809. self.tableWidgetFlight.setRowHeight(int(row), 35)
  2810. if self.displayMode == "A":
  2811. settips={0:"53",4:"62",49:"50",19:"47",11:"57",13:"57",15:"57",45:"45",61:"61",6:"17",38:"40",}
  2812. for key,value in settips.items():
  2813. if self.tableWidgetFlight.item(int(row), key):
  2814. if key not in [11,13,15]:
  2815. self.tableWidgetFlight.item(int(row), key).setToolTip("%s" % (str(tableWidgetDispalydata[row][str(value)])))
  2816. else:
  2817. self.tableWidgetFlight.item(int(row), key).setToolTip("%s" % (str(tableWidgetDispalydata[row][str(value)].replace("</br>", "\n"))))
  2818. else:
  2819. self.tableWidgetFlight.item(int(row), 0).setToolTip("[%s,%s]" % ( str(tableWidgetDispalydata[row][str(col - 5)]),str(tableWidgetDispalydata[row][str(col - 4)])))
  2820. for ii in range (1,4):
  2821. try:
  2822. self.tableWidgetFlight.item(int(row), ii).setToolTip("%s" % str(tableWidgetDispalydata[row][str(24)]))
  2823. except Exception:
  2824. pass
  2825. if self.displayMode == "A":
  2826. self.tableWidgetFlight.resizeColumnsToContents()
  2827. self.tableWidgetFlight.setWordWrap(True)
  2828. for i in range(col):
  2829. if i in [1,2,3,5,7,8,9,10,12,14,16,17,20,22,24,26,28,30,32,34,36,39,40,42,43,44,46,47,48,50,52,53,54,55,56,57,58,59,60,62,63,64,65]:
  2830. self.tableWidgetFlight.setColumnHidden(i, True)
  2831. else:
  2832. self.tableWidgetFlight.setColumnHidden(i, False)
  2833. if i in [21, 23, 25, 27, 29, 31]:
  2834. self.tableWidgetFlight.setColumnWidth(i, 70)
  2835. elif i in [45]:
  2836. self.tableWidgetFlight.setColumnWidth(i, 45)
  2837. else:
  2838. for i in range(col):
  2839. if i in [col - 9, col - 11, col - 12, 19, 20, 21, 22, 23, 28, 29, 30, 31]:
  2840. self.tableWidgetFlight.setColumnHidden(i, True)
  2841. else:
  2842. self.tableWidgetFlight.setColumnHidden(i, False)
  2843. self.tableWidgetFlight.resizeColumnsToContents()
  2844. self.tableWidgetFlight.setColumnWidth(10, 70)
  2845. self.tableWidgetFlight.setColumnWidth(11, 70)
  2846. self.tableWidgetFlight.setColumnWidth(12, 70)
  2847. self.tableWidgetFlight.setColumnWidth(13, 70)
  2848. self.tableWidgetFlight.setColumnWidth(14, 70)
  2849. self.tableWidgetFlight.setColumnWidth(15, 70)
  2850. self.tableWidgetFlight.setColumnWidth(22, 45)
  2851. #self.tableWidgetFlight.resizeRowsToContents()
  2852. # print("刷新结束")
  2853. # print(datetime.datetime.now() - dateNow)
  2854. except Exception as e:
  2855. app_logger.log_error(e)
  2856. def on_completer_activated(self, text):
  2857. try:
  2858. if text:
  2859. index = self.comboBox.findText(text)
  2860. self.comboBox.setCurrentIndex(index)
  2861. except Exception as e:
  2862. app_logger.log_error(e)
  2863. def LM_TSK_SURE_PG(self):
  2864. try:
  2865. data = {
  2866. "empNos": dict["empNos"], # 员工号
  2867. "taskid": dict["taskid"], # taskid
  2868. "type": dict["type"], # 类型
  2869. "shiftDate": dict["shiftDate"], # 上班日期
  2870. "shift": dict["shift"], # 班次
  2871. }
  2872. self.severpostData_nomeassge("LM_TSK_SURE_PG", data)
  2873. except Exception as e:
  2874. app_logger.log_error(e)
  2875. def dingdong(self):
  2876. try:
  2877. data = {
  2878. "acno": dict["empNos"], # 机号
  2879. "actype": dict["taskid"], # 机型
  2880. "tasktype": dict["type"], # 任务类型
  2881. "tatd": dict["shiftDate"], # 起飞/落地时间
  2882. "msgInfo": dict["shift"], # 消息
  2883. "bay": dict["empNos"], # 机位
  2884. "wxemp": dict["taskid"], # 维修人员员工号
  2885. "fxemp": dict["type"], # 放行人员员工号
  2886. "wx": dict["shiftDate"], # 维修人员
  2887. "fx": dict["shift"], # 放行人员
  2888. "ecsj": dict["shift"], # 二次送机人员
  2889. }
  2890. self.severpostData_nomeassge("dingdong", data)
  2891. except Exception as e:
  2892. app_logger.log_error(e)
  2893. def update_pglistA(self, text):
  2894. try:
  2895. self.severpost_nomeassge("getPglist", "A", "", "", "")
  2896. except Exception as e:
  2897. app_logger.log_error(e)
  2898. def update_pglistB(self, text):
  2899. try:
  2900. self.severpost_nomeassge("getPglist", "B", "", "", "")
  2901. except Exception as e:
  2902. app_logger.log_error(e)
  2903. if __name__ == '__main__':
  2904. app = QApplication(sys.argv)
  2905. mw = MainWidget()
  2906. sys.exit(app.exec())