From 1ae38ab34bcbdff622c7623119ee54bad419f4ed Mon Sep 17 00:00:00 2001 From: zmk <496160012@qq.com> Date: 星期三, 28 八月 2024 16:11:08 +0800 Subject: [PATCH] 提交代码 --- MainAPI.py | 620 +++++++++++++++++++++++++++---------------------------- 1 files changed, 303 insertions(+), 317 deletions(-) diff --git a/MainAPI.py b/MainAPI.py index 78b64b3..a1adfdf 100644 --- a/MainAPI.py +++ b/MainAPI.py @@ -4,21 +4,21 @@ from flask import jsonify from flask import request from flask_cors import CORS -import sys import numpy as np -import pandas as pd import flopy -import flopy.utils.binaryfile as bf -import csv import time -from openpyxl import load_workbook import os import shutil +import json import Base as base import CalHead import Predict -import json import ModelPeriod +import AchiveReport as achiveReport +import BigData +import OpenExcel +import DataTransf +import DataTask # Flask鍑芥暟鎺ユ敹涓�涓弬鏁癬_name__锛屽畠浼氭寚鍚戠▼搴忔墍鍦ㄧ殑鍖� app = Flask(__name__) @@ -33,11 +33,13 @@ #娌虫祦cell鐨勬暟閲� riverCellSize = 109 -iboundGroupSize = 5 -iboundGroup={1:[1,86],2:[87,111],3:[112,142],4:[143,170],5:[171,240]} +iboundGroupSize = 10 +iboundGroup={1:[1,86],2:[87,111],3:[112,142],4:[143,170],5:[171,240], + 6:[241,282],7:[283,354],8:[355,393],9:[394,436],10:[437,453]} -iboundGroup3Size = 5 -iboundGroup3={1:[241,282],2:[283,354],3:[355,393],4:[394,436],5:[437,453]} +iboundName =["瑗夸晶娴佸叆","鍖楅儴娴佸叆","涓滃寳閮ㄦ祦鍏�","涓滈儴娴佸嚭","鍗楅儴娴佸嚭", + "灞卞尯娴佸叆","姘稿畾娌虫柇瑁傛祦鍏�","榛勫簞楂樹附鏂娴佸叆","鍏疂灞辨柇瑁傛祦鍏�","鏄嗘槑婀栨柇瑁傚叆娴�"] + riverGroupSize = 4 riverGroup={1:[454,479],2:[480,505],3:[506,527],4:[528,562]} @@ -49,7 +51,7 @@ def getModel(model_name): model_ws="" if not model_name: - model_ws = "202001_202212" + model_ws = base.not_allowed_model else: model_ws = base.model_dir + model_name @@ -60,7 +62,7 @@ @app.route('/baseparam/', methods=['GET']) def baseparam(): - model_name = request.args.get('model_name') + model_name = request.args.get('model_name') ml= getModel(model_name) nrclp = ml.get_nrow_ncol_nlay_nper() dict = {"Row": nrclp[0], "Column": nrclp[1], @@ -71,8 +73,31 @@ months = ModelPeriod.get_months_in_range_ym(start_time, end_time) dict["months"]=months + print(jsondata) + if "initHeader" in jsondata: + dict["initHead"] = jsondata["initHeader"] + else: + dict["initHead"] = "" return jsonify(dict) +#淇濆瓨鍒濆姘村ご +@app.route('/saveInitHead', methods=['POST']) +def saveInitHead(): + jsondata = request.get_json() + model_name = str(jsondata['model_name']) + initHeader = str(jsondata['initHead']) + + if model_name == base.not_allowed_model or model_name in base.archive_models: + return jsonify("鏈ā鍨嬩负楠岃瘉妯″瀷,涓嶅厑璁镐慨鏀癸紒") + + jsondata= CalHead.get_model_json(model_name) + jsondata["initHeader"] = initHeader + + jpath = base.model_dir + model_name +"\\prediction.json" + with open(jpath, "w",encoding='utf-8') as outfile: + json.dump(jsondata, outfile,ensure_ascii=False) + + return jsonify("淇濆瓨鍒濆姘村ご鎴愬姛锛�") #璇诲彇wel鏂囦欢 鍙傛暟涓� Period @app.route('/welList/', methods=['GET']) @@ -97,11 +122,16 @@ result_len = len(result) + ibound_segment={} + if layerparam == '1': #杈圭晫 + + ibound_segment={"1":[0,85],"2":[86,110],"3":[111,141],"4":[142,169],"5":[170,239]} + for i in range(0, 240): iboundarray.append(result[i]) - #娌虫祦 + #娌虫祦 for i in range(453, 562): riverarray.append(result[i]) @@ -114,12 +144,17 @@ welarray.append(result[i]) elif layerparam == '3': + + ibound_segment={"6":[0,41],"7":[42,113],"8":[114,152],"9":[153,195],"10":[196,212]} + for i in range(240, 453): iboundarray.append(result[i]) + ibounddict = {"name": "ibound", "data": iboundarray,"segment":ibound_segment} - ibounddict = {"name": "ibound", "data": iboundarray} - riverdict = {"name": "river", "data": riverarray} + riversgement={"1":[0,25],"2":[26,51],"3":[52,73],"4":[74,108]} + riverdict = {"name": "river", "data": riverarray,"segment":riversgement} + weldict = {"name": "wel", "data": welarray} @@ -128,6 +163,7 @@ data.append(ibounddict) data.append(weldict) return jsonify(data) + #璇诲彇鍗曚釜浜曠殑鏁版嵁 @app.route('/wel/', methods=['GET']) @@ -169,6 +205,9 @@ # model_name = request.args.get('model_name') model_name = str(json['model_name']) + if model_name == base.not_allowed_model or model_name in base.archive_models: + return jsonify("鏈ā鍨嬩负楠岃瘉妯″瀷,涓嶅厑璁镐慨鏀癸紒") + ml= getModel(model_name) @@ -199,119 +238,19 @@ lrcq[per] = array2d - flopy.modflow.ModflowWel(ml,stress_period_data=lrcq) + flopy.modflow.ModflowWel(ml,ipakcb= ml.wel.ipakcb,dtype=ml.wel.dtype, + options=ml.wel.options, + stress_period_data=lrcq) ml.write_input() return jsonify("鏁版嵁鏇存柊瀹屾瘯锛�") - - -#璇诲叆鐢靛瓙琛ㄦ牸鏂囦欢鐢熸垚wel 鏂囦欢 -@app.route('/cellFileInput', methods=['POST']) -def cellFileInput(): - - path ='C:\\Users\\ZMK\\Desktop\\寰呭彂閫乗\cell鏂囦欢.xlsx' - - data = get_cell_data(path) - - lrcq= get_cell_struct(data["excel1"],data["excel2"],data["excel3"]) - - model_name = request.args.get('model_name') - - ml= getModel(model_name) - - flopy.modflow.ModflowWel(ml,stress_period_data=lrcq) - ml.write_input() - - return jsonify("sucess") - - -def get_cell_struct(excel1,excel2,excel3): - lrcq={} - - #鍛ㄦ湡鏁伴噺 - period = 7 - start_row_index = 1 - - #杈圭晫鏁版嵁 excel - for col in range (0,period): - array =[] - for row in range(start_row_index, len(excel1)): - - arr = [excel1[row][2]-1,excel1[row][3]-1,excel1[row][4]-1,excel1[row][6+col]] - array.append(arr) - lrcq[col]= array - - #娌虫祦鏁版嵁 excel - for col in range (0,period): - array =[] - for row in range(start_row_index, len(excel2)): - - arr = [excel2[row][2]-1,excel2[row][3]-1,excel2[row][4]-1,excel2[row][6+col]] - array.append(arr) - - lrcq[col].extend(array) - - #鎶芥按鏁版嵁 excel - for col in range (0,period): - - array =[] - for row in range(start_row_index, len(excel3)): - - arr = [excel3[row][1]-1,excel3[row][2]-1,excel3[row][3]-1,excel3[row][8+col]] - array.append(arr) - - lrcq[col].extend(array) - - return lrcq - - - -#鑾峰彇cell鏂囦欢 -#file_path 鏂囦欢鐨勮矾寰� -def get_cell_data(file_path): - - workbook = load_workbook(file_path) - sheetnames = workbook.get_sheet_names() - #read first sheet - sheet1 = workbook[sheetnames[0]] - sheet2 = workbook[sheetnames[1]] - sheet3 = workbook[sheetnames[2]] - - excel1 =[] - excel2=[] - excel3=[] - # 閬嶅巻璇诲彇鏁翠釜宸ヤ綔琛� - for row in sheet1.iter_rows(values_only=True): - array=[] - for cell in row: - array.append(cell) - excel1.append(array) - - for row in sheet2.iter_rows(values_only=True): - array=[] - for cell in row: - array.append(cell) - excel2.append(array) - - for row in sheet3.iter_rows(values_only=True): - array=[] - for cell in row: - array.append(cell) - excel3.append(array) - - # 鍏抽棴Excel鏂囦欢 - workbook.close() - data={"excel1":excel1,"excel2":excel2,"excel3":excel3} - - return data - #璇诲彇wel鏂囦欢 鍙傛暟涓� Period @app.route('/iboundList/', methods=['GET']) def iboundList(): - return jsonify(iboundGroupSize) + return jsonify(iboundName) #杈圭晫鐨勫垎缁勬暟鎹� @@ -360,6 +299,10 @@ data = json['data'] model_name = json['model_name'] + + if model_name == base.not_allowed_model or model_name in base.archive_models: + return jsonify("鏈ā鍨嬩负楠岃瘉妯″瀷,涓嶅厑璁镐慨鏀癸紒") + ml= getModel(model_name) index = iboundGroup[no] @@ -392,7 +335,10 @@ lrcq[per] = array2d - flopy.modflow.ModflowWel(ml,stress_period_data=lrcq) + flopy.modflow.ModflowWel(ml,ipakcb= ml.wel.ipakcb, + dtype=ml.wel.dtype, + options=ml.wel.options, + stress_period_data=lrcq) ml.write_input() return jsonify("鏁版嵁鏇存柊瀹屾瘯锛�") @@ -458,6 +404,9 @@ end_index = index[1] model_name = json['model_name'] + if model_name == base.not_allowed_model or model_name in base.archive_models: + return jsonify("鏈ā鍨嬩负楠岃瘉妯″瀷,涓嶅厑璁镐慨鏀癸紒") + ml= getModel(model_name) periods =CalHead.get_model_period(model_name) @@ -487,7 +436,11 @@ lrcq[per] = array2d - flopy.modflow.ModflowWel(ml,stress_period_data=lrcq) + + flopy.modflow.ModflowWel(ml,ipakcb= ml.wel.ipakcb, + dtype=ml.wel.dtype, + options=ml.wel.options, + stress_period_data=lrcq) ml.write_input() return jsonify("鏁版嵁鏇存柊瀹屾瘯锛�") @@ -529,55 +482,14 @@ return jsonify(result) -#闄嶆按鏁版嵁淇敼 -# @app.route('/precipitationInput', methods=['POST']) -# def precipitationInput(): - -# json = request.get_json() -# model_name= str(json['model_name']) -# period = int(json['period']) -# #鏈夊簭鐨勫簲鍔涘懆鏈熷垪琛� json -# data = json['data'] -# dict = {} -# for i in range(len(data)): -# q1 = data[i]['Q1'] -# q2 = data[i]['Q2'] -# dict[q1] = q2 - -# ml= getModel(model_name) - -# item = ml.rch.rech.__getitem__(kper=period) -# array2d = item.get_value() - -# count = 0 - -# array2d_len = len(array2d) - -# for i in range(array2d_len): - -# array_len = len(array2d[i]) - -# for j in range(array_len): - -# va = str(array2d[i][j]) -# if va in dict: -# count += 1 -# array2d[i][j] = float(dict[va]) - -# ml.rch.rech.__setitem__(key=period, value=array2d) - -# rch = flopy.modflow.ModflowRch(ml, rech=ml.rch.rech) -# rch.write_file(check=False) -# #ml.write_input() - -# return jsonify("闄嶆按鍙傛暟淇敼瀹屾瘯锛�") - @app.route('/precipitationInput', methods=['POST']) def precipitationInput(): json = request.get_json() model_name= str(json['model_name']) + if model_name == base.not_allowed_model or model_name in base.archive_models: + return jsonify("鏈ā鍨嬩负楠岃瘉妯″瀷,涓嶅厑璁镐慨鏀癸紒") period = int(json['period']) #鏈夊簭鐨勫簲鍔涘懆鏈熷垪琛� json data = json['data'] @@ -597,7 +509,7 @@ tuples= areas[key] zblen= len(tuples) - values = float(dict[key]) + values = round(float(dict[key]),8) for i in range(zblen): x = tuples[i][0] y = tuples[i][1] @@ -605,106 +517,14 @@ ml.rch.rech.__setitem__(key=period, value=array2d) - rch = flopy.modflow.ModflowRch(ml, rech = ml.rch.rech) + rch = flopy.modflow.ModflowRch(ml,nrchop=ml.rch.nrchop, + ipakcb=ml.rch.ipakcb, + rech=ml.rch.rech, + irch =ml.rch.irch) rch.write_file(check=False) # ml.write_input() return jsonify("闄嶆按鍙傛暟淇敼瀹屾瘯锛�") - -#瀵煎叆csv鏂囦欢 -@app.route('/precipitationInputFile', methods=['POST']) -def precipitationInputFile(): - - model_name = request.args.get('model_name') - ml= getModel(model_name) - save_path = 'C:/Users/ZMK/Desktop/test1/' + "1111.xlsx" - file = request.files.get('file') - - if file: - file.save(save_path) - - #鑾峰彇璇诲彇鐨別xcel 琛ㄦ牸鏁版嵁 - stations = get_station_struct(save_path) - - #寰幆鍛ㄦ湡 - #perd鍛ㄦ湡鍙橀噺 - #array2d 姣忎釜鍛ㄦ湡鐨勪簩缁存暟缁� - for perd in range(0,36): - period = perd - item = ml.rch.rech.__getitem__(kper=period) - array2d = item.get_value() - - array2d_len = len(array2d) - count = 0 - #寰幆绔欑偣灏嗕竴涓猵eriod鐨勬墍鏈塻tations杩涜瀛楀吀瀛樺偍 - dict = {} - for k in range(0,len(stations)): - row = stations[k]["row"] - column = stations[k]["column"] - - data_old = array2d[row][column] - data_new = stations[k]["data"][perd] - dict[data_old]= data_new - - - #寰幆璁剧疆姣忎釜period 鐨勫�� - for i in range(array2d_len): - - array_len = len(array2d[i]) - - for j in range(array_len): - - va = str(array2d[i][j]) - if va in dict: - array2d[i][j] = float(dict[va]) - - #灏哸rray2d閲嶆柊set 瀵瑰簲鐨� item 鍛ㄦ湡鍐� - ml.rch.rech.__setitem__(key=period, value=array2d) - - rch = flopy.modflow.ModflowRch(ml, rech=ml.rch.rech) - rch.write_file(check=False) - # ml.write_input() - return '鏂囦欢涓婁紶鎴愬姛' - else: - return '涓婁紶澶辫触锛屾湭閫夋嫨鏂囦欢' - - -#鑾峰彇绔欑偣鐨勬暟鎹紝鏋勯�犳暟鎹粨鏋� -#file_path 鏂囦欢鐨勮矾寰� -def get_station_struct(file_path): - - workbook = load_workbook(file_path) - sheetnames = workbook.get_sheet_names() - #read first sheet - sheet = workbook[sheetnames[0]] - - array2d_excel=[] - # 閬嶅巻璇诲彇鏁翠釜宸ヤ綔琛� - for row in sheet.iter_rows(values_only=True): - array=[] - for cell in row: - array.append(cell) - array2d_excel.append(array) - # 鍏抽棴Excel鏂囦欢 - workbook.close() - - #鏁版嵁鐨勫紑濮嬩笅鏍� - data_start_index=6 - #淇℃伅鐨勫紑濮嬭鍙� - start_row_index = 1 - #瀛樺偍绔欑偣淇℃伅 - stations = [] - for i in range (start_row_index,len(array2d_excel)): - st={"name":array2d_excel[i][1],"row":array2d_excel[i][4],"column":array2d_excel[i][5]} - data=[] - for j in range(data_start_index,len(array2d_excel[i])): - cell_data = array2d_excel[i][j] - cell_data= cell_data/100/30*0.15 - data.append(round(cell_data, 6)) - st["data"]= data - stations.append(st) - - return stations #杩愯妯″瀷 @@ -712,22 +532,30 @@ def runModel(): model_name = request.args.get('model_name') - msg= Predict.run_model_predict(model_name) - #瀵煎嚭csv鏂囦欢 - csvpath = CalHead.exportCsV(model_name) + if model_name == base.not_allowed_model or model_name in base.archive_models: + return jsonify("鏈ā鍨嬩负楠岃瘉妯″瀷,涓嶅厑璁镐慨鏀癸紒") - #鏇存柊妯″瀷涓夌淮缃戞牸閰嶇疆 + dicts= Predict.run_model_predict(model_name) + if dicts["code"] == 400: + return dicts["msg"] + #瀵煎嚭csv鏂囦欢 + CalHead.exportCsV(model_name) + + # #鏇存柊妯″瀷涓夌淮缃戞牸閰嶇疆 base.updateModelConfig(model_name) - #鍒涘缓妯″瀷鐨勪笁缁寸綉鏍� + # #鍒涘缓妯″瀷鐨勪笁缁寸綉鏍� filedir = base.model3d_path + model_name - print(filedir) if not os.path.exists(filedir): os.makedirs(filedir, exist_ok=True) - base.callModelexe() - return jsonify(msg) + base.callModelexe() + #璁$畻姘磋祫婧愰噺鍜屾按鍧囪 + CalHead.run_zonebudget_bal(model_name) + CalHead.run_zonebudget_res(model_name) + + return jsonify(dicts["msg"]) #鐢熸垚妯″瀷csv 鏂囦欢 @app.route('/runModelCsv/', methods=['GET']) @@ -739,23 +567,6 @@ return jsonify(result) - -#鍒濆姘翠綅淇℃伅 -@app.route('/initWater/', methods=['GET']) -def initWater(): - - period = request.args.get('period') - - per = int(period) - - model_name = request.args.get('model_name') - - ml= getModel(model_name) - item = ml.rch.rech.__getitem__(kper=per) - value = item.get_value() - t = np.array(value).tolist() - return jsonify(t) - #鍒涘缓鏂版ā鍨� @app.route('/saveModel/', methods=['GET']) def saveModel(): @@ -763,29 +574,65 @@ modelname = request.args.get('name') startTime = request.args.get('startTime') endTime = request.args.get('endTime') + remark = request.args.get('remark') file_list = os.listdir(base.model_dir) for name in file_list: if name == modelname: return jsonify("妯″瀷鍚嶇О宸茬粡瀛樺湪锛屼笉鍏佽閲嶅鍒涘缓锛�") + + pers = ModelPeriod.get_months_in_range_count(startTime,endTime) + if pers > 60 : + return jsonify("妯″瀷鍒涘缓澶辫触锛屾渶澶氬彧鍏佽60涓懆鏈熺殑杩炵画棰勬祴锛�") dir = base.model_dir + modelname - shutil.copytree(base.predictModel,dir) + + if pers==12: + shutil.copytree(base.predictModel,dir) + else: + #濡傛灉涓嶆槸涓�骞寸殑棰勬祴锛� 鍙兘涓� 鍏朵粬鐨勫鍛ㄦ湡鐨勯娴� 澶т簬 12 涓懆鏈熸垨鑰� 灏忎簬12涓懆鏈� + #棣栧厛鎶�60涓懆鏈熺殑褰撳仛妯″瀷clone涓�浠斤紝 鐒跺悗淇敼 dis wel rch 鏂囦欢 + #wel 鏂囦欢鍜� rch 鏂囦欢涓嶉渶瑕佷慨鏀� + shutil.copytree(base.predictModel60,dir) + Predict.updateDisFile(modelname,pers) + jsondata={"model_name":modelname,"start_time":startTime,"end_time":endTime} predictionJson = base.model_dir + modelname +"\\prediction.json" with open(predictionJson, "w",encoding='utf-8') as outfile: json.dump(jsondata, outfile,ensure_ascii=False) - + + CalHead.addModelJson(modelname, startTime, endTime, remark) return jsonify("鍒涘缓鏂版ā鍨嬪畬姣曪紒") #鍒涘缓鏂版ā鍨� @app.route('/ModelList/', methods=['GET']) def ModelList(): - file_list = os.listdir(base.model_dir) return jsonify(file_list) +#妯″瀷鍒楄〃2 +@app.route('/ModelList2/', methods=['GET']) +def ModelList2(): + model_path = base.prefix +"\\model_list.json" + model_lsit="" + with open(model_path,encoding='utf-8') as f: + model_lsit = json.load(f) + return jsonify(model_lsit) + +#鍒犻櫎妯″瀷 +@app.route('/deleteModel/', methods=['GET']) +def deleteModel(): + model_name = request.args.get('model_name') + if not model_name: + return jsonify({"code":400,"msg":"涓嶅厑璁稿垹闄ょ┖鐩綍锛�"}) + if model_name == base.not_allowed_model: + return jsonify({"code":400,"msg":"楠岃瘉妯″瀷涓嶅厑璁稿垹闄わ紒"}) + + paths = base.model_dir + model_name + shutil.rmtree(paths) + CalHead.removeModelJson(model_name) + return jsonify({"code":200,"msg":"妯″瀷鍒犻櫎瀹屾瘯锛�"}) #棰勬祴鍦烘櫙鍙傛暟 @app.route('/prediction', methods=['POST']) @@ -800,15 +647,19 @@ predictionJson = base.model_dir + model_name +"\\prediction.json" with open(predictionJson, "w",encoding='utf-8') as outfile: json.dump(jsondata, outfile,ensure_ascii=False) - - return jsonify("淇濆瓨棰勬祴鍦烘櫙鍙傛暟瀹屾瘯锛�") + + #杩愯妯″瀷 + dicts = Predict.run_model(model_name) + return jsonify(dicts["msg"]) + #棰勬祴鍦烘櫙鍙傛暟 @app.route('/predictionparam', methods=['GET']) def predictionparam(): - model_name = request.args.get('model_name') + model_name = request.args.get('model_name') + print(model_name) file_list = os.listdir(base.model_dir) if model_name not in file_list: return jsonify("妯″瀷涓嶅瓨鍦紒") @@ -862,28 +713,31 @@ def pump_importdata(): model_name = request.form.get('model_name') - - # ml= getModel(model_name) + types = request.form.get('type') file = request.files.get('file') + print(types) - save_path = base.model_dir + model_name +"\\extra_cell.xlsx" + save_path = base.model_dir + model_name +"\\"+types+".xlsx" + print(save_path) if file: file.save(save_path) - resultDict={"code":200,"msg":"淇濆瓨鏁版嵁瀹屾瘯锛�"} + data= DataTransf.base_excel(model_name,types) + + resultDict={"code":200,"msg":"淇濆瓨鏁版嵁瀹屾瘯锛�","data":data} return jsonify(resultDict) #瑙傛祴浜曞垪琛� @app.route('/obsWellList', methods=['GET']) def obsWellList(): obswell= base.obs_well - dict =[] - for name , row ,column in obswell: - obj ={"name":name,"row":row,"column":column,"Layer":1} - dict.append(obj) + dicts =[] + for wellId, name , row ,column in obswell: + obj ={"wellId":wellId,"name":name,"row":row,"column":column,"Layer":1} + dicts.append(obj) - return jsonify(dict) + return jsonify(dicts) #瑙傛祴浜昪hart鏁版嵁鎺ュ彛 @@ -892,8 +746,9 @@ model_name = request.args.get('model_name') row = request.args.get('row') column = request.args.get('column') + wellId = request.args.get('wellId') - result = CalHead.obsChartdata(model_name, row, column) + result = CalHead.obsChartdata(wellId,model_name, row, column) return jsonify(result) @@ -904,8 +759,8 @@ base_year = request.args.get('base_year') start_time = request.args.get('start_time') end_time = request.args.get('end_time') - - return jsonify(Predict.predict_river_chart(base_year, start_time, end_time)) + value = float(request.args.get('value')) + return jsonify(Predict.predict_river_chart(base_year, start_time, end_time,value)) #棰勬祴椤甸潰 闄嶆按鍥捐〃 @app.route('/predictWaterChart', methods=['GET']) @@ -913,15 +768,57 @@ base_year = request.args.get('base_year') start_time = request.args.get('start_time') end_time = request.args.get('end_time') - return jsonify(Predict.predict_water_chart(base_year, start_time, end_time)) + value = float(request.args.get('value')) + return jsonify(Predict.predict_water_chart(base_year, start_time, end_time,value)) -@app.route('/heatmap', methods=['GET']) -def heatmap(): +#寮�閲囬噺鐨勬姌绾垮浘 +@app.route('/predictWellChart', methods=['POST']) +def predictWellChart(): + + json = request.get_json() + base_year = str(json['base_year']) + start_time = json['start_time'] + end_time = json['end_time'] + data = json['data'] + + return jsonify(Predict.predict_well_chart(base_year, start_time, end_time,data)) + +#娴佸満鍥� +@app.route('/flowField', methods=['GET']) +def flowField(): model_name = request.args.get('model_name') - period = request.args.get('period') - data = CalHead.heatmapdata(model_name,period) - maximum_value = np.max(data) - return jsonify(np.array(data).tolist()) + flowStartTime = int(request.args.get('flowStartTime')) + flowEndTime=int(request.args.get('flowEndTime')) + flowType= request.args.get('flowType') + # layer = int(request.args.get('layer') ) + + pic = str(int(time.time())) +".png" + outpath = base.flow_file + pic + dicts={} + if flowType=="姘翠綅": + dicts = achiveReport.flow_field(model_name, flowStartTime, 0,"娴佸満淇℃伅", "online", outpath) + if flowType=="鍙樺箙": + dicts = achiveReport.getFlowFieldBF(model_name,flowStartTime,flowEndTime,outpath) + + if flowType=="鍩嬫繁": + dicts = achiveReport.getFlowFieldDepth(model_name,flowStartTime, 0,"娴佸満淇℃伅", "online", outpath) + + dicts["path"] = "/xishan/xinshanFlow/"+pic + return jsonify(dicts) + + +#鍒濆姘翠綅娴佸満淇℃伅 +@app.route('/initWaterFlow/', methods=['GET']) +def initWater(): + + model_name = request.args.get('model_name') + layer = int(request.args.get('layer') ) + pic = str(int(time.time())) +".png" + outpath = base.flow_file + pic + result= achiveReport.init_flow_field(model_name, layer,"鍒濆娴佸満淇℃伅", "online", outpath) + if result == "#": + return jsonify("") + return jsonify("/xishan/xinshanFlow/"+pic) #闄嶆按鍧囪 @@ -935,15 +832,104 @@ #鍦扮悆椤甸潰鏁版嵁 @app.route('/earthWaterChart', methods=['GET']) def earthWaterChart(): - + model_name = request.args.get('model_name') indexId = int(request.args.get('index_id')) - data = CalHead.earthWaterChart("202001_202212",indexId) + data = CalHead.earthWaterChart(model_name,indexId) return jsonify(data) + +#娓楅�忕郴鏁� +@app.route('/mdLpf', methods=['GET']) +def mdLpf(): + lf = base.md_lpf + return jsonify(np.array(lf).tolist()) + +#姘磋祫婧愰噺 +@app.route('/water_res', methods=['GET']) +def water_res(): + model_name = request.args.get('model_name') + #姘村潎琛� + path1=base.muiltyModel + model_name +"\\water_bal.txt" + bal = CalHead.water_balance(model_name, path1) + path2=base.muiltyModel + model_name +"\\water_res.txt" + res = CalHead.water_res(model_name,path2) + dicts = BigData.mergeWaterData(bal,res) + + initFlowPNG = achiveReport.getWaterResFiled(model_name,0) + dicts["initFlowPNG"]= "/xishan/xinshanFlow/" + initFlowPNG + + FlowPNG2 = achiveReport.getWaterResFiled(model_name,11) + dicts["lastFlowPNG"]= "/xishan/xinshanFlow/" + FlowPNG2 + dicts["initMonth"] ="2023-01" + dicts["lastMonth"] ="2023-12" + + #姘磋祫婧愰噺 + return dicts + + +#澶氭ā鍨嬪湴涓嬫按浣� +@app.route('/water_depth', methods=['GET']) +def water_depth(): + model_name = request.args.get('model_name') + + result = CalHead.water_depth(model_name) + #姘磋祫婧愰噺 + return result + + +#灏忓満鏅� 鍗曚釜妯″瀷姘翠綅 鍜屽彉骞� +@app.route('/xs_depth', methods=['GET']) +def xs_depth(): + model_name = request.args.get('model_name') + + res = CalHead.xs_depth(model_name) + jsondata= CalHead.get_model_json(model_name) + start_time = jsondata["start_time"] + end_time = jsondata["end_time"] + months = ModelPeriod.get_months_in_range_ym(start_time, end_time) + res["months"] = months + #姘磋祫婧愰噺 + return res + +#淇濆瓨鐩戞祴绔欓檷闆ㄩ噺 +@app.route('/sensor_jyl_list', methods=['GET']) +def sensor_jyl_list(): + model_name = request.args.get('model_name') + data = OpenExcel.read_excel(model_name) + return jsonify(data) + +#淇濆瓨鐩戞祴绔欓檷闆ㄩ噺 +@app.route('/sensor_jyl_save', methods=['POST']) +def sensor_jyl_save(): + json = request.get_json() + model_name = str(json['model_name']) + data = json['data'] + OpenExcel.write_excel(model_name,data) + return jsonify("淇濆瓨瀹屾瘯") + +#鏈堟姤鍐呭 +@app.route('/xs_month_report', methods=['GET']) +def xs_month_report(): + model_name = request.args.get('model_name') + per = int(request.args.get('period')) + res = achiveReport.archive_report_content(model_name,per) + return res + + +#瀹炴椂鏁版嵁 +@app.route('/xs_real_data', methods=['GET']) +def xs_real_data(): + num = request.args.get('num') + start_time = request.args.get('start_time') + end_time = request.args.get('end_time') + types = request.args.get('types') + res = DataTask.get_data(types,num,start_time,end_time) + return jsonify(res) + + if __name__ == '__main__': #app.run() # 鍙互鎸囧畾杩愯鐨勪富鏈篒P鍦板潃锛岀鍙o紝鏄惁寮�鍚皟璇曟ā寮� - app.run(host="192.168.0.122", port=5000) - - - + app.run(host="localhost", port=5000) + + -- Gitblit v1.9.1