浏览代码

任务登记模块更新

xuguoyang 9 月之前
父节点
当前提交
32b46b63b6
共有 2 个文件被更改,包括 35 次插入18 次删除
  1. 4 2
      models/taskRegistration_base.py
  2. 31 16
      routers/api/taskRegistration/__init__.py

+ 4 - 2
models/taskRegistration_base.py

@@ -5,6 +5,7 @@ from datetime import datetime
 # from database import Base
 from sqlalchemy.ext.declarative import declarative_base
 from sqlalchemy.orm import relationship, sessionmaker
+from sqlalchemy import func
 
 
 
@@ -24,9 +25,10 @@ class TaskRegistration(Base):
     task_description = Column(Text, nullable=False,comment='任务内容/描述')
     registrar = Column(String(255), nullable=False,comment='登记人')
     registrar_id = Column(String(255), nullable=False,comment='登记人ID')
-    creation_time = Column(DateTime, default=datetime.now, comment='创建时间')
-    update_time = Column(DateTime, default=datetime.now, comment='创建时间')
+    creation_time = Column(DateTime, default=datetime.now,comment='创建时间')
+    update_time = Column(DateTime, default=datetime.now,comment='创建时间')
     processing_status = Column(String(50), default='处理中',comment='任务状态')
+    event_code = Column(String(50), nullable=False,comment='关联事件ID')
 
     # 你可以添加更多的字段和关系,例如与用户模型的外键关系
     # user_id = Column(Integer, ForeignKey('users.id'))

+ 31 - 16
routers/api/taskRegistration/__init__.py

@@ -8,7 +8,7 @@ from models import *
 from common.db import db_task
 from common.security import valid_access_token
 from datetime import datetime, timedelta
-from fastapi import APIRouter, Depends,HTTPException,Response,Query
+from fastapi import APIRouter, Depends, HTTPException, Response, Query
 from database import get_db
 from pydantic import BaseModel
 
@@ -23,17 +23,19 @@ async def create_task(
         user_id=Depends(valid_access_token)):
     try:
         # 验证必需的字段
-        required_fields = ['task_description', 'unit_name', 'registrar']
+        required_fields = ['task_description', 'unit_name', 'registrar','event_code']
         missing_fields = [field for field in required_fields if field not in body]
         if missing_fields:
             raise HTTPException(status_code=401, detail=f"Missing required fields: {', '.join(missing_fields)}")
 
-        # eventId = db_event_management.get_next_event_id(db)
-        task_id =db_task.get_next_event_id(db)
+        event_code = db.query(EventBase).filter(EventBase.event_code == body.get('event_code')).first()
+        if not event_code:
+            return Response(content="事件不存在", status_code=400)
+        task_id = db_task.get_next_event_id(db)
 
         task_base = TaskRegistration(
             **body,
-            task_id = task_id
+            task_id=task_id
         )
         db.add(task_base)
         db.commit()
@@ -49,6 +51,7 @@ async def create_task(
         traceback.print_exc()
         raise HTTPException(status_code=500, detail=f"Internal server error: {str(e)}")
 
+
 class TaskQuery(BaseModel):
     task_id: str = None
     task_description: str = None
@@ -57,6 +60,8 @@ class TaskQuery(BaseModel):
     creation_time: str = None
     processing_status: str = None
 
+
+
 @router.post('/select')
 @router.get('/select')
 async def select_tasks(
@@ -67,9 +72,17 @@ async def select_tasks(
         sortOrder: str = Query(None, description="排序顺序"),
         user_id=Depends(valid_access_token),
         pageNum: int = Query(1, gt=0, description="页码"),
+        event_code: str = Query(None, description="事件ID"),
         pageSize: int = Query(10, gt=0, le=100, description="每页大小")):
     try:
+        missing_event_code = db.query(EventBase).filter(EventBase.event_code == event_code).first()
+        print(missing_event_code)
+        if not missing_event_code:
+            return Response(content="事件不存在", status_code=400)
+
+
         data_query = db.query(TaskRegistration).filter(TaskRegistration.del_flag != '2')
+        data_query = data_query.filter(TaskRegistration.event_code == event_code)
 
         # 应用过滤条件
         if query.task_id:
@@ -95,9 +108,7 @@ async def select_tasks(
 
 
         total_count = data_query.count()
-        # 计算分页的偏移量
         offset = (pageNum - 1) * pageSize
-        # 应用分页
         data_query = data_query.offset(offset).limit(pageSize)
 
         tasks = data_query.all()
@@ -118,17 +129,20 @@ async def select_tasks(
         raise HTTPException(status_code=500, detail=f"Internal server error: {str(e)}")
 
 
-
-
 @router.put('/update')
 async def update_task_status(
         request: Request,
         db: Session = Depends(get_db),
-        user_id=Depends(valid_access_token)):  # 确保用户已验证
+        user_id=Depends(valid_access_token)):
     body = await request.json()
     task_id_to_use = body.get('task_id')
     processing_status = body.get('processing_status')
 
+    event_code = db.query(EventBase).filter(EventBase.event_code == body.get('event_code')).first()
+    if not event_code:
+        return Response(content="事件不存在", status_code=400)
+
+
     if not task_id_to_use:
         return Response(content="Missing required parameter 'task_id'", status_code=400)
     if processing_status not in ['已完成', '未完成']:
@@ -161,21 +175,23 @@ async def update_task_status(
 
 @router.delete('/delete')
 async def delete_task(
-    request: Request,
-    db: Session = Depends(get_db),
-    user_id=Depends(valid_access_token)):  # 确保用户已验证
+        request: Request,
+        db: Session = Depends(get_db),
+        user_id=Depends(valid_access_token)):
     try:
         body = await request.json()
         task_id_to_use = body.get('taskID')
         if not task_id_to_use:
             raise HTTPException(status_code=400, detail="Missing required parameter 'taskID'")
 
-        # 查询要删除的任务
+        event_code = db.query(EventBase).filter(EventBase.event_code == body.get('event_code')).first()
+        if not event_code:
+            return Response(content="事件不存在", status_code=400)
+
         task_entry = db.query(TaskRegistration).filter(TaskRegistration.task_id == task_id_to_use).first()
         if not task_entry:
             raise HTTPException(status_code=404, detail="任务不存在")
 
-        # 将找到的任务的 del_flag 改为 '2'
         task_entry.del_flag = '2'
 
         try:
@@ -192,7 +208,6 @@ async def delete_task(
             raise HTTPException(status_code=500, detail=f"An error occurred while deleting the task: {str(e)}")
 
     except HTTPException as e:
-        # 如果捕获到HTTP异常,直接抛出
         raise e
     except Exception as e:
         db.rollback()