|  |  | @@ -390,104 +390,118 @@ def statistic_distributor(request): | 
            
            
              | 390 | 390 |      except AdministratorInfo.DoesNotExist: | 
            
            
              | 391 | 391 |          return response(AdministratorStatusCode.ADMINISTRATOR_NOT_FOUND) | 
            
            
              | 392 | 392 |   | 
            
            
              | 393 |  | -    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) | 
            
            
              | 394 |  | - | 
            
            
              | 395 |  | -    daily_logs = list(logs.values('ymd').annotate(num=Count('pk')).order_by('ymd')) | 
            
            
              | 396 |  | -    daily_code1_logs = list(logs.filter(code_version=1).values('ymd').annotate(num=Count('pk')).order_by('ymd')) | 
            
            
              | 397 |  | -    daily_code1_hasScan_logs = list(logs.filter(code_version=1, has_scan=True).values('ymd').annotate(num=Count('pk')).order_by('ymd')) | 
            
            
              | 398 |  | -    daily_code2_logs = list(logs.filter(code_version=2).values('ymd').annotate(num=Count('pk')).order_by('ymd')) | 
            
            
              | 399 |  | -    daily_code2_hasScan_logs = list(logs.filter(code_version=2, has_scan=True).values('ymd').annotate(num=Count('pk')).order_by('ymd')) | 
            
            
              | 400 |  | - | 
            
            
              | 401 |  | -    i1 = 0 | 
            
            
              | 402 |  | -    i2 = 0 | 
            
            
              | 403 |  | -    i3 = 0 | 
            
            
              | 404 |  | -    i4 = 0 | 
            
            
              | 405 |  | -    for i in range(0, len(daily_logs)): | 
            
            
              | 406 |  | -        daily_logs[i]['code1'] = 0 | 
            
            
              | 407 |  | -        daily_logs[i]['code2'] = 0 | 
            
            
              | 408 |  | -        daily_logs[i]['has_code1_scan_num'] = 0 | 
            
            
              | 409 |  | -        daily_logs[i]['has_code2_scan_num'] = 0 | 
            
            
              | 410 |  | -        if i1 < len(daily_code1_hasScan_logs) and daily_logs[i]['ymd'] == daily_code1_hasScan_logs[i1]['ymd']: | 
            
            
              | 411 |  | -            daily_logs[i]['has_code1_scan_num'] = daily_code1_hasScan_logs[i1]['num'] | 
            
            
              | 412 |  | -            i1 += 1 | 
            
            
              | 413 |  | - | 
            
            
              | 414 |  | -        if i2 < len(daily_code1_logs) and daily_logs[i]['ymd'] == daily_code1_logs[i2]['ymd']: | 
            
            
              | 415 |  | -            daily_logs[i]['code1'] = daily_code1_logs[i2]['num'] | 
            
            
              | 416 |  | -            i2 += 1 | 
            
            
              | 417 |  | - | 
            
            
              | 418 |  | -        if i3 < len(daily_code2_logs) and daily_logs[i]['ymd'] == daily_code2_logs[i3]['ymd']: | 
            
            
              | 419 |  | -            daily_logs[i]['code2'] = daily_code2_logs[i3]['num'] | 
            
            
              | 420 |  | -            i3 += 1 | 
            
            
              | 421 |  | - | 
            
            
              | 422 |  | -        if i4 < len(daily_code2_hasScan_logs) and daily_logs[i]['ymd'] == daily_code2_hasScan_logs[i4]['ymd']: | 
            
            
              | 423 |  | -            daily_logs[i]['has_code2_scan_num'] = daily_code2_hasScan_logs[i4]['num'] | 
            
            
              | 424 |  | -            i4 += 1 | 
            
            
              | 425 |  | - | 
            
            
              | 426 |  | -    model_logs = list(logs.values('model_uni_name').annotate(num=Count('pk')).order_by('model_uni_name')) | 
            
            
              | 427 |  | -    model_code1_logs = list(logs.filter(code_version=1).values('model_uni_name').annotate(num=Count('pk')).order_by('model_uni_name')) | 
            
            
              | 428 |  | -    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')) | 
            
            
              | 429 |  | -    model_code2_logs = list(logs.filter(code_version=2).values('model_uni_name').annotate(num=Count('pk')).order_by('model_uni_name')) | 
            
            
              | 430 |  | -    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')) | 
            
            
              | 431 |  | - | 
            
            
              | 432 |  | -    i1 = 0 | 
            
            
              | 433 |  | -    i2 = 0 | 
            
            
              | 434 |  | -    i3 = 0 | 
            
            
              | 435 |  | -    i4 = 0 | 
            
            
              | 436 |  | -    for i in range(0, len(model_logs)): | 
            
            
              | 437 |  | -        model_logs[i]['code1'] = 0 | 
            
            
              | 438 |  | -        model_logs[i]['code2'] = 0 | 
            
            
              | 439 |  | -        model_logs[i]['has_code1_scan_num'] = 0 | 
            
            
              | 440 |  | -        model_logs[i]['has_code2_scan_num'] = 0 | 
            
            
              | 441 |  | -        if i1 < len(model_code1_hasScan_logs) and model_logs[i]['model_uni_name'] == model_code1_hasScan_logs[i1]['model_uni_name']: | 
            
            
              | 442 |  | -            model_logs[i]['has_code1_scan_num'] = model_code1_hasScan_logs[i1]['num'] | 
            
            
              | 443 |  | -            i1 += 1 | 
            
            
              | 444 |  | - | 
            
            
              | 445 |  | -        if i2 < len(model_code1_logs) and model_logs[i]['model_uni_name'] == model_code1_logs[i2]['model_uni_name']: | 
            
            
              | 446 |  | -            model_logs[i]['code1'] = model_code1_logs[i2]['num'] | 
            
            
              | 447 |  | -            i2 += 1 | 
            
            
              | 448 |  | - | 
            
            
              | 449 |  | -        if i3 < len(model_code2_logs) and model_logs[i]['model_uni_name'] == model_code2_logs[i3]['model_uni_name']: | 
            
            
              | 450 |  | -            model_logs[i]['code2'] = model_code2_logs[i3]['num'] | 
            
            
              | 451 |  | -            i3 += 1 | 
            
            
              | 452 |  | - | 
            
            
              | 453 |  | -        if i4 < len(model_code2_hasScan_logs) and model_logs[i]['model_uni_name'] == model_code2_hasScan_logs[i4]['model_uni_name']: | 
            
            
              | 454 |  | -            model_logs[i]['has_code2_scan_num'] = model_code2_hasScan_logs[i4]['num'] | 
            
            
              | 455 |  | -            i4 += 1 | 
            
            
              | 456 |  | - | 
            
            
              | 457 |  | -    model_logs.sort(key=lambda k: (-k['num'])) | 
            
            
              | 458 |  | - | 
            
            
              | 459 |  | -    distributor_logs = list(logs.values('distributor_name').annotate(num=Count('pk')).order_by('distributor_name')) | 
            
            
              | 460 |  | -    distributor_code1_logs = list(logs.filter(code_version=1).values('distributor_name').annotate(num=Count('pk')).order_by('distributor_name')) | 
            
            
              | 461 |  | -    distributor_code1_hasScan_logs = list(logs.filter(code_version=1, has_scan=True).values('distributor_name').annotate(num=Count('pk')).order_by('distributor_name')) | 
            
            
              | 462 |  | -    distributor_code2_logs = list(logs.filter(code_version=2).values('distributor_name').annotate(num=Count('pk')).order_by('distributor_name')) | 
            
            
              | 463 |  | -    distributor_code2_hasScan_logs = list(logs.filter(code_version=2, has_scan=True).values('distributor_name').annotate(num=Count('pk')).order_by('distributor_name')) | 
            
            
              | 464 |  | - | 
            
            
              | 465 |  | -    i1 = 0 | 
            
            
              | 466 |  | -    i2 = 0 | 
            
            
              | 467 |  | -    i3 = 0 | 
            
            
              | 468 |  | -    i4 = 0 | 
            
            
              | 469 |  | -    for i in range(0, len(distributor_logs)): | 
            
            
              | 470 |  | -        distributor_logs[i]['code1'] = 0 | 
            
            
              | 471 |  | -        distributor_logs[i]['code2'] = 0 | 
            
            
              | 472 |  | -        distributor_logs[i]['has_code1_scan_num'] = 0 | 
            
            
              | 473 |  | -        distributor_logs[i]['has_code2_scan_num'] = 0 | 
            
            
              | 474 |  | -        if i1 < len(distributor_code1_hasScan_logs) and distributor_logs[i]['distributor_name'] == distributor_code1_hasScan_logs[i1]['distributor_name']: | 
            
            
              | 475 |  | -            distributor_logs[i]['has_code1_scan_num'] = distributor_code1_hasScan_logs[i1]['num'] | 
            
            
              | 476 |  | -            i1 += 1 | 
            
            
              | 477 |  | - | 
            
            
              | 478 |  | -        if i2 < len(distributor_code1_logs) and distributor_logs[i]['distributor_name'] == distributor_code1_logs[i2]['distributor_name']: | 
            
            
              | 479 |  | -            distributor_logs[i]['code1'] = distributor_code1_logs[i2]['num'] | 
            
            
              | 480 |  | -            i2 += 1 | 
            
            
              | 481 |  | - | 
            
            
              | 482 |  | -        if i3 < len(distributor_code2_logs) and distributor_logs[i]['distributor_name'] == distributor_code2_logs[i3]['distributor_name']: | 
            
            
              | 483 |  | -            distributor_logs[i]['code2'] = distributor_code2_logs[i3]['num'] | 
            
            
              | 484 |  | -            i3 += 1 | 
            
            
              | 485 |  | - | 
            
            
              | 486 |  | -        if i4 < len(distributor_code2_hasScan_logs) and distributor_logs[i]['distributor_name'] == distributor_code2_hasScan_logs[i4]['distributor_name']: | 
            
            
              | 487 |  | -            distributor_logs[i]['has_code2_scan_num'] = distributor_code2_hasScan_logs[i4]['num'] | 
            
            
              | 488 |  | -            i4 += 1 | 
            
            
              | 489 |  | - | 
            
            
              | 490 |  | -    distributor_logs.sort(key=lambda k: (-k['num'])) | 
            
            
              |  | 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]) | 
            
            
              |  | 394 | + | 
            
            
              |  | 395 | +    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 | + | 
            
            
              |  | 397 | +    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 | +     | 
            
            
              |  | 402 | +    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] | 
            
            
              |  | 406 | + | 
            
            
              |  | 407 | +    # daily_logs = list(logs.values('ymd').annotate(num=Count('pk')).order_by('ymd')) | 
            
            
              |  | 408 | +    # daily_code1_logs = list(logs.filter(code_version=1).values('ymd').annotate(num=Count('pk')).order_by('ymd')) | 
            
            
              |  | 409 | +    # daily_code1_hasScan_logs = list(logs.filter(code_version=1, has_scan=True).values('ymd').annotate(num=Count('pk')).order_by('ymd')) | 
            
            
              |  | 410 | +    # daily_code2_logs = list(logs.filter(code_version=2).values('ymd').annotate(num=Count('pk')).order_by('ymd')) | 
            
            
              |  | 411 | +    # daily_code2_hasScan_logs = list(logs.filter(code_version=2, has_scan=True).values('ymd').annotate(num=Count('pk')).order_by('ymd')) | 
            
            
              |  | 412 | + | 
            
            
              |  | 413 | +    # i1 = 0 | 
            
            
              |  | 414 | +    # i2 = 0 | 
            
            
              |  | 415 | +    # i3 = 0 | 
            
            
              |  | 416 | +    # i4 = 0 | 
            
            
              |  | 417 | +    # for i in range(0, len(daily_logs)): | 
            
            
              |  | 418 | +    #     daily_logs[i]['code1'] = 0 | 
            
            
              |  | 419 | +    #     daily_logs[i]['code2'] = 0 | 
            
            
              |  | 420 | +    #     daily_logs[i]['has_code1_scan_num'] = 0 | 
            
            
              |  | 421 | +    #     daily_logs[i]['has_code2_scan_num'] = 0 | 
            
            
              |  | 422 | +    #     if i1 < len(daily_code1_hasScan_logs) and daily_logs[i]['ymd'] == daily_code1_hasScan_logs[i1]['ymd']: | 
            
            
              |  | 423 | +    #         daily_logs[i]['has_code1_scan_num'] = daily_code1_hasScan_logs[i1]['num'] | 
            
            
              |  | 424 | +    #         i1 += 1 | 
            
            
              |  | 425 | + | 
            
            
              |  | 426 | +    #     if i2 < len(daily_code1_logs) and daily_logs[i]['ymd'] == daily_code1_logs[i2]['ymd']: | 
            
            
              |  | 427 | +    #         daily_logs[i]['code1'] = daily_code1_logs[i2]['num'] | 
            
            
              |  | 428 | +    #         i2 += 1 | 
            
            
              |  | 429 | + | 
            
            
              |  | 430 | +    #     if i3 < len(daily_code2_logs) and daily_logs[i]['ymd'] == daily_code2_logs[i3]['ymd']: | 
            
            
              |  | 431 | +    #         daily_logs[i]['code2'] = daily_code2_logs[i3]['num'] | 
            
            
              |  | 432 | +    #         i3 += 1 | 
            
            
              |  | 433 | + | 
            
            
              |  | 434 | +    #     if i4 < len(daily_code2_hasScan_logs) and daily_logs[i]['ymd'] == daily_code2_hasScan_logs[i4]['ymd']: | 
            
            
              |  | 435 | +    #         daily_logs[i]['has_code2_scan_num'] = daily_code2_hasScan_logs[i4]['num'] | 
            
            
              |  | 436 | +    #         i4 += 1 | 
            
            
              |  | 437 | + | 
            
            
              |  | 438 | +    # if model_name: | 
            
            
              |  | 439 | +    #     model_logs = list(logs.values('model_uni_name').annotate(num=Count('pk')).order_by('model_uni_name')) | 
            
            
              |  | 440 | +    #     model_code1_logs = list(logs.filter(code_version=1).values('model_uni_name').annotate(num=Count('pk')).order_by('model_uni_name')) | 
            
            
              |  | 441 | +    #     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')) | 
            
            
              |  | 442 | +    #     model_code2_logs = list(logs.filter(code_version=2).values('model_uni_name').annotate(num=Count('pk')).order_by('model_uni_name')) | 
            
            
              |  | 443 | +    #     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')) | 
            
            
              |  | 444 | + | 
            
            
              |  | 445 | +    #     i1 = 0 | 
            
            
              |  | 446 | +    #     i2 = 0 | 
            
            
              |  | 447 | +    #     i3 = 0 | 
            
            
              |  | 448 | +    #     i4 = 0 | 
            
            
              |  | 449 | +    #     for i in range(0, len(model_logs)): | 
            
            
              |  | 450 | +    #         model_logs[i]['code1'] = 0 | 
            
            
              |  | 451 | +    #         model_logs[i]['code2'] = 0 | 
            
            
              |  | 452 | +    #         model_logs[i]['has_code1_scan_num'] = 0 | 
            
            
              |  | 453 | +    #         model_logs[i]['has_code2_scan_num'] = 0 | 
            
            
              |  | 454 | +    #         if i1 < len(model_code1_hasScan_logs) and model_logs[i]['model_uni_name'] == model_code1_hasScan_logs[i1]['model_uni_name']: | 
            
            
              |  | 455 | +    #             model_logs[i]['has_code1_scan_num'] = model_code1_hasScan_logs[i1]['num'] | 
            
            
              |  | 456 | +    #             i1 += 1 | 
            
            
              |  | 457 | + | 
            
            
              |  | 458 | +    #         if i2 < len(model_code1_logs) and model_logs[i]['model_uni_name'] == model_code1_logs[i2]['model_uni_name']: | 
            
            
              |  | 459 | +    #             model_logs[i]['code1'] = model_code1_logs[i2]['num'] | 
            
            
              |  | 460 | +    #             i2 += 1 | 
            
            
              |  | 461 | + | 
            
            
              |  | 462 | +    #         if i3 < len(model_code2_logs) and model_logs[i]['model_uni_name'] == model_code2_logs[i3]['model_uni_name']: | 
            
            
              |  | 463 | +    #             model_logs[i]['code2'] = model_code2_logs[i3]['num'] | 
            
            
              |  | 464 | +    #             i3 += 1 | 
            
            
              |  | 465 | + | 
            
            
              |  | 466 | +    #         if i4 < len(model_code2_hasScan_logs) and model_logs[i]['model_uni_name'] == model_code2_hasScan_logs[i4]['model_uni_name']: | 
            
            
              |  | 467 | +    #             model_logs[i]['has_code2_scan_num'] = model_code2_hasScan_logs[i4]['num'] | 
            
            
              |  | 468 | +    #             i4 += 1 | 
            
            
              |  | 469 | + | 
            
            
              |  | 470 | +    #     model_logs.sort(key=lambda k: (-k['num'])) | 
            
            
              |  | 471 | + | 
            
            
              |  | 472 | +    # if distributor_name: | 
            
            
              |  | 473 | +    #     distributor_logs = list(logs.values('distributor_name').annotate(num=Count('pk')).order_by('distributor_name')) | 
            
            
              |  | 474 | +    #     distributor_code1_logs = list(logs.filter(code_version=1).values('distributor_name').annotate(num=Count('pk')).order_by('distributor_name')) | 
            
            
              |  | 475 | +    #     distributor_code1_hasScan_logs = list(logs.filter(code_version=1, has_scan=True).values('distributor_name').annotate(num=Count('pk')).order_by('distributor_name')) | 
            
            
              |  | 476 | +    #     distributor_code2_logs = list(logs.filter(code_version=2).values('distributor_name').annotate(num=Count('pk')).order_by('distributor_name')) | 
            
            
              |  | 477 | +    #     distributor_code2_hasScan_logs = list(logs.filter(code_version=2, has_scan=True).values('distributor_name').annotate(num=Count('pk')).order_by('distributor_name')) | 
            
            
              |  | 478 | + | 
            
            
              |  | 479 | +    #     i1 = 0 | 
            
            
              |  | 480 | +    #     i2 = 0 | 
            
            
              |  | 481 | +    #     i3 = 0 | 
            
            
              |  | 482 | +    #     i4 = 0 | 
            
            
              |  | 483 | +    #     for i in range(0, len(distributor_logs)): | 
            
            
              |  | 484 | +    #         distributor_logs[i]['code1'] = 0 | 
            
            
              |  | 485 | +    #         distributor_logs[i]['code2'] = 0 | 
            
            
              |  | 486 | +    #         distributor_logs[i]['has_code1_scan_num'] = 0 | 
            
            
              |  | 487 | +    #         distributor_logs[i]['has_code2_scan_num'] = 0 | 
            
            
              |  | 488 | +    #         if i1 < len(distributor_code1_hasScan_logs) and distributor_logs[i]['distributor_name'] == distributor_code1_hasScan_logs[i1]['distributor_name']: | 
            
            
              |  | 489 | +    #             distributor_logs[i]['has_code1_scan_num'] = distributor_code1_hasScan_logs[i1]['num'] | 
            
            
              |  | 490 | +    #             i1 += 1 | 
            
            
              |  | 491 | + | 
            
            
              |  | 492 | +    #         if i2 < len(distributor_code1_logs) and distributor_logs[i]['distributor_name'] == distributor_code1_logs[i2]['distributor_name']: | 
            
            
              |  | 493 | +    #             distributor_logs[i]['code1'] = distributor_code1_logs[i2]['num'] | 
            
            
              |  | 494 | +    #             i2 += 1 | 
            
            
              |  | 495 | + | 
            
            
              |  | 496 | +    #         if i3 < len(distributor_code2_logs) and distributor_logs[i]['distributor_name'] == distributor_code2_logs[i3]['distributor_name']: | 
            
            
              |  | 497 | +    #             distributor_logs[i]['code2'] = distributor_code2_logs[i3]['num'] | 
            
            
              |  | 498 | +    #             i3 += 1 | 
            
            
              |  | 499 | + | 
            
            
              |  | 500 | +    #         if i4 < len(distributor_code2_hasScan_logs) and distributor_logs[i]['distributor_name'] == distributor_code2_hasScan_logs[i4]['distributor_name']: | 
            
            
              |  | 501 | +    #             distributor_logs[i]['has_code2_scan_num'] = distributor_code2_hasScan_logs[i4]['num'] | 
            
            
              |  | 502 | +    #             i4 += 1 | 
            
            
              |  | 503 | + | 
            
            
              |  | 504 | +    #     distributor_logs.sort(key=lambda k: (-k['num'])) | 
            
            
              | 491 | 505 |   | 
            
            
              | 492 | 506 |      return response(200, 'Get Distributor Statistic Success', u'获取经销商统计成功', data={ | 
            
            
              | 493 | 507 |          'daily_logs': daily_logs, |