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