bef16a86 by 周伟奇

Merge branch 'feature/se_compare3' into feature/0611

2 parents e17f3ffb 9e3f5c24
......@@ -1311,7 +1311,8 @@ RP_EN = 'Resident ID'
BL_EN = 'Business permit'
MVI_EN = 'newCar Invoice'
UCI_EN = 'usedCar Invoice'
MVC_EN = 'Green Book'
MVC_EN = 'Green Book(1/2)'
MVC34_EN = 'Green Book(3/4)'
BC_EN = 'Bank Card'
DDA_EN = 'DDA'
......@@ -1383,6 +1384,16 @@ MVC_COMPARE_LOGIC = {
# 'date': ('转移登记日期', ),
}
TRANSFER_NAME = '姓名/名称'
TRANSFER_NUM = '身份证明名称/号码'
TRANSFER_DATE = '转移登记日期'
MVC34_COMPARE_LOGIC = {
'customerName': (TRANSFER_NAME, 'se_company_compare', {}),
'idNum': (TRANSFER_NUM, 'se_contain_compare_2', {}),
'date': (TRANSFER_DATE, 'se_date_compare_2', {}),
}
BC_COMPARE_LOGIC = {
'accountNo': ('CardNum', 'se_common_compare', {}),
'bankName': ('BankName', 'se_both_contain_compare', {}),
......@@ -1411,6 +1422,7 @@ SE_COMPARE_FIELD = {
MVI_EN: (MVI_OCR_FIELD, MVI_COMPARE_LOGIC, False),
UCI_EN: (UCI_OCR_FIELD, UCI_COMPARE_LOGIC, False),
MVC_EN: (MVC_OCR_FIELD, MVC_COMPARE_LOGIC, False),
MVC34_EN: (MVC_OCR_FIELD, MVC34_COMPARE_LOGIC, False),
BC_EN: (BC_OCR_FIELD, BC_COMPARE_LOGIC, False),
DDA_EN: (DDA_OCR_FIELD, DDA_COMPARE_LOGIC, False),
}
......
......@@ -577,6 +577,7 @@ def get_se_compare_info(last_obj, application_entity):
vehicle_info[consts.MVI_EN] = vehicle_field_input
else:
gb_field_input = []
gb34_field_input = []
for vehicle_field in consts.SE_USED_FIELD:
vehicle_field_input.append((vehicle_field, vehicle_info_dict[vehicle_field]))
for gb_field in consts.SE_GB_NEW_FIELD:
......@@ -584,16 +585,17 @@ def get_se_compare_info(last_obj, application_entity):
if isinstance(company_info, tuple):
vehicle_field_input.append((consts.SE_NEW_ADD_FIELD[0], company_info[0]))
vehicle_field_input.append((consts.SE_NEW_ADD_FIELD[1], company_info[1]))
# gb_field_input.append((consts.SE_GB_USED_FIELD[0], company_info[0]))
# gb_field_input.append((consts.SE_GB_USED_FIELD[1], company_info[1]))
gb34_field_input.append((consts.SE_GB_USED_FIELD[0], company_info[0]))
gb34_field_input.append((consts.SE_GB_USED_FIELD[1], company_info[1]))
else:
vehicle_field_input.append((consts.SE_NEW_ADD_FIELD[0], main_name))
vehicle_field_input.append((consts.SE_NEW_ADD_FIELD[1], main_num))
# gb_field_input.append((consts.SE_GB_USED_FIELD[0], main_name))
# gb_field_input.append((consts.SE_GB_USED_FIELD[1], main_num))
# gb_field_input.append((consts.SE_GB_USED_FIELD[2], last_obj.first_submmison_date))
gb34_field_input.append((consts.SE_GB_USED_FIELD[0], main_name))
gb34_field_input.append((consts.SE_GB_USED_FIELD[1], main_num))
gb34_field_input.append((consts.SE_GB_USED_FIELD[2], last_obj.first_submmison_date))
vehicle_info[consts.UCI_EN] = vehicle_field_input
vehicle_info[consts.MVC_EN] = gb_field_input
vehicle_info[consts.MVC34_EN] = gb34_field_input
compare_info['vehicleInfo'] = vehicle_info
bank_info_dict = json.loads(last_obj.bank_info)
......@@ -677,6 +679,68 @@ def se_compare_license(license_en, ocr_res_dict, field_list):
return result_field_list
def se_mvc34_compare(license_en, ocr_res_dict, field_list):
ocr_field, compare_logic, _ = consts.SE_COMPARE_FIELD[license_en]
ocr_res_str = ocr_res_dict.get(ocr_field)
is_find = False
result_field_list = []
if ocr_res_str is not None:
ocr_res_list = json.loads(ocr_res_str)
length = len(ocr_res_list)
page34_date_dict = dict()
first_res = None
for res_idx in range(length-1, -1, -1):
if consts.TRANSFER_DATE in ocr_res_list[res_idx]:
for idx, transfer_date in enumerate(ocr_res_list[res_idx].get(consts.TRANSFER_DATE, [])):
try:
transfer_name = ocr_res_list[res_idx].get(consts.TRANSFER_NAME, [])[idx]
except Exception as e:
transfer_name = ''
try:
transfer_num = ocr_res_list[res_idx].get(consts.TRANSFER_NUM, [])[idx]
except Exception as e:
transfer_num = ''
core_info = {
consts.TRANSFER_NAME: transfer_name,
consts.TRANSFER_NUM: transfer_num,
consts.TRANSFER_DATE: transfer_date
}
page34_date_dict.setdefault(transfer_date, []).append(core_info)
if first_res is None:
first_res = core_info
max_date = None
for date_tmp in page34_date_dict.keys():
try:
max_date_part = time.strptime(date_tmp, "%Y-%m-%d")
except Exception as e:
pass
else:
if max_date is None or max_date_part > max_date:
max_date = max_date_part
if max_date is not None or first_res is not None:
is_find = True
ocr_res = first_res if max_date is None else page34_date_dict[time.strftime('%Y-%m-%d', max_date)][0]
for name, value in enumerate(field_list):
ocr_str = ocr_res.get(compare_logic[name][0])
if not isinstance(ocr_str, str):
result = consts.RESULT_N
ocr_str = ''
else:
result = getattr(cp, compare_logic[name][1])(value, ocr_str, **compare_logic[name][2])
result_field_list.append((name, value, result, ocr_str))
if not is_find:
for name, value in field_list:
result_field_list.append((name, value, consts.RESULT_N, ''))
return result_field_list
def se_compare_process(compare_info, ocr_res_dict):
# individualCusInfo
# corporateCusInfo
......@@ -719,6 +783,9 @@ def se_compare_process(compare_info, ocr_res_dict):
else:
for license_en, field_list in info_value.items():
failure_field = []
if license_en == consts.MVC34_EN:
result_field_list = se_mvc34_compare(license_en, ocr_res_dict, field_list)
else:
result_field_list = se_compare_license(license_en, ocr_res_dict, field_list)
for name, value, result, ocr_str in result_field_list:
total_fields += 1
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!