sys_organ.py 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. import sys,os
  2. current_path = os.getcwd()
  3. sys.path.append(current_path)
  4. from typing import Optional
  5. from pydantic import BaseModel
  6. from db.database import get_db
  7. from sqlalchemy.orm import Session
  8. from fastapi import APIRouter, Depends
  9. from agent.libs.sys import SysOrganBusiness
  10. from agent.models.web.response import StandardResponse,FAILED,SUCCESS
  11. class SysOrganRequest(BaseModel):
  12. id: Optional[int] = None
  13. name: str
  14. manager: Optional[str] = None
  15. phone: Optional[str] = None
  16. parent_id: Optional[int] = None
  17. router = APIRouter(prefix="/organ", tags=["机构&科室管理接口"])
  18. @router.get("/loadData", response_model=StandardResponse)
  19. def loadData(db: Session = Depends(get_db)):
  20. datas = SysOrganBusiness(db).get_all_data()
  21. sysOrgan_map = {p.id: {
  22. "id": p.id,
  23. "name": p.name,
  24. "manager": p.manager,
  25. "phone": p.phone,
  26. "parent_id": p.parent_id,
  27. "children": []
  28. } for p in datas}
  29. tree = []
  30. for p_id, p_data in sysOrgan_map.items():
  31. parent_id = p_data["parent_id"]
  32. if parent_id != 0 and parent_id in sysOrgan_map:
  33. sysOrgan_map[parent_id]["children"].append(p_data)
  34. else:
  35. tree.append(p_data)
  36. return StandardResponse(code=SUCCESS, message="机构&科室获取成功", records=tree)
  37. @router.get("/loadDataById/{id}", response_model=StandardResponse)
  38. def loadDataByParentId(id:int,db: Session = Depends(get_db)):
  39. datas = SysOrganBusiness(db).get_all_data()
  40. sysOrgan_map = {p.id: {
  41. "id": p.id,
  42. "name": p.name,
  43. "manager": p.manager,
  44. "phone": p.phone,
  45. "parent_id": p.parent_id,
  46. "children": []
  47. } for p in datas}
  48. tree = []
  49. for p_id, p_data in sysOrgan_map.items():
  50. parent_id1 = p_data["parent_id"]
  51. if parent_id1 != 0 and parent_id1 in sysOrgan_map:
  52. sysOrgan_map[parent_id1]["children"].append(p_data)
  53. else:
  54. tree.append(p_data)
  55. tree2 = []
  56. tree2.append(sysOrgan_map[id])
  57. return StandardResponse(code=SUCCESS, message="机构&科室获取成功", records=tree2)
  58. @router.post("/insert", response_model=StandardResponse)
  59. def insertData(request: SysOrganRequest, db: Session = Depends(get_db)):
  60. biz = SysOrganBusiness(db)
  61. request_name = request.name
  62. request_manager = request.manager
  63. request_phone = request.phone
  64. request_parentId = request.parent_id
  65. if request_name is None or request_name.strip() == '':
  66. return StandardResponse(code=FAILED, message="机构&科室名称不能为空")
  67. data = biz.get_data_by_nameAndParent(request_name,request_parentId)
  68. if data is not None:
  69. return StandardResponse(code=FAILED, message="机构&科室名称已经存在")
  70. user = biz.insert_data(request_name, request_manager,request_phone,request_parentId)
  71. if user is None:
  72. return StandardResponse(code=FAILED, message="创建机构&科室失败")
  73. return StandardResponse(code=SUCCESS, message="创建机构&科室成功")
  74. @router.post("/update", response_model=StandardResponse)
  75. def updateData(request: SysOrganRequest, db: Session = Depends(get_db)):
  76. biz = SysOrganBusiness(db)
  77. if request.name is None or request.name.strip() == '':
  78. return StandardResponse(code=FAILED, message="机构&科室名称不能为空")
  79. data = biz.get_data_by_nameAndParent(request.name,request.parent_id)
  80. if data is not None and data.id != request.id:
  81. return StandardResponse(code=FAILED, message="机构&科室名称已经存在")
  82. biz.update_data(request.id,request.name, request.manager,request.phone,request.parent_id)
  83. return StandardResponse(code=SUCCESS, message="更新机构&科室成功")
  84. @router.post("/delete/{id}", response_model=StandardResponse)
  85. def deleteData(id:int, db: Session = Depends(get_db)):
  86. biz = SysOrganBusiness(db)
  87. data = biz.get_all_data_by_parentId(id)
  88. if data is not None and len(data) > 0:
  89. return StandardResponse(code=FAILED, message="含有子机构&科室,请先删除后再操作")
  90. biz.delete_data(id)
  91. return StandardResponse(code=SUCCESS, message="删除机构&科室成功")
  92. sys_organ = router