Merge branch 'feature/se_compare3' into feature/0611
Showing
2 changed files
with
86 additions
and
7 deletions
... | @@ -1311,7 +1311,8 @@ RP_EN = 'Resident ID' | ... | @@ -1311,7 +1311,8 @@ RP_EN = 'Resident ID' |
1311 | BL_EN = 'Business permit' | 1311 | BL_EN = 'Business permit' |
1312 | MVI_EN = 'newCar Invoice' | 1312 | MVI_EN = 'newCar Invoice' |
1313 | UCI_EN = 'usedCar Invoice' | 1313 | UCI_EN = 'usedCar Invoice' |
1314 | MVC_EN = 'Green Book' | 1314 | MVC_EN = 'Green Book(1/2)' |
1315 | MVC34_EN = 'Green Book(3/4)' | ||
1315 | BC_EN = 'Bank Card' | 1316 | BC_EN = 'Bank Card' |
1316 | DDA_EN = 'DDA' | 1317 | DDA_EN = 'DDA' |
1317 | 1318 | ||
... | @@ -1383,6 +1384,16 @@ MVC_COMPARE_LOGIC = { | ... | @@ -1383,6 +1384,16 @@ MVC_COMPARE_LOGIC = { |
1383 | # 'date': ('转移登记日期', ), | 1384 | # 'date': ('转移登记日期', ), |
1384 | } | 1385 | } |
1385 | 1386 | ||
1387 | TRANSFER_NAME = '姓名/名称' | ||
1388 | TRANSFER_NUM = '身份证明名称/号码' | ||
1389 | TRANSFER_DATE = '转移登记日期' | ||
1390 | |||
1391 | MVC34_COMPARE_LOGIC = { | ||
1392 | 'customerName': (TRANSFER_NAME, 'se_company_compare', {}), | ||
1393 | 'idNum': (TRANSFER_NUM, 'se_contain_compare_2', {}), | ||
1394 | 'date': (TRANSFER_DATE, 'se_date_compare_2', {}), | ||
1395 | } | ||
1396 | |||
1386 | BC_COMPARE_LOGIC = { | 1397 | BC_COMPARE_LOGIC = { |
1387 | 'accountNo': ('CardNum', 'se_common_compare', {}), | 1398 | 'accountNo': ('CardNum', 'se_common_compare', {}), |
1388 | 'bankName': ('BankName', 'se_both_contain_compare', {}), | 1399 | 'bankName': ('BankName', 'se_both_contain_compare', {}), |
... | @@ -1411,6 +1422,7 @@ SE_COMPARE_FIELD = { | ... | @@ -1411,6 +1422,7 @@ SE_COMPARE_FIELD = { |
1411 | MVI_EN: (MVI_OCR_FIELD, MVI_COMPARE_LOGIC, False), | 1422 | MVI_EN: (MVI_OCR_FIELD, MVI_COMPARE_LOGIC, False), |
1412 | UCI_EN: (UCI_OCR_FIELD, UCI_COMPARE_LOGIC, False), | 1423 | UCI_EN: (UCI_OCR_FIELD, UCI_COMPARE_LOGIC, False), |
1413 | MVC_EN: (MVC_OCR_FIELD, MVC_COMPARE_LOGIC, False), | 1424 | MVC_EN: (MVC_OCR_FIELD, MVC_COMPARE_LOGIC, False), |
1425 | MVC34_EN: (MVC_OCR_FIELD, MVC34_COMPARE_LOGIC, False), | ||
1414 | BC_EN: (BC_OCR_FIELD, BC_COMPARE_LOGIC, False), | 1426 | BC_EN: (BC_OCR_FIELD, BC_COMPARE_LOGIC, False), |
1415 | DDA_EN: (DDA_OCR_FIELD, DDA_COMPARE_LOGIC, False), | 1427 | DDA_EN: (DDA_OCR_FIELD, DDA_COMPARE_LOGIC, False), |
1416 | } | 1428 | } | ... | ... |
... | @@ -577,6 +577,7 @@ def get_se_compare_info(last_obj, application_entity): | ... | @@ -577,6 +577,7 @@ def get_se_compare_info(last_obj, application_entity): |
577 | vehicle_info[consts.MVI_EN] = vehicle_field_input | 577 | vehicle_info[consts.MVI_EN] = vehicle_field_input |
578 | else: | 578 | else: |
579 | gb_field_input = [] | 579 | gb_field_input = [] |
580 | gb34_field_input = [] | ||
580 | for vehicle_field in consts.SE_USED_FIELD: | 581 | for vehicle_field in consts.SE_USED_FIELD: |
581 | vehicle_field_input.append((vehicle_field, vehicle_info_dict[vehicle_field])) | 582 | vehicle_field_input.append((vehicle_field, vehicle_info_dict[vehicle_field])) |
582 | for gb_field in consts.SE_GB_NEW_FIELD: | 583 | for gb_field in consts.SE_GB_NEW_FIELD: |
... | @@ -584,16 +585,17 @@ def get_se_compare_info(last_obj, application_entity): | ... | @@ -584,16 +585,17 @@ def get_se_compare_info(last_obj, application_entity): |
584 | if isinstance(company_info, tuple): | 585 | if isinstance(company_info, tuple): |
585 | vehicle_field_input.append((consts.SE_NEW_ADD_FIELD[0], company_info[0])) | 586 | vehicle_field_input.append((consts.SE_NEW_ADD_FIELD[0], company_info[0])) |
586 | vehicle_field_input.append((consts.SE_NEW_ADD_FIELD[1], company_info[1])) | 587 | vehicle_field_input.append((consts.SE_NEW_ADD_FIELD[1], company_info[1])) |
587 | # gb_field_input.append((consts.SE_GB_USED_FIELD[0], company_info[0])) | 588 | gb34_field_input.append((consts.SE_GB_USED_FIELD[0], company_info[0])) |
588 | # gb_field_input.append((consts.SE_GB_USED_FIELD[1], company_info[1])) | 589 | gb34_field_input.append((consts.SE_GB_USED_FIELD[1], company_info[1])) |
589 | else: | 590 | else: |
590 | vehicle_field_input.append((consts.SE_NEW_ADD_FIELD[0], main_name)) | 591 | vehicle_field_input.append((consts.SE_NEW_ADD_FIELD[0], main_name)) |
591 | vehicle_field_input.append((consts.SE_NEW_ADD_FIELD[1], main_num)) | 592 | vehicle_field_input.append((consts.SE_NEW_ADD_FIELD[1], main_num)) |
592 | # gb_field_input.append((consts.SE_GB_USED_FIELD[0], main_name)) | 593 | gb34_field_input.append((consts.SE_GB_USED_FIELD[0], main_name)) |
593 | # gb_field_input.append((consts.SE_GB_USED_FIELD[1], main_num)) | 594 | gb34_field_input.append((consts.SE_GB_USED_FIELD[1], main_num)) |
594 | # gb_field_input.append((consts.SE_GB_USED_FIELD[2], last_obj.first_submmison_date)) | 595 | gb34_field_input.append((consts.SE_GB_USED_FIELD[2], last_obj.first_submmison_date)) |
595 | vehicle_info[consts.UCI_EN] = vehicle_field_input | 596 | vehicle_info[consts.UCI_EN] = vehicle_field_input |
596 | vehicle_info[consts.MVC_EN] = gb_field_input | 597 | vehicle_info[consts.MVC_EN] = gb_field_input |
598 | vehicle_info[consts.MVC34_EN] = gb34_field_input | ||
597 | compare_info['vehicleInfo'] = vehicle_info | 599 | compare_info['vehicleInfo'] = vehicle_info |
598 | 600 | ||
599 | bank_info_dict = json.loads(last_obj.bank_info) | 601 | bank_info_dict = json.loads(last_obj.bank_info) |
... | @@ -677,6 +679,68 @@ def se_compare_license(license_en, ocr_res_dict, field_list): | ... | @@ -677,6 +679,68 @@ def se_compare_license(license_en, ocr_res_dict, field_list): |
677 | return result_field_list | 679 | return result_field_list |
678 | 680 | ||
679 | 681 | ||
682 | def se_mvc34_compare(license_en, ocr_res_dict, field_list): | ||
683 | ocr_field, compare_logic, _ = consts.SE_COMPARE_FIELD[license_en] | ||
684 | ocr_res_str = ocr_res_dict.get(ocr_field) | ||
685 | |||
686 | is_find = False | ||
687 | result_field_list = [] | ||
688 | |||
689 | if ocr_res_str is not None: | ||
690 | ocr_res_list = json.loads(ocr_res_str) | ||
691 | length = len(ocr_res_list) | ||
692 | |||
693 | page34_date_dict = dict() | ||
694 | first_res = None | ||
695 | for res_idx in range(length-1, -1, -1): | ||
696 | if consts.TRANSFER_DATE in ocr_res_list[res_idx]: | ||
697 | for idx, transfer_date in enumerate(ocr_res_list[res_idx].get(consts.TRANSFER_DATE, [])): | ||
698 | try: | ||
699 | transfer_name = ocr_res_list[res_idx].get(consts.TRANSFER_NAME, [])[idx] | ||
700 | except Exception as e: | ||
701 | transfer_name = '' | ||
702 | try: | ||
703 | transfer_num = ocr_res_list[res_idx].get(consts.TRANSFER_NUM, [])[idx] | ||
704 | except Exception as e: | ||
705 | transfer_num = '' | ||
706 | core_info = { | ||
707 | consts.TRANSFER_NAME: transfer_name, | ||
708 | consts.TRANSFER_NUM: transfer_num, | ||
709 | consts.TRANSFER_DATE: transfer_date | ||
710 | } | ||
711 | page34_date_dict.setdefault(transfer_date, []).append(core_info) | ||
712 | if first_res is None: | ||
713 | first_res = core_info | ||
714 | |||
715 | max_date = None | ||
716 | for date_tmp in page34_date_dict.keys(): | ||
717 | try: | ||
718 | max_date_part = time.strptime(date_tmp, "%Y-%m-%d") | ||
719 | except Exception as e: | ||
720 | pass | ||
721 | else: | ||
722 | if max_date is None or max_date_part > max_date: | ||
723 | max_date = max_date_part | ||
724 | |||
725 | if max_date is not None or first_res is not None: | ||
726 | is_find = True | ||
727 | ocr_res = first_res if max_date is None else page34_date_dict[time.strftime('%Y-%m-%d', max_date)][0] | ||
728 | for name, value in enumerate(field_list): | ||
729 | ocr_str = ocr_res.get(compare_logic[name][0]) | ||
730 | if not isinstance(ocr_str, str): | ||
731 | result = consts.RESULT_N | ||
732 | ocr_str = '' | ||
733 | else: | ||
734 | result = getattr(cp, compare_logic[name][1])(value, ocr_str, **compare_logic[name][2]) | ||
735 | result_field_list.append((name, value, result, ocr_str)) | ||
736 | |||
737 | if not is_find: | ||
738 | for name, value in field_list: | ||
739 | result_field_list.append((name, value, consts.RESULT_N, '')) | ||
740 | |||
741 | return result_field_list | ||
742 | |||
743 | |||
680 | def se_compare_process(compare_info, ocr_res_dict): | 744 | def se_compare_process(compare_info, ocr_res_dict): |
681 | # individualCusInfo | 745 | # individualCusInfo |
682 | # corporateCusInfo | 746 | # corporateCusInfo |
... | @@ -719,7 +783,10 @@ def se_compare_process(compare_info, ocr_res_dict): | ... | @@ -719,7 +783,10 @@ def se_compare_process(compare_info, ocr_res_dict): |
719 | else: | 783 | else: |
720 | for license_en, field_list in info_value.items(): | 784 | for license_en, field_list in info_value.items(): |
721 | failure_field = [] | 785 | failure_field = [] |
722 | result_field_list = se_compare_license(license_en, ocr_res_dict, field_list) | 786 | if license_en == consts.MVC34_EN: |
787 | result_field_list = se_mvc34_compare(license_en, ocr_res_dict, field_list) | ||
788 | else: | ||
789 | result_field_list = se_compare_license(license_en, ocr_res_dict, field_list) | ||
723 | for name, value, result, ocr_str in result_field_list: | 790 | for name, value, result, ocr_str in result_field_list: |
724 | total_fields += 1 | 791 | total_fields += 1 |
725 | if result == consts.RESULT_N: | 792 | if result == consts.RESULT_N: | ... | ... |
-
Please register or sign in to post a comment