Răsfoiți Sursa

即时视觉页面新增方案编码

locky 2 săptămâni în urmă
părinte
comite
3554b1ca24
1 a modificat fișierele cu 65 adăugiri și 30 ștergeri
  1. 65 30
      AdminController/DeviceManagementController.py

+ 65 - 30
AdminController/DeviceManagementController.py

@@ -162,7 +162,7 @@ class DeviceManagement(View):
             elif operation == 'getInstavision':  # 查询即时视觉列表
                 return self.get_instavision(request_dict, response)
             elif operation == 'addInstavision':  # 添加即时视觉
-                return self.add_instavision(request, response)
+                return self.add_instavision(request, request_dict, response)
             elif operation == 'editInstavision':  # 编辑即时视觉
                 return self.edit_instavision(request_dict, response)
             elif operation == 'delInstavision':   # 删除即时视觉
@@ -2265,14 +2265,24 @@ class DeviceManagement(View):
             return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
 
     @staticmethod
-    def get_instavision(request_dict, response):
-        """查询即时视觉列表"""
-        page_no = request_dict.get('pageNo')
-        page_size = request_dict.get('pageSize')
-        device_id = request_dict.get('deviceId', '')
-        mac = request_dict.get('mac', '')
-        access_key = request_dict.get('accessKey', '')
-        use_status = request_dict.get('useStatus')
+    def get_instavision(request_dict: dict, response: ResponseObject):
+        """
+        查询即时视觉列表
+
+        Args:
+            request_dict: 请求参数字典
+            response: ResponseObject响应对象
+
+        Returns:
+            JsonResponse: 响应结果
+        """
+        page_no: str = request_dict.get('pageNo')
+        page_size: str = request_dict.get('pageSize')
+        device_id: str = request_dict.get('deviceId', '')
+        mac: str = request_dict.get('mac', '')
+        access_key: str = request_dict.get('accessKey', '')
+        scheme_code: str = request_dict.get('schemeCode', '')
+        use_status: str = request_dict.get('useStatus')
 
         if not all([page_no, page_size]):
             return response.json(444)
@@ -2285,13 +2295,16 @@ class DeviceManagement(View):
                 query = query.filter(mac__contains=mac)
             if access_key:
                 query = query.filter(access_key__contains=access_key)
+            if scheme_code:
+                query = query.filter(scheme_code__contains=scheme_code)
             if use_status is not None:
                 query = query.filter(use_status=use_status)
 
-            total = query.count()
+            total: int = query.count()
             instavisions = query.order_by('-id')[
                 (int(page_no)-1)*int(page_size):int(page_no)*int(page_size)
-            ].values('id', 'mac', 'device_id', 'access_key', 'use_status', 'created_time', 'updated_time')
+            ].values(
+                'id', 'mac', 'device_id', 'access_key', 'scheme_code', 'use_status', 'created_time', 'updated_time')
 
             return response.json(0, {
                 'list': list(instavisions),
@@ -2301,31 +2314,40 @@ class DeviceManagement(View):
             return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
 
     @staticmethod
-    def add_instavision(request, response):
+    def add_instavision(request, request_dict: dict, response: ResponseObject):
         """添加即时视觉
         仅支持CSV批量导入
+
+        Args:
+            request: Django HttpRequest对象
+            request_dict: 请求参数字典
+            response: ResponseObject响应对象
+
+        Returns:
+            JsonResponse: 响应结果
         """
-        file = request.FILES.get('file', None)
-        if not file:
-            return response.json(444, '请上传CSV文件')
+        file = request.FILES.get('file')
+        scheme_code: str = request_dict.get('schemeCode')
+        if not all([file, scheme_code]):
+            return response.json(444)
 
         try:
             # 读取CSV文件内容
-            csv_content = io.StringIO(file.read().decode('utf-8'))
-            csv_reader = csv.DictReader(csv_content)
+            csv_content: io.StringIO = io.StringIO(file.read().decode('utf-8'))
+            csv_reader: csv.DictReader = csv.DictReader(csv_content)
 
-            now_time = int(time.time())
+            now_time: int = int(time.time())
 
             # 获取所有已存在的device_id
-            existing_device_ids = set(Instavision.objects.values_list('device_id', flat=True))
+            existing_device_ids: set[str] = set(Instavision.objects.values_list('device_id', flat=True))
 
             # 准备批量创建的对象列表
-            instavision_objects = []
+            instavision_objects: list[Instavision] = []
 
             for row in csv_reader:
                 # 获取Device Id和Access Key列的数据
-                device_id = row.get('Device Id', '')
-                access_key = row.get('Access Key', '')
+                device_id: str = row.get('Device Id', '')
+                access_key: str = row.get('Access Key', '')
 
                 if not device_id or not access_key:
                     continue
@@ -2338,6 +2360,7 @@ class DeviceManagement(View):
                 instavision_objects.append(Instavision(
                     device_id=device_id,
                     access_key=access_key,
+                    scheme_code=scheme_code,
                     created_time=now_time,
                     updated_time=now_time
                 ))
@@ -2354,19 +2377,29 @@ class DeviceManagement(View):
             return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
 
     @staticmethod
-    def edit_instavision(request_dict, response):
-        """编辑即时视觉"""
-        instavision_id = request_dict.get('id')
-        device_id = request_dict.get('deviceId')
-        access_key = request_dict.get('accessKey')
-        mac = request_dict.get('mac')
-        use_status = request_dict.get('useStatus')
+    def edit_instavision(request_dict: dict, response: ResponseObject):
+        """
+        编辑即时视觉
+
+        Args:
+            request_dict: 请求参数字典
+            response: ResponseObject响应对象
+
+        Returns:
+            JsonResponse: 响应结果
+        """
+        instavision_id: str = request_dict.get('id')
+        device_id: str = request_dict.get('deviceId')
+        access_key: str = request_dict.get('accessKey')
+        mac: str = request_dict.get('mac')
+        scheme_code: str = request_dict.get('schemeCode')
+        use_status: str = request_dict.get('useStatus')
 
         if not instavision_id:
             return response.json(444)
 
         try:
-            update_data = {
+            update_data: dict = {
                 'updated_time': int(time.time())
             }
             if device_id:
@@ -2378,6 +2411,8 @@ class DeviceManagement(View):
                 update_data['access_key'] = access_key
             if mac:
                 update_data['mac'] = mac
+            if scheme_code:
+                update_data['scheme_code'] = scheme_code
             if use_status is not None:
                 update_data['use_status'] = int(use_status)