林轩 před 12 hodinami
rodič
revize
9774dea2f6

+ 17 - 1
apps/PestAnalysis/models.py

@@ -21,4 +21,20 @@ class CbdAddrPest(models.Model):
     addr_code = models.CharField(max_length=100, blank=True, null=True)
 
     class Meta:
-        db_table = 'cbd_addr_pest'
+        db_table = 'cbd_addr_pest'
+
+
+class EnvTempHum(models.Model):
+    title = models.CharField(max_length=100, blank=True, null=True)
+    value = models.CharField(max_length=100, blank=True, null=True)
+    unit = models.CharField(max_length=100, blank=True, null=True)
+    type = models.CharField(max_length=100, blank=True, null=True)
+    date = models.PositiveIntegerField(default=0)
+    format_date = models.CharField(max_length=100, blank=True, null=True)
+    province = models.CharField(max_length=100, blank=True, null=True)
+    city = models.CharField(max_length=100, blank=True, null=True)
+    district = models.CharField(max_length=100, blank=True, null=True)
+    addr_code = models.CharField(max_length=100, blank=True, null=True)
+
+    class Meta:
+        db_table = 'env_temp_hum'

+ 7 - 1
apps/PestAnalysis/serializers.py

@@ -1,5 +1,5 @@
 from rest_framework import serializers
-from apps.PestAnalysis.models import CbdAddrPest, HeNanAddr
+from apps.PestAnalysis.models import CbdAddrPest, EnvTempHum
 
 class ZhiBaoSelectViewSerializer(serializers.Serializer):
     identify_model = serializers.CharField(help_text="识别模型", required=True)
@@ -43,4 +43,10 @@ class ZhiBaoSelectViewSerializer(serializers.Serializer):
 class CbdAddrPestSerializer(serializers.ModelSerializer):
     class Meta:
         model = CbdAddrPest
+        fields = "__all__"
+
+
+class EnvTempHumSerializer(serializers.ModelSerializer):
+    class Meta:
+        model = EnvTempHum
         fields = "__all__"

+ 1 - 0
apps/PestAnalysis/urls.py

@@ -6,4 +6,5 @@ urlpatterns = [
     url(r'^info/$', views.PestSelectView.as_view(), name='pest_info'),
     url(r'^pest/$', views.RecentMonthPestCount.as_view(), name='pest'),
     url(r"^pest_count/$", views.PestCountAPIView.as_view(), name="pest_count"),
+    url(r"^env_temp_hum/$", views.EnvTempHumAPIView.as_view(), name="env_temp_hum"),
 ]

+ 51 - 2
apps/PestAnalysis/views.py

@@ -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})