优化 statistic_distributor

FFIB vor 4 Jahren
Ursprung
Commit
4a0627b8dd
1 geänderte Dateien mit 13 neuen Zeilen und 7 gelöschten Zeilen
  1. 13 7
      api/admin_views.py

+ 13 - 7
api/admin_views.py

@@ -390,19 +390,25 @@ def statistic_distributor(request):
390 390
     except AdministratorInfo.DoesNotExist:
391 391
         return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND)
392 392
 
393
-    daily_logs = SaleclerkSubmitLogInfo.objects.raw('select id, ymd, Count(*) AS num, Count(code_version=1 or NULL) AS code1 , Count(code_version=2 or NULL) AS code2, Count((code_version=1 AND has_scan=True) or NULL) AS has_code1_scan_num, Count((code_version=2 AND has_scan=True) or NULL) AS has_code2_scan_num FROM integral_saleclerksubmitloginfo where ymd >= %s AND ymd <= %s AND test_user=False AND dupload=False AND test_sn=False AND status=True AND CONTAINS(model_uni_name, %s) AND CONTAINS(distributor_name, %s) GROUP BY ymd;', [start_time, end_time, model_name, distributor_name])
393
+    daily_sql = 'select id, ymd, Count(*) AS num, Count(code_version=1 or NULL) AS code1 , Count(code_version=2 or NULL) AS code2, Count((code_version=1 AND has_scan=True) or NULL) AS has_code1_scan_num, Count((code_version=2 AND has_scan=True) or NULL) AS has_code2_scan_num FROM integral_saleclerksubmitloginfo where ymd >= %s AND ymd <= %s AND test_user=False AND dupload=False AND test_sn=False AND status=True %s %s GROUP BY ymd;' % (start_time, end_time, ('AND model_uni_name = %s' ,(model_name)) if model_name else '', ('AND distributor_name = %s' ,(distributor_name)) if distributor_name else '')
394
+    daily_logs = SaleclerkSubmitLogInfo.objects.raw(daily_sql)
395
+    print(daily_logs)
394 396
 
395 397
     daily_logs = [{'ymd': log.ymd, 'num': log.num, 'code1': log.code1, 'code2': log.code2, 'has_code1_scan_num': log.has_code1_scan_num, 'has_code2_scan_num': log.has_code2_scan_num} for log in daily_logs]
396 398
 
399
+    model_logs = []
397 400
     if model_name == '':
398
-        model_logs = SaleclerkSubmitLogInfo.objects.raw('select id, model_uni_name, Count(*) AS num, Count(code_version=1 or NULL) AS code1 , Count(code_version=2 or NULL) AS code2, Count((code_version=1 AND has_scan=True) or NULL) AS has_code1_scan_num, Count((code_version=2 AND has_scan=True) or NULL) AS has_code2_scan_num FROM integral_saleclerksubmitloginfo where ymd >= %s AND ymd <= %s AND test_user=False AND dupload=False AND test_sn=False AND status=True AND CONTAINS(distributor_name, %s) GROUP BY model_uni_name;', [start_time, end_time, distributor_name])
399
-        
400
-        model_logs = [{'model_uni_name': log.model_uni_name, 'num': log.num, 'code1': log.code1, 'code2': log.code2, 'has_code1_scan_num': log.has_code1_scan_num, 'has_code2_scan_num': log.has_code2_scan_num} for log in daily_logs]
401
+        model_sql = 'select id, model_uni_name, Count(*) AS num, Count(code_version=1 or NULL) AS code1 , Count(code_version=2 or NULL) AS code2, Count((code_version=1 AND has_scan=True) or NULL) AS has_code1_scan_num, Count((code_version=2 AND has_scan=True) or NULL) AS has_code2_scan_num FROM integral_saleclerksubmitloginfo where ymd >= %s AND ymd <= %s AND test_user=False AND dupload=False AND test_sn=False AND status=True %s GROUP BY model_uni_name;' % (start_time, end_time, ('AND distributor_name = %s' ,(distributor_name)) if distributor_name else '')
402
+
403
+        model_logs = SaleclerkSubmitLogInfo.objects.raw(model_sql)
404
+        model_logs = [{'model_uni_name': log.model_uni_name, 'num': log.num, 'code1': log.code1, 'code2': log.code2, 'has_code1_scan_num': log.has_code1_scan_num, 'has_code2_scan_num': log.has_code2_scan_num} for log in model_logs]
401 405
     
406
+    distributor_logs = []
402 407
     if distributor_name == '':
403
-        distributor_logs = SaleclerkSubmitLogInfo.objects.raw('select id, distributor_name, Count(*) AS num, Count(code_version=1 or NULL) AS code1 , Count(code_version=2 or NULL) AS code2, Count((code_version=1 AND has_scan=True) or NULL) AS has_code1_scan_num, Count((code_version=2 AND has_scan=True) or NULL) AS has_code2_scan_num FROM integral_saleclerksubmitloginfo where ymd >= %s AND ymd <= %s AND test_user=False AND dupload=False AND test_sn=False AND status=True AND CONTAINS(model_uni_name, %s) GROUP BY distributor_name;', [start_time, end_time, model_name])
404
-        
405
-        distributor_logs = [{'distributor_name': log.distributor_name, 'num': log.num, 'code1': log.code1, 'code2': log.code2, 'has_code1_scan_num': log.has_code1_scan_num, 'has_code2_scan_num': log.has_code2_scan_num} for log in daily_logs]
408
+        distributor_sql = 'select id, distributor_name, Count(*) AS num, Count(code_version=1 or NULL) AS code1 , Count(code_version=2 or NULL) AS code2, Count((code_version=1 AND has_scan=True) or NULL) AS has_code1_scan_num, Count((code_version=2 AND has_scan=True) or NULL) AS has_code2_scan_num FROM integral_saleclerksubmitloginfo where ymd >= %s AND ymd <= %s AND test_user=False AND dupload=False AND test_sn=False AND status=True %s GROUP BY distributor_name;' % (start_time, end_time, ('AND model_uni_name = %s' ,(model_name)) if model_name else '')
409
+
410
+        distributor_logs = SaleclerkSubmitLogInfo.objects.raw(distributor_sql)
411
+        distributor_logs = [{'distributor_name': log.distributor_name, 'num': log.num, 'code1': log.code1, 'code2': log.code2, 'has_code1_scan_num': log.has_code1_scan_num, 'has_code2_scan_num': log.has_code2_scan_num} for log in distributor_logs]
406 412
 
407 413
     # daily_logs = list(logs.values('ymd').annotate(num=Count('pk')).order_by('ymd'))
408 414
     # daily_code1_logs = list(logs.filter(code_version=1).values('ymd').annotate(num=Count('pk')).order_by('ymd'))