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