SerialNumberCheckController.py 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. # -*- encoding: utf-8 -*-
  2. """
  3. @File : SerialNumberCheckController.py
  4. @Time : 2024/6/20 13:33
  5. @Author : stephen
  6. @Email : zhangdongming@asj6.wecom.work
  7. @Software: PyCharm
  8. """
  9. import time
  10. from django.http import QueryDict
  11. from django.views import View
  12. from Ansjer.config import LOGGER
  13. from Model.models import SerialNumberCheckLog
  14. from Object.ResponseObject import ResponseObject
  15. class SerialNumberView(View):
  16. def get(self, request, *args, **kwargs):
  17. request.encoding = 'utf-8'
  18. operation = kwargs.get('operation')
  19. return self.validation(request.GET, request, operation)
  20. def post(self, request, *args, **kwargs):
  21. request.encoding = 'utf-8'
  22. operation = kwargs.get('operation')
  23. return self.validation(request.POST, request, operation)
  24. def delete(self, request, *args, **kwargs):
  25. request.encoding = 'utf-8'
  26. operation = kwargs.get('operation')
  27. delete = QueryDict(request.body)
  28. if not delete:
  29. delete = request.GET
  30. return self.validation(delete, request, operation)
  31. def put(self, request, *args, **kwargs):
  32. request.encoding = 'utf-8'
  33. operation = kwargs.get('operation')
  34. put = QueryDict(request.body)
  35. return self.validation(put, request, operation)
  36. def validation(self, request_dict, request, operation):
  37. response = ResponseObject('cn')
  38. if operation == 'serialNumberCheck':
  39. return self.save_serial_number_log(request_dict, response)
  40. @classmethod
  41. def save_serial_number_log(cls, request_dict, response):
  42. """
  43. 保存APP扫码工具排查序列号重复日志
  44. @param request_dict: 序列号、手机型号、类型
  45. @param response: 响应类
  46. @return:
  47. """
  48. serial_no = request_dict.get("serialNo", None)
  49. phone_model = request_dict.get("phoneModel", None)
  50. if not serial_no:
  51. return response.json(444)
  52. p_type = int(request_dict.get('type', 0))
  53. n_time = int(time.time())
  54. try:
  55. first_serial = serial_no[:6]
  56. # 查询当前工位是否扫过序列号
  57. first_serial_qs = SerialNumberCheckLog.objects.filter(serial_number=first_serial, type=p_type)
  58. if first_serial_qs.exists():
  59. result = {
  60. "serialNumber": serial_no,
  61. "phoneModel": '',
  62. "createdTime": '',
  63. }
  64. # APP扫码工具记录+1
  65. params = {'serial_number': first_serial, 'created_time': n_time,
  66. 'full_serial_number': serial_no, 'type': p_type, 'phone_model': phone_model}
  67. SerialNumberCheckLog.objects.create(**params)
  68. return response.json(174, result)
  69. else:
  70. params = {'serial_number': first_serial, 'created_time': n_time,
  71. 'full_serial_number': serial_no, 'type': p_type, 'phone_model': phone_model}
  72. SerialNumberCheckLog.objects.create(**params)
  73. return response.json(0)
  74. except Exception as e:
  75. LOGGER.error('APP扫码工具保存日志异常:errLine:{}, errMsg:{}'
  76. .format(e.__traceback__.tb_lineno, repr(e)))