Browse Source

新增序列号查重日志接口

zhangdongming 1 year ago
parent
commit
85ae047428
3 changed files with 105 additions and 0 deletions
  1. 2 0
      Ansjer/urls.py
  2. 85 0
      Controller/UserDevice/SerialNumberCheckController.py
  3. 18 0
      Model/models.py

+ 2 - 0
Ansjer/urls.py

@@ -32,6 +32,7 @@ from Controller.SensorGateway import SensorGatewayController, EquipmentFamilyCon
 from Controller.Surveys import CloudStorageController
 from Controller.Surveys import CloudStorageController
 from Controller.UserDevice import UserDeviceShareController, UserSubscriptionController
 from Controller.UserDevice import UserDeviceShareController, UserSubscriptionController
 from Controller.CampaignController import AppCampaignController
 from Controller.CampaignController import AppCampaignController
+from Controller.UserDevice import SerialNumberCheckController
 from Model import views  # 定时任务,不要删除该行代码
 from Model import views  # 定时任务,不要删除该行代码
 
 
 urlpatterns = [
 urlpatterns = [
@@ -274,6 +275,7 @@ urlpatterns = [
     re_path('appCampaign/(?P<operation>.*)', AppCampaignController.AppCampaignView.as_view()),
     re_path('appCampaign/(?P<operation>.*)', AppCampaignController.AppCampaignView.as_view()),
     re_path('wsParam/(?P<operation>.*)', SmartReplyController.WsParamService.as_view()),
     re_path('wsParam/(?P<operation>.*)', SmartReplyController.WsParamService.as_view()),
     re_path('customSubscription/(?P<operation>.*)', UserSubscriptionController.UserSubscriptionControllerView.as_view()),
     re_path('customSubscription/(?P<operation>.*)', UserSubscriptionController.UserSubscriptionControllerView.as_view()),
+    re_path(r'^basic/serialNumber/(?P<operation>.*)', SerialNumberCheckController.SerialNumberView.as_view()),
 
 
     # 后台界面接口 -------------------------------------------------------------------------------------------------------
     # 后台界面接口 -------------------------------------------------------------------------------------------------------
     # 登录,用户信息,权限
     # 登录,用户信息,权限

+ 85 - 0
Controller/UserDevice/SerialNumberCheckController.py

@@ -0,0 +1,85 @@
+# -*- encoding: utf-8 -*-
+"""
+@File    : SerialNumberCheckController.py
+@Time    : 2024/6/20 13:33
+@Author  : stephen
+@Email   : zhangdongming@asj6.wecom.work
+@Software: PyCharm
+"""
+import time
+
+from django.http import QueryDict
+from django.views import View
+
+from Ansjer.config import LOGGER
+from Model.models import SerialNumberCheckLog
+from Object.ResponseObject import ResponseObject
+
+
+class SerialNumberView(View):
+    def get(self, request, *args, **kwargs):
+        request.encoding = 'utf-8'
+        operation = kwargs.get('operation')
+        return self.validation(request.GET, request, operation)
+
+    def post(self, request, *args, **kwargs):
+        request.encoding = 'utf-8'
+        operation = kwargs.get('operation')
+        return self.validation(request.POST, request, operation)
+
+    def delete(self, request, *args, **kwargs):
+        request.encoding = 'utf-8'
+        operation = kwargs.get('operation')
+        delete = QueryDict(request.body)
+        if not delete:
+            delete = request.GET
+        return self.validation(delete, request, operation)
+
+    def put(self, request, *args, **kwargs):
+        request.encoding = 'utf-8'
+        operation = kwargs.get('operation')
+        put = QueryDict(request.body)
+        return self.validation(put, request, operation)
+
+    def validation(self, request_dict, request, operation):
+        response = ResponseObject('cn')
+        if operation == 'serialNumberCheck':
+            return self.save_serial_number_log(request_dict, response)
+
+    @classmethod
+    def save_serial_number_log(cls, request_dict, response):
+        """
+        保存APP扫码工具排查序列号重复日志
+        @param request_dict: 序列号、手机型号、类型
+        @param response: 响应类
+        @return:
+        """
+        serial_no = request_dict.get("serialNo", None)
+        phone_model = request_dict.get("phoneModel", None)
+        if not serial_no:
+            return response.json(444)
+        p_type = int(request_dict.get('type', 0))
+        n_time = int(time.time())
+        try:
+            first_serial = serial_no[:6]
+            # 查询当前工位是否扫过序列号
+            first_serial_qs = SerialNumberCheckLog.objects.filter(serial_number=first_serial, type=p_type)
+            if first_serial_qs.exists():
+                result = {
+                    "serialNumber": serial_no,
+                    "phoneModel": '',
+                    "createdTime": '',
+                }
+                # APP扫码工具记录+1
+                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)
+                return response.json(174, result)
+            else:
+                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)
+                return response.json(0)
+        except Exception as e:
+            LOGGER.error('APP扫码工具保存日志异常:errLine:{}, errMsg:{}'
+                         .format(e.__traceback__.tb_lineno, repr(e)))

+ 18 - 0
Model/models.py

@@ -5003,3 +5003,21 @@ class UserAudioVideoPush(models.Model):
     class Meta:
     class Meta:
         db_table = 'user_audio_video_push'
         db_table = 'user_audio_video_push'
         verbose_name = '用户音视频推送表'
         verbose_name = '用户音视频推送表'
+
+
+class SerialNumberCheckLog(models.Model):
+    id = models.AutoField(primary_key=True, verbose_name='自增id')
+    serial_number = models.CharField(blank=True, unique=True, db_index=True, max_length=20, default='',
+                                     verbose_name='6序列号')
+    full_serial_number = models.CharField(blank=True, unique=True, db_index=True, max_length=20, default='',
+                                          verbose_name='完成序列号')
+    count = models.IntegerField(default=1, verbose_name='计算')
+    # 工位类型,1:三乡总装,2:三乡包装,3:三乡返工,4:三乡管理,5:珠海包装
+    type = models.SmallIntegerField(default=0, verbose_name='分类')
+    phone_model = models.CharField(max_length=64, default='', verbose_name='手机型号')
+    created_time = models.IntegerField(default=0, verbose_name='创建时间')
+
+    class Meta:
+        db_table = 'serial_number_check_log'
+        verbose_name = '序列号检查日志'
+        verbose_name_plural = verbose_name