Procházet zdrojové kódy

优化新建预案上传记录文件

baoyubo před 10 měsíci
rodič
revize
6ec1370a47
1 změnil soubory, kde provedl 112 přidání a 80 odebrání
  1. 112 80
      routers/api/emergencyPlans/__init__.py

+ 112 - 80
routers/api/emergencyPlans/__init__.py

@@ -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))