Procházet zdrojové kódy

增加害虫统计接口

林轩 před 17 hodinami
rodič
revize
33631be7bc

+ 22 - 1
apps/PestAnalysis/models.py

@@ -1,3 +1,24 @@
 from django.db import models
 
-# Create your models here.
+class HeNanAddr(models.Model):
+    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)
+    code = models.CharField(max_length=100, blank=True, null=True)
+
+    class Meta:
+        db_table = 'he_nan_addr'
+
+class CbdAddrPest(models.Model):
+    pest = models.CharField(max_length=100, blank=True, null=True)
+    pest_id = models.CharField(max_length=10, blank=True, null=True, default="0")
+    count = models.PositiveIntegerField(default=0)
+    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 = 'cbd_addr_pest'

+ 8 - 2
apps/PestAnalysis/serializers.py

@@ -1,5 +1,5 @@
 from rest_framework import serializers
-
+from apps.PestAnalysis.models import CbdAddrPest, HeNanAddr
 
 class ZhiBaoSelectViewSerializer(serializers.Serializer):
     identify_model = serializers.CharField(help_text="识别模型", required=True)
@@ -37,4 +37,10 @@ class ZhiBaoSelectViewSerializer(serializers.Serializer):
     def validate(self, attrs):
         if attrs["start_time"] > attrs["end_time"]:
             raise serializers.ValidationError("结束时间不能小于开始时间")
-        return attrs
+        return attrs
+    
+
+class CbdAddrPestSerializer(serializers.ModelSerializer):
+    class Meta:
+        model = CbdAddrPest
+        fields = "__all__"

+ 1 - 0
apps/PestAnalysis/urls.py

@@ -5,4 +5,5 @@ from . import views
 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"),
 ]

+ 23 - 0
apps/PestAnalysis/views.py

@@ -7,12 +7,17 @@ from utils.permissions import CbdDeviceDetailPermission
 from .serializers import ZhiBaoSelectViewSerializer
 from utils.JWTAuthentication_diy import MyJWTAuthentication
 from utils.permissions import ModulePermission
+from rest_framework.views import APIView
 
 from utils.db_utils import MongoDBTools
 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
+
+
 class PestSelectView(GenericAPIView):
     authentication_classes = [MyJWTAuthentication]
     permission_classes = [ModulePermission]
@@ -209,3 +214,21 @@ class RecentMonthPestCount(GenericAPIView):
             return Response({"data": [], "imgs": [], "msg": e.args})
 
 
+class PestCountAPIView(APIView):
+
+    def get(self, request, *args, **kwargs):
+        try:
+            data = request.query_params
+            code = data.get("code") 
+            start = data.get("start")
+            end = data.get("end")
+            if code:
+                hananaddr = HeNanAddr.objects.get(code=code)
+                if hananaddr.district: 
+                    query = CbdAddrPest.objects.filter(addr_code=code)
+                if start and end:
+                    query = query.filter(format_date__range=[start, end])
+                data = CbdAddrPestSerializer(query, many=True).data
+                return Response(data)
+        except Exception as e:
+            return Response({"data": [], "imgs": [], "msg": e.args})