|
@@ -5,6 +5,7 @@ import logging
|
|
|
import ollama
|
|
|
import json
|
|
|
import datetime
|
|
|
+import uuid
|
|
|
|
|
|
app = Flask(__name__)
|
|
|
|
|
@@ -87,19 +88,8 @@ def inputMsg():
|
|
|
# 返回响应
|
|
|
return jsonify(json_res)
|
|
|
|
|
|
-# 获取因子信息
|
|
|
-def getFactorByName(name):
|
|
|
- with conn.cursor(cursor_factory=DictCursor) as cur:
|
|
|
- sql = "SELECT id,bsm FROM base.t_fzss_fzxz_factor WHERE name = %s"
|
|
|
- complete_sql = cur.mogrify(sql, (name,)).decode('utf-8')
|
|
|
- logger.info(f"Executing SQL: {complete_sql}")
|
|
|
- cur.execute(sql, (name,))
|
|
|
- # res = cur.fetchall()
|
|
|
- res = cur.fetchone()
|
|
|
- id = str(res['id'])
|
|
|
- return res
|
|
|
-
|
|
|
|
|
|
+# 将大模型解析的结果转换为选址需要的数据格式
|
|
|
def jsonResToDict(json_res):
|
|
|
now = datetime.datetime.now()
|
|
|
formatted_time = now.strftime("%Y%m%d%H%M%S")
|
|
@@ -107,10 +97,11 @@ def jsonResToDict(json_res):
|
|
|
"xzmj": 1500,
|
|
|
"xmmc": "规划选址项目_"+formatted_time,
|
|
|
"jsdw": "建设单位",
|
|
|
- "ydxz_bsm": "07", #TODO: 从数据库中获取
|
|
|
+ "ydxz_bsm": "07", # TODO: 从数据库中获取
|
|
|
"ydmjbegin": json_res["ydmjbegin"],
|
|
|
"ydmjend": json_res["ydmjbegin"],
|
|
|
"geomId": "ecc08a3f4f234befb7f49f9809534164", # TODO: 从数据库中获取
|
|
|
+ "yxyz": [],
|
|
|
# TODO: 循环遍历
|
|
|
# "yxyz": [
|
|
|
# {
|
|
@@ -131,9 +122,83 @@ def jsonResToDict(json_res):
|
|
|
"useLandType": json_res["multipleDistance"],
|
|
|
"multipleDistance": json_res["multipleDistance"]
|
|
|
}
|
|
|
+ # 循环遍历因子
|
|
|
+ factors = json_res["yxyz"]
|
|
|
+ for factor in factors:
|
|
|
+ factorInfo = getFactorByName(factor["name"])
|
|
|
+ factorId = factorInfo["id"]
|
|
|
+ factorBsm = factorInfo["bsm"]
|
|
|
+ conditionInfo = factorInfo["condition_info"]
|
|
|
+ conditionObj = json.loads(conditionInfo)
|
|
|
+
|
|
|
+ factor_info = {
|
|
|
+ "id": factorId,
|
|
|
+ "name": factor["name"],
|
|
|
+ "bsm": factorBsm,
|
|
|
+ "conditionInfo": {
|
|
|
+ "spatial_type": conditionObj["spatial_type"],
|
|
|
+ "default": factor["default"],
|
|
|
+ "hasValue": conditionObj["hasValue"],
|
|
|
+ "defaultValue": factor["defaultValue"],
|
|
|
+ "unit": conditionObj["unit"],
|
|
|
+ "clip": conditionObj["clip"]
|
|
|
+ }
|
|
|
+ }
|
|
|
+ res["yxyz"].append(factor_info)
|
|
|
+
|
|
|
return res
|
|
|
|
|
|
+# 获取内置模板信息
|
|
|
+def getTemplateByCode(code):
|
|
|
+ with conn.cursor(cursor_factory=DictCursor) as cur:
|
|
|
+ sql = "SELECT * FROM base.t_fzss_fzxz_factor_temp WHERE land_type_code = %s"
|
|
|
+ complete_sql = cur.mogrify(sql, (code,)).decode('utf-8')
|
|
|
+ logger.info(f"Executing SQL: {complete_sql}")
|
|
|
+ cur.execute(sql, (code,))
|
|
|
+ res = cur.fetchall()
|
|
|
+ return res
|
|
|
+
|
|
|
+# 获取选址范围信息
|
|
|
+def getAiDistrict(name):
|
|
|
+ with conn.cursor(cursor_factory=DictCursor) as cur:
|
|
|
+ sql = "SELECT public.st_asewkt(geom) as geom FROM base.t_fzss_fzxz_ai_district WHERE name = %s"
|
|
|
+ complete_sql = cur.mogrify(sql, (name,)).decode('utf-8')
|
|
|
+ logger.info(f"Executing SQL: {complete_sql}")
|
|
|
+ cur.execute(sql, (name,))
|
|
|
+ res = cur.fetchone()
|
|
|
+ return res["geom"]
|
|
|
+
|
|
|
+
|
|
|
+# 保存选址范围信息
|
|
|
+def saveGeom(ewkt):
|
|
|
+ new_uuid = str(uuid.uuid4()) # 生成一个新的 UUID
|
|
|
+ from_type = 3
|
|
|
+ with conn.cursor() as cur:
|
|
|
+ sql = "INSERT INTO base.t_fzss_zhxz_file(id,geom,from_type,create_time,area) VALUES (%s,public.st_geomfromewkt(%s),%s,now(),public.st_area(public.st_geomfromewkt(%s)::public.geography))"
|
|
|
+ complete_sql = cur.mogrify(sql, (new_uuid, ewkt,from_type,ewkt)).decode('utf-8')
|
|
|
+ logger.info(f"Executing SQL: {complete_sql}")
|
|
|
+ cur.execute(sql, (new_uuid, ewkt,from_type,ewkt))
|
|
|
+ conn.commit()
|
|
|
+ return new_uuid
|
|
|
+
|
|
|
+# 获取因子信息
|
|
|
+def getFactorByName(name):
|
|
|
+ with conn.cursor(cursor_factory=DictCursor) as cur:
|
|
|
+ sql = "SELECT * FROM base.t_fzss_fzxz_factor WHERE name = %s"
|
|
|
+ complete_sql = cur.mogrify(sql, (name,)).decode('utf-8')
|
|
|
+ logger.info(f"Executing SQL: {complete_sql}")
|
|
|
+ cur.execute(sql, (name,))
|
|
|
+ res = cur.fetchone()
|
|
|
+ return res
|
|
|
+
|
|
|
+# getTemplateByCode("08")
|
|
|
+
|
|
|
+# getAiDistrict("抱坡区")
|
|
|
+
|
|
|
+# ewkt="SRID=4326;POLYGON ((109.568515723151 18.2729002407864, 109.564270326708 18.2607742953866, 109.580087492139 18.2571512198688, 109.588461804591 18.2570597503377, 109.58884305979 18.2645363088176, 109.582107142538 18.2732736518031, 109.568515723151 18.2729002407864))"
|
|
|
+# saveGeom(ewkt)
|
|
|
|
|
|
# getFactorByName("幼儿园服务半径")
|
|
|
+
|
|
|
if __name__ == '__main__':
|
|
|
app.run()
|