瀏覽代碼

优化设备重置数据信息、APP扫码辅助工具新增查询三乡扫码记录

zhangdongming 1 年之前
父節點
當前提交
61bee7cc68
共有 2 個文件被更改,包括 80 次插入13 次删除
  1. 64 10
      AdminController/DeviceManagementController.py
  2. 16 3
      Controller/UserDevice/SerialNumberCheckController.py

+ 64 - 10
AdminController/DeviceManagementController.py

@@ -26,6 +26,7 @@ from Service.EquipmentInfoService import EquipmentInfoService
 from Service.ModelService import ModelService
 from Service.VodHlsService import SplitVodHlsObject
 from Ansjer.config import SERVER_DOMAIN_TEST, SERVER_DOMAIN_CN, SERVER_DOMAIN_US, SERVER_DOMAIN_EUR
+from Ansjer.config import LOGGER
 
 
 class DeviceManagement(View):
@@ -53,6 +54,8 @@ class DeviceManagement(View):
             return self.add_app_device_type(request_dict, response, request)
         elif operation == 'getUidPush':  # 查询推送信息
             return self.get_uid_push(request_dict, response)
+        elif operation == 'checkDeviceInfo':
+            return self.query_device_user(request, request_dict, response)
         else:
             tko = TokenObject(
                 request.META.get('HTTP_AUTHORIZATION'),
@@ -481,16 +484,16 @@ class DeviceManagement(View):
                     Device_Info.objects.filter(UID__in=uidList).update(vodPrimaryUserID='', vodPrimaryMaster='')
 
                 # 上传序列号文件且选中序列号解绑uid
-                if serialNumberList is not None and '序列号解绑uid' in delDataOptions:
-                    # 解绑uid数据
-                    UIDModel.objects.filter(uid__in=uidList, status=2).update(status=0)
-                    UIDCompanySerialModel.objects.filter(uid__uid__in=uidList).delete()
-                    CompanySerialModel.objects.filter(serial_number__in=serial_number_list).update(status=1)
-                    UidPushModel.objects.filter(uid_set__uid__in=uidList).delete()
-                    # 序列号加入重置状态redis列表
-                    redis_obj = RedisObject()
-                    for serial in serial_number_list:
-                        redis_obj.rpush(UNUSED_SERIAL_REDIS_LIST, serial)
+                # if serialNumberList is not None and '序列号解绑uid' in delDataOptions:
+                #     # 解绑uid数据
+                #     UIDModel.objects.filter(uid__in=uidList, status=2).update(status=0)
+                #     UIDCompanySerialModel.objects.filter(uid__uid__in=uidList).delete()
+                #     CompanySerialModel.objects.filter(serial_number__in=serial_number_list).update(status=1)
+                #     UidPushModel.objects.filter(uid_set__uid__in=uidList).delete()
+                #     # 序列号加入重置状态redis列表
+                #     redis_obj = RedisObject()
+                #     for serial in serial_number_list:
+                #         redis_obj.rpush(UNUSED_SERIAL_REDIS_LIST, serial)
 
                 device_list = uidList if serialNumberList is None else serial_number_list
                 log = {
@@ -1059,3 +1062,54 @@ class DeviceManagement(View):
                 return response.json(500, 'error_line:{}, error_msg:{}'.format(e.__traceback__.tb_lineno, repr(e)))
 
         return response.json(0, {"list": return_value_list})
+
+    @classmethod
+    def query_device_user(cls, request, request_dict, response):
+        try:
+            # 从请求中检索文件
+            file = request.FILES.get('deviceFile')
+            fileType = int(request_dict.get('type', 1))
+            uid_list = []
+
+            if not file:
+                return response.json(444)
+
+            # 处理文件内容并生成UID列表
+            for item in file:
+                id_val = item.decode().strip().replace(" ", "")
+                if fileType == 2:
+                    uid = CommonService.get_uid_by_serial_number(id_val[:9])
+                    uid_list.append(uid)
+                else:
+                    uid_list.append(id_val)
+
+            if not uid_list:
+                return response.json(0, {'userInfo': []})
+
+            user_info = []
+            batch_size = 50  # 为查询设置合理的批处理大小
+
+            # 批量获取设备信息
+            for i in range(0, len(uid_list), batch_size):
+                batch_uids = uid_list[i:i + batch_size]
+                device_info_qs = Device_Info.objects.filter(UID__in=batch_uids).values('UID', 'NickName', 'ip',
+                                                                                       'userID__username')
+                uid_to_device_info = {device_info['UID']: device_info for device_info in device_info_qs}
+
+                # 将查询到的设备信息与当前批次进行匹配
+                for uid in batch_uids:
+                    if uid in uid_to_device_info:
+                        device_info = uid_to_device_info[uid]
+                        user_info.append({
+                            'uid': device_info['UID'],
+                            'deviceName': device_info['NickName'],
+                            'ip': device_info['ip'],
+                            'uName': device_info['userID__username']
+                        })
+
+            # 返回带有用户信息的响应
+            return response.json(0, {'userInfo': user_info})
+
+        except Exception as e:
+            LOGGER.error(f'查询设备信息异常: errLine: {e.__traceback__.tb_lineno}, errMsg: {repr(e)}')
+            return response.json(5)

+ 16 - 3
Controller/UserDevice/SerialNumberCheckController.py

@@ -61,13 +61,14 @@ class SerialNumberView(View):
         p_type = int(request_dict.get('type', 0))
         n_time = int(time.time())
         try:
-            dict_type = {'1': '三乡总装', '2': '三乡包装', '3': '三乡返工', '4': '三乡管理', '5': '珠海包装', '6': '珠海管理'}
+            dict_type = {'1': '三乡总装', '2': '三乡包装', '3': '三乡返工', '4': '三乡管理', '5': '珠海翻新', '6': '珠海管理'}
             first_serial = serial_no[:6]
             # 查询当前工位是否扫过序列号
             first_serial_qs = SerialNumberCheckLog.objects.filter(serial_number=first_serial)
-            # 工位类型,1:三乡总装,2:三乡包装,3:三乡返工,4:三乡管理,5:珠海包装
+            # 工位类型,1:三乡总装,2:三乡包装,3:三乡返工,4:三乡管理,5:珠海翻新,6:珠海管理
             if p_type == 4 or p_type == 6:
-                first_serial_qs = first_serial_qs.filter(type=5) if p_type == 6 else first_serial_qs.exclude(type=5)
+                first_serial_qs = first_serial_qs.filter(type__in=[2, 5]) if p_type == 6 \
+                    else first_serial_qs.exclude(type=5)
                 first_serial_qs = first_serial_qs.order_by('type', '-created_time')
                 if not first_serial_qs.exists():
                     return response.json(173)
@@ -98,6 +99,18 @@ class SerialNumberView(View):
                 params = {'serial_number': first_serial, 'created_time': n_time,
                           'full_serial_number': serial_no, 'type': p_type, 'phone_model': phone_model}
                 SerialNumberCheckLog.objects.create(**params)
+                # 珠海翻新查询三乡包装扫码记录超过2次则提示异常
+                if p_type == 5:
+                    s_qs = SerialNumberCheckLog.objects.filter(serial_number=first_serial, type=2)
+                    if s_qs.count() >= 2:
+                        # 返回当前序列号数据结构
+                        log_dict = {'fullSerialNumber': s_qs[0].full_serial_number,
+                                    'count': s_qs[0].count, 'type': s_qs[0].type,
+                                    'createdTime': s_qs[0].created_time,
+                                    'stationName': dict_type[str(s_qs[0].type)],
+                                    'phoneModel': s_qs[0].phone_model}
+                        result = {'logs': [log_dict]}
+                        return response.json(174, result)
                 return response.json(0)
         except Exception as e:
             LOGGER.error('APP扫码工具保存日志异常:errLine:{}, errMsg:{}'