SourceDataService.py 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. import json
  2. from django.core.paginator import Paginator
  3. from django.http import JsonResponse
  4. from DCbackend.utils import common
  5. from DCbackend.utils.common import success, fail, pageData
  6. from backend.Form.SourceDataForm import SourceDataForm
  7. from backend.models import SourceData, SourceCategory
  8. class SourceDataService:
  9. @staticmethod
  10. def Create(request):
  11. form = SourceDataForm(request.POST)
  12. if form.is_valid():
  13. form.save()
  14. return success("成功")
  15. else:
  16. return fail(form.errors)
  17. @staticmethod
  18. def Update(request):
  19. data = SourceData.objects.filter(id=request.POST.get("id")).first()
  20. if data is not None:
  21. data.code = request.POST.get("code")
  22. data.name = request.POST.get("name")
  23. data.source_data = request.POST.get("source_data")
  24. data.status = request.POST.get("status")
  25. data.category_id = request.POST.get("category_id")
  26. data.save()
  27. return success("成功")
  28. else:
  29. return fail("更新源数据成功")
  30. @staticmethod
  31. def Info(request):
  32. info = SourceData.objects.filter(id=request.POST.get("id")).first()
  33. return success(SourceDataService.getDetail(info))
  34. @staticmethod
  35. def Delete(request):
  36. SourceData.objects.filter(id=request.POST.get("id")).update(status=4)
  37. return success("成功")
  38. @staticmethod
  39. def getDetail(item: SourceData):
  40. return {
  41. "id": item.id,
  42. 'code': item.code,
  43. 'name': item.name,
  44. 'source_data': item.source_data,
  45. 'createTime': item.create_time,
  46. 'status': item.status,
  47. 'category_id': item.category_id
  48. }
  49. @staticmethod
  50. def getDetailList(item):
  51. return {
  52. "id": item['id'],
  53. 'code': item['code'],
  54. 'name': item['name'],
  55. 'createTime': item['create_time'].strftime('%Y-%m-%d %H:%M:%S') if item['create_time'] else None,
  56. 'status': item['status'],
  57. 'category_id': item['category_id']
  58. }
  59. @staticmethod
  60. def Search(request):
  61. page = request.POST.get("page")
  62. pageSize = request.POST.get("pageSize")
  63. if page is None:
  64. page = 1
  65. if pageSize is None:
  66. pageSize = 1
  67. where = {}
  68. code = request.POST.get("code", '')
  69. if code:
  70. where["code__icontains"] = code
  71. name = request.POST.get("name", '')
  72. if name:
  73. where["name__icontains"] = name
  74. status = request.POST.get("status")
  75. if status:
  76. where['status'] = status
  77. paginator = Paginator(SourceData.objects.filter(**where).exclude(status=4).order_by("-id").values('id','code','name','status','category_id','create_time'),
  78. pageSize) # 每页显示10条数据
  79. page_obj = paginator.get_page(page)
  80. dataList = []
  81. for item in page_obj:
  82. dataInfo = SourceDataService.getDetailList(item)
  83. dataList.append(dataInfo)
  84. return success(pageData(page, pageSize, paginator.num_pages, paginator.count, dataList))
  85. @staticmethod
  86. def findData(request):
  87. row = request.POST.get("row")
  88. col = request.POST.get("col")
  89. tbCode = request.POST.get("code")
  90. tbData = SourceData.objects.filter(code=tbCode).first()
  91. if not tbData:
  92. return fail("数据表标签不正确")
  93. jsonData = json.loads(tbData.source_data)
  94. sheetData=jsonData['exportJson']['sheets'][0]['data']
  95. rowData=sheetData[int(row)]
  96. result=''
  97. if 'v' in rowData[int(col)]:
  98. result = rowData[int(col)]['v']
  99. elif 'ct' in rowData[int(col)]:
  100. if 's' in rowData[int(col)]['ct']:
  101. for sub in rowData[int(col)]['ct']['s']:
  102. result+=str(sub['v'])
  103. return success({"result": result})
  104. @staticmethod
  105. def Categories(request):
  106. query = request.POST.get('query', '')
  107. status = request.POST.get('status', '')
  108. page = request.POST.get('page', 1)
  109. sourcecategories = SourceCategory.objects.all()
  110. if query:
  111. sourcecategories = sourcecategories.filter(name__icontains=query)
  112. if status:
  113. sourcecategories = sourcecategories.filter(status=status)
  114. paginator = Paginator(sourcecategories, 10) # 每页显示10条
  115. page_obj = paginator.get_page(page)
  116. sourcecategories = paginator.get_page(page)
  117. data = {
  118. 'status': '200',
  119. 'message': 'success',
  120. 'data': {
  121. 'sourcecategories': [
  122. {
  123. 'id': category.id,
  124. 'name': category.name,
  125. 'status': category.status,
  126. 'created_at': category.created_at.strftime('%Y-%m-%d %H:%M:%S')
  127. } for category in page_obj
  128. ],
  129. 'total': paginator.count,
  130. 'page': page,
  131. 'total_pages': paginator.num_pages
  132. }
  133. }
  134. return JsonResponse(data)
  135. @staticmethod
  136. def Catcreat(request):
  137. name = request.POST.get('name')
  138. status = request.POST.get('status', 'active')
  139. sourcecategory = SourceCategory.objects.create(name=name, status=status)
  140. data = {
  141. 'id': sourcecategory.id,
  142. 'name': sourcecategory.name,
  143. 'status': sourcecategory.status,
  144. 'created_at': sourcecategory.created_at.strftime('%Y-%m-%d %H:%M:%S')
  145. }
  146. return success(data)
  147. @staticmethod
  148. def info(request):
  149. info = SourceCategory.objects.filter(id=request.POST.get("id")).first()
  150. return success(SourceDataService.getcategory(info))
  151. @staticmethod
  152. def updatetype(request):
  153. data = SourceCategory.objects.filter(id=request.POST.get("id")).first()
  154. if data is not None:
  155. data.name = request.POST.get("name")
  156. data.status = request.POST.get("status")
  157. data.created_at = request.POST.get("created_at")
  158. data.save()
  159. return success("成功")
  160. else:
  161. return fail("更新源数据成功")
  162. @staticmethod
  163. def getcategory(item: SourceCategory):
  164. return {
  165. "id": item.id,
  166. 'name': item.name,
  167. 'status': item.status,
  168. 'created_at': item.created_at
  169. }