|
|
@@ -15,8 +15,8 @@ from utils.all_dict import insect_dict
|
|
|
from django.conf import settings
|
|
|
|
|
|
|
|
|
-from apps.PestAnalysis.models import CbdAddrPest, HeNanAddr
|
|
|
-from apps.PestAnalysis.serializers import CbdAddrPestSerializer
|
|
|
+from apps.PestAnalysis.models import CbdAddrPest, EnvTempHum
|
|
|
+from apps.PestAnalysis.serializers import CbdAddrPestSerializer, EnvTempHumSerializer
|
|
|
|
|
|
|
|
|
class PestSelectView(GenericAPIView):
|
|
|
@@ -261,4 +261,53 @@ class PestCountAPIView(APIView):
|
|
|
}
|
|
|
return Response(response)
|
|
|
except Exception as e:
|
|
|
+ return Response({"data": [], "imgs": [], "msg": e.args})
|
|
|
+
|
|
|
+
|
|
|
+class EnvTempHumAPIView(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
|
|
|
+ pest = data.get("pest")
|
|
|
+ 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:
|
|
|
+ query = EnvTempHum.objects.filter(addr_code__startswith=code).order_by("-date")
|
|
|
+ if start and 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])
|
|
|
+ if pest:
|
|
|
+ query = query.filter(pest__icontains=pest)
|
|
|
+ count = query.count()
|
|
|
+ query = query[(page-1)*pageSize:page*pageSize]
|
|
|
+ data = EnvTempHumSerializer(query, many=True).data
|
|
|
+ response = {
|
|
|
+ "data": {
|
|
|
+ "data": data,
|
|
|
+ "total": count,
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return Response(response)
|
|
|
+ except Exception as e:
|
|
|
return Response({"data": [], "imgs": [], "msg": e.args})
|