update statistic_distributor

FFIB vor 5 Jahren
Ursprung
Commit
111b53fbb1
1 geänderte Dateien mit 87 neuen Zeilen und 21 gelöschten Zeilen
  1. 87 21
      api/admin_views.py

+ 87 - 21
api/admin_views.py

@@ -316,7 +316,6 @@ def statistic_distributor(request):
316 316
     end_time = request.POST.get('end_time', '')
317 317
     model_name = request.POST.get('model_name', '')
318 318
     distributor_name = request.POST.get('distributor_name', '')
319
-    code_version = request.POST.get('code_version', '')
320 319
 
321 320
     if brand_id != settings.KODO_DEFAULT_BRAND_ID:
322 321
         return response(ProductBrandStatusCode.BRAND_NOT_MATCH)
@@ -326,37 +325,104 @@ def statistic_distributor(request):
326 325
     except AdministratorInfo.DoesNotExist:
327 326
         return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND)
328 327
 
329
-    logs = SaleclerkSubmitLogInfo.objects.filter(ymd__gte=start_time, ymd__lte=end_time, distributor_name__contains=distributor_name, model_uni_name__contains=model_name, code_version__contains=code_version, test_user=False, dupload=False, test_sn=False, status=True)
328
+    logs = SaleclerkSubmitLogInfo.objects.filter(ymd__gte=start_time, ymd__lte=end_time, distributor_name__contains=distributor_name, model_uni_name__contains=model_name, test_user=False, dupload=False, test_sn=False, status=True)
330 329
 
331 330
     daily_logs = list(logs.values('ymd').annotate(num=Count('pk')).order_by('ymd'))
332
-    daily_hasScan_logs = list(logs.filter(has_scan=True).values('ymd').annotate(has_scan_num=Count('pk')).order_by('ymd'))
331
+    daily_code1_logs = list(logs.filter(code_version=1).values('ymd').annotate(num=Count('pk')).order_by('ymd'))
332
+    daily_code1_hasScan_logs = list(logs.filter(code_version=1, has_scan=True).values('ymd').annotate(num=Count('pk')).order_by('ymd'))
333
+    daily_code2_logs = list(logs.filter(code_version=2).values('ymd').annotate(num=Count('pk')).order_by('ymd'))
334
+    daily_code2_hasScan_logs = list(logs.filter(code_version=2, has_scan=True).values('ymd').annotate(num=Count('pk')).order_by('ymd'))
333 335
 
334
-    j = 0
336
+    i1 = 0
337
+    i2 = 0
338
+    i3 = 0
339
+    i4 = 0
335 340
     for i in range(0, len(daily_logs)):
336
-        daily_logs[i]['has_scan_num'] = 0
337
-        if j < len(daily_hasScan_logs) and daily_logs[i]['ymd'] == daily_hasScan_logs[j]['ymd']:
338
-            daily_logs[i]['has_scan_num'] = daily_hasScan_logs[j]['has_scan_num']
339
-            j += 1
341
+        daily_logs[i]['code1'] = 0
342
+        daily_logs[i]['code2'] = 0
343
+        daily_logs[i]['has_code1_scan_num'] = 0
344
+        daily_logs[i]['has_code2_scan_num'] = 0
345
+        if i1 < len(daily_code1_hasScan_logs) and daily_logs[i]['ymd'] == daily_code1_hasScan_logs[i1]['ymd']:
346
+            daily_logs[i]['has_code1_scan_num'] = daily_code1_hasScan_logs[i1]['num']
347
+            i1 += 1
348
+
349
+        if i2 < len(daily_code1_logs) and daily_logs[i]['ymd'] == daily_code1_logs[i2]['ymd']:
350
+            daily_logs[i]['code1'] = daily_code1_logs[i2]['num']
351
+            i2 += 1
352
+        
353
+        if i3 < len(daily_code2_logs) and daily_logs[i]['ymd'] == daily_code2_logs[i3]['ymd']:
354
+            daily_logs[i]['code2'] = daily_code2_logs[i3]['num']
355
+            i3 += 1
356
+        
357
+        if i4 < len(daily_code2_hasScan_logs) and daily_logs[i]['ymd'] == daily_code2_hasScan_logs[i4]['ymd']:
358
+            daily_logs[i]['has_code2_scan_num'] = daily_code2_hasScan_logs[i4]['num']
359
+            i4 += 1
340 360
 
341 361
     model_logs = list(logs.values('model_uni_name').annotate(num=Count('pk')).order_by('model_uni_name'))
342
-    model_hasScan_logs = list(logs.filter(has_scan=True).values('model_uni_name').annotate(has_scan_num=Count('pk')).order_by('model_uni_name'))
362
+    model_code1_logs = list(logs.filter(code_version=1).values('model_uni_name').annotate(num=Count('pk')).order_by('model_uni_name'))
363
+    model_code1_hasScan_logs = list(logs.filter(code_version=1, has_scan=True).values('model_uni_name').annotate(num=Count('pk')).order_by('model_uni_name'))
364
+    model_code2_logs = list(logs.filter(code_version=2).values('model_uni_name').annotate(num=Count('pk')).order_by('model_uni_name'))
365
+    model_code2_hasScan_logs = list(logs.filter(code_version=2, has_scan=True).values('model_uni_name').annotate(num=Count('pk')).order_by('model_uni_name'))
343 366
 
344
-    j = 0
367
+    i1 = 0
368
+    i2 = 0
369
+    i3 = 0
370
+    i4 = 0
345 371
     for i in range(0, len(model_logs)):
346
-        model_logs[i]['has_scan_num'] = 0
347
-        if j < len(model_hasScan_logs) and model_logs[i]['model_uni_name'] == model_hasScan_logs[j]['model_uni_name']:
348
-            model_logs[i]['has_scan_num'] = model_hasScan_logs[j]['has_scan_num']
349
-            j += 1
372
+        model_logs[i]['code1'] = 0
373
+        model_logs[i]['code2'] = 0
374
+        model_logs[i]['has_code1_scan_num'] = 0
375
+        model_logs[i]['has_code2_scan_num'] = 0
376
+        if i1 < len(model_code1_hasScan_logs) and model_logs[i]['model_uni_name'] == model_code1_hasScan_logs[i1]['model_uni_name']:
377
+            model_logs[i]['has_code1_scan_num'] = model_code1_hasScan_logs[i1]['num']
378
+            i1 += 1
379
+
380
+        if i2 < len(model_code1_logs) and model_logs[i]['model_uni_name'] == model_code1_logs[i2]['model_uni_name']:
381
+            model_logs[i]['code1'] = model_code1_logs[i2]['num']
382
+            i2 += 1
383
+        
384
+        if i3 < len(model_code2_logs) and model_logs[i]['model_uni_name'] == model_code2_logs[i3]['model_uni_name']:
385
+            model_logs[i]['code2'] = model_code2_logs[i3]['num']
386
+            i3 += 1
387
+        
388
+        if i4 < len(model_code2_hasScan_logs) and model_logs[i]['model_uni_name'] == model_code2_hasScan_logs[i4]['model_uni_name']:
389
+            model_logs[i]['has_code2_scan_num'] = model_code2_hasScan_logs[i4]['num']
390
+            i4 += 1
391
+    
392
+    model_logs.sort(key=lambda k: (-k['num']))
350 393
 
351 394
     distributor_logs = list(logs.values('distributor_name').annotate(num=Count('pk')).order_by('distributor_name'))
352
-    distributor_hasScan_logs = list(logs.filter(has_scan=True).values('distributor_name').annotate(has_scan_num=Count('pk')).order_by('distributor_name'))
353
-
354
-    j = 0
395
+    distributor_code1_logs = list(logs.filter(code_version=1).values('distributor_name').annotate(num=Count('pk')).order_by('distributor_name'))
396
+    distributor_code1_hasScan_logs = list(logs.filter(code_version=1, has_scan=True).values('distributor_name').annotate(num=Count('pk')).order_by('distributor_name'))
397
+    distributor_code2_logs = list(logs.filter(code_version=2).values('distributor_name').annotate(num=Count('pk')).order_by('distributor_name'))
398
+    distributor_code2_hasScan_logs = list(logs.filter(code_version=2, has_scan=True).values('distributor_name').annotate(num=Count('pk')).order_by('distributor_name'))
399
+
400
+    i1 = 0
401
+    i2 = 0
402
+    i3 = 0
403
+    i4 = 0
355 404
     for i in range(0, len(distributor_logs)):
356
-        distributor_logs[i]['has_scan_num'] = 0
357
-        if j < len(distributor_hasScan_logs) and distributor_logs[i]['distributor_name'] == distributor_hasScan_logs[j]['distributor_name']:
358
-            distributor_logs[i]['has_scan_num'] = distributor_hasScan_logs[j]['has_scan_num']
359
-            j += 1
405
+        distributor_logs[i]['code1'] = 0
406
+        distributor_logs[i]['code2'] = 0
407
+        distributor_logs[i]['has_code1_scan_num'] = 0
408
+        distributor_logs[i]['has_code2_scan_num'] = 0
409
+        if i1 < len(distributor_code1_hasScan_logs) and distributor_logs[i]['distributor_name'] == distributor_code1_hasScan_logs[i1]['distributor_name']:
410
+            distributor_logs[i]['has_code1_scan_num'] = distributor_code1_hasScan_logs[i1]['num']
411
+            i1 += 1
412
+
413
+        if i2 < len(distributor_code1_logs) and distributor_logs[i]['distributor_name'] == distributor_code1_logs[i2]['distributor_name']:
414
+            distributor_logs[i]['code1'] = distributor_code1_logs[i2]['num']
415
+            i2 += 1
416
+        
417
+        if i3 < len(distributor_code2_logs) and distributor_logs[i]['distributor_name'] == distributor_code2_logs[i3]['distributor_name']:
418
+            distributor_logs[i]['code2'] = distributor_code2_logs[i3]['num']
419
+            i3 += 1
420
+        
421
+        if i4 < len(distributor_code2_hasScan_logs) and distributor_logs[i]['distributor_name'] == distributor_code2_hasScan_logs[i4]['distributor_name']:
422
+            distributor_logs[i]['has_code2_scan_num'] = distributor_code2_hasScan_logs[i4]['num']
423
+            i4 += 1
424
+
425
+    distributor_logs.sort(key=lambda k: (-k['num']))
360 426
 
361 427
     return response(200, 'Get Distributor Statistic Success', u'获取经销商统计成功', data={
362 428
         'daily_logs': daily_logs,