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