yf_yzl 2 vuotta sitten
vanhempi
commit
0d5fbe7cec

+ 3 - 5
formal

@@ -22,10 +22,9 @@
     "password": "f335bf402c655ee5fd2b5300905124e"
   },
   "redis": {
-    "ip": "114.55.0.7",
-    "port": 61881,
-    "password": "yf6021",
-    "url": "redis://:yf6021@114.55.0.7:61881/"
+    "ip": "127.0.0.1",
+    "port": 6380,
+    "password": "1qaz@WSXkedong"
   },
   "redis_db": {
     "bigdata_pub": 11,
@@ -34,7 +33,6 @@
     "scd": 2,
     "cbd": 3,
     "jiankong": 1
-
   },
   "dashuju_pub_key":"dashuju_pub_redis_key",
   "ftp_config": {

+ 0 - 1
kedong/settings.py

@@ -84,7 +84,6 @@ TEMPLATES = [
 ]
 WSGI_APPLICATION = 'kedong.wsgi.application'
 CONFIG = parse_config_new(BASE_DIR)
-print(CONFIG['bigdata']['mysql_host'], "-------------------------------")
 DATABASES = {
     'default': {
         'ENGINE': 'django.db.backends.mysql',

+ 25 - 0
scripts/test/add_org_data.py

@@ -0,0 +1,25 @@
+import os
+import sys
+import time
+import django
+import json
+local_path = os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
+print(local_path)
+if local_path not in sys.path:
+    sys.path.append(local_path)
+os.environ.setdefault("DJANGO_SETTINGS_MODULE", "kedong.settings")
+django.setup()
+from django.conf import settings
+from smartfarming.models.device import MongoDeviceType
+from smartfarming.models.user import UserPurview
+
+
+
+
+with open(os.path.join(local_path, "scripts/test/sa_device_type.json") , 'r', encoding='utf-8') as f:
+    sa_device_type = json.load(f)
+    for row in sa_device_type.get("rows"):
+        MongoDeviceType.objects.get_or_create(
+            id=row.get("id"),
+            defaults=row
+        )

+ 48 - 0
scripts/test/sa_device_type.json

@@ -0,0 +1,48 @@
+{
+	"table": "sa_device_type",
+	"rows":
+	[
+		{
+			"id": 2,
+			"type_name": "杀虫灯",
+			"img_url": "1",
+			"addtime": 1590143501,
+			"uptime": 1590143501
+		},
+		{
+			"id": 3,
+			"type_name": "测报灯",
+			"img_url": "1",
+			"addtime": 1590143501,
+			"uptime": 1590143501
+		},
+		{
+			"id": 4,
+			"type_name": "性诱测报",
+			"img_url": "1",
+			"addtime": 1590143501,
+			"uptime": 1590143501
+		},
+		{
+			"id": 5,
+			"type_name": "环境监测",
+			"img_url": "1",
+			"addtime": 1590143543,
+			"uptime": 1590143543
+		},
+		{
+			"id": 6,
+			"type_name": "监控设备",
+			"img_url": "1",
+			"addtime": 1590143557,
+			"uptime": 1590143557
+		},
+		{
+			"id": 8,
+			"type_name": "墒情站",
+			"img_url": "1",
+			"addtime": 1590143557,
+			"uptime": 1590143557
+		}
+	]
+}

+ 376 - 0
scripts/test/sa_user_purview.json

@@ -0,0 +1,376 @@
+{
+	"table": "sa_user_purview",
+	"rows":
+	[
+		{
+			"id": 1,
+			"parent_perm_id": 0,
+			"purview_name": "基础设置管理",
+			"path": "",
+			"menu": "PC",
+			"addtime": 0,
+			"uptime": 0,
+			"url": "0"
+		},
+		{
+			"id": 2,
+			"parent_perm_id": 0,
+			"purview_name": "地理信息管理",
+			"path": "",
+			"menu": "PC",
+			"addtime": 0,
+			"uptime": 0,
+			"url": "0"
+		},
+		{
+			"id": 3,
+			"parent_perm_id": 0,
+			"purview_name": "智能虫情测报系统",
+			"path": "",
+			"menu": "PC",
+			"addtime": 0,
+			"uptime": 0,
+			"url": "0"
+		},
+		{
+			"id": 4,
+			"parent_perm_id": 0,
+			"purview_name": "物联网管理系统",
+			"path": "",
+			"menu": "PC",
+			"addtime": 0,
+			"uptime": 0,
+			"url": "0"
+		},
+		{
+			"id": 5,
+			"parent_perm_id": 0,
+			"purview_name": "态势感知中心平台",
+			"path": "",
+			"menu": "PC",
+			"addtime": 0,
+			"uptime": 0,
+			"url": "0"
+		},
+		{
+			"id": 6,
+			"parent_perm_id": 0,
+			"purview_name": "数据洞察中心平台",
+			"path": "",
+			"menu": "PC",
+			"addtime": 0,
+			"uptime": 0,
+			"url": "0"
+		},
+		{
+			"id": 7,
+			"parent_perm_id": 0,
+			"purview_name": "农业知识中心平台",
+			"path": "",
+			"menu": "PC",
+			"addtime": 0,
+			"uptime": 0,
+			"url": "0"
+		},
+		{
+			"id": 8,
+			"parent_perm_id": 0,
+			"purview_name": "指挥中心一张图",
+			"path": "",
+			"menu": "PC",
+			"addtime": 0,
+			"uptime": 0,
+			"url": "0"
+		},
+		{
+			"id": 9,
+			"parent_perm_id": 1,
+			"purview_name": "用户管理",
+			"path": "",
+			"menu": "PC",
+			"addtime": 0,
+			"uptime": 0,
+			"url": "0"
+		},
+		{
+			"id": 10,
+			"parent_perm_id": 1,
+			"purview_name": "主题设置",
+			"path": "",
+			"menu": "PC",
+			"addtime": 0,
+			"uptime": 0,
+			"url": "0"
+		},
+		{
+			"id": 11,
+			"parent_perm_id": 2,
+			"purview_name": "种植区管理",
+			"path": "",
+			"menu": "PC",
+			"addtime": 0,
+			"uptime": 0,
+			"url": "0"
+		},
+		{
+			"id": 12,
+			"parent_perm_id": 2,
+			"purview_name": "地块管理",
+			"path": "",
+			"menu": "PC",
+			"addtime": 0,
+			"uptime": 0,
+			"url": "0"
+		},
+		{
+			"id": 13,
+			"parent_perm_id": 2,
+			"purview_name": "作物管理",
+			"path": "",
+			"menu": "PC",
+			"addtime": 0,
+			"uptime": 0,
+			"url": "0"
+		},
+		{
+			"id": 14,
+			"parent_perm_id": 2,
+			"purview_name": "设备管理",
+			"path": "",
+			"menu": "PC",
+			"addtime": 0,
+			"uptime": 0,
+			"url": "0"
+		},
+		{
+			"id": 15,
+			"parent_perm_id": 2,
+			"purview_name": "美丽乡村管理",
+			"path": "",
+			"menu": "PC",
+			"addtime": 0,
+			"uptime": 0,
+			"url": "0"
+		},
+		{
+			"id": 16,
+			"parent_perm_id": 3,
+			"purview_name": "智能测报灯",
+			"path": "",
+			"menu": "PC",
+			"addtime": 0,
+			"uptime": 0,
+			"url": "0"
+		},
+		{
+			"id": 17,
+			"parent_perm_id": 3,
+			"purview_name": "虫情预警",
+			"path": "",
+			"menu": "PC",
+			"addtime": 0,
+			"uptime": 0,
+			"url": "0"
+		},
+		{
+			"id": 18,
+			"parent_perm_id": 3,
+			"purview_name": "病虫害库",
+			"path": "",
+			"menu": "PC",
+			"addtime": 0,
+			"uptime": 0,
+			"url": "0"
+		},
+		{
+			"id": 19,
+			"parent_perm_id": 4,
+			"purview_name": "气象监测",
+			"path": "",
+			"menu": "PC",
+			"addtime": 0,
+			"uptime": 0,
+			"url": "0"
+		},
+		{
+			"id": 20,
+			"parent_perm_id": 4,
+			"purview_name": "墒情监测",
+			"path": "",
+			"menu": "PC",
+			"addtime": 0,
+			"uptime": 0,
+			"url": "0"
+		},
+		{
+			"id": 21,
+			"parent_perm_id": 4,
+			"purview_name": "性诱测报",
+			"path": "",
+			"menu": "PC",
+			"addtime": 0,
+			"uptime": 0,
+			"url": "0"
+		},
+		{
+			"id": 22,
+			"parent_perm_id": 4,
+			"purview_name": "物联网杀虫灯",
+			"path": "",
+			"menu": "PC",
+			"addtime": 0,
+			"uptime": 0,
+			"url": "0"
+		},
+		{
+			"id": 23,
+			"parent_perm_id": 4,
+			"purview_name": "视频监控",
+			"path": "",
+			"menu": "PC",
+			"addtime": 0,
+			"uptime": 0,
+			"url": "0"
+		},
+		{
+			"id": 24,
+			"parent_perm_id": 4,
+			"purview_name": "预警信息",
+			"path": "",
+			"menu": "PC",
+			"addtime": 0,
+			"uptime": 0,
+			"url": "0"
+		},
+		{
+			"id": 25,
+			"parent_perm_id": 6,
+			"purview_name": "虫情分析",
+			"path": "",
+			"menu": "PC",
+			"addtime": 0,
+			"uptime": 0,
+			"url": "0"
+		},
+		{
+			"id": 26,
+			"parent_perm_id": 6,
+			"purview_name": "气象分析",
+			"path": "",
+			"menu": "PC",
+			"addtime": 0,
+			"uptime": 0,
+			"url": "0"
+		},
+		{
+			"id": 27,
+			"parent_perm_id": 6,
+			"purview_name": "种植采收",
+			"path": "",
+			"menu": "PC",
+			"addtime": 0,
+			"uptime": 0,
+			"url": "0"
+		},
+		{
+			"id": 28,
+			"parent_perm_id": 7,
+			"purview_name": "知识分类",
+			"path": "",
+			"menu": "PC",
+			"addtime": 0,
+			"uptime": 0,
+			"url": "0"
+		},
+		{
+			"id": 29,
+			"parent_perm_id": 7,
+			"purview_name": "知识管理",
+			"path": "",
+			"menu": "PC",
+			"addtime": 0,
+			"uptime": 0,
+			"url": "0"
+		},
+		{
+			"id": 30,
+			"parent_perm_id": 7,
+			"purview_name": "研判信息",
+			"path": "",
+			"menu": "PC",
+			"addtime": 0,
+			"uptime": 0,
+			"url": "0"
+		},
+		{
+			"id": 31,
+			"parent_perm_id": 1,
+			"purview_name": "角色管理",
+			"path": "0",
+			"menu": "PC",
+			"addtime": 0,
+			"uptime": 0,
+			"url": "0"
+		},
+		{
+			"id": 32,
+			"parent_perm_id": 0,
+			"purview_name": "气象墒情",
+			"path": "0",
+			"menu": "APP",
+			"addtime": 0,
+			"uptime": 0,
+			"url": "0"
+		},
+		{
+			"id": 33,
+			"parent_perm_id": 0,
+			"purview_name": "测报灯",
+			"path": "0",
+			"menu": "APP",
+			"addtime": 0,
+			"uptime": 0,
+			"url": "0"
+		},
+		{
+			"id": 34,
+			"parent_perm_id": 0,
+			"purview_name": "视频监控",
+			"path": "0",
+			"menu": "APP",
+			"addtime": 0,
+			"uptime": 0,
+			"url": "0"
+		},
+		{
+			"id": 35,
+			"parent_perm_id": 0,
+			"purview_name": "杀虫灯",
+			"path": "0",
+			"menu": "APP",
+			"addtime": 0,
+			"uptime": 0,
+			"url": "0"
+		},
+		{
+			"id": 36,
+			"parent_perm_id": 0,
+			"purview_name": "性诱控制",
+			"path": "0",
+			"menu": "APP",
+			"addtime": 0,
+			"uptime": 0,
+			"url": "0"
+		},
+		{
+			"id": 37,
+			"parent_perm_id": 0,
+			"purview_name": "诱芯设置",
+			"path": "0",
+			"menu": "APP",
+			"addtime": 0,
+			"uptime": 0,
+			"url": "0"
+		}
+	]
+}

+ 25 - 0
scripts/test/test.py

@@ -0,0 +1,25 @@
+
+import json
+import requests
+import pymongo
+from urllib import parse
+
+
+user = parse.quote_plus("root")
+passwd = parse.quote_plus("yfkj@6020")
+# 账号密码方式连接MongoDB | "mongodb://用户名:密码@公网ip:端口/"
+myclient = pymongo.MongoClient("mongodb://{0}:{1}@8.136.98.49:57017/".format(user,passwd))
+db = myclient.smartfarming
+device_id = "864865060481331"
+device_config = db.sa_qxz_conf.find_one({"device_id": device_id}, {'_id':0,'id':0})
+device_data = db.sa_qxz_data.find({"device_id": device_id, "uptime": {"$gte": 1689993000, "$lte": 1690008300}})
+idevice_key = ""
+device_config = dict(device_config)
+for iname, ivalue in device_config.items():
+    if ivalue and isinstance(ivalue, str):
+        if "日照时数" in ivalue:
+            idevice_key = iname
+idevice_data = []
+for d in device_data:
+    idevice_data.append(float((d.get(idevice_key)).split("#")[0]))
+print(idevice_data)

+ 31 - 59
smartfarming/api/views/camera/camera_manage.py

@@ -21,74 +21,29 @@ from smartfarming.utils import bindDeviceLive, getLive, controlMove, modify_live
 from kedong.tools import RedisPool
 from kedong.decoration import kedong_deco, PortError
 
+from smartfarming.api.views.camera.cameraserializers import (
+    MongoCameraPhotoSerializers,
+    MongoDeviceCameraSerializers
+)
+
+
 config_dict = settings.CONFIG
 
 
 @kedong_deco(login_required=True)
 def list_camera(request):
-    """
-    获取监控设备列表 :
-    参数:
-    
-    page                    非必传(num)                     页码,默认为1
-    device_id               非必传                          设备ID, 不传为监控列表, 传设备号为搜索
-    page_size               非必传                          一页条数,默认为10
-
-    返回值:
-    {
-    "data": {
-        data : {
-            "device_name":"",                            设备名称
-            "device_id":"",                              设备ID
-            "photo_num":"",                              是否拍过照片 0未拍过  1拍过
-            "status":"",                                 设备状态  0离线  1在线
-            "camera_playback":""                         用来判断是否有录像功能 0不支持 1支持
-            "sim":""                                     监控SIM 卡
-        }            
-        counts : 99                                总数
-            } 
-    "errorCode": 0,
-    "message": "",
-    "formError": {}
-    }
-
-    """
-    _list = []
+    # 获取监控设备列表
     post_info = request.POST
     device_id = post_info.get('device_id')
-    page = int(post_info.get('page', 1))
+    page_num = int(post_info.get('page', 1))
     page_size = int(post_info.get('page_size', 10))
-    search_dict = {
-        "device_type_id": 6
-    }
-    if device_id:
-        search_dict["device_id"] = re.compile(fr"^.*{device_id}.*$")
     queryset = MongoDevice.objects.filter(device_type_id=6).order_by("-uptime")
-    total_num = queryset.count()
+    if device_id:
+        queryset = queryset.filter(device_id=device_id)
     paginator = Paginator(queryset, page_size)
-    page_obj = paginator.get_page(page)
-    serializers = DeviceSerializers(page_obj, many=True)
-    data_list = serializers.data
-    _list = []
-    device_id_list = []
-    for x in data_list:
-        device_id = x.get("device_id")
-        device_id_list.append(device_id)
-        _list.append({
-            "device_name": x.get("device_name"),
-            "device_id": device_id,
-            "photo_num": "",
-            "status": x.get("device_status"),
-            "camera_playback": "",
-            "sim": x.get("simid")
-        })
-    photo_queryset = MongoCameraPhoto.objects.filter(device_id__in=device_id_list, photo_status=1).values('device_id').annotate(count=Count('device_id'))
-    phote_dict = {p['device_id']: "1" for p in photo_queryset}
-    playback_dict = {y['device_id']: y["camera_playback"] for y in MongoCameraData.objects.filter(device_id__in=device_id_list).values('device_id','camera_playback')}
-    for item in _list:
-        item["photo_num"] = phote_dict.get(device_id, "0")
-        item["camera_playback"] = playback_dict.get(device_id,"0")
-    datas = {"data": _list, "counts": total_num}
+    page_obj = paginator.get_page(page_num)
+    serializers = MongoDeviceCameraSerializers(page_obj, many=True)
+    datas = {"data": serializers.data, "counts": queryset.count()}
     return datas
 
 
@@ -525,4 +480,21 @@ def camera_takephoto(request):
     else:
         raise PortError("","拍照失败,稍后重试")
 
-    
+    
+
+@kedong_deco(login_required=True)
+def camera_photo(request):
+    # 拍照列表
+    request_data = request.POST
+    device_id = request_data.get("device_id")
+    start_time = request_data.get("start_time","")
+    end_time = request_data.get("end_time","")
+    page_num = int(request_data.get("page")) if request_data.get("page") else 1
+    page_size = int(request_data.get("pagesize")) if request_data.get("pagesize") else 10
+    queryset = MongoCameraPhoto.objects.filter(device_id=device_id).order_by("-addtime")
+    if start_time and end_time:
+        queryset = queryset.filter(addtime__gte=start_time, addtime__lte=end_time)
+    paginator = Paginator(queryset, page_size)
+    page_obj = paginator.get_page(page_num)
+    serializers = MongoCameraPhotoSerializers(page_obj, many=True)
+    return {"data": serializers.data, "counts": queryset.count()}

+ 45 - 0
smartfarming/api/views/camera/cameraserializers.py

@@ -0,0 +1,45 @@
+
+
+from rest_framework import serializers
+from smartfarming.models.camera import MongoCameraPhoto, MongoCameraData, MongoCameraAccount
+from smartfarming.models.device import MongoDevice
+
+
+class MongoCameraPhotoSerializers(serializers.ModelSerializer):
+
+
+    class Meta:
+        model = MongoCameraPhoto
+        fields = "__all__"
+
+
+
+class MongoDeviceCameraSerializers(serializers.ModelSerializer):
+    status = serializers.SerializerMethodField()
+    sim = serializers.SerializerMethodField()
+    photo_num = serializers.SerializerMethodField()
+    camera_playback = serializers.SerializerMethodField()
+
+    def get_photo_num(self, obj):
+        return 1 if MongoCameraPhoto.objects.filter(device_id=obj.device_id) else 0
+
+    def get_camera_playback(self, obj):
+        
+        return MongoCameraData.objects.get(device_id=obj.device_id).camera_playback
+
+    def get_status(self, obj):
+        return obj.device_status
+
+    def get_sim(self, obj):
+        return obj.simid
+
+    class Meta:
+        model = MongoDevice
+        fields = [
+            "device_name",
+            "device_id",
+            "status",
+            "camera_playback",
+            "sim",
+            "photo_num"
+        ]

+ 1 - 1
smartfarming/api/views/forecast/worm_lamp.py

@@ -170,7 +170,7 @@ def lamp_list(request):
 
 
 
-
+@kedong_deco(login_required=True)
 def device_status_data(request):
     """
     虫情测报灯/数据详情