Browse Source

查询设备方案接口、优化添加产品问题接口

linhaohong 3 months ago
parent
commit
b67d9ab112
2 changed files with 59 additions and 1 deletions
  1. 57 1
      AdminController/ProblemEntryManagementController.py
  2. 2 0
      Model/models.py

+ 57 - 1
AdminController/ProblemEntryManagementController.py

@@ -5,7 +5,7 @@ from django.db import transaction
 from django.views import View
 
 from Ansjer.test.util.email_log import response
-from Model.models import Device_Info, DeviceScheme, ProductTroubleshoot, AbnormalEventCode
+from Model.models import DeviceScheme, ProductTroubleshoot, AbnormalEventCode, ProductsScheme
 from Object.ResponseObject import ResponseObject
 
 
@@ -29,6 +29,8 @@ class ProblemEntryView(View):
             return self.add_product_problem(request_dict, response)
         elif operation == 'queryEventSubcategory':
             return self.query_event_subcategory(request_dict, response)
+        elif operation == 'queryDeviceScheme':
+            return self.query_device_scheme(request_dict, response)
 
     @staticmethod
     def add_product_problem(request_dict, response):
@@ -37,6 +39,7 @@ class ProblemEntryView(View):
             date_times = json.loads(request_dict.get('dateTimes', '[]'))
             deivce_ids = json.loads(request_dict.get('deviceIds', '[]'))
             device_types = json.loads(request_dict.get('deviceTypes', '[]'))
+            storage_codes = json.loads(request_dict.get('storageCodes', '[]'))
             event_codes = json.loads(request_dict.get('eventCodes', '[]'))
             remarks = json.loads(request_dict.get('remarks', '[]'))
 
@@ -45,6 +48,7 @@ class ProblemEntryView(View):
                 "dateTimes": len(date_times),
                 "serialNumbers": len(deivce_ids),
                 "deviceTypes": len(device_types),
+                "storageCodes": len(storage_codes),
                 "eventCodes": len(event_codes),
                 "remarks": len(remarks)
             }
@@ -62,6 +66,7 @@ class ProblemEntryView(View):
                 date_time = date_times[idx]
                 deivce_id = deivce_ids[idx].strip()  # 去除前后空格
                 device_type = device_types[idx]
+                storage_code = storage_codes[idx]
                 event_code = event_codes[idx].strip()
                 remark = remarks[idx].strip()
 
@@ -72,6 +77,7 @@ class ProblemEntryView(View):
                         device_id=deivce_id,
                         device_type=device_type,
                         event_code=event_code,
+                        storage_code=storage_code,
                         status=0,
                         remark=remark,
                         created_time=current_time,
@@ -114,3 +120,53 @@ class ProblemEntryView(View):
             )
 
         return response.json(0, data)
+
+    @staticmethod
+    def query_device_scheme(request_dict, response):
+        device_id = request_dict.get('deviceId', None)
+        if not device_id:
+            return response.json(0, msg="设备ID不能为空")
+
+        try:
+            # 获取设备信息
+            device_scheme = DeviceScheme.objects.filter(serial_number=device_id).values("device_type",
+                                                                                        "storage_code").first()
+            if not device_scheme:
+                return response.json(0)
+
+            # 获取产品方案信息
+            product_scheme = ProductsScheme.objects.filter(
+                storage_code=device_scheme["storage_code"]
+            ).values(
+                "order_quantity", "created_time", "storage_code", "flash",
+                "ddr", "main_controller", "wifi", "four_g", "ad", "sensor", "phy"
+            ).first()
+
+            if not product_scheme:
+                return response.json(0, {"deviceType": device_scheme["device_type"]})
+
+            # 拼接方案字符串,过滤空值
+            scheme_parts = [
+                product_scheme["flash"],
+                product_scheme["ddr"],
+                product_scheme["main_controller"],
+                product_scheme["wifi"],
+                product_scheme["four_g"],
+                product_scheme["ad"],
+                product_scheme["sensor"],
+                product_scheme["phy"]
+            ]
+            scheme = " + ".join(part for part in scheme_parts if part)
+
+            return response.json(0, {
+                "deviceType": device_scheme["device_type"],
+                "quantity": product_scheme["order_quantity"],
+                "createdTime": product_scheme["created_time"],
+                "storageCode": product_scheme["storage_code"],
+                "scheme": scheme,
+            })
+
+
+        except Exception as e:
+            print(e)
+            return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))

+ 2 - 0
Model/models.py

@@ -5900,7 +5900,9 @@ class ProductTroubleshoot(models.Model):
     date_time = models.IntegerField(default=0, verbose_name='产品录入时间')
     device_type = models.SmallIntegerField(default=0, verbose_name='设备大类')
     device_id = models.CharField(blank=True, max_length=50, db_index=True, default='', verbose_name='序列号')
+    storage_code = models.CharField(max_length=50, unique=True, verbose_name='入库编码')
     event_code = models.CharField(default='', max_length=16, verbose_name='异常事件编码')
+    status = models.SmallIntegerField(default=0, verbose_name='处理状态')
     remark = models.TextField(blank=True, verbose_name="备注")
     created_time = models.IntegerField(default=0, verbose_name='创建时间')
     updated_time = models.IntegerField(default=0, verbose_name='更新时间')