ServerWithJWT.py 86 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977
  1. import concurrent.futures
  2. import datetime
  3. import os
  4. import random
  5. import socket
  6. import time
  7. import traceback
  8. from datetime import timedelta
  9. import sqlite3
  10. import requests
  11. from flask import Flask , render_template
  12. from flask import request , jsonify
  13. from flask_jwt_extended import JWTManager , create_refresh_token
  14. from flask_jwt_extended import jwt_required , get_jwt_identity , create_access_token
  15. from waitress import serve
  16. from Functions import utils , DataComputer as DataComputer , ipcall , flaskDBUtils4PG as flaskDBUtils
  17. from Functions.DButilsFunction import flightDB , judge_bc as Judge_bc , initFlightDatabase as InitFlightDatabase , \
  18. insertTaskDataToTable , sortFlighttime , sortFlighttime2 , checkTFUairplane , \
  19. createWorkloadtablesFromPg as CreateWorkloadtablesFromPg , \
  20. checkFlightAlert , calledChecked as CalledChecked , \
  21. infoConfirm as InfoConfirm , infoConfirm3 as InfoConfirm3 , infoConfirm2 as InfoConfirm2 , \
  22. maintainAuthCheck as MaintainAuthCheck , \
  23. checkLoadSingal as CheckLoadSingal , changepassword as Changepassword , postgresql_local , \
  24. mapDispaly as MapDispaly , \
  25. checkPglist as CheckPglist , updateEidteItem as UpdateEidteItem , updateDragDropItem as UpdateDragDropItem , \
  26. qtPeopleLoad as QtPeopleLoad , tableWidgetDispaly as TableWidgetDispaly , \
  27. tableWidgetDispaly2 as TableWidgetDispaly2 , \
  28. tableWidgetDispalyRead2 as TableWidgetDispalyRead2 , tableWidgetDispalyRead as TableWidgetDispalyRead , \
  29. bakupdata as Bakupdata , getphonelist as Getphonelist , MM_GJJH_LIST as mM_GJJH_LIST , \
  30. checkCalllist as CheckCalllist , \
  31. tableWidgetLOGDispaly as TableWidgetLOGDispaly , tableWidgetDisplayChange as TableWidgetDisplayChange , \
  32. manAddFlight as ManAddFlight , get_dic as Get_dic , manChangests as ManChangests , insertLogs as InsertLogs , \
  33. insertLogs2 as InsertLogs2 , \
  34. selftaxiLogs as SelftaxiLogs , taskAtuoCheck as TaskAtuoCheck , deleteFlight as DeleteFlight , \
  35. get_empNos as Get_empNos , updateTaskAuto as UpdateTaskAuto , insertCalllist as InsertCalllist , \
  36. insertWorkjob as InsertWorkjob , \
  37. getRiskData as GetRiskData , saveRisktable as SaveRisktable , updateRiskdb as UpdateRiskdb , \
  38. updateStopFlight as UpdateStopFlight , \
  39. dealLogs as DealLogs , update_Pglist as Update_Pglist , getWorkjobInfo as GetWorkjobInfo , \
  40. mandealAllLogs as MandealAllLogs , \
  41. calltry as Calltry , callon as Callon , get_empNos_phoone as Get_empNos_phoone , FlightSearchInsert , \
  42. TaskListInsert , checkWorkerlaod_new , \
  43. GetPglistInDatabase , Getworkload , HandoverStsChange , ManCahangeWorkload , UpdateNoteItem , postgresql_bakup , \
  44. UpdatePeopleScheduleFromOnline , FlightPlanInsert , checkFlightplan
  45. from unitls.LogerinTxt import app_logger
  46. from unitls.StaticDataclass import initialize_file , write_status_to_file
  47. from unitls.settings import DBServer, flightDB4 , DataTransferMode , Server_Class , Main_Sever , databasefileDB , \
  48. Oline_flight
  49. import hmac
  50. import hashlib
  51. import json
  52. #requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
  53. '''
  54. 200 OK:请求成功,常用于GET和POST请求。
  55. 201 Created:请求成功并创建了新资源。
  56. 301 Moved Permanently:资源已永久移动到新位置。
  57. 302 Found:资源临时移动。
  58. 400 Bad Request:请求语法错误,服务器无法理解。
  59. 401 Unauthorized:请求需要身份验证。
  60. 403 Forbidden:服务器拒绝执行请求。
  61. 404 Not Found:服务器无法找到请求的资源。
  62. 500 Internal Server Error:服务器内部错误,无法完成请求。
  63. 503 Service Unavailable:服务器因超载或维护暂时无法处理请求。
  64. '''
  65. #初始化Flask应用
  66. app = Flask(__name__)
  67. app.config['initialized'] = False
  68. app.config['JWT_SECRET_KEY'] = 'your-secret-key' # 设置JWT密钥
  69. # 设置普通JWT过期时间
  70. app.config["JWT_ACCESS_TOKEN_EXPIRES"] = timedelta(hours=1)
  71. # 设置刷新JWT过期时间
  72. app.config["JWT_REFRESH_TOKEN_EXPIRES"] = timedelta(days=30)
  73. app.config["SECRET_KEY"] = "Can't not guess it ."
  74. jwt = JWTManager(app)
  75. dir = os.getcwd()
  76. dbhost, dbport, dbuser, dbpassword,online_host, online_port, online_user, online_password = DBServer()
  77. mainseverip, maindatabase=Main_Sever()
  78. backupactive = False #备用服务器激活标注
  79. database="flaskDatabase"
  80. databaseDB4 = flightDB4()
  81. databaseWorkLoad = 'workLoad'
  82. databaseLoginDB = 'loginDB'
  83. databasefileDB=databasefileDB()
  84. SameDatabase,HighRefreh,Online_flight_sts=Oline_flight()
  85. flightDataTransfer,displayDataTransfer=DataTransferMode()
  86. ServerClas = Server_Class()
  87. severVersion = "18.0.0"
  88. displayVersion = "18.0.0"
  89. print(f"当前客户端版本:{severVersion}/白板版本:{displayVersion}")
  90. print(f"当前服务器为:【{ServerClas}】")
  91. print(f"当前服务器航班数据传输模式为:【{flightDataTransfer}】")
  92. print(f"当前服务器显示计算请求模式为:【{displayDataTransfer}】")
  93. print(f"在线编辑模式:【{Online_flight_sts}】")
  94. print(f"一期二期服务器是否统一:【{SameDatabase}】")
  95. print(f"在线编辑高刷模式:【{HighRefreh}】")
  96. VinA1="328"
  97. VinA2="328"
  98. VinA3="328"
  99. VinB1="328"
  100. VinB2="328"
  101. VinB3="328"
  102. SIGNATURE_KEY=b"secret-key-neverout" # 用于请求签名的密钥
  103. REQUEST_VALID_DURATION = 30 # 请求有效期(秒)
  104. # 获取本地IP地址
  105. def get_local_ip():
  106. try:
  107. s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  108. s.connect(("8.8.8.8", 80)) # 连接到Google DNS服务器
  109. ip = s.getsockname()[0]
  110. s.close()
  111. return ip
  112. except:
  113. return socket.gethostbyname(socket.gethostname())
  114. def generate_signature() :
  115. """
  116. 生成请求签名
  117. :param data: 请求的JSON数据
  118. :return: (时间戳, 签名)
  119. """
  120. # 1. 获取当前Unix时间戳(秒级)
  121. timestamp = str(int(time.time()))
  122. data = { "timestamp" : timestamp }
  123. # 2. 对数据进行JSON序列化,确保排序一致
  124. # sort_keys=True 保证键的顺序一致,否则签名会不匹配
  125. data_str = json.dumps(data , sort_keys = True).encode('utf-8')
  126. # 3. 组合数据:数据字符串 + | + 时间戳
  127. signature_base = f"{data_str.decode('utf-8')}|{timestamp}".encode('utf-8')
  128. # 4. 使用HMAC-SHA256算法生成签名
  129. signature = hmac.new(
  130. SIGNATURE_KEY ,
  131. signature_base ,
  132. hashlib.sha256
  133. ).hexdigest()
  134. return timestamp , signature
  135. def verify_request(timestamp , signature , data) :
  136. """验证请求的合法性"""
  137. try :
  138. # 1. 验证时间戳是否在有效范围内
  139. request_time = datetime.datetime.fromtimestamp(int(timestamp))
  140. current_time = datetime.datetime.now()
  141. # 检查时间是否在有效期内
  142. if abs((current_time - request_time).total_seconds()) > REQUEST_VALID_DURATION :
  143. return False
  144. # 2. 验证签名
  145. # 将数据、时间戳和密钥组合生成签名
  146. data_str = json.dumps(data , sort_keys = True) # 确保数据顺序一致
  147. signature_base = f"{data_str}|{timestamp}".encode('utf-8')
  148. # 计算HMAC SHA256签名
  149. computed_signature = hmac.new(
  150. SIGNATURE_KEY,
  151. signature_base,
  152. hashlib.sha256
  153. ).hexdigest()
  154. # 比较签名(使用hmac.compare_digest更安全)
  155. if not hmac.compare_digest(computed_signature, signature):
  156. return False
  157. return True
  158. except Exception as e :
  159. return False
  160. def check_a_availability():
  161. """检查A服务器的可用性"""
  162. try:
  163. timestamp, signature = generate_signature()
  164. header = {'Content-Type' : 'application/json',
  165. 'X-Timestamp' : timestamp,
  166. 'X-Signature' : signature,
  167. }
  168. response = requests.get("http://" + mainseverip + ':5001/static/health' , headers = header)
  169. #ip = "http://" + mainseverip + ":5001/static/health"
  170. #response = requests.get(ip, timeout=5)
  171. return response.status_code != 200 #看是否连接成功
  172. except Exception as e:
  173. return True #出问题了
  174. def create_user_table():
  175. conn = sqlite3.connect('users.db')
  176. c = conn.cursor()
  177. cur_str = """
  178. CREATE TABLE IF NOT EXISTS users (ID INTEGER PRIMARY KEY AUTOINCREMENT,
  179. username TEXT NOT NULL,
  180. password TEXT NOT NULL,
  181. roles TEXT NOT NULL )
  182. """
  183. c.execute(cur_str)
  184. conn.commit()
  185. conn.close()
  186. print("Table created successfully")
  187. '''
  188. def insert_user(username, password, roles):
  189. conn = sqlite3.connect('users.db')
  190. c = conn.cursor()
  191. result = query_user(username)
  192. if not result:
  193. cur_str="""
  194. INSERT INTO users (username, password, roles) VALUES ("{}", "{}", "{}")""".format(username, password, roles)
  195. c.execute(cur_str)
  196. conn.commit()
  197. print("User ({}) inserted successfully".format(username))
  198. else:
  199. print("User {} already exists".format(username))
  200. conn.close()
  201. def query_user(username):
  202. conn = sqlite3.connect('users.db')
  203. c = conn.cursor()
  204. cur_str="""
  205. SELECT * FROM users WHERE username = "{}" """.format(username)
  206. result = c.execute(cur_str).fetchall()
  207. return result
  208. def verify_user(username, password):
  209. result = query_user(username)
  210. if not result:
  211. print("User ({}) doesn't exist".format(username))
  212. return False
  213. else:
  214. if result[0][2] == password:
  215. return True
  216. else:
  217. return False
  218. '''
  219. def returnTrue(message, data):
  220. return jsonify(msg=message, data=data)
  221. def tableWidgetDispalyN(selectedtime,date):
  222. #t1 = datetime.datetime.now()
  223. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  224. #t2 = datetime.datetime.now()
  225. #print(f'航班刷新登录时间:{t2 - t1}')
  226. res=TableWidgetDispaly(fdb,selectedtime,date)
  227. fdb.close()
  228. #print(datetime.datetime.now(),res)
  229. remote_addr = request.remote_addr
  230. print(datetime.datetime.now(),"[%s]A模式航班信息刷新请求[%s]"%(remote_addr,date))
  231. #t3 = datetime.datetime.now()
  232. #print(f'航班刷新处理时间:{t3 - t2}')
  233. return res
  234. def tableWidgetDispaly2N(selectedtime,date):
  235. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  236. res=TableWidgetDispaly2(fdb,selectedtime,date)
  237. fdb.close()
  238. remote_addr = request.remote_addr
  239. print(datetime.datetime.now(),"[%s]B模式航班信息刷新请求[%s]"%(remote_addr,date))
  240. return res
  241. def updatetimer():
  242. db = flaskDBUtils.flaskDB(host = dbhost , port = dbport , user = dbuser , password = dbpassword ,database = database)
  243. try:
  244. today = datetime.datetime.now().strftime("%Y%m%d")
  245. tomorrow = (datetime.datetime.now() + datetime.timedelta(days=1)).strftime("%Y%m%d")
  246. yesterday = (datetime.datetime.now() - datetime.timedelta(days=1)).strftime("%Y%m%d")
  247. dict={"1":yesterday,"2":today, "3":tomorrow}
  248. for key,value in dict.items():
  249. tableWidgetDispalyN(value,key)
  250. tableWidgetDispaly2N(value,key)
  251. flaskDBUtils.updateALlVin(db)
  252. #print(VinA1 , VinA2 , VinA3 , VinB1 , VinB2 , VinB3)
  253. except Exception as e:
  254. print(traceback.format_exc())
  255. db.close()
  256. def task_function(taskname, paramaDict):
  257. #ts = time.time()
  258. #print('开始请求:{}'.format(taskname))
  259. time.sleep(random.randint(10,100)/100)
  260. if taskname == "taskflightdata":
  261. result = fl.request_task_filght_list(paramaDict['nowDayStr'], paramaDict['token'])
  262. elif taskname == "Thirdtaskflightdata":
  263. result = fl.request_task_filght_third_list(paramaDict['nowDayStr'], paramaDict['token'])
  264. elif taskname == "flightsearch":
  265. result = fl.request_LM_FLIGHT_SEARCH_LIST(paramaDict['nowDayStr'], paramaDict['token'])
  266. elif taskname == "flightsearch_1":
  267. result = fl.request_LM_FLIGHT_SEARCH_LIST(paramaDict['nowDay_1'], paramaDict['token'])
  268. elif taskname == "TaskList":
  269. result = fl.request_LM_TASK_ARCHIVE_LIST(paramaDict['nowDayStr'], paramaDict['token'])
  270. elif taskname == "TaskList_1":
  271. result = fl.request_LM_TASK_ARCHIVE_LIST(paramaDict['nowDay_1'], paramaDict['token'])
  272. elif taskname == "FlightplanInfo":
  273. result = fl.request_flight_from_flightplan(paramaDict['nowDay_1'],paramaDict['nowDayStr'], paramaDict['token'])
  274. else:
  275. result = {'code': 404}
  276. #print("{} 请求耗时:{}".format(taskname, time.time()-ts))
  277. return result
  278. '''
  279. #用户注册与登录
  280. @app.route('/register', methods=['POST'])
  281. def register():
  282. data = request.get_json()
  283. print(data)
  284. username = data.get('username')
  285. password = data.get('password')
  286. insert_user(username, password, 'general')
  287. return jsonify({'msg': 'User created successfully'}), 201
  288. @app.route('/getAccessToken', methods=['POST'])
  289. def get_access_token():
  290. data = request.get_json()
  291. username = data.get('username')
  292. password = data.get('password')
  293. if verify_user(username, password):
  294. access_token = create_access_token(identity=username)
  295. refresh_token = create_refresh_token(identity=username)
  296. return jsonify(access_token=access_token, refresh_token=refresh_token, msg="Login {} success".format(username)), 200
  297. return jsonify({'msg': 'Invalid credentials'}), 401
  298. '''
  299. # 健康检查接口,暂时不做要求,后期做白名单或者删掉
  300. @app.route('/static/health') #签名检测
  301. def health_check():
  302. signature = request.headers.get('X-Signature')
  303. timestamp = request.headers.get('X-Timestamp')
  304. if verify_request(timestamp,signature, {"timestamp": timestamp}):
  305. try:
  306. # 检查数据库连接
  307. db = flaskDBUtils.flaskDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=database)
  308. db.close()
  309. return jsonify({"status": "ok", "msg":{"timestamp": datetime.datetime.now().isoformat()}}), 200
  310. except Exception as e:
  311. return jsonify({"status": "error", "msg": str(e)}), 500
  312. else:
  313. return jsonify({"status": "error", "msg": "签名验证未通过"}), 401
  314. @app.route("/map/<selectedtime>/<token>")
  315. def index(selectedtime,token):
  316. return render_template("map.html", selectedtime=selectedtime,token=token)
  317. @app.route('/loginTable', methods=['POST']) #签名检测
  318. def loginTable():
  319. data = request.get_json()
  320. signature = request.headers.get('X-Signature')
  321. timestamp = request.headers.get('X-Timestamp')
  322. if verify_request(timestamp,signature,data):
  323. username = data.get('username')
  324. password = data.get('password')
  325. remote_addr = request.remote_addr
  326. res1={"返回值":""}
  327. #t1 = datetime.datetime.now()
  328. loginTabledb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseLoginDB)
  329. #t2 = datetime.datetime.now()
  330. #print(f'登录时间:{t2 - t1}')
  331. res=loginTabledb.queryTabel('logintable', '*', "登录名='{}' and 密码='{}'".format(username,password))
  332. loginTabledb.close()
  333. if res !=[]:
  334. access_token = create_access_token(identity=username)
  335. refresh_token = create_refresh_token(identity=username)
  336. res1["返回值"]=res[0]
  337. return jsonify(data=res1, access_token=access_token, refresh_token=refresh_token), 200
  338. print(datetime.datetime.now(),"[%s]%s尝试登录" %(remote_addr,username))
  339. #t3 = datetime.datetime.now()
  340. #print(f'处理时间:{t3-t2}')
  341. return jsonify(msg=(datetime.datetime.now(),"[%s]%s尝试登录失败" %(remote_addr,username)), data=res1), 401
  342. else:
  343. return jsonify(msg=(datetime.datetime.now(),"签名验证未通过" ), data={"返回值":"fail"}), 401
  344. @app.route('/static/remoteCheck', methods=['POST']) #操作系统版本验证 #签名检测
  345. def remoteCheck():
  346. data = request.get_json()
  347. signature = request.headers.get('X-Signature')
  348. timestamp = request.headers.get('X-Timestamp')
  349. if verify_request(timestamp,signature,data):
  350. checknumber = data.get('checknumber')
  351. if checknumber ==severVersion:
  352. res={"返回值":"ok"}
  353. else:
  354. res={"返回值":severVersion}
  355. res['msg']="check server version"
  356. return jsonify(res)
  357. else:
  358. res = { "返回值" : "签名验证未通过" }
  359. return jsonify(res), 401
  360. @app.route('/static/remoteCheck2', methods=['POST']) #电子白板系统版本验证#签名检测
  361. def remoteCheck2():
  362. data = request.get_json()
  363. signature = request.headers.get('X-Signature')
  364. timestamp = request.headers.get('X-Timestamp')
  365. if verify_request(timestamp,signature,data):
  366. checknumber = data.get('checknumber')
  367. if checknumber ==displayVersion:
  368. res={"返回值": "ok"}
  369. else:
  370. res={"返回值": displayVersion}
  371. res['msg']="check display version"
  372. return jsonify(res)
  373. else:
  374. res = { "返回值" : "签名验证未通过" }
  375. return jsonify(res), 401
  376. @app.route('/bakupdata')#签名检测
  377. def bakupdata():
  378. signature = request.headers.get('X-Signature')
  379. timestamp = request.headers.get('X-Timestamp')
  380. if verify_request(timestamp , signature , {"timestamp": timestamp}) :
  381. remote_addr = request.remote_addr
  382. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  383. Bakupdata(fdb)
  384. fdb.close()
  385. print(datetime.datetime.now(), "[%s]5分钟间隔自动备份"%remote_addr)
  386. return jsonify(status="ok")
  387. else:
  388. return jsonify(status="fail",msg= '签名验证失败'), 401
  389. @app.route('/postgresql')#签名检测
  390. def postgresql():
  391. signature = request.headers.get('X-Signature')
  392. timestamp = request.headers.get('X-Timestamp')
  393. if verify_request(timestamp , signature , {"timestamp": timestamp}) :
  394. try:
  395. if flightDataTransfer == 1:
  396. local = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  397. try:
  398. postgresql_local(local,online_host,online_port,online_user,online_password,databaseDB4)
  399. except:
  400. local.close()
  401. print(datetime.datetime.now(), "[远端链接失败]云端数据库服务器")
  402. return jsonify(status="fail")
  403. local.close()
  404. if displayDataTransfer == 1:
  405. res= DataComputer.mytask()
  406. if res == "ok":
  407. url = "https://"+online_host+":7162/computerDispalydata"
  408. #url = "https://192.168.2.87:5070/computerDispalydata"
  409. try:
  410. ress=requests.get(url, verify=False)
  411. ress.raise_for_status() # 检查HTTP状态码是否为成功
  412. data = ress.json()
  413. #ress=requests.post(url, cert=('D:\\flightinfo\\DATABASE\\sichuanair.com.pem','D:\\flightinfo\\DATABASE\\sichuanair.com.key')).json()
  414. if data == "ok":
  415. #if data.get("result") == "ok":
  416. print(datetime.datetime.now(), "远端显示中心计算请求成功")
  417. else:
  418. print(datetime.datetime.now(), "[返回为fail]远端显示中心计算请求失败")
  419. except Exception as e:
  420. print(e)
  421. print(datetime.datetime.now(), "[请求被拒绝]远端显示中心计算请求失败")
  422. return jsonify(status="ok", msg=("远端显示中心计算请求成功"))
  423. except:
  424. print(traceback.format_exc())
  425. return jsonify(status="fail", msg=("[返回为fail]远端显示中心计算请求失败"))
  426. else:
  427. return jsonify(status="fail",msg= '签名验证失败'), 401
  428. @app.route('/getFlightData2', methods=['POST'])#签名检测
  429. async def getFlightData2():
  430. signature = request.headers.get('X-Signature')
  431. timestamp = request.headers.get('X-Timestamp')
  432. if verify_request(timestamp , signature, {"timestamp": timestamp}):
  433. data = request.get_json()
  434. type = data.get('type')
  435. global singlePeopleNotice,loaclseverip
  436. db = flaskDBUtils.flaskDB(host=dbhost, port=dbport, user=dbuser, password=dbpassword, database=database)
  437. fdb = flightDB(host=dbhost, port=dbport, user=dbuser, password=dbpassword, database=databaseDB4)
  438. onlinefileDB=None
  439. workLoad = flightDB(host=dbhost, port=dbport, user=dbuser, password=dbpassword, database=databaseWorkLoad)
  440. if Online_flight_sts == "1":
  441. onlinefileDB = flightDB(host=online_host, port=dbport, user=dbuser, password=dbpassword, database=databasefileDB)
  442. if (mainseverip and mainseverip == loaclseverip) or mainseverip == "" or (mainseverip and mainseverip != loaclseverip and check_a_availability()):
  443. try:
  444. #print(type)
  445. ts = time.time()
  446. taskname_queue = ["taskflightdata","Thirdtaskflightdata","flightsearch","TaskList","FlightplanInfo","flightsearch_1","TaskList_1"] #FlightplanInfo 飞机排班系统的航班嘻嘻你
  447. taskparama_queue = []
  448. date_time = Judge_bc()["date"]
  449. nowDay = datetime.datetime.now()
  450. nowDayStr = nowDay.strftime("%Y%m%d")
  451. now_130 = (datetime.datetime.now() + datetime.timedelta(minutes=300)).strftime("%Y%m%d")
  452. nowStr = nowDay.strftime("%Y%m%d %H:%M:%S")
  453. print(datetime.datetime.now(), "[判断:%s,当前:%s,+130:%s]" % (date_time, nowDayStr, now_130))
  454. if date_time == nowDayStr and now_130 == nowDayStr: # 当班次判断为09:00-1900时,只查当日 1900取决于300min不取决于班次判断
  455. nowDay_1 =nowDayStr
  456. nowday_11=nowDayStr
  457. searchDay=f"{nowDayStr[:4]}-{nowDayStr[4:6]}-{nowDayStr[6:]}"
  458. start=nowDay.strftime('%Y-%m-%d 00:00:00')
  459. end= nowDay.strftime('%Y-%m-%d 00:00:00')
  460. elif date_time == nowDayStr and now_130 != nowDayStr: # 当班次判断为1900-2400时,今日和明日
  461. nowDay_1 = (datetime.date.today() + datetime.timedelta(days=1)).strftime("%Y%m%d")
  462. nowday_11=nowDayStr
  463. searchDay=f"{nowDayStr[:4]}-{nowDayStr[4:6]}-{nowDayStr[6:]}"
  464. start=nowDay.strftime('%Y-%m-%d 00:00:00')
  465. end= (datetime.date.today() + datetime.timedelta(days=1)).strftime('%Y-%m-%d 00:00:00')
  466. else: #当班次判断为000-0900时,查昨日和今日
  467. nowDay_1 = date_time
  468. nowday_11= nowDayStr
  469. searchDay=f"{date_time[:4]}-{date_time[4:6]}-{date_time[6:]}"
  470. start=f"{date_time[:4]}-{date_time[4:6]}-{date_time[6:]} 00:00:00"
  471. end=nowDay.strftime('%Y-%m-%d 00:00:00')
  472. print('nowDay_1:{},nowday_11:{},searchDay:{}'.format(nowDay_1,nowday_11,searchDay))
  473. if type == "A":
  474. if str(flaskDBUtils.checkLogin(db)) == '1':
  475. token,x_access_token = flaskDBUtils.getToken(db)
  476. #print('db-token:{}'.format(token))
  477. print(datetime.datetime.now(), "A动态获取获取[%s/%s]" % (nowDayStr, nowDay_1))
  478. taskparama_queue.append({'nowDayStr':searchDay, 'token': token})
  479. taskparama_queue.append({'nowDayStr':searchDay, 'token': token})
  480. taskparama_queue.append({'nowDayStr':nowday_11, 'token': token})
  481. taskparama_queue.append({'nowDayStr':nowday_11, 'token': token})
  482. taskparama_queue.append({'nowDayStr':end,'nowDay_1': start, 'token': x_access_token})
  483. taskparama_queue.append({'nowDay_1': nowDay_1, 'token': token})
  484. taskparama_queue.append({'nowDay_1': nowDay_1, 'token': token})
  485. flaskDBUtils.clearinfolog(db)
  486. with concurrent.futures.ThreadPoolExecutor() as executor:
  487. if nowday_11 == nowDay_1: #如果两个日期相同,只查一次避免相同
  488. results = executor.map(task_function, taskname_queue[:5], taskparama_queue[:5])
  489. else:
  490. results = executor.map(task_function, taskname_queue, taskparama_queue)
  491. resultsList = []
  492. for result in results:
  493. resultsList.append(result)
  494. taskflightdata= resultsList[0]
  495. Thirdtaskflightdata= resultsList[1]
  496. flightsearchdata= resultsList[2]
  497. tasklistdata= resultsList[3]
  498. infoFromflightplan= resultsList[4] #飞机排班数据
  499. #print(infoFromflightplan)
  500. if nowday_11 != nowDay_1: ##如果两个日期相同,就没有另外一天的数据
  501. flightsearchdata_1= resultsList[5]
  502. tasklistdata_1= resultsList[6]
  503. if taskflightdata['code'] and taskflightdata['code'] != 200:
  504. flaskDBUtils.logout(db)
  505. flaskDBUtils.insertinfolog(db, nowStr, str(taskflightdata['code']))
  506. InitFlightDatabase(fdb,workLoad, nowDayStr)
  507. InitFlightDatabase(fdb,workLoad, nowDay_1)
  508. sortFlighttime(fdb,workLoad)
  509. sortFlighttime2(fdb,workLoad)
  510. checkTFUairplane(fdb,onlinefileDB)
  511. checkWorkerlaod_new(fdb,workLoad,nowDayStr,nowDay_1)
  512. checkFlightAlert(fdb, singlePeopleNotice)
  513. #dingdingDelete_flight(fdb)
  514. #dingdingFlightsts(fdb)
  515. #dingdinginfoget(fdb)
  516. CalledChecked(fdb)
  517. if Online_flight_sts == "1" and SameDatabase == "0":
  518. res = UpdatePeopleScheduleFromOnline(fdb, onlinefileDB)
  519. if res:
  520. updatetimer()
  521. else:
  522. updatetimer()
  523. print(datetime.datetime.now(), "A静态刷新")
  524. code=str(taskflightdata['code'])
  525. else:
  526. #ts2 = time.time()
  527. InitFlightDatabase(fdb,workLoad, nowDayStr)
  528. InitFlightDatabase(fdb,workLoad, nowDay_1)
  529. insertTaskDataToTable(fdb, nowDayStr, taskflightdata['data'], Thirdtaskflightdata['data'])
  530. FlightSearchInsert(fdb, nowDayStr, flightsearchdata['data'])
  531. TaskListInsert(fdb, nowDayStr, tasklistdata['data'])
  532. if infoFromflightplan['code'] and infoFromflightplan['code'] == 200:
  533. FlightPlanInsert(fdb, nowDayStr, infoFromflightplan['result'])
  534. if nowday_11 != nowDay_1: ##如果两个日期相同,就没有另外一天的数据,无需写入
  535. insertTaskDataToTable(fdb, nowDay_1, taskflightdata['data'], Thirdtaskflightdata['data'])
  536. FlightSearchInsert(fdb, nowDay_1, flightsearchdata_1['data'])
  537. TaskListInsert(fdb, nowDay_1, tasklistdata_1['data'])
  538. if infoFromflightplan['code'] and infoFromflightplan['code'] == 200:
  539. FlightPlanInsert(fdb, nowDay_1, infoFromflightplan['result'])
  540. checkFlightplan(fdb,workLoad)
  541. sortFlighttime(fdb,workLoad)
  542. sortFlighttime2(fdb,workLoad)
  543. checkTFUairplane(fdb,onlinefileDB)
  544. checkWorkerlaod_new(fdb,workLoad,nowDayStr,nowDay_1)
  545. checkFlightAlert(fdb, singlePeopleNotice)
  546. #dingdingDelete_flight(fdb)
  547. #dingdingFlightsts(fdb)
  548. #dingdinginfoget(fdb)
  549. CalledChecked(fdb)
  550. flaskDBUtils.insertinfolog(db,nowStr,str(taskflightdata['code']))
  551. if Online_flight_sts == "1":
  552. if SameDatabase == "0":
  553. UpdatePeopleScheduleFromOnline(fdb , onlinefileDB)
  554. updatetimer()
  555. print(datetime.datetime.now(), "A动态刷新")
  556. #print('数据库耗时:{}'.format(time.time()-ts2))
  557. code = str(taskflightdata['code'])+";刷新用时:"+str(time.time()-ts)
  558. else:
  559. code = '未登录'
  560. else: #type==B
  561. InitFlightDatabase(fdb,workLoad, nowDayStr)
  562. InitFlightDatabase(fdb,workLoad, nowDay_1)
  563. sortFlighttime(fdb,workLoad)
  564. sortFlighttime2(fdb,workLoad)
  565. checkTFUairplane(fdb,onlinefileDB)
  566. checkWorkerlaod_new(fdb,workLoad,nowDayStr,nowDay_1)
  567. checkFlightAlert(fdb, singlePeopleNotice)
  568. #dingdingDelete_flight(fdb)
  569. #dingdingFlightsts(fdb)
  570. #dingdinginfoget(fdb)
  571. CalledChecked(fdb)
  572. if Online_flight_sts == "1" and SameDatabase == "0":
  573. res=UpdatePeopleScheduleFromOnline(fdb, onlinefileDB)
  574. if res:
  575. updatetimer()
  576. else:
  577. updatetimer()
  578. print(datetime.datetime.now(),"B静态刷新")
  579. code = "200"
  580. if mainseverip and mainseverip != loaclseverip and type == "B":
  581. print(datetime.datetime.now(), '[系统警告]主服务器通讯失败,备份服务器工作中')
  582. main_fdb=flightDB(host=maindatabase, port=dbport, user=dbuser, password=dbpassword, database=databaseDB4)
  583. main_db = flaskDBUtils.flaskDB(host=maindatabase, port=dbport, user=dbuser, password=dbpassword, database=database)
  584. main_loginTabledb = flightDB(host=maindatabase, port=dbport, user=dbuser, password=dbpassword, database=databaseLoginDB)
  585. loginTabledb = flightDB(host=dbhost, port=dbport, user=dbuser, password=dbpassword, database=databaseLoginDB)
  586. try:
  587. postgresql_bakup(fdb, main_fdb,1)
  588. postgresql_bakup(db, main_db,3)
  589. postgresql_bakup(loginTabledb, main_loginTabledb,2)
  590. main_fdb.close()
  591. main_db.close()
  592. main_loginTabledb.close()
  593. except Exception as e:
  594. main_fdb.close()
  595. main_db.close()
  596. main_loginTabledb.close()
  597. print(datetime.datetime.now(), '[系统警告]向主数据传输失败')
  598. fdb.close()
  599. workLoad.close()
  600. db.close()
  601. if Online_flight_sts == "1":
  602. onlinefileDB.close()
  603. return jsonify(code=code, msg='正常刷新')
  604. except Exception as e:
  605. fdb.close()
  606. workLoad.close()
  607. db.close()
  608. if Online_flight_sts == "1":
  609. onlinefileDB.close()
  610. app_logger.log_error(e)
  611. return jsonify(code='未登录', msg=str(e))
  612. else:
  613. #需要加入数据库同步
  614. if type == "B":
  615. print(datetime.datetime.now(), '[主从备份]非主服务器,该服务器仅同步')
  616. main_fdb=flightDB(host=maindatabase, port=dbport, user=dbuser, password=dbpassword, database=databaseDB4)
  617. main_db = flaskDBUtils.flaskDB(host=maindatabase, port=dbport, user=dbuser, password=dbpassword, database=database)
  618. main_loginTabledb = flightDB(host=maindatabase, port=dbport, user=dbuser, password=dbpassword, database=databaseLoginDB)
  619. loginTabledb = flightDB(host=dbhost, port=dbport, user=dbuser, password=dbpassword, database=databaseLoginDB)
  620. try:
  621. postgresql_bakup(main_fdb,fdb,1)
  622. postgresql_bakup(main_db, db, 3)
  623. postgresql_bakup(main_loginTabledb, loginTabledb, 2)
  624. db.close()
  625. fdb.close()
  626. workLoad.close()
  627. main_fdb.close()
  628. main_db.close()
  629. main_loginTabledb.close()
  630. return '200'
  631. except Exception as e:
  632. print(e)
  633. db.close()
  634. fdb.close()
  635. workLoad.close()
  636. main_fdb.close()
  637. main_db.close()
  638. main_loginTabledb.close()
  639. print(datetime.datetime.now(), '[系统警告]从主数据备份失败')
  640. return '200'
  641. else:
  642. return "200"
  643. else:
  644. return jsonify(code='未登录',msg= '签名验证失败'), 401
  645. @app.route('/static/linktest')#签名检测
  646. def linktest():
  647. signature = request.headers.get('X-Signature')
  648. timestamp = request.headers.get('X-Timestamp')
  649. if verify_request(timestamp , signature , { "timestamp": timestamp}) :
  650. return jsonify(status="ok", msg="linktest")
  651. else:
  652. return jsonify(status="fail",msg= '签名验证失败'), 401
  653. @app.route('/checkLogin')#签名检测
  654. def checkLogin():
  655. signature = request.headers.get('X-Signature')
  656. timestamp = request.headers.get('X-Timestamp')
  657. if verify_request(timestamp , signature , { "timestamp": timestamp}) :
  658. sts= False
  659. db = flaskDBUtils.flaskDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=database)
  660. cookie,x_access_token = flaskDBUtils.getToken(db)
  661. if str(flaskDBUtils.checkLogin(db)) == '1':
  662. logincode = fl.checkCookieSts(cookie)
  663. if logincode and logincode != 200:
  664. sts= False
  665. flaskDBUtils.logout(db)
  666. time.sleep(0.1)
  667. elif logincode and logincode == 200:
  668. sts= True
  669. if str(flaskDBUtils.checkLoginflightplan(db)) == '1':
  670. flightplanlogincode = fl.checkCookieStsFLIGHTplan(x_access_token)
  671. if flightplanlogincode and flightplanlogincode != 200:
  672. sts= False
  673. flaskDBUtils.logoutflightplan(db)
  674. time.sleep(0.1)
  675. elif flightplanlogincode and flightplanlogincode == 200:
  676. sts= True
  677. #db.close()
  678. if sts:
  679. return jsonify(code="1", msg="登录正常")
  680. else:
  681. return jsonify(code="0", msg="登录超时")
  682. else:
  683. return jsonify(code="0",msg= '签名验证失败'), 401
  684. @app.route('/table')#签名检测
  685. def table():
  686. signature = request.headers.get('X-Signature')
  687. timestamp = request.headers.get('X-Timestamp')
  688. if verify_request(timestamp , signature , { "timestamp": timestamp}) :
  689. flaskDB = flaskDBUtils.flaskDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=database)
  690. result = flaskDBUtils.getinfolog(flaskDB)
  691. flaskDB.close()
  692. dl = []
  693. if result !=None:
  694. for i in result:
  695. dl.append([i[0], i[1], i[2]])
  696. data = {
  697. "data":dl,
  698. 'msg':"get table data"
  699. }
  700. #print(data)
  701. #print('get table data')
  702. return jsonify(data)
  703. else:
  704. return jsonify({"data":[],'msg':"无数据"})
  705. else:
  706. return jsonify({"data":[],'msg':"签名验证失败"}), 401
  707. #------------------------------------------------------------------------------------------------
  708. #受保护的路由
  709. @app.route("/map/getSelectInf", methods=['POST'])
  710. @jwt_required()
  711. def getSelectInf():
  712. data = request.get_json()
  713. selectedtime=data["selectedtime"]
  714. bay = data["bay"]
  715. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  716. res = MapDispaly(fdb, selectedtime)
  717. try:
  718. data = res[bay]
  719. fdb.close()
  720. return render_template('notuse/table.html' , data=data)
  721. except Exception:
  722. fdb.close()
  723. return render_template('notuse/table.html' , data={})
  724. @app.route('/changeSinglepoepleNotice', methods=['POST'])
  725. @jwt_required()
  726. def changeSinglepoepleNotice():
  727. global singlePeopleNotice
  728. data = request.get_json()
  729. boolsts = data.get('boolsts')
  730. singlePeopleNotice = str(boolsts) == "1"
  731. write_status_to_file(singlePeopleNotice,'D:\\flightinfo\\DATABASE\\singlepoeple_notice.txt')
  732. return jsonify({"status": "success", "new_value": singlePeopleNotice, "msg":"changeSinglepoepleNotice"})
  733. @app.route('/getSinglepoepleNotice')
  734. @jwt_required()
  735. def getSinglepoepleNotice():
  736. global singlePeopleNotice
  737. return jsonify({"singlepoepleNotice": singlePeopleNotice, "msg":"getSinglepoepleNotice"})
  738. @app.route('/protected', methods=['GET'])
  739. @jwt_required()
  740. def protected():
  741. current_user_id = get_jwt_identity()
  742. return jsonify({'msg': f'Hello user {current_user_id}'}), 200
  743. @app.route('/findserver')
  744. def findserver():
  745. return jsonify(msg=ServerClas)
  746. @app.route('/static/remoteCookielogin',methods=["POST"])
  747. @jwt_required()
  748. def remoteCookielogin():
  749. remote_addr = request.remote_addr
  750. data = request.get_json()
  751. username = data.get('username')
  752. cookie = data.get('cookie')
  753. cookie2 = data.get('cookie2')
  754. db = flaskDBUtils.flaskDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=database)
  755. user = username
  756. token = "{}".format(cookie)
  757. token2 = "{}".format(cookie2)
  758. flaskDBUtils.login(db, user, token, token2)
  759. db.close()
  760. if token != None:
  761. print(datetime.datetime.now(),"[%s]远程登录已获取Token"%remote_addr)
  762. return jsonify(msg=(datetime.datetime.now(),"[%s]远程登录已获取Token"%remote_addr), status = "ok")
  763. else:
  764. return jsonify(status="fail", msg=(datetime.datetime.now(),"[%s]远程登录获取Token失败!"%remote_addr))
  765. @app.route('/static/remotelogin',methods=["POST"])
  766. @jwt_required()
  767. def remotelogin():
  768. remote_addr = request.remote_addr
  769. data = request.get_json()
  770. username = data.get('username')
  771. password = data.get('password')
  772. db = flaskDBUtils.flaskDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=database)
  773. user = username
  774. pwd =password
  775. #print(user, pwd)
  776. token,x_access_token = fl.start(user, pwd)
  777. flaskDBUtils.login(db, user, token,x_access_token)
  778. if token != None:
  779. print(datetime.datetime.now(),"[%s]远程登录已获取Token"%remote_addr)
  780. return jsonify(msg=(datetime.datetime.now(),"[%s]远程登录已获取Token"%remote_addr), status = "ok")
  781. else:
  782. return jsonify(status="fail", msg=(datetime.datetime.now(),"[%s]远程登录获取Token失败!"%remote_addr))
  783. @app.route('/static/remotelogout')
  784. @jwt_required()
  785. def remotelogout():
  786. remote_addr = request.remote_addr
  787. db = flaskDBUtils.flaskDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=database)
  788. flaskDBUtils.logout(db)
  789. db.close()
  790. print(datetime.datetime.now(), "[%s]远程注销服务器AMRO账号"%remote_addr)
  791. return jsonify(stauts="ok", msg=("[%s]远程注销服务器AMRO账号"%remote_addr))
  792. @app.route('/static/checkjobcard', methods=['GET', 'POST'])
  793. @jwt_required()
  794. def checkjobcard():
  795. remote_addr = request.remote_addr
  796. if request.method == 'GET':
  797. file_path = request.args.get('path')
  798. else:
  799. file_path = request.form.get('path')
  800. try:
  801. res= fl.request_jobcard("_udid=80c6089a041646db9c1d9f1a2bc1381a", file_path)
  802. print(datetime.datetime.now(), "[%s]调取电签工卡查询" % remote_addr)
  803. except Exception as e:
  804. app_logger.log_error(e)
  805. res = ""
  806. return jsonify(msg=res)
  807. @app.route('/static/VinCheck', methods=['POST'])
  808. @jwt_required()
  809. def VinCheck():
  810. data = request.get_json()
  811. vinLcoal = data.get('vinLcoal')
  812. mode = data.get('mode')
  813. num = data.get('num')
  814. if int(num) !=4:
  815. db = flaskDBUtils.flaskDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=database)
  816. vinOnline = flaskDBUtils.getVin(db,mode,int(num))
  817. db.close()
  818. if vinLcoal == vinOnline:
  819. a = "检验一致"
  820. res = {"返回值":"ok"}
  821. else:
  822. a = "服务器有更新"
  823. res = {"返回值": "update"}
  824. else:
  825. a = "非昨天、今天、明天无需获取"
  826. res = {"返回值": "ok"}
  827. remote_addr = request.remote_addr
  828. res['msg'] = ("[%s]刷新识别码监测:%s" % (remote_addr,a))
  829. print(datetime.datetime.now(), "[%s]刷新识别码监测:%s" % (remote_addr,a))
  830. return jsonify(res)
  831. @app.route('/static/setIpPhone', methods=['POST'])
  832. @jwt_required()
  833. def setIpPhone():
  834. data = request.get_json()
  835. ip = data.get('ip')
  836. remote_addr = request.remote_addr
  837. db = flaskDBUtils.flaskDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=database)
  838. token=si.start(ip)
  839. if token != "fail":
  840. res={"返回值":"ok"}
  841. flaskDBUtils.setIpPhone(db, ip, token)
  842. print(datetime.datetime.now(), "[%s]自动网页电话登录成功[%s,%s]" % (remote_addr,ip, token))
  843. res['msg'] = ("[%s]自动网页电话登录成功[%s,%s]" % (remote_addr,ip, token))
  844. else:
  845. res={"返回值":"fail"}
  846. flaskDBUtils.setIpPhone(db, ip, None)
  847. print(datetime.datetime.now(), "[%s]自动网页电话登录失败[%s]" % (remote_addr,ip))
  848. res['msg']=("[%s]自动网页电话登录失败[%s]" % (remote_addr,ip))
  849. db.close()
  850. return jsonify(res)
  851. @app.route('/static/maintainAuthCheck', methods=['POST'])
  852. @jwt_required()
  853. def maintainAuthCheck():
  854. data = request.get_json()
  855. name = data.get('name')
  856. flighttype = data.get('flighttype')
  857. remote_addr = request.remote_addr
  858. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  859. res=MaintainAuthCheck(fdb,name,flighttype)
  860. fdb.close()
  861. print(datetime.datetime.now(), "[%s]维修权限验证"%remote_addr)
  862. res['msg'] = ("[%s]维修权限验证"%remote_addr)
  863. return jsonify(res)
  864. @app.route('/static/getPglist', methods=['POST'])
  865. @jwt_required()
  866. def getPglist():
  867. data = request.get_json()
  868. bcstr = data.get('bcstr')
  869. try:
  870. remote_addr = request.remote_addr
  871. #print('获取派工数据')
  872. bc=bcstr
  873. #bc = "B" #需要获取
  874. db = flaskDBUtils.flaskDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=database)
  875. token,x_access_token = flaskDBUtils.getToken(db)
  876. db.close()
  877. #token = utils.flight_list.get_cookie()
  878. nowDay = datetime.datetime.now()
  879. nowDayStr = nowDay.strftime("%Y%m%d")
  880. nowDayStr2 = nowDay.strftime("%Y-%m-%d")
  881. # (self, taskid:str, shiftDate:str, shift:str, cookie):
  882. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  883. taskids=fdb.queryTabel("TaskFlightinfo{}".format(nowDayStr),"航班编号","进出港航班号 like '%3U%'")
  884. if taskids[0][0] != "":
  885. Pglistdata=fl.request_LM_TSK_EMP_PGLIST(taskids[0][0],nowDayStr2,bc,token)
  886. Update_Pglist(fdb,nowDayStr,bc,Pglistdata['data'])
  887. fdb.close()
  888. print(datetime.datetime.now(),"[%s]获取派工人员清单请求"%remote_addr)
  889. return jsonify(code=Pglistdata['code'], msg=(datetime.datetime.now(),"[%s]获取派工人员清单请求"%remote_addr))
  890. else:
  891. return jsonify(code='404', msg="获取派工失败"), 404
  892. except Exception as e:
  893. app_logger.log_error("获取派工失败")
  894. app_logger.log_error(e)
  895. return jsonify(code='404', msg="获取派工失败"), 500
  896. @app.route('/static/getPglistInDatabase')
  897. @jwt_required()
  898. def getPglistInDatabase():
  899. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  900. try:
  901. res = Judge_bc()
  902. ress = GetPglistInDatabase(fdb,res)
  903. fdb.close()
  904. return jsonify({"返回值":ress, "msg":"get PglistInDatabase success"})
  905. except Exception as e:
  906. fdb.close()
  907. app_logger.log_error(e)
  908. return jsonify({"返回值":[], "msg":"get PglistInDatabase fail"})
  909. @app.route('/static/getworkload',methods=["POST"])
  910. @jwt_required()
  911. def getworkload():
  912. data = request.get_json()
  913. names = data.get('names')
  914. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  915. workLoad = flightDB(host=dbhost, port=dbport, user=dbuser, password=dbpassword, database=databaseWorkLoad)
  916. try:
  917. res=Getworkload(fdb,workLoad,names)
  918. return jsonify(data=res, msg="get workload success")
  919. except Exception as e:
  920. fdb.close()
  921. workLoad.close()
  922. app_logger.log_error(e)
  923. return jsonify(data={}, msg="get workload fail")
  924. @app.route('/static/manchangecosttime',methods=["POST"])
  925. @jwt_required()
  926. def manchangecosttime():
  927. remote_addr = request.remote_addr
  928. data = request.get_json()["data"]
  929. workLoad = flightDB(host=dbhost, port=dbport, user=dbuser, password=dbpassword, database=databaseWorkLoad)
  930. res=ManCahangeWorkload(workLoad,data)
  931. workLoad.close()
  932. return jsonify({"返回值":res, "msg":"manchangecosttime workload success"})
  933. @app.route('/static/handoverflight',methods=["POST"])
  934. @jwt_required()
  935. def handoverflight():
  936. remote_addr = request.remote_addr
  937. data = request.get_json()["data"]
  938. workLoad = flightDB(host=dbhost, port=dbport, user=dbuser, password=dbpassword, database=databaseWorkLoad)
  939. res=HandoverStsChange(workLoad,data)
  940. workLoad.close()
  941. return jsonify({"返回值":res, "msg":"handoverflight workload success"})
  942. @app.route('/static/handoverflightAMRO',methods=["POST"])
  943. @jwt_required()
  944. def handoverflightAMRO():
  945. remote_addr = request.remote_addr
  946. data = request.get_json()["data"]
  947. db = flaskDBUtils.flaskDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=database)
  948. token,x_access_token = flaskDBUtils.getToken(db)
  949. #token = utils.flight_list.get_cookie()
  950. Pglistdata=fl.request_LM_TSK_HANDOVER(data,token)
  951. if Pglistdata['code'] == 200:
  952. res = {"返回值": "ok"}
  953. else:
  954. res = {"返回值": "fail"}
  955. print(datetime.datetime.now(),"[%s]使用AMRO工作交接功能"%remote_addr)
  956. res['msg'] = (datetime.datetime.now(),"[%s]使用AMRO工作交接功能"%remote_addr)
  957. return jsonify(res)
  958. @app.route('/static/MM_GJJH_LIST', methods=["POST"])
  959. @jwt_required()
  960. def MM_GJJH_LIST():
  961. remote_addr = request.remote_addr
  962. data = request.get_json()
  963. team = data.get('team')
  964. db = flaskDBUtils.flaskDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=database)
  965. token,x_access_token = flaskDBUtils.getToken(db)
  966. db.close()
  967. Pglistdata=fl.request_MM_GJJH_LIST(token)
  968. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  969. mM_GJJH_LIST(fdb,team,Pglistdata['data'])
  970. fdb.close()
  971. print(datetime.datetime.now(),"[%s]%s工具接还查询"%(remote_addr,team))
  972. return jsonify(code=str(Pglistdata['code']), msg=(datetime.datetime.now(),"[%s]%s工具接还查询"%(remote_addr,team)))
  973. @app.route('/static/checkWorkjob', methods=["POST"])
  974. @jwt_required()
  975. def checkWorkjob():
  976. remote_addr = request.remote_addr
  977. data = request.get_json()
  978. taskid = data.get('taskid')
  979. res = {"返回值": "fail"}
  980. db = flaskDBUtils.flaskDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=database)
  981. token,x_access_token = flaskDBUtils.getToken(db)
  982. db.close()
  983. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  984. getinfos=GetWorkjobInfo(fdb,taskid)
  985. if getinfos !={}:
  986. getworkjob = fl.checkWorkjob(getinfos["taskids"], getinfos["acno"], getinfos["taskType"], getinfos["actype"], getinfos["startDate"], getinfos["endDate"], token)
  987. res=InsertWorkjob(fdb,getworkjob["data"],taskid)
  988. print(datetime.datetime.now(), "[%s]获取%s工作包请求"%(remote_addr,getinfos["acno"]))
  989. fdb.close()
  990. res['msg'] = ("[%s]获取%s工作包请求"%(remote_addr,getinfos["acno"]))
  991. return jsonify(res)
  992. @app.route('/static/mandealAllLogs', methods=["POST"])
  993. @jwt_required()
  994. def mandealAllLogs():
  995. remote_addr = request.remote_addr
  996. data = request.get_json()
  997. mode = data.get('mode')
  998. user = data.get('user')
  999. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  1000. MandealAllLogs(fdb, user,mode)
  1001. fdb.close()
  1002. print(datetime.datetime.now(),"[%s]%s人工处理所有待办"%(remote_addr,user))
  1003. return jsonify(status="ok", msg=(datetime.datetime.now(),"[%s]%s人工处理所有待办"%(remote_addr,user)))
  1004. @app.route('/static/calltry')
  1005. @jwt_required()
  1006. def calltry():
  1007. remote_addr = request.remote_addr
  1008. db = flaskDBUtils.flaskDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=database)
  1009. phoneip=flaskDBUtils.getIpPhoneip(db)
  1010. db.close()
  1011. ip=phoneip["ip"]
  1012. token = phoneip["token"]
  1013. db.close()
  1014. #print("客户端点击尝试拨打请求获取的IP:%s"%phoneip)
  1015. if ip !="" and token!="":
  1016. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  1017. A=Calltry(fdb, ip,token)
  1018. fdb.close()
  1019. if A != "fail":
  1020. res = {"返回值": "ok"}
  1021. print(datetime.datetime.now(),"[%s]尝试自动拨打请求%s"%(remote_addr,A))
  1022. res['msg'] = (datetime.datetime.now(),"[%s]尝试自动拨打请求%s"%(remote_addr,A))
  1023. else:
  1024. res = { "返回值" : "fail" , "msg":"auto call fail"}
  1025. else:
  1026. res = {"返回值": "fail", "msg":"auto call fail"}
  1027. return jsonify(res)
  1028. @app.route('/static/manAddFlight', methods=["POST"])
  1029. @jwt_required()
  1030. def manAddFlight():
  1031. data = request.get_json()
  1032. flighttype = data.get('flighttype')
  1033. acno = data.get('acno')
  1034. eng = data.get('eng')
  1035. actype = data.get('actype')
  1036. flightno = data.get('flightno')
  1037. flightdate = data.get('flightdate')
  1038. bay = data.get('bay')
  1039. eta = data.get('eta')
  1040. etd = data.get('etd')
  1041. user = data.get('user')
  1042. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  1043. res=ManAddFlight(fdb,flighttype,acno,eng,actype,flightno,flightdate,bay,eta,etd,user)
  1044. print(datetime.datetime.now(),"%s人工添加航班%s"%(user,flightno))
  1045. fdb.close()
  1046. res['msg'] = (datetime.datetime.now(),"%s人工添加航班%s"%(user,flightno))
  1047. return jsonify(res)
  1048. @app.route('/static/getphonelist')
  1049. @jwt_required()
  1050. def getphonelist():
  1051. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  1052. res=Getphonelist(fdb)
  1053. remote_addr = request.remote_addr
  1054. fdb.close()
  1055. print(datetime.datetime.now(),"[%s]客户端获取通讯录名单"%remote_addr)
  1056. return jsonify(data=res, msg=(datetime.datetime.now(),"[%s]客户端获取通讯录名单"%remote_addr))
  1057. @app.route('/static/deleteFlight', methods=['POST'])
  1058. @jwt_required()
  1059. def deleteFlight():
  1060. remote_addr = request.remote_addr
  1061. data = request.get_json()
  1062. flightid = data.get('flightid')
  1063. user = data.get('user')
  1064. time = data.get('time')
  1065. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  1066. res=DeleteFlight(fdb,flightid,time)
  1067. fdb.close()
  1068. print(datetime.datetime.now(),"[%s]%s删除航班操作(%s)"%(remote_addr,user,flightid))
  1069. res['msg'] = (datetime.datetime.now(),"[%s]%s删除航班操作(%s)"%(remote_addr,user,flightid))
  1070. return jsonify(res)
  1071. @app.route('/static/called/')
  1072. @jwt_required()
  1073. def calledChecked():
  1074. remote_addr = request.remote_addr
  1075. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  1076. CalledChecked(fdb)
  1077. fdb.close()
  1078. res = {"返回值": "ok"}
  1079. print(datetime.datetime.now(),"[%s]通话建立情况检查请求"%remote_addr)
  1080. res['msg']=(datetime.datetime.now(),"[%s]通话建立情况检查请求"%remote_addr)
  1081. return res
  1082. @app.route('/static/dingdong',methods=["POST"])
  1083. @jwt_required()
  1084. def dingdong():
  1085. remote_addr = request.remote_addr
  1086. data = request.get_json()["data"]
  1087. db = flaskDBUtils.flaskDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=database)
  1088. token,x_access_token =flaskDBUtils.getToken(db)
  1089. db.close()
  1090. LM_TSK_DINGDONG=fl.request_LM_TSK_DINGDONG(data,token)
  1091. #print(data)
  1092. if LM_TSK_DINGDONG['code'] and LM_TSK_DINGDONG['code'] == 200:
  1093. res = {"返回值": "ok", "msg": (datetime.datetime.now(),"[%s]使用叮咚消息success"%remote_addr)}
  1094. else:
  1095. res = {"返回值": "fail", "msg": (datetime.datetime.now(),"[%s]使用叮咚消息fail"%remote_addr)}
  1096. print(datetime.datetime.now(),"[%s]使用叮咚消息"%remote_addr)
  1097. return jsonify(res)
  1098. @app.route('/static/LM_TSK_SURE_PG',methods=["POST"])
  1099. @jwt_required()
  1100. def LM_TSK_SURE_PG():
  1101. remote_addr = request.remote_addr
  1102. data = request.get_json()["data"]
  1103. db = flaskDBUtils.flaskDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=database)
  1104. token,x_access_token = flaskDBUtils.getToken(db)
  1105. db.close()
  1106. LM_TSK_SURE_PG=fl.request_LM_TSK_SURE_PG(data,token)
  1107. #print(data)
  1108. if LM_TSK_SURE_PG['code'] and LM_TSK_SURE_PG['code'] == 200:
  1109. res = {"返回值": "ok", "msg":(datetime.datetime.now(),"[%s]使用派工success"%remote_addr)}
  1110. else:
  1111. res = {"返回值": "fail", "msg":(datetime.datetime.now(),"[%s]使用派工fail"%remote_addr)}
  1112. print(datetime.datetime.now(),"[%s]使用派工"%remote_addr)
  1113. return jsonify(res)
  1114. @app.route('/static/insertCalllist',methods=["POST"])
  1115. @jwt_required()
  1116. def insertCalllist():
  1117. remote_addr = request.remote_addr
  1118. data = request.get_json()["data"]
  1119. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  1120. res=InsertCalllist(fdb, data)
  1121. fdb.close()
  1122. print(datetime.datetime.now(),"[%s]录入拨号数据库"%remote_addr)
  1123. #print(datetime.datetime.now(),data)
  1124. res['msg']=(datetime.datetime.now(),"[%s]录入拨号数据库"%remote_addr)
  1125. return jsonify(res)
  1126. @app.route('/static/get_empNos_phoone', methods=['POST'])
  1127. @jwt_required()
  1128. def get_empNos_phoone():
  1129. remote_addr = request.remote_addr
  1130. data = request.get_json()
  1131. name = data.get("name")
  1132. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  1133. res=Get_empNos_phoone(fdb, name)
  1134. fdb.close()
  1135. print(datetime.datetime.now(),"[%s]获取员工号和电话号码"%remote_addr)
  1136. #print(datetime.datetime.now(),data)
  1137. return res
  1138. @app.route('/static/get_empNos',methods=["POST"])
  1139. @jwt_required()
  1140. def get_empNos():
  1141. remote_addr = request.remote_addr
  1142. data = request.get_json()["data"]
  1143. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  1144. res=Get_empNos(fdb, data)
  1145. fdb.close()
  1146. print(datetime.datetime.now(),"[%s]获取员工号"%remote_addr)
  1147. #print(datetime.datetime.now(),data)
  1148. res['msg'] = (datetime.datetime.now(),"[%s]获取员工号"%remote_addr)
  1149. return res
  1150. @app.route('/static/updatecheck')
  1151. @jwt_required()
  1152. def updatecheck():
  1153. try:
  1154. remote_addr = request.remote_addr
  1155. flaskDB =flaskDBUtils.flaskDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=database)
  1156. updatests=flaskDBUtils.updatecheck(flaskDB)
  1157. res = {"返回值":updatests}
  1158. flaskDB.close()
  1159. #print(res)
  1160. print(datetime.datetime.now(),"[%s]客户端自动检查更新请求"%remote_addr)
  1161. res['msg'] = (datetime.datetime.now(),"[%s]客户端自动检查更新请求"%remote_addr)
  1162. return jsonify(res)
  1163. except:
  1164. return jsonify({"返回值": "0", 'msg':(datetime.datetime.now(),"[%s]客户端自动检查更新请求fail"%remote_addr)})
  1165. @app.route('/static/calling', methods=['POST']) #呼出通话建立
  1166. @jwt_required()
  1167. def calling():
  1168. remote_addr = request.remote_addr
  1169. data = request.get_json()
  1170. phonenum0 = data.get("phonenum0")
  1171. #print(phonenum0)
  1172. flaskDB = flaskDBUtils.flaskDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=database)
  1173. now=datetime.datetime.now()
  1174. a=flaskDBUtils.callingphoneUpdate(flaskDB,phonenum0,now)
  1175. res = {"返回值":"ok"}
  1176. flaskDB.close()
  1177. #print(res)
  1178. print(datetime.datetime.now(),"[%s]%s自动电话通话正在呼出"%(remote_addr,phonenum0))
  1179. res['msg'] = (datetime.datetime.now(),"[%s]%s自动电话通话正在呼出"%(remote_addr,phonenum0))
  1180. return jsonify(res)
  1181. @app.route('/static/calldown') #通话结束
  1182. @jwt_required()
  1183. def calldown():
  1184. remote_addr = request.remote_addr
  1185. flaskDB = flaskDBUtils.flaskDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=database)
  1186. now=datetime.datetime.now()
  1187. a=flaskDBUtils.callingphoneUpdate(flaskDB,None,now)
  1188. res = {"返回值":"ok"}
  1189. flaskDB.close()
  1190. #print(res)
  1191. print(datetime.datetime.now(),"[%s]自动电话缓存恢复初始值"%remote_addr)
  1192. res['msg'] =(datetime.datetime.now(),"[%s]自动电话缓存恢复初始值"%remote_addr)
  1193. return jsonify(res)
  1194. @app.route('/static/callon') #呼出通话建立
  1195. @jwt_required()
  1196. def callon():
  1197. remote_addr = request.remote_addr
  1198. flaskDB = flaskDBUtils.flaskDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=database)
  1199. phonenum=flaskDBUtils.getPhoneNum(flaskDB)
  1200. flaskDB.close()
  1201. if phonenum != None:
  1202. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  1203. Callon(fdb,phonenum)
  1204. fdb.close()
  1205. #print(res)
  1206. print(datetime.datetime.now(),"[%s]%s自动电话通话建立写入"%(remote_addr,phonenum))
  1207. return jsonify({"返回值": "ok", "msg":(datetime.datetime.now(),"[%s]%s自动电话通话建立写入"%(remote_addr,phonenum))})
  1208. res = {"返回值": "ok", "msg":"phonenum=None"}
  1209. return jsonify(res)
  1210. @app.route('/static/initFlightDatabase', methods=["POST"])
  1211. @jwt_required()
  1212. def initFlightDatabase():
  1213. data = request.get_json()
  1214. selectedtime = data.get("selectedtime")
  1215. remote_addr = request.remote_addr
  1216. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  1217. workLoad = flightDB(host=dbhost, port=dbport, user=dbuser, password=dbpassword, database=databaseWorkLoad)
  1218. InitFlightDatabase(fdb,workLoad,selectedtime)
  1219. fdb.close()
  1220. workLoad.close()
  1221. res = {"返回值": "ok"}
  1222. print(datetime.datetime.now(),"[%s]初始化航班信息数据库"%remote_addr)
  1223. res['msg'] = (datetime.datetime.now(),"[%s]初始化航班信息数据库"%remote_addr)
  1224. return jsonify(res)
  1225. @app.route('/static/selftaxiLogs', methods=["POST"])
  1226. @jwt_required()
  1227. def selftaxiLogs():
  1228. data = request.get_json()
  1229. text = data.get("text")
  1230. flightid = data.get("flightid")
  1231. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  1232. SelftaxiLogs(fdb,text,flightid)
  1233. fdb.close()
  1234. res = {"返回值": "ok"}
  1235. res['msg'] = "selftaxiLogs"
  1236. return jsonify(res)
  1237. @app.route('/static/checkCalllist', methods=["POST"])
  1238. @jwt_required()
  1239. def checkCalllist():
  1240. data = request.get_json()
  1241. time = data.get("time")
  1242. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  1243. res=CheckCalllist(fdb,time)
  1244. fdb.close()
  1245. return jsonify(data=res, msg="checkCalllist")
  1246. @app.route('/static/insertLogs', methods=["POST"])
  1247. @jwt_required()
  1248. def insertLogs():
  1249. data = request.get_json()
  1250. time = data.get("time")
  1251. text = data.get("text")
  1252. name = data.get("name")
  1253. remote_addr = request.remote_addr
  1254. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  1255. InsertLogs(fdb,text,name,time)
  1256. fdb.close()
  1257. res = {"返回值": "ok"}
  1258. print(datetime.datetime.now(),"[%s]%s插入日志信息"%(remote_addr,name))
  1259. res['msg'] = (datetime.datetime.now(),"[%s]%s插入日志信息"%(remote_addr,name))
  1260. return jsonify(res)
  1261. @app.route('/static/insertLogs2', methods=["POST"])
  1262. @jwt_required()
  1263. def insertLogs2():
  1264. data = request.get_json()
  1265. time = data.get("time")
  1266. name = data.get("name")
  1267. text = data.get("text")
  1268. remote_addr = request.remote_addr
  1269. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  1270. InsertLogs2(fdb,text,name,time)
  1271. fdb.close()
  1272. res = {"返回值": "ok"}
  1273. print(datetime.datetime.now(),"[%s]%s插入日志信息"%(remote_addr,name))
  1274. res['msg'] = (datetime.datetime.now(),"[%s]%s插入日志信息"%(remote_addr,name))
  1275. return jsonify(res)
  1276. @app.route('/static/checkLoadSingal', methods=["POST"])
  1277. @jwt_required()
  1278. def checkLoadSingal():
  1279. data = request.get_json()
  1280. time1 = data.get("time1")
  1281. time2 = data.get("time2")
  1282. worknum = data.get("worknum")
  1283. remote_addr = request.remote_addr
  1284. wdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseWorkLoad)
  1285. res=CheckLoadSingal(wdb,worknum,time1,time2)
  1286. wdb.close()
  1287. print(datetime.datetime.now(),"[%s]查询个人工作量请求"%remote_addr)
  1288. res['msg'] = (datetime.datetime.now(),"[%s]查询个人工作量请求"%remote_addr)
  1289. return jsonify(res)
  1290. @app.route('/static/authorityCheck', methods=["POST"])
  1291. @jwt_required()
  1292. def authorityCheck():
  1293. remote_addr = request.remote_addr
  1294. data = request.get_json()
  1295. username = data.get("username")
  1296. res1={"返回值":""}
  1297. loginTabledb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseLoginDB)
  1298. res=loginTabledb.queryTabel('logintable', '*', "登录名='{}'".format(username))
  1299. loginTabledb.close()
  1300. if res !=[]:
  1301. res1["返回值"]=res[0]
  1302. print(datetime.datetime.now(),"[%s]%s验证权限请求" %(remote_addr,username))
  1303. res1['msg']=(datetime.datetime.now(),"[%s]%s验证权限请求" %(remote_addr,username))
  1304. return jsonify(res1)
  1305. @app.route('/static/loginDbget', methods=["POST"])
  1306. @jwt_required()
  1307. def loginDbget():
  1308. data = request.get_json()
  1309. username = data.get("username")
  1310. remote_addr = request.remote_addr
  1311. res1= {}
  1312. loginTabledb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseLoginDB)
  1313. res=loginTabledb.getAlldata('logintable')
  1314. loginTabledb.close()
  1315. if res !=[] and username in str(res):
  1316. for i in res:
  1317. res2={}
  1318. res2["登录名"] = i[1]
  1319. res2["权限"] = i[3]
  1320. res2["使用人"] = i[4]
  1321. res1[i[1]] = res2
  1322. print(datetime.datetime.now(),"[%s]%s权限修改信息获取" % (remote_addr,username))
  1323. return jsonify(data=res1, msg=(datetime.datetime.now(),"[%s]%s权限修改信息获取" % (remote_addr,username)))
  1324. @app.route('/static/changePassword',methods=["POST"])
  1325. @jwt_required()
  1326. def changePassword():
  1327. remote_addr = request.remote_addr
  1328. data = request.get_json()["data"]
  1329. loginTabledb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseLoginDB)
  1330. Changepassword(loginTabledb,data["登录名"], data["旧密码"], data["新密码"])
  1331. loginTabledb.close()
  1332. res1 = {"返回值": "ok"}
  1333. print(datetime.datetime.now(),"[%s]%s更改密码请求" % (remote_addr,data["登录名"]))
  1334. res1['msg'] = (datetime.datetime.now(),"[%s]%s更改密码请求" % (remote_addr,data["登录名"]))
  1335. return jsonify(res1)
  1336. @app.route('/static/addUserWidget',methods=["POST"])
  1337. @jwt_required()
  1338. def addUserWidget():
  1339. remote_addr = request.remote_addr
  1340. res1={"返回值":""}
  1341. data = request.get_json()["data"]
  1342. loginTabledb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseLoginDB)
  1343. res=loginTabledb.queryTabel('logintable', '*', "登录名='%s'"%data["登录名"])
  1344. if res:
  1345. res=loginTabledb.insertData('logintable', data)
  1346. if res == "ok":
  1347. res1["返回值"] = "1"
  1348. else:
  1349. res1["返回值"] = "0"
  1350. else:
  1351. res1["返回值"] = "2"
  1352. loginTabledb.close()
  1353. print(datetime.datetime.now(),"[%s]创建新用户:%s请求" % (remote_addr,data["登录名"]))
  1354. res1['msg'] = (datetime.datetime.now(),"[%s]创建新用户:%s请求" % (remote_addr,data["登录名"]))
  1355. return jsonify(res1)
  1356. @app.route('/static/changeAuth',methods=["POST"])
  1357. @jwt_required()
  1358. def changeAuth():
  1359. remote_addr = request.remote_addr
  1360. res1={"返回值":""}
  1361. data = request.get_json()["data"]
  1362. loginTabledb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseLoginDB)
  1363. res=loginTabledb.queryTabel('logintable', '*', "登录名='%s'"%str(data["登录名"]).replace("'",""))
  1364. if res != []:
  1365. loginTabledb.upDateItem('logintable',data,"登录名='%s'"%str(data["登录名"]).replace("'",""))
  1366. res1["返回值"]="1"
  1367. else:
  1368. res1["返回值"] = "2"
  1369. loginTabledb.close()
  1370. print(datetime.datetime.now(),"[%s]权限变更写入:%s请求" % (remote_addr,data["登录名"]))
  1371. res1['msg'] = (datetime.datetime.now(),"[%s]权限变更写入:%s请求" % (remote_addr,data["登录名"]))
  1372. return jsonify(res1)
  1373. @app.route('/static/infoConfirm',methods=["POST"])
  1374. @jwt_required()
  1375. def infoConfirm():
  1376. remote_addr = request.remote_addr
  1377. data = request.get_json()
  1378. type, flightid, displaymode, selectedtime = data['type'], data['flightid'], data['displaymode'], data['selectedtime']
  1379. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  1380. InfoConfirm(fdb,type,flightid,displaymode,selectedtime)
  1381. fdb.close()
  1382. res = {"返回值": "ok"}
  1383. print(datetime.datetime.now(), "[%s]确认通知操作"%remote_addr)
  1384. res['msg'] = ("[%s]确认通知操作"%remote_addr)
  1385. return jsonify(res)
  1386. @app.route('/static/infoConfirm3',methods=["POST"])
  1387. @jwt_required()
  1388. def infoConfirm3():
  1389. remote_addr = request.remote_addr
  1390. data = request.get_json()
  1391. type,flightid,displaymode,selectedtime = data['type'], data['flightid'], data['displaymode'], data['selectedtime']
  1392. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  1393. InfoConfirm3(fdb,type,flightid,displaymode,selectedtime)
  1394. fdb.close()
  1395. res = {"返回值": "ok"}
  1396. print(datetime.datetime.now(),"[%s]确认自滑推送操作"%remote_addr)
  1397. res['msg'] = (datetime.datetime.now(),"[%s]确认自滑推送操作"%remote_addr)
  1398. return jsonify(res)
  1399. @app.route('/static/infoConfirm2',methods=["POST"])
  1400. @jwt_required()
  1401. def infoConfirm2():
  1402. remote_addr = request.remote_addr
  1403. data = request.get_json()
  1404. type, flightid, displaymode, selectedtime = data['type'], data['flightid'], data['displaymode'], data['selectedtime']
  1405. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  1406. InfoConfirm2(fdb,type,flightid,displaymode,selectedtime)
  1407. fdb.close()
  1408. res = {"返回值": "ok"}
  1409. print(datetime.datetime.now(),"[%s]确认推送操作"%remote_addr)
  1410. res['msg'] = (datetime.datetime.now(),"[%s]确认推送操作"%remote_addr)
  1411. return jsonify(res)
  1412. @app.route('/static/manChangests',methods=["POST"])
  1413. @jwt_required()
  1414. def manChangests():
  1415. remote_addr = request.remote_addr
  1416. data = request.get_json()
  1417. text, type, selectedtime, username = data['text'], data['type'], data['selectedtime'], data['username']
  1418. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  1419. ManChangests(fdb,text,type,selectedtime,username)
  1420. fdb.close()
  1421. res = {"返回值": "ok"}
  1422. print(datetime.datetime.now(),"[%s][%s]%s人工改变航班状态"%(remote_addr,username,text))
  1423. res['msg'] = (datetime.datetime.now(),"[%s][%s]%s人工改变航班状态"%(remote_addr,username,text))
  1424. return jsonify(res)
  1425. @app.route('/static/updateDragDropItem',methods=["POST"])
  1426. @jwt_required()
  1427. def updateDragDropItem():
  1428. #t1 = datetime.datetime.now()
  1429. remote_addr = request.remote_addr
  1430. data = request.get_json()
  1431. column, text, flightid, displayMode, flighttype, selectedtime = data['column'], data['text'], data['flightid'], data['displaymode'], data['flighttype'], data['selectedtime']
  1432. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  1433. #print(fdb,column,text,flightid,displayMode,flighttype,selectedtime)
  1434. #t2 = datetime.datetime.now()
  1435. #print(f'编辑登录时间:{t2 - t1}')
  1436. res = UpdateDragDropItem(fdb,column,text,flightid,displayMode,flighttype,selectedtime)
  1437. fdb.close()
  1438. res1={"返回值":res}
  1439. print(datetime.datetime.now(),"[%s]拖拽更新请求"%remote_addr)
  1440. #t3 = datetime.datetime.now()
  1441. #print(f'编辑处理时间:{t3 - t2}')
  1442. res1['msg'] = (datetime.datetime.now(),"[%s]拖拽更新请求"%remote_addr)
  1443. return jsonify(res1)
  1444. @app.route('/static/updateEidteItem',methods=["POST"])
  1445. @jwt_required()
  1446. def updateEidteItem():
  1447. remote_addr = request.remote_addr
  1448. data = request.get_json()
  1449. text, flightid, displayMode, flighttype, selectedtime = data['text'], data['flightid'], data['displaymode'], data['flighttype'], data['selectedtime']
  1450. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  1451. #print(fdb,column,text,flightid,displayMode,flighttype,selectedtime)
  1452. UpdateEidteItem(fdb,text,flightid,displayMode,flighttype,selectedtime)
  1453. fdb.close()
  1454. res1={"返回值":"OK"}
  1455. print(datetime.datetime.now(),"[%s]附加消息请求"%remote_addr)
  1456. res1['msg'] = (datetime.datetime.now(),"[%s]附加消息请求"%remote_addr)
  1457. return jsonify(res1)
  1458. @app.route('/static/updateNoteItem',methods=["POST"])
  1459. @jwt_required()
  1460. def updateNoteItem():
  1461. try:
  1462. remote_addr = request.remote_addr
  1463. data = request.get_json()
  1464. text, name = data['text'], data['name']
  1465. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  1466. UpdateNoteItem(fdb,text,name)
  1467. fdb.close()
  1468. res1={"返回值":"OK"}
  1469. print(datetime.datetime.now(),"[%s]排班辅助备注修改"%remote_addr)
  1470. return jsonify(res1)
  1471. except Exception as e:
  1472. res1={"返回值":"fail"}
  1473. res1['msg'] = "error:"+str(e)
  1474. print("有bug,请联系管理员")
  1475. app_logger.log_error(e)
  1476. return jsonify(res1)
  1477. @app.route('/static/checkPglist',methods=["POST"])
  1478. @jwt_required()
  1479. def checkPglist():
  1480. remote_addr = request.remote_addr
  1481. data = request.get_json()
  1482. name, selectedtime, bc = data['name'], data['selectedtime'], data['bc']
  1483. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  1484. #print(fdb,column,text,flightid,displayMode,flighttype,selectedtime)
  1485. res = CheckPglist(fdb,name,selectedtime,bc)
  1486. fdb.close()
  1487. #print(res)
  1488. if res == "YES":
  1489. res1 = {"返回值": "OK"}
  1490. print(datetime.datetime.now(), "[%s]人工录入派工核查成功"%remote_addr)
  1491. else:
  1492. res1 = {"返回值": "fail"}
  1493. print(datetime.datetime.now(), "[%s]人工录入派工核查失败"%remote_addr)
  1494. return jsonify(res1)
  1495. @app.route('/static/tableWidgetLOGDispaly', methods=["POST"])
  1496. @jwt_required()
  1497. def tableWidgetLOGDispaly():
  1498. data = request.get_json()
  1499. selectedtime = data['selectedtime']
  1500. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  1501. res=TableWidgetLOGDispaly(fdb,selectedtime)
  1502. fdb.close()
  1503. remote_addr = request.remote_addr
  1504. print(datetime.datetime.now(),"[%s]日志刷新请求"%remote_addr)
  1505. return jsonify(data=res)
  1506. @app.route('/static/qtPeopleLoad',methods=["POST"])
  1507. @jwt_required()
  1508. def qtPeopleLoad():
  1509. data = request.get_json()
  1510. selectedtime, bc = data['selectedtime'], data['bc']
  1511. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  1512. workLoad = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseWorkLoad)
  1513. res=QtPeopleLoad(fdb,workLoad,bc,selectedtime)
  1514. workLoad.close()
  1515. fdb.close()
  1516. remote_addr = request.remote_addr
  1517. print(datetime.datetime.now(),"[%s]人员工作状态刷新请求"%remote_addr)
  1518. return jsonify(data=res)
  1519. @app.route('/static/getVin',methods=["POST"])
  1520. @jwt_required()
  1521. def getVin():
  1522. data = request.get_json()
  1523. mode, num = data['mode'], data['num']
  1524. db = flaskDBUtils.flaskDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=database)
  1525. vin=flaskDBUtils.getVin(db,mode,int(num)) # 刷新航班
  1526. db.close()
  1527. res = {"返回值": "%s"%vin}
  1528. remote_addr = request.remote_addr
  1529. print(datetime.datetime.now(), "[%s]获取在线Vin码"%remote_addr)
  1530. return jsonify(res)
  1531. @app.route('/static/updateVin',methods=["POST"])
  1532. @jwt_required()
  1533. def updateVin():
  1534. data = request.get_json()
  1535. mode, num = data['mode'], data['num']
  1536. db = flaskDBUtils.flaskDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=database)
  1537. vin=flaskDBUtils.updateVin(db,mode,int(num)) # 刷新航班
  1538. db.close()
  1539. res = {"返回值": "%s"%vin}
  1540. remote_addr = request.remote_addr
  1541. print(datetime.datetime.now(), "[%s]更新在线Vin码"%remote_addr)
  1542. return jsonify(res)
  1543. @app.route('/static/tableWidgetDispalyRead',methods=["POST"])
  1544. @jwt_required()
  1545. def tableWidgetDispalyRead():
  1546. data = request.get_json()
  1547. date = data['date']
  1548. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  1549. res=TableWidgetDispalyRead(fdb,date)
  1550. fdb.close()
  1551. #print(datetime.datetime.now(),res)
  1552. remote_addr = request.remote_addr
  1553. print(datetime.datetime.now(),"[%s]A模式只读航班信息刷新请求"%remote_addr)
  1554. # res['msg'] = (datetime.datetime.now(),"[%s]A模式只读航班信息刷新请求"%remote_addr)
  1555. return jsonify(data=res)
  1556. @app.route('/static/tableWidgetDispalyRead2',methods=["POST"])
  1557. @jwt_required()
  1558. def tableWidgetDispalyRead2():
  1559. data = request.get_json()
  1560. date = data['date']
  1561. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  1562. res=TableWidgetDispalyRead2(fdb,date)
  1563. fdb.close()
  1564. #print(datetime.datetime.now(),res)
  1565. remote_addr = request.remote_addr
  1566. print(datetime.datetime.now(),"[%s]B模式只读航班信息刷新请求"%remote_addr)
  1567. return jsonify(data=res)
  1568. @app.route('/static/tableWidgetDispaly',methods=["POST"])
  1569. @jwt_required()
  1570. def tableWidgetDispaly():
  1571. #t1 = datetime.datetime.now()
  1572. data = request.get_json()
  1573. selectedtime, date = data['selectedtime'], data['date']
  1574. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  1575. #t2 = datetime.datetime.now()
  1576. #print(f'航班刷新登录时间:{t2 - t1}')
  1577. res=TableWidgetDispaly(fdb,selectedtime,date)
  1578. fdb.close()
  1579. #print(datetime.datetime.now(),res)
  1580. remote_addr = request.remote_addr
  1581. print(datetime.datetime.now(),"[%s]A模式航班信息刷新请求[%s]"%(remote_addr,date))
  1582. #t3 = datetime.datetime.now()
  1583. #print(f'航班刷新处理时间:{t3 - t2}')
  1584. return jsonify(data=res)
  1585. @app.route('/static/tableWidgetDispaly11',methods=["POST"])
  1586. @jwt_required()
  1587. def tableWidgetDispaly11():
  1588. data = request.get_json()
  1589. selectedtime = data['selectedtime']
  1590. remote_addr = request.remote_addr
  1591. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  1592. res=TableWidgetDispaly(fdb,selectedtime,"4")
  1593. fdb.close()
  1594. #print(datetime.datetime.now(),res)
  1595. print(datetime.datetime.now(),"[%s]文件存储1航班信息刷新请求"%remote_addr)
  1596. return jsonify(data=res)
  1597. @app.route('/static/tableWidgetDispaly22',methods=["POST"])
  1598. @jwt_required()
  1599. def tableWidgetDispaly22():
  1600. data = request.get_json()
  1601. selectedtime = data['selectedtime']
  1602. remote_addr = request.remote_addr
  1603. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  1604. res=TableWidgetDispaly2(fdb,selectedtime,"4")
  1605. fdb.close()
  1606. print(datetime.datetime.now(),"[%s]文件存储2航班信息刷新请求"%remote_addr)
  1607. return jsonify(data=res)
  1608. @app.route('/static/tableWidgetDispaly2',methods=["POST"])
  1609. @jwt_required()
  1610. def tableWidgetDispaly2():
  1611. data = request.get_json()
  1612. selectedtime, date = data['selectedtime'], data['date']
  1613. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  1614. res=TableWidgetDispaly2(fdb,selectedtime,date)
  1615. fdb.close()
  1616. remote_addr = request.remote_addr
  1617. print(datetime.datetime.now(),"[%s]B模式航班信息刷新请求[%s]"%(remote_addr,date))
  1618. return jsonify(data=res)
  1619. @app.route('/static/mapDispaly',methods=["POST"])
  1620. @jwt_required()
  1621. def mapDispaly():
  1622. data = request.get_json()
  1623. selectedtime = data['selectedtime']
  1624. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  1625. res = MapDispaly(fdb, selectedtime)
  1626. fdb.close()
  1627. #print(datetime.datetime.now(),'获取的机位数据:{}'.format(res))
  1628. remote_addr = request.remote_addr
  1629. print(datetime.datetime.now(),"[%s]地图显示刷新请求"%remote_addr)
  1630. return jsonify(res)
  1631. @app.route('/static/judge_bc')
  1632. @jwt_required()
  1633. def judge_bc():
  1634. remote_addr = request.remote_addr
  1635. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  1636. aa=Judge_bc()
  1637. fdb.close()
  1638. print(datetime.datetime.now(),"[%s]判断班次请求"%remote_addr)
  1639. return jsonify(data=aa)
  1640. @app.route('/static/dealLogs',methods=["POST"])
  1641. @jwt_required()
  1642. def dealLogs():
  1643. data = request.get_json()
  1644. user, id = data['user'], data['id']
  1645. remote_addr = request.remote_addr
  1646. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  1647. DealLogs(fdb,user,id)
  1648. fdb.close()
  1649. res = {"返回值": "ok"}
  1650. print(datetime.datetime.now(),"[%s]%s处理待办信息" % (remote_addr,user))
  1651. return jsonify(res)
  1652. @app.route('/static/checkLogs',methods=["POST"])
  1653. @jwt_required()
  1654. def checkLogs():
  1655. try:
  1656. remote_addr = request.remote_addr
  1657. data = request.get_json()
  1658. start, end = data['start'], data['end']
  1659. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  1660. res=fdb.sort_queryTable("*",'logs',"产生时间<'%s' and 产生时间>'%s'"%(end,start),"产生时间","desc")
  1661. fdb.close()
  1662. print(datetime.datetime.now(),"[%s]查询全部日志请求"%remote_addr)
  1663. return jsonify(data=res)
  1664. except:
  1665. return jsonify(data={})
  1666. @app.route('/static/tableWidgetDisplayChange',methods=["POST"])
  1667. @jwt_required()
  1668. def tableWidgetDisplayChange():
  1669. data = request.get_json()
  1670. selectedtime = data['selectedtime']
  1671. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  1672. res=TableWidgetDisplayChange(fdb,selectedtime)
  1673. fdb.close()
  1674. remote_addr = request.remote_addr
  1675. print(datetime.datetime.now(),"[%s]待办信息刷新请求"%remote_addr)
  1676. return jsonify(data=res, msg=(datetime.datetime.now(),"[%s]待办信息刷新请求"%remote_addr))
  1677. @app.route('/static/get_dic',methods=["POST"])
  1678. @jwt_required()
  1679. def get_dic():
  1680. try:
  1681. remote_addr = request.remote_addr
  1682. data = request.get_json()['data']
  1683. fdb = flightDB(host = dbhost , port = dbport , user = dbuser , password = dbpassword , database = databaseDB4)
  1684. ress = Get_dic(fdb , data)
  1685. fdb.close()
  1686. res = {"返回值": ress}
  1687. print(datetime.datetime.now(),"[%s]获取人员信息EXCEL表格"%remote_addr)
  1688. res['msg'] = (datetime.datetime.now(),"[%s]获取人员信息EXCEL表格"%remote_addr)
  1689. return jsonify(res)
  1690. except:
  1691. fdb.close()
  1692. print(datetime.datetime.now(), "[%s]获取人员信息EXCEL表格失败" % remote_addr)
  1693. res={ "返回值" : "fail" }
  1694. return jsonify(res)
  1695. @app.route('/static/updateStopFlight',methods=["POST"])
  1696. @jwt_required()
  1697. def updateStopFlight():
  1698. try:
  1699. remote_addr = request.remote_addr
  1700. data = request.get_json()['data']
  1701. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  1702. workLoad = flightDB(host=dbhost, port=dbport, user=dbuser, password=dbpassword, database=databaseWorkLoad)
  1703. ress=UpdateStopFlight(fdb,workLoad,data)
  1704. fdb.close()
  1705. workLoad.close()
  1706. res = { "返回值" : ress}
  1707. print(datetime.datetime.now(),"[%s]上传停场航班EXCEL数据"%remote_addr)
  1708. return jsonify(res)
  1709. except:
  1710. fdb.close()
  1711. workLoad.close()
  1712. print(datetime.datetime.now(), "[%s]上传停场航班EXCEL数据失败" % remote_addr)
  1713. return jsonify({"返回值": "fail", "msg":(datetime.datetime.now(), "[%s]上传停场航班EXCEL数据失败" % remote_addr)})
  1714. @app.route('/static/updateTaskAuto',methods=["POST"])
  1715. @jwt_required()
  1716. def updateTaskAuto():
  1717. try:
  1718. remote_addr = request.remote_addr
  1719. data = request.get_json()['data']
  1720. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  1721. ress=UpdateTaskAuto(fdb,data)
  1722. fdb.close()
  1723. res = {"返回值":ress}
  1724. print(datetime.datetime.now(),"[%s]获取准备组任务EXCEL表格"%remote_addr)
  1725. res['msg'] = (datetime.datetime.now(),"[%s]获取准备组任务EXCEL表格"%remote_addr)
  1726. return jsonify(res)
  1727. except:
  1728. print(datetime.datetime.now(), "[%s]获取准备组任务EXCEL表格失败" % remote_addr)
  1729. return jsonify({"返回值":"fail","msg":("[%s]获取准备组任务EXCEL表格失败" % remote_addr)})
  1730. @app.route('/static/saveRisktable')
  1731. @jwt_required()
  1732. def saveRisktable():
  1733. remote_addr = request.remote_addr
  1734. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  1735. res=SaveRisktable(fdb)
  1736. fdb.close()
  1737. print(datetime.datetime.now(),"[%s]导出风险数据库"%remote_addr)
  1738. return {"返回值":res, "msg":(datetime.datetime.now(),"[%s]导出风险数据库"%remote_addr)}
  1739. @app.route('/static/getRiskData',methods=["POST"])
  1740. @jwt_required()
  1741. def getRiskData():
  1742. remote_addr = request.remote_addr
  1743. data = request.get_json()
  1744. bay, time, acno, actype = data['bay'], data['time'], data['acno'], data['actype']
  1745. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  1746. res=GetRiskData(fdb,bay,time,acno,actype)
  1747. fdb.close()
  1748. print(datetime.datetime.now(),"[%s]导出风险数据库"%remote_addr)
  1749. return {"返回值":res, "msg":(datetime.datetime.now(),"[%s]导出风险数据库"%remote_addr)}
  1750. @app.route('/static/updateRiskdb',methods=["POST"])
  1751. @jwt_required()
  1752. def updateRiskdb():
  1753. try:
  1754. remote_addr = request.remote_addr
  1755. data = request.get_json()["data"]
  1756. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  1757. ress=UpdateRiskdb(fdb,data)
  1758. fdb.close()
  1759. res = {"返回值": ress}
  1760. print(datetime.datetime.now(),"[%s]获取风险数据库EXCEL表格"%remote_addr)
  1761. res['msg'] = (datetime.datetime.now(),"[%s]获取风险数据库EXCEL表格"%remote_addr)
  1762. return jsonify(res)
  1763. except:
  1764. fdb.close()
  1765. print(datetime.datetime.now(), "[%s]获取风险数据库EXCEL表格失败" % remote_addr)
  1766. return jsonify({"返回值": "fail", "msg":("[%s]获取风险数据库EXCEL表格失败" % remote_addr)})
  1767. @app.route('/static/taskAtuoCheck',methods=["POST"])
  1768. @jwt_required()
  1769. def taskAtuoCheck():
  1770. remote_addr = request.remote_addr
  1771. data = request.get_json()
  1772. time = data['time']
  1773. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  1774. TaskAtuoCheck(fdb,time)
  1775. fdb.close()
  1776. res = {"返回值": "ok"}
  1777. print(datetime.datetime.now(),"[%s]确认准备组任务待办信息情况"%remote_addr)
  1778. res['msg'] = (datetime.datetime.now(),"[%s]确认准备组任务待办信息情况"%remote_addr)
  1779. return jsonify(res)
  1780. @app.route('/static/createWorkloadtablesFromPg',methods=["POST"])
  1781. @jwt_required()
  1782. def createWorkloadtablesFromPg():
  1783. remote_addr = request.remote_addr
  1784. data = request.get_json()
  1785. selectedtime = data['selectedtime']
  1786. fdb = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseDB4)
  1787. workLoad = flightDB(host=dbhost,port=dbport,user=dbuser,password=dbpassword,database=databaseWorkLoad)
  1788. CreateWorkloadtablesFromPg(fdb,workLoad,selectedtime)
  1789. fdb.close()
  1790. workLoad.close()
  1791. res={"返回值":"ok"}
  1792. print(datetime.datetime.now(),"[%s]通过派工信息创建人员工作统计表"%remote_addr)
  1793. res['msg'] = (datetime.datetime.now(),"[%s]通过派工信息创建人员工作统计表"%remote_addr)
  1794. return jsonify(res)
  1795. #--------------------------------------------------------------------------------------------------------
  1796. @app.route('/getdict', methods=['GET'])
  1797. @jwt_required()
  1798. def getdict():
  1799. data = {
  1800. 'data':['1','2','3','4','5','6','7','8','9'],
  1801. 'data2':'data2_data2'
  1802. }
  1803. return returnTrue('this is message', data), 200
  1804. #令牌刷新机制
  1805. @app.route('/refresh', methods=['POST'])
  1806. @jwt_required(refresh=True)
  1807. def refresh():
  1808. current_user_id = get_jwt_identity()
  1809. new_access_token = create_access_token(identity=current_user_id)
  1810. return jsonify(access_token=new_access_token, msg='Refresh access_token success'), 200
  1811. '''
  1812. #用户角色与权限管理
  1813. @app.route('/admin', methods=['GET'])
  1814. @jwt_required()
  1815. def admin():
  1816. current_user_id = get_jwt_identity()
  1817. user = query_user(current_user_id)
  1818. if user[0][3] != 'admin':
  1819. return jsonify({'message': 'Access denied'}), 403
  1820. return jsonify({'message': 'Hello admin'}), 200
  1821. '''
  1822. #'''
  1823. @app.before_first_request
  1824. def init():
  1825. if not app.config['initialized']:
  1826. print('#### Flask Start... ####')
  1827. global fl,si,singlePeopleNotice,loaclseverip
  1828. fl = utils.flight_list()
  1829. si = ipcall.searchinfo()
  1830. loaclseverip = get_local_ip()
  1831. print(f"当前服务器IP:{loaclseverip}")
  1832. singlePeopleNotice = initialize_file('D:\\flightinfo\\DATABASE\\singlepoeple_notice.txt',False)
  1833. app.config['initialized'] = True
  1834. #if __name__ == '__main__':
  1835. # app.run(debug=True, host='0.0.0.0', port=5001)
  1836. if __name__ == '__main__':
  1837. serve(app, host='0.0.0.0',port=5001, threads=32)
  1838. #serve(app, host='0.0.0.0',port=5001, threads=64)