|
|
@@ -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,
|