Browse Source

查询设备方案列表

linhaohong 3 months ago
parent
commit
8d4cc89da3
1 changed files with 80 additions and 3 deletions
  1. 80 3
      AdminController/ProductsSchemeManageController.py

+ 80 - 3
AdminController/ProductsSchemeManageController.py

@@ -19,7 +19,7 @@ from django.db.models import Q
 from django.http import QueryDict, HttpResponse
 from django.views import View
 
-from Model.models import ProductsScheme
+from Model.models import ProductsScheme, DeviceScheme
 from Object.RedisObject import RedisObject
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
@@ -77,7 +77,8 @@ class ProductsSchemeManageView(View):
             'add': self.add_scheme,# 添加方案
             'edit': self.edit_scheme,# 编辑方案
             'delete': self.delete_scheme,# 删除方案
-            'generateQR': self.generate_qr_code  # 生成二维码
+            'generateQR': self.generate_qr_code,  # 生成二维码
+            'deviceSchemeList': self.device_scheme_list
         }
 
         handler = operation_handlers.get(operation)
@@ -423,4 +424,80 @@ class ProductsSchemeManageView(View):
             return response.json(173, "方案不存在")
         except Exception as e:
             LOGGER.error(f"生成二维码失败: {str(e)}")
-            return response.json(500, "生成失败")
+            return response.json(500, "生成失败")
+
+    @staticmethod
+    def device_scheme_list(user_id, request_dict, response):
+        """
+        查询设备方案列表
+        @param request_dict: 请求参数
+        @param response: 响应对象
+        @return: 响应对象包含设备方案列表
+        """
+        serial_number = request_dict.get("serialNumber", None)
+        storage_code = request_dict.get("storageCode", None)
+        device_type = request_dict.get("deviceType", None)
+        phone_model = request_dict.get("phoneModel", None)
+        page = request_dict.get("page", 1)
+        page_size = request_dict.get("pageSize", 20)
+
+        try:
+            # 获取设备方案查询集
+            device_scheme_qs = DeviceScheme.objects.all()
+
+            # 过滤条件
+            if serial_number:
+                device_scheme_qs = device_scheme_qs.filter(serial_number=serial_number)
+            if storage_code:
+                device_scheme_qs = device_scheme_qs.filter(storage_code__icontains=storage_code)
+            if device_type:
+                device_scheme_qs = device_scheme_qs.filter(device_type=device_type)
+            if phone_model:
+                device_scheme_qs = device_scheme_qs.filter(phone_model__icontains=phone_model)
+
+            # 分页
+            paginator = Paginator(device_scheme_qs.order_by('-created_time'), page_size)
+            device_schemes = paginator.page(page)
+
+            # 构建返回数据
+            device_list = []
+            for device in device_schemes.object_list:
+                # 获取关联的产品方案信息
+                product_scheme = ProductsScheme.objects.filter(storage_code=device.storage_code).first()
+
+                device_data = {
+                    'id': device.id,
+                    'serialNumber': device.serial_number,
+                    'type':'NVR' if device.device_type == 1 else 'IPC',
+                    'phoneModel': device.phone_model,
+                    'storageCode': device.storage_code,
+                    'createdTime': device.created_time,
+                    'updatedTime': device.updated_time,
+                }
+                if product_scheme:
+                    device_data.update({
+                        'orderNumber': product_scheme.order_number if product_scheme.order_number else '',
+                        'deviceType': product_scheme.device_type if product_scheme.device_type else '',
+                        'flash': product_scheme.flash if product_scheme.flash else '',
+                        'ddr': product_scheme.ddr if product_scheme.ddr else '',
+                        'mainController': product_scheme.main_controller if product_scheme.main_controller else '',
+                        'wifi': product_scheme.wifi if product_scheme.wifi else '',
+                        'fourG': product_scheme.four_g if product_scheme.four_g else '',
+                        'ad': product_scheme.ad if product_scheme.ad else '',
+                        'phy': product_scheme.phy if product_scheme.phy else '',
+                        'sensor': product_scheme.sensor if product_scheme.sensor else '',
+                        'orderQuantity': product_scheme.order_quantity if product_scheme.order_quantity else '',
+                        'customerCode': product_scheme.customer_code if product_scheme.customer_code else '',
+                        'remark': product_scheme.remark if product_scheme.remark else ''
+                    })
+                device_list.append(device_data)
+
+            data = {
+                'list': device_list,
+                'total': paginator.count,
+            }
+
+            return response.json(0, data)
+        except Exception as e:
+            print(e)
+            return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))