|
@@ -246,7 +246,7 @@ async def select_tasks(
|
|
|
request: Request,
|
|
|
task_type: str = Query(None),
|
|
|
processing_status: str = Query(None),
|
|
|
- task_description: str = Query(None),
|
|
|
+ search_keyword: str = Query(None),
|
|
|
page: int = Query(1, gt=0, description="页码"),
|
|
|
page_size: int = Query(10, gt=0, le=100, description="每页大小"),
|
|
|
db: Session = Depends(get_db)):
|
|
@@ -255,8 +255,8 @@ async def select_tasks(
|
|
|
# 应用过滤条件
|
|
|
if task_type is not None:
|
|
|
data_query = data_query.filter(TaskRegistration.task_type == task_type)
|
|
|
- if task_description is not None:
|
|
|
- data_query = data_query.filter(TaskRegistration.task_description == task_description)
|
|
|
+ if search_keyword is not None:
|
|
|
+ data_query = data_query.filter(TaskRegistration.task_description.like('%{}%'.format(search_keyword)))
|
|
|
if processing_status is not None:
|
|
|
data_query = data_query.filter(TaskRegistration.processing_status == processing_status)
|
|
|
|
|
@@ -389,17 +389,26 @@ async def get_task_detail(
|
|
|
print('task_id:',task_id)
|
|
|
try:
|
|
|
# 构建查询
|
|
|
- rows = db.query(TaskFeeback).filter(and_(TaskFeeback.task_id == task_id, TaskFeeback.feeback_type == '0')).all()
|
|
|
+ rows = db.query(TaskFeeback).filter(and_(TaskFeeback.task_id == task_id)).all()
|
|
|
feebacks = []
|
|
|
for row in rows:
|
|
|
fileList = []
|
|
|
+ # 附件
|
|
|
+ rows = db.query(TaskFile).filter(and_(TaskFile.from_scenario=="task_feeback", TaskFile.foreign_key == row.id, InfoPublishFile.del_flag == '0')).all()
|
|
|
+ fileList = [
|
|
|
+ {
|
|
|
+ "name": row.file_name,
|
|
|
+ "url": row.storage_file_name
|
|
|
+ }
|
|
|
+ for row in rows
|
|
|
+ ]
|
|
|
|
|
|
- feebacks.append({
|
|
|
- "content": row.content,
|
|
|
- "create_time": get_datetime_str(row.create_time),
|
|
|
- 'fileList': fileList,
|
|
|
- "fileCount": len(fileList)
|
|
|
- })
|
|
|
+ info = get_model_dict(row)
|
|
|
+ info['create_time'] = get_datetime_str(row.create_time)
|
|
|
+ info['approval_time'] = get_datetime_str(row.approval_time)
|
|
|
+ info['fileList'] = fileList
|
|
|
+ info['fileCount'] = len(fileList)
|
|
|
+ feebacks.append(info)
|
|
|
|
|
|
|
|
|
query = db.query(TaskRegistration)
|
|
@@ -436,4 +445,97 @@ async def get_task_detail(
|
|
|
except Exception as e:
|
|
|
# 处理异常
|
|
|
traceback.print_exc()
|
|
|
- raise HTTPException(status_code=500, detail=str(e))
|
|
|
+ raise HTTPException(status_code=500, detail=str(e))
|
|
|
+
|
|
|
+
|
|
|
+# 请示列表
|
|
|
+@router.get('/request/list')
|
|
|
+async def select_tasks(
|
|
|
+ request: Request,
|
|
|
+ task_type: str = Query(None),
|
|
|
+ processing_status: str = Query(None),
|
|
|
+ search_keyword: str = Query(None),
|
|
|
+ page: int = Query(1, gt=0, description="页码"),
|
|
|
+ page_size: int = Query(10, gt=0, le=100, description="每页大小"),
|
|
|
+ db: Session = Depends(get_db)):
|
|
|
+ try:
|
|
|
+ data_query = db.query(TaskFeeback).filter(TaskFeeback.feeback_type == '1')
|
|
|
+ # 应用过滤条件
|
|
|
+ if task_type is not None:
|
|
|
+ subquery = db.query(TaskRegistration.task_id).filter(and_(TaskRegistration.del_flag == '0', TaskRegistration.task_type == task_type)).subquery()
|
|
|
+ data_query = data_query.filter(TaskFeeback.task_id == subquery.c.task_id)
|
|
|
+ if processing_status is not None:
|
|
|
+ data_query = data_query.filter(TaskFeeback.processing_status == processing_status)
|
|
|
+ if search_keyword is not None:
|
|
|
+ data_query = data_query.filter(TaskFeeback.content.like('%{}%'.format(search_keyword)))
|
|
|
+
|
|
|
+ total_count = data_query.count()
|
|
|
+ offset = (page - 1) * page_size
|
|
|
+ data_query = data_query.order_by(TaskFeeback.create_time.desc()).offset(offset).limit(page_size)
|
|
|
+
|
|
|
+ data = []
|
|
|
+ tasks = data_query.all()
|
|
|
+ for n in tasks:
|
|
|
+ task = get_model_dict(n)
|
|
|
+ task['nick_name'] = db_user.get_nick_name_by_id(db, task['recorded_by'])
|
|
|
+ task['create_time'] = get_datetime_str(task['create_time'])
|
|
|
+ task['approval_time'] = get_datetime_str(task['approval_time'])
|
|
|
+
|
|
|
+ task['update_time'] = task['create_time']
|
|
|
+ if task['approval_time'] != None:
|
|
|
+ task['update_time'] = task['approval_time']
|
|
|
+
|
|
|
+ task['event_name'] = ''
|
|
|
+
|
|
|
+ task_id = task['task_id']
|
|
|
+ reg_info = db.query(TaskRegistration).filter(TaskRegistration.task_id == task_id).first()
|
|
|
+ if reg_info is not None:
|
|
|
+ reg_info = get_model_dict(reg_info)
|
|
|
+ task['event_name'] = db_event_management.get_event_title(db, reg_info['event_code'])
|
|
|
+ data.append(task)
|
|
|
+ return {
|
|
|
+ "code": 200,
|
|
|
+ "msg": "请示查询成功",
|
|
|
+ "data": data,
|
|
|
+ "total": total_count
|
|
|
+ }
|
|
|
+
|
|
|
+ except Exception as e:
|
|
|
+ traceback.print_exc()
|
|
|
+ raise HTTPException(status_code=500, detail=f"Internal server error: {str(e)}")
|
|
|
+
|
|
|
+# 请示批复
|
|
|
+@router.post("/approval")
|
|
|
+async def approval(
|
|
|
+ request: Request,
|
|
|
+ db: Session = Depends(get_db),
|
|
|
+ body = Depends(remove_xss_json),
|
|
|
+ user_id = Depends(valid_access_token)
|
|
|
+):
|
|
|
+ try:
|
|
|
+ feeback_id = get_req_param(body, "feeback_id")
|
|
|
+ approval_content = get_req_param_optional(body, 'approval_content')
|
|
|
+
|
|
|
+ row = db.query(TaskFeeback).filter(TaskFeeback.id == feeback_id).first()
|
|
|
+ if row is None:
|
|
|
+ return {
|
|
|
+ "code": 500,
|
|
|
+ "msg": "请示不存在"
|
|
|
+ }
|
|
|
+
|
|
|
+ row.approval_content = approval_content
|
|
|
+ row.approval_time = datetime.now()
|
|
|
+ row.processing_status = '已完成'
|
|
|
+ db.commit()
|
|
|
+
|
|
|
+ return {
|
|
|
+ "code": 200,
|
|
|
+ "msg": "请示批复保存成功"
|
|
|
+ }
|
|
|
+
|
|
|
+ except Exception as e:
|
|
|
+ # 处理异常
|
|
|
+ db.rollback()
|
|
|
+ traceback.print_exc()
|
|
|
+ raise HTTPException(status_code=500, detail=str(e))
|
|
|
+
|