|
@@ -2,11 +2,13 @@
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
|
|
from fastapi import APIRouter, Request, Depends
|
|
|
+from pydantic import BaseModel
|
|
|
from fastapi.responses import JSONResponse
|
|
|
from database import get_db
|
|
|
from sqlalchemy.orm import Session
|
|
|
from datetime import datetime
|
|
|
from models import *
|
|
|
+from utils import *
|
|
|
import json
|
|
|
|
|
|
router = APIRouter()
|
|
@@ -73,23 +75,37 @@ async def get_emergency_plan_list(
|
|
|
# 处理异常
|
|
|
raise HTTPException(status_code=500, detail=str(e))
|
|
|
|
|
|
+class File(BaseModel):
|
|
|
+ file_name:str
|
|
|
+ file_name_desc:str
|
|
|
+ file_path : str = 'null'
|
|
|
+
|
|
|
+class PlanCreateForm(BaseModel):
|
|
|
+ plan_name : str
|
|
|
+ plan_type : int
|
|
|
+ plan_type_desc : str
|
|
|
+ publish_date: str
|
|
|
+ organizing_unit : str
|
|
|
+ document_number : str
|
|
|
+ file_list : List[File] = []
|
|
|
+
|
|
|
@router.post('/plan/create')
|
|
|
async def create_emergency_plan(
|
|
|
- plan_data: dict,
|
|
|
+ form_data:PlanCreateForm,
|
|
|
db: Session = Depends(database.get_db)
|
|
|
):
|
|
|
try:
|
|
|
# 提取请求数据
|
|
|
- plan_name = plan_data.get('plan_name')
|
|
|
- plan_type = plan_data.get('plan_type')
|
|
|
- plan_type_desc = plan_data.get('plan_type_desc')
|
|
|
- publish_date = plan_data.get('publish_date') # 如果没有提供发布日期,则使用当前时间
|
|
|
- organizing_unit = plan_data.get('organizing_unit') # 使用用户位置作为编制单位
|
|
|
- document_number = plan_data.get('document_number')
|
|
|
+ plan_name = form_data.plan_name
|
|
|
+ plan_type = form_data.plan_type
|
|
|
+ plan_type_desc = form_data.plan_type_desc
|
|
|
+ publish_date = form_data.publish_date # 如果没有提供发布日期,则使用当前时间
|
|
|
+ organizing_unit = form_data.organizing_unit # 使用用户位置作为编制单位
|
|
|
+ document_number = form_data.document_number
|
|
|
|
|
|
# 创建新的预案记录
|
|
|
new_plan = EmergencyPlan(
|
|
|
- plan_id=uuid.uuid4().hex, # 假设使用 UUID 作为预案 UID
|
|
|
+ plan_id=new_guid(), # 假设使用 UUID 作为预案 UID
|
|
|
plan_name=plan_name,
|
|
|
plan_type=plan_type,
|
|
|
plan_type_desc=plan_type_desc,
|
|
@@ -104,87 +120,103 @@ async def create_emergency_plan(
|
|
|
db.refresh(new_plan) # 可选,如果需要刷新实例状态
|
|
|
new_plan.plan_number= f'YJYA{str(new_plan.id).zfill(10)}'
|
|
|
db.commit()
|
|
|
- # 返回创建成功的响应
|
|
|
- return {
|
|
|
- "code": 200,
|
|
|
- "msg": "预案创建成功",
|
|
|
- "data": None
|
|
|
- }
|
|
|
- except Exception as e:
|
|
|
- # 处理异常
|
|
|
- raise HTTPException(status_code=500, detail=str(e))
|
|
|
-
|
|
|
-
|
|
|
-@router.put('/plan/update')
|
|
|
-async def update_emergency_plan(
|
|
|
- plan_data: dict,
|
|
|
- db: Session = Depends(database.get_db)
|
|
|
-):
|
|
|
- try:
|
|
|
- # 提取请求数据
|
|
|
- query = db.query(EmergencyPlan)
|
|
|
- query = query.filter(EmergencyPlan.plan_id == plan_data.get('plan_id'))
|
|
|
- query = query.filter(EmergencyPlan.del_flag != '2')
|
|
|
- plan = query.first()
|
|
|
- if not plan:
|
|
|
- detail = "预案不存在"
|
|
|
- raise HTTPException(status_code=404, detail="预案不存在")
|
|
|
-
|
|
|
- plan.plan_name = plan_data.get('plan_name')
|
|
|
- plan.plan_type = plan_data.get('plan_type')
|
|
|
- plan.plan_type_desc = plan_data.get('plan_type_desc')
|
|
|
- plan.publish_date = plan_data.get('publish_date') # 如果没有提供发布日期,则使用当前时间
|
|
|
- plan.organizing_unit = plan_data.get('organizing_unit') # 使用用户位置作为编制单位
|
|
|
- plan.document_number = plan_data.get('document_number')
|
|
|
-
|
|
|
-
|
|
|
- # 更新到数据库会话并提交
|
|
|
- db.commit()
|
|
|
- db.refresh(new_plan) # 可选,如果需要刷新实例状态
|
|
|
+ for file in form_data.file_list:
|
|
|
+ file_name = file.file_name
|
|
|
+ file_name_desc = file.file_name_desc
|
|
|
+ file_path = file.file_path
|
|
|
+ new_file = EmergencyFile(
|
|
|
+ file_id = new_guid(),
|
|
|
+ foreign_key = new_plan.plan_id,
|
|
|
+ from_scenario = 'emergencyPlans_plan',
|
|
|
+ file_name=file_name,
|
|
|
+ file_name_desc = file_name_desc,
|
|
|
+ file_path = file_path
|
|
|
+ )
|
|
|
+ db.add(new_file)
|
|
|
+ db.commit()
|
|
|
+ db.refresh(new_file)
|
|
|
|
|
|
# 返回创建成功的响应
|
|
|
return {
|
|
|
"code": 200,
|
|
|
- "msg": "预案更新成功",
|
|
|
+ "msg": "预案创建成功",
|
|
|
"data": None
|
|
|
}
|
|
|
except Exception as e:
|
|
|
# 处理异常
|
|
|
- if str(e)=='':
|
|
|
- e = detail
|
|
|
raise HTTPException(status_code=500, detail=str(e))
|
|
|
|
|
|
|
|
|
-@router.delete('/plan/delete')
|
|
|
-async def delete_emergency_plan(
|
|
|
- plan_data: dict,
|
|
|
- db: Session = Depends(database.get_db)
|
|
|
-):
|
|
|
- try:
|
|
|
- # 提取请求数据
|
|
|
- query = db.query(EmergencyPlan)
|
|
|
- query = query.filter(EmergencyPlan.plan_id == plan_data.get('plan_id'))
|
|
|
- query = query.filter(EmergencyPlan.del_flag != '2')
|
|
|
- plan = query.first()
|
|
|
- if not plan:
|
|
|
- detail = "预案不存在"
|
|
|
- raise HTTPException(status_code=404, detail="预案不存在")
|
|
|
-
|
|
|
- plan.del_flag = '2'
|
|
|
-
|
|
|
- # 更新到数据库会话并提交
|
|
|
- db.commit()
|
|
|
- db.refresh(new_plan) # 可选,如果需要刷新实例状态
|
|
|
-
|
|
|
- # 返回创建成功的响应
|
|
|
- return {
|
|
|
- "code": 200,
|
|
|
- "msg": "预案删除成功",
|
|
|
- "data": None
|
|
|
- }
|
|
|
- except Exception as e:
|
|
|
- # 处理异常
|
|
|
- if str(e) == '':
|
|
|
- e = detail
|
|
|
- raise HTTPException(status_code=500, detail=str(e))
|
|
|
+# @router.put('/plan/update')
|
|
|
+# async def update_emergency_plan(
|
|
|
+# plan_data: dict,
|
|
|
+# db: Session = Depends(database.get_db)
|
|
|
+# ):
|
|
|
+# try:
|
|
|
+# # 提取请求数据
|
|
|
+# query = db.query(EmergencyPlan)
|
|
|
+# query = query.filter(EmergencyPlan.plan_id == plan_data.get('plan_id'))
|
|
|
+# query = query.filter(EmergencyPlan.del_flag != '2')
|
|
|
+# plan = query.first()
|
|
|
+# if not plan:
|
|
|
+# detail = "预案不存在"
|
|
|
+# raise HTTPException(status_code=404, detail="预案不存在")
|
|
|
+#
|
|
|
+# plan.plan_name = plan_data.get('plan_name')
|
|
|
+# plan.plan_type = plan_data.get('plan_type')
|
|
|
+# plan.plan_type_desc = plan_data.get('plan_type_desc')
|
|
|
+# plan.publish_date = plan_data.get('publish_date') # 如果没有提供发布日期,则使用当前时间
|
|
|
+# plan.organizing_unit = plan_data.get('organizing_unit') # 使用用户位置作为编制单位
|
|
|
+# plan.document_number = plan_data.get('document_number')
|
|
|
+#
|
|
|
+#
|
|
|
+# # 更新到数据库会话并提交
|
|
|
+# db.commit()
|
|
|
+# db.refresh(new_plan) # 可选,如果需要刷新实例状态
|
|
|
+#
|
|
|
+# # 返回创建成功的响应
|
|
|
+# return {
|
|
|
+# "code": 200,
|
|
|
+# "msg": "预案更新成功",
|
|
|
+# "data": None
|
|
|
+# }
|
|
|
+# except Exception as e:
|
|
|
+# # 处理异常
|
|
|
+# if str(e)=='':
|
|
|
+# e = detail
|
|
|
+# raise HTTPException(status_code=500, detail=str(e))
|
|
|
+#
|
|
|
+#
|
|
|
+# @router.delete('/plan/delete')
|
|
|
+# async def delete_emergency_plan(
|
|
|
+# plan_data: dict,
|
|
|
+# db: Session = Depends(database.get_db)
|
|
|
+# ):
|
|
|
+# try:
|
|
|
+# # 提取请求数据
|
|
|
+# query = db.query(EmergencyPlan)
|
|
|
+# query = query.filter(EmergencyPlan.plan_id == plan_data.get('plan_id'))
|
|
|
+# query = query.filter(EmergencyPlan.del_flag != '2')
|
|
|
+# plan = query.first()
|
|
|
+# if not plan:
|
|
|
+# detail = "预案不存在"
|
|
|
+# raise HTTPException(status_code=404, detail="预案不存在")
|
|
|
+#
|
|
|
+# plan.del_flag = '2'
|
|
|
+#
|
|
|
+# # 更新到数据库会话并提交
|
|
|
+# db.commit()
|
|
|
+# db.refresh(new_plan) # 可选,如果需要刷新实例状态
|
|
|
+#
|
|
|
+# # 返回创建成功的响应
|
|
|
+# return {
|
|
|
+# "code": 200,
|
|
|
+# "msg": "预案删除成功",
|
|
|
+# "data": None
|
|
|
+# }
|
|
|
+# except Exception as e:
|
|
|
+# # 处理异常
|
|
|
+# if str(e) == '':
|
|
|
+# e = detail
|
|
|
+# raise HTTPException(status_code=500, detail=str(e))
|
|
|
|