林轩 1 день назад
Родитель
Сommit
9f5c9a9bd9
1 измененных файлов с 35 добавлено и 8 удалено
  1. 35 8
      apps/PestAnalysis/views.py

+ 35 - 8
apps/PestAnalysis/views.py

@@ -2,6 +2,7 @@ from rest_framework.generics import GenericAPIView
 from rest_framework.response import Response
 import re
 import math
+import datetime
 from utils.JWTAuthentication_diy import APIAuthentication
 from utils.permissions import CbdDeviceDetailPermission
 from .serializers import ZhiBaoSelectViewSerializer
@@ -218,17 +219,43 @@ class PestCountAPIView(APIView):
 
     def get(self, request, *args, **kwargs):
         try:
+            # regionCode=city_410100&page=1&pageSize=20&startDate=2025-12-04&endDate=2025-12-19
             data = request.query_params
-            code = data.get("code") 
-            start = data.get("start")
-            end = data.get("end")
+            code = data.get("regionCode") 
+            code = code.split("_")[-1]
+            start = data.get("startDate")
+            end = data.get("endDate")
+            page = data.get("page")
+            pageSize = data.get("pageSize")
+            if page:
+                try:
+                    page = int(page)
+                except:
+                    page = 1
+            else:
+                page = 1
+            if pageSize:
+                try:
+                    pageSize = int(pageSize)
+                except:
+                    pageSize = 20
+            else:
+                pageSize = 20
             if code:
-                hananaddr = HeNanAddr.objects.get(code=code)
-                if hananaddr.district: 
-                    query = CbdAddrPest.objects.filter(addr_code=code)
+                query = CbdAddrPest.objects.filter(addr_code__startswith=code).order_by("-date")
                 if start and end:
-                    query = query.filter(format_date__range=[start, end])
+                    start = int(datetime.datetime.strptime(start, "%Y-%m-%d").timestamp())
+                    end = int(datetime.datetime.strptime(end, "%Y-%m-%d").timestamp())
+                    query = query.filter(date__range=[start, end])
+                count = query.count()
+                query = query[(page-1)*pageSize:page*pageSize]
                 data = CbdAddrPestSerializer(query, many=True).data
-                return Response(data)
+                response = { 
+                    "data": {
+                        "data": data,
+                        "total": count,
+                    }
+                }
+                return Response(response)
         except Exception as e:
             return Response({"data": [], "imgs": [], "msg": e.args})