|
@@ -213,7 +213,7 @@ async def get_knowledge_detail(db: Session = Depends(get_db), reportID: Optional
|
|
|
|
|
|
|
|
|
|
|
|
-@router.post('/delete')
|
|
|
+@router.delete ('/delete')
|
|
|
async def delete_knowledge(request: Request, db: Session = Depends(get_db)):
|
|
|
# 从请求的 JSON 数据中获取 reportID
|
|
|
body = await request.json()
|
|
@@ -239,8 +239,6 @@ async def delete_knowledge(request: Request, db: Session = Depends(get_db)):
|
|
|
if hasattr(kb_entry, 'del_flag'):
|
|
|
kb_entry.del_flag = 2
|
|
|
|
|
|
-
|
|
|
-
|
|
|
try:
|
|
|
db.commit()
|
|
|
return {
|
|
@@ -248,7 +246,6 @@ async def delete_knowledge(request: Request, db: Session = Depends(get_db)):
|
|
|
"msg": "操作成功",
|
|
|
"data": {
|
|
|
"report_id": kb_entry.reportId
|
|
|
- # "is_deleted": kb_entry.is_deleted
|
|
|
}
|
|
|
}
|
|
|
except Exception as e:
|
|
@@ -256,6 +253,64 @@ async def delete_knowledge(request: Request, db: Session = Depends(get_db)):
|
|
|
return Response(content="An error occurred while deleting the record: " + str(e), status_code=500)
|
|
|
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+@router.delete('/delete/list')
|
|
|
+async def delete_knowledge_list(request: Request, db: Session = Depends(get_db)):
|
|
|
+ # 从请求的 JSON 数据中获取 reportID
|
|
|
+ body = await request.json()
|
|
|
+ report_id_to_use = body.get('reportID')
|
|
|
+ if not report_id_to_use:
|
|
|
+ return Response(content="Missing required parameter 'reportID'", status_code=400)
|
|
|
+
|
|
|
+
|
|
|
+ # kb_entry = (db.query(KnowledgeBase)
|
|
|
+ # .filter(KnowledgeBase.del_flag != '2') # 确保这里过滤掉 del_flag 等于 '2' 的记录
|
|
|
+ # .filter(KnowledgeBase.reportId.in_report_(id_to_use))) # 确保 reportID 是在过滤后的查询中使用的
|
|
|
+ #
|
|
|
+ # kb_entrys = kb_entry.all()
|
|
|
+ query = db.query(KnowledgeBase)
|
|
|
+ query = query.filter(KnowledgeBase.del_flag != '2')
|
|
|
+ query = query.filter(KnowledgeBase.reportId.in_(report_id_to_use))
|
|
|
+ kb_entrys = query.all()
|
|
|
+
|
|
|
+ if not kb_entrys:
|
|
|
+ raise HTTPException(status_code=404, detail="报告不存在")
|
|
|
+ for kb_entry in kb_entrys:
|
|
|
+ # 将找到的记录的 is_deleted 改为 2
|
|
|
+ kb_entry.is_deleted = 2
|
|
|
+
|
|
|
+ kf_entries = db.query(KnowledgeFile).filter(KnowledgeFile.knowledge_base_code == kb_entry.base_code).all()
|
|
|
+ for kf_entry in kf_entries:
|
|
|
+ kf_entry.is_deleted = 2
|
|
|
+
|
|
|
+ if hasattr(kb_entry, 'del_flag'):
|
|
|
+ kb_entry.del_flag = 2
|
|
|
+
|
|
|
+ try:
|
|
|
+ db.commit()
|
|
|
+ return {
|
|
|
+ "code": 200,
|
|
|
+ "msg": "操作成功",
|
|
|
+ "data": None
|
|
|
+ }
|
|
|
+ except Exception as e:
|
|
|
+ db.rollback()
|
|
|
+ return Response(content="An error occurred while deleting the record: " + str(e), status_code=500)
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
def delete_file_fun(knowledge_base_code,db: Session):
|
|
|
file_query = db.query(KnowledgeFile)
|
|
|
file_query = file_query.filter(KnowledgeFile.is_deleted != '2')
|
|
@@ -269,7 +324,7 @@ def delete_file_fun(knowledge_base_code,db: Session):
|
|
|
|
|
|
|
|
|
|
|
|
-@router.post('/update')
|
|
|
+@router.put('/update')
|
|
|
async def update_knowledge(request: Request, db: Session = Depends(get_db)):
|
|
|
body = await request.json()
|
|
|
report_id_to_use = body.get('reportId')
|
|
@@ -335,6 +390,51 @@ async def update_knowledge(request: Request, db: Session = Depends(get_db)):
|
|
|
|
|
|
|
|
|
|
|
|
+@router.put('/update/list')
|
|
|
+async def update_knowledge_list(request: Request, db: Session = Depends(get_db)):
|
|
|
+ body = await request.json()
|
|
|
+ update_items = body.get('updateItems')
|
|
|
+ if not update_items or not isinstance(update_items, list):
|
|
|
+ return Response(content="Missing required parameter 'updateItems'", status_code=400)
|
|
|
+
|
|
|
+ try:
|
|
|
+ for item in update_items:
|
|
|
+ report_id_to_use = item.get('reportId')
|
|
|
+ if not report_id_to_use:
|
|
|
+ continue # 如果没有提供 reportId,则跳过当前项
|
|
|
+
|
|
|
+ # 根据 reportId 查找 KnowledgeBase 记录
|
|
|
+ kb_entry = db.query(KnowledgeBase).filter(
|
|
|
+ KnowledgeBase.reportId == report_id_to_use
|
|
|
+ ).first()
|
|
|
+ if not kb_entry:
|
|
|
+ continue # 如果没有找到记录,则跳过当前项
|
|
|
+
|
|
|
+ # 更新 KnowledgeBase 记录
|
|
|
+ for field, value in item.items():
|
|
|
+ if field != 'reportId' and hasattr(kb_entry, field):
|
|
|
+ setattr(kb_entry, field, value)
|
|
|
+
|
|
|
+ kb_entry.updateTime = datetime.fromisoformat(item.get('publishDate'))
|
|
|
+
|
|
|
+ # 提交事务
|
|
|
+ db.commit()
|
|
|
+ return {
|
|
|
+ "code": 200,
|
|
|
+ "msg": "批量更新成功",
|
|
|
+ "data": {
|
|
|
+ "updated_count": len(update_items)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ except IntegrityError as e:
|
|
|
+ db.rollback()
|
|
|
+ return Response(content=f"Database error: {str(e)}", status_code=409)
|
|
|
+ except Exception as e:
|
|
|
+ db.rollback()
|
|
|
+ return Response(content=str(e), status_code=500)
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
|
|
|
|
|
|
|