ProjectService.py 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. from django.core.paginator import Paginator
  2. import json
  3. from DCbackend.utils.common import success, fail, pageData
  4. from backend.Form.ProjectCategoryForm import ProjectCategoryForm
  5. from backend.Form.ProjectForm import ProjectForm
  6. from backend.Service.CustomerService import CustomerService
  7. from backend.Service.ProjectCategoryService import ProjectCategoryService
  8. from backend.models import ProjectCategory, DefaultStatus, Project, Customer, ProjectDocument
  9. class ProjectService:
  10. @staticmethod
  11. def Create(request):
  12. form = ProjectForm(request.POST)
  13. if form.is_valid():
  14. form.save()
  15. project_id = form.instance.id
  16. links = json.loads(request.POST.get("links"))
  17. for p in links:
  18. pr = ProjectDocument()
  19. pr.project_id = project_id
  20. pr.doc_id = p
  21. pr.status = 5
  22. pr.save()
  23. return success("成功")
  24. else:
  25. return fail(form.errors)
  26. @staticmethod
  27. def Update(request):
  28. data = Project.objects.filter(id=request.POST.get("id")).first()
  29. if data is not None:
  30. data.name = request.POST.get("name")
  31. data.intro = request.POST.get("intro")
  32. data.customer_id = request.POST.get("customer_id")
  33. data.category_id = request.POST.get("category_id")
  34. data.status = request.POST.get("status")
  35. data.save()
  36. project_id = data.id
  37. ProjectDocument.objects.filter(project_id=project_id).update(status=4)
  38. links = json.loads(request.POST.get("links"))
  39. for p in links:
  40. pr = ProjectDocument()
  41. pr.project_id = project_id
  42. pr.doc_id = p
  43. pr.status = 5
  44. pr.save()
  45. return success("成功")
  46. else:
  47. return fail("保存分类失败")
  48. @staticmethod
  49. def Info(request):
  50. info = Project.objects.filter(id=request.POST.get("id")).first()
  51. return success(ProjectService.getDetail(info))
  52. @staticmethod
  53. def Delete(request):
  54. Project.objects.filter(id=request.POST.get("id")).update(status=4)
  55. return success("成功")
  56. @staticmethod
  57. def getDetail(item: Project):
  58. category = ProjectCategory.objects.filter(id=item.category_id).first()
  59. if category:
  60. categoryInfo = ProjectCategoryService.getDetail(category)
  61. c = Customer.objects.filter(id=item.customer_id).first()
  62. if c:
  63. customerInfo = CustomerService.getDetail(c)
  64. prList = ProjectDocument.objects.filter(project_id=item.id).exclude(status=4).all()
  65. linkDoc = []
  66. for it in prList:
  67. linkDoc.append(it.doc_id)
  68. return {
  69. "id": item.id,
  70. 'name': item.name,
  71. 'intro': item.intro,
  72. 'customerId': item.customer_id,
  73. 'categoryId': item.category_id,
  74. 'createTime': item.create_time,
  75. 'category': categoryInfo,
  76. 'status': item.status,
  77. 'customer': customerInfo,
  78. 'linkDoc':linkDoc,
  79. }
  80. @staticmethod
  81. def Search(request):
  82. page = request.POST.get("page")
  83. pageSize = request.POST.get("pageSize")
  84. if page is None:
  85. page = 1
  86. if pageSize is None:
  87. pageSize = 1
  88. where = {}
  89. name = request.POST.get("name", '')
  90. if name:
  91. where["name__icontains"] = name
  92. status = request.POST.get("status")
  93. if status:
  94. where['status'] = status
  95. paginator = Paginator(Project.objects.filter(**where).exclude(status=4).order_by("-id"), pageSize) # 每页显示10条数据
  96. page_obj = paginator.get_page(page)
  97. dataList = []
  98. for item in page_obj:
  99. adminInfo = ProjectService.getDetail(item)
  100. dataList.append(adminInfo)
  101. return success(pageData(page, pageSize, paginator.num_pages, paginator.count, dataList))