baf48dff by 周伟奇

fix se bug

1 parent 4c33a6e1
......@@ -1413,7 +1413,7 @@ SE_GB_USED_FIELD = ['customerName', 'idNum', 'date']
SE_BS_FIELD = ['户名', '打印日期', '流水日期', '(担保人1)户名', '(担保人1)打印日期', '(担保人1)流水日期', '(担保人2)户名', '(担保人2)打印日期', '(担保人2)流水日期']
SE_HMH_FIELD = ['借款人/承租人姓名', '借款人/承租人证件号', '申请号', '渠道', '签字']
SE_BD_FIELD = ['被保险人姓名', '被保险人证件号码', '车架号', '机动车损失保险金额', '第三者责任保险金额', '绝对免赔率', '保险起始日期', '保险截止日期', '保单章', '第一受益人', '保险费合计']
JDMPV_VALUE = ['-', '--', '0%', '0.00', '/', '0']
JDMPV_VALUE = ['-', '--', '0%', '0.00', '/', '0', '']
SE_BANK_FIELD = ['accountNo', 'bankName']
SE_DDA_FIELD = ['applicationId(1)', 'applicationId(2)', 'bankName', 'companyName', 'customerName', 'idNum', 'accountHolderName', 'accountNo']
......@@ -1568,15 +1568,15 @@ ROLE_LIST = [
('保证人日期2', 'Guarantor', 1, '有', False, False),
]
# key, app_type, id_idx, field_idx, is_force, e_write
# key, app_type, id_idx, field_idx, is_force, e_write, 公户跳过
ROLE_LIST_2 = [
('抵押人', 'Borrower', 0, 0, True, True),
('抵押人证件号码', 'Borrower', 0, 2, True, True),
('抵押人签字', 'Borrower', 0, 0, True, False),
('抵押人', 'Borrower', 0, 0, True, True, False),
('抵押人证件号码', 'Borrower', 0, 2, True, True, False),
('抵押人签字', 'Borrower', 0, 0, True, False, False),
('抵押人配偶', 'Co-Borrower', 0, 0, False, True),
('抵押人配偶证件号码', 'Co-Borrower', 0, 2, False, True),
('抵押人配偶签字', 'Co-Borrower', 0, 0, False, False),
('抵押人配偶', 'Co-Borrower', 0, 0, False, True, True),
('抵押人配偶证件号码', 'Co-Borrower', 0, 2, False, True, True),
('抵押人配偶签字', 'Co-Borrower', 0, 0, False, False, True),
]
ROLE_LIST_1 = [
......@@ -1770,7 +1770,7 @@ HMH_COMPARE_LOGIC = {
BD_COMPARE_LOGIC = {
'被保险人姓名': ('被保险人姓名', 'se_name_compare', {}, '保单被保险人姓名与系统不一致'),
'被保险人证件号码': ('被保险人证件号码', 'se_common_compare', {}, '保单身份证号需人工核查'),
'被保险人证件号码': ('被保险人证件号码', 'se_common_compare', {'is_bd_id': True}, '保单身份证号需人工核查'),
'车架号': ('车架号', 'se_common_compare', {}, '保单车架号与系统不一致'),
'机动车损失保险金额': ('机动车损失保险金额', 'se_amount_lte_compare', {}, '保单车损险异常'),
'第三者责任保险金额': ('机动车第三者责任保险金额', 'se_amount_lte_compare', {}, '保单三者险异常'),
......@@ -1789,9 +1789,9 @@ BS_COMPARE_LOGIC = {
'打印日期': ('print_time', 'se_bs_print_date_compare', {}, '主共借人银行流水打印日期超过15天'),
'(担保人1)打印日期': ('print_time', 'se_bs_print_date_compare', {}, '担保人1银行流水打印日期超过15天'),
'(担保人2)打印日期': ('print_time', 'se_bs_print_date_compare', {}, '担保人2银行流水打印日期超过15天'),
'流水日期': ('date', 'se_bs_date_compare', {}, '主共借人银行流水日期不满足3个月'),
'(担保人1)流水日期': ('date', 'se_bs_date_compare', {}, '担保人1银行流水日期不满足3个月'),
'(担保人2)流水日期': ('date', 'se_bs_date_compare', {}, '担保人2银行流水日期不满足3个月'),
'流水日期': ('timedelta', 'se_bs_date_compare', {}, '主共借人银行流水日期不满足3个月'),
'(担保人1)流水日期': ('timedelta', 'se_bs_date_compare', {}, '担保人1银行流水日期不满足3个月'),
'(担保人2)流水日期': ('timedelta', 'se_bs_date_compare', {}, '担保人2银行流水日期不满足3个月'),
}
SPECIAL_REASON = '主共借人未提供银行流水,含担保人需人工查看直系亲属关系'
......
......@@ -329,13 +329,19 @@ class Command(BaseCommand, LoggerMixin):
# 保单
if classify == consts.INSURANCE_CLASSIFY:
product_result = ['', '', '']
min_char_count_1 = 1000
min_char_count_2 = 1000
for product in license_data.get('result', {}).get('productList', []):
name = product.get('name', {}).get('words', '')
if name.find('机动车损失') != -1:
product_result[0] = product.get('coverage', {}).get('words', '')
product_result[2] = product.get('deductible_franchise', {}).get('words', '')
if name.find('机动车损失') != -1 or name.find('汽车损失') != -1:
if len(name) < min_char_count_1:
min_char_count_1 = len(name)
product_result[0] = product.get('coverage', {}).get('words', '')
product_result[2] = product.get('deductible_franchise', {}).get('words', '')
elif name.find('第三者责任') != -1:
product_result[1] = product.get('coverage', {}).get('words', '')
if len(name) < min_char_count_2:
min_char_count_2 = len(name)
product_result[1] = product.get('coverage', {}).get('words', '')
special_str = license_data.get('result', {}).get('1stBeneficiary', {}).get('words', '')
special = '无'
......@@ -840,19 +846,11 @@ class Command(BaseCommand, LoggerMixin):
print_date = bs_info.get('print_time', '').strftime("%Y-%m-%d")
except Exception as e:
print_date = ''
try:
start_date = bs_info.get('start_date', '').strftime("%Y-%m-%d")
except Exception as e:
start_date = ''
try:
end_date = bs_info.get('end_date', '').strftime("%Y-%m-%d")
except Exception as e:
end_date = ''
res.append(
{
'role': bs_info.get('role', ''),
'print_time': print_date,
'date': [start_date, end_date],
'timedelta': bs_info.get('timedelta', ''),
}
)
return res
......
......@@ -334,7 +334,7 @@ class BSWorkbook(Workbook):
metadata_rows.extend(code)
if start_date is None or end_date is None:
timedelta = None
timedelta = ''
else:
timedelta = (end_date - start_date).days
metadata_rows.extend(
......@@ -344,11 +344,11 @@ class BSWorkbook(Workbook):
self.blank_row,
self.interest_keyword_header]
)
return metadata_rows, verify_highlight_row
return metadata_rows, verify_highlight_row, timedelta
def build_meta_sheet(self, role_name, card, confidence, code, verify_list, print_time, start_date, end_date,
res_count_tuple, is_verify_classify):
metadata_rows, verify_highlight_row = self.build_metadata_rows(
metadata_rows, verify_highlight_row, timedelta = self.build_metadata_rows(
confidence, code, verify_list, print_time, start_date, end_date, res_count_tuple, is_verify_classify)
if not isinstance(role_name, str):
role_name = consts.UNKNOWN_ROLE
......@@ -367,7 +367,7 @@ class BSWorkbook(Workbook):
cell.fill = self.amount_fill
for cell in ms[4]:
cell.fill = self.amount_fill
return ms
return ms, timedelta
@staticmethod
def amount_format(amount_str):
......@@ -682,16 +682,18 @@ class BSWorkbook(Workbook):
# 2.元信息提取表
confidence = self.get_confidence(max_find_count)
is_verify_classify = classify in consts.BS_VERIFY_CLASSIFY
ms = self.build_meta_sheet(role_name,
new_card,
confidence,
summary.get('code'),
summary.get('verify'),
summary.get('print_time'),
start_date,
end_date,
res_count_tuple,
is_verify_classify)
ms, timedelta = self.build_meta_sheet(role_name,
new_card,
confidence,
summary.get('code'),
summary.get('verify'),
summary.get('print_time'),
start_date,
end_date,
res_count_tuple,
is_verify_classify)
summary['timedelta'] = timedelta
# 3.创建月份表、提取/高亮关键行
# 倒序处理
......
......@@ -898,17 +898,12 @@ def get_se_cms_compare_info_auto(last_obj, application_entity):
license_en, is_prc = consts.SE_CMS_FIRST_ID_FIELD_MAPPING[id_info['idType']]
# ['customerName', 'idNum', 'dateOfBirth', 'idExpiryDate', 'hukouProvince']
id_num = decode_des(id_info.get('idNum', ''), des_key)
field_input = [
('customerName', customer_name),
('idNum', id_num),
# ('dateOfBirth', date_of_birth),
# ('idExpiryDate', id_info.get('idExpiryDate', '')),
]
field_input = [('customerName', customer_name), ('idNum', id_num),
('idExpiryDate', id_info.get('idExpiryDate', ''))]
if is_prc:
# field_input.append(('hukouProvince', province))
field_input.append(('真伪', consts.IC_RES_MAPPING.get(1)))
field_input.append(('idExpiryDate', id_info.get('idExpiryDate', '')))
license_dict[license_en] = field_input
# field_input.append(('hukouProvince', province))
# field_input.append(('真伪', consts.IC_RES_MAPPING.get(1)))
license_dict[license_en] = field_input
all_id_num.append(id_num)
# 营业执照 --------------------------------------------------------------------------------------------------
elif id_info.get('idType') in ['Unified Social Credit Code', 'Tax Number', 'Business License Number']:
......@@ -979,7 +974,8 @@ def get_se_cms_compare_info_auto(last_obj, application_entity):
# 新车发票----------------------------------------------------------------------------------------------------------
if vehicle_status == 'New':
vehicle_field_input.append(('vinNo', vin_no))
vehicle_field_input.append(('dealer', '、'.join([cms_info.get('dealerName', ''), cms_info.get('fapiaoIssuerDealer', '')])))
vehicle_field_input.append(
('dealer', '、'.join([cms_info.get('dealerName', ''), cms_info.get('fapiaoIssuerDealer', '')])))
vehicle_field_input.append(('vehicleTransactionAmount', amount))
if isinstance(company_info, tuple):
......@@ -1025,7 +1021,7 @@ def get_se_cms_compare_info_auto(last_obj, application_entity):
# gb34_field_input.append((consts.SE_GB_USED_FIELD[1], main_num))
# gb34_field_input.append((consts.SE_GB_USED_FIELD[2], first_submission_date))
# vehicle_field_input.append((consts.SE_NEW_ADD_FIELD[2], first_submission_date))
# vehicle_field_input.append((consts.SE_NEW_ADD_FIELD[3], consts.SE_STAMP_VALUE))
# # vehicle_field_input.append((consts.SE_NEW_ADD_FIELD[3], consts.SE_STAMP_VALUE))
# jypz_field_input.append(('vinNo', vin_no))
# jypz_field_input.append(('vehicleTransactionAmount', amount))
# jypz_field_input.append((consts.SE_GB_USED_FIELD[-1], first_submission_date))
......@@ -1038,19 +1034,24 @@ def get_se_cms_compare_info_auto(last_obj, application_entity):
# vehicle_info[consts.JYPZ_EN] = jypz_field_input
# if detect_list[0] and detect_list[1]:
# vehicle_info[consts.UCI_EN] = vehicle_field_input
# compare_info['vehicleInfo'] = vehicle_info
# compare_info['vehicleInfo'] = vehicle_info
# 银行卡-------------------------------------------------------------------------------------------------------
bank_info = {}
bank_name = cms_info.get('bankAccountDetails', {}).get('bankName', '')
account_no = decode_des(cms_info.get('bankAccountDetails', {}).get('accountNo', ''), des_key)
account_holder_name = cms_info.get('bankAccountDetails', {}).get('accountHolderName', '')
is_gsyh = True if '工商' in bank_name else False
bank_field_input = [
('accountNo', account_no),
('bankName', bank_name),
('type', consts.BC_TYPE_VALUE),
]
bank_info[consts.BC_EN] = bank_field_input
if isinstance(company_info, tuple) and company_info[0] == account_holder_name:
pass
else:
bank_field_input = [
('accountNo', account_no),
('bankName', bank_name),
('type', consts.BC_TYPE_VALUE),
]
bank_info[consts.BC_EN] = bank_field_input
# DDA------------------------------------------------------------------------------------------------------------
# if is_gsyh or not detect_list[-1]:
......@@ -1058,14 +1059,16 @@ def get_se_cms_compare_info_auto(last_obj, application_entity):
# ('applicationId(1)', last_obj.application_id),
# ('applicationId(2)', last_obj.application_id),
# ('bankName', bank_name),
# ('companyName', consts.HIL_COMPANY_NAME if application_entity in consts.HIL_SET else consts.AFC_COMPANY_NAME),
# ('companyName',
# consts.HIL_COMPANY_NAME if application_entity in consts.HIL_SET else consts.AFC_COMPANY_NAME),
# ('customerName', dda_name),
# ('idNum', dda_num),
# ('accountHolderName', cms_info.get('bankAccountDetails', {}).get('accountHolderName', '')),
# ('accountHolderName', account_holder_name),
# ('accountNo', account_no),
# ]
# bank_info[consts.DDA_EN] = dda_field_input
compare_info['bankInfo'] = bank_info
# if len(bank_info) > 0:
# compare_info['bankInfo'] = bank_info
# 银行流水 --------------------------------------------------------------------
if cms_info.get('autoApprovedDetails', {}).get('aaType', '') in ['CAA1', 'CAA2']:
......@@ -1079,7 +1082,7 @@ def get_se_cms_compare_info_auto(last_obj, application_entity):
bs_field_input = [
(consts.SE_BS_FIELD[0], bs_role_list),
(consts.SE_BS_FIELD[1], first_submission_date),
(consts.SE_BS_FIELD[2], '90天'),
(consts.SE_BS_FIELD[2], 90),
]
dbr_bs_role_list = []
......@@ -1090,13 +1093,13 @@ def get_se_cms_compare_info_auto(last_obj, application_entity):
bs_field_input.extend([
(consts.SE_BS_FIELD[3], dbr_bs_role_list[0]),
(consts.SE_BS_FIELD[4], first_submission_date),
(consts.SE_BS_FIELD[5], '90天'),
(consts.SE_BS_FIELD[5], 90),
])
if len(dbr_bs_role_list) >= 2:
bs_field_input.extend([
(consts.SE_BS_FIELD[6], dbr_bs_role_list[1]),
(consts.SE_BS_FIELD[7], first_submission_date),
(consts.SE_BS_FIELD[8], '90天'),
(consts.SE_BS_FIELD[8], 90),
])
bs_info[consts.BS_EN] = bs_field_input
compare_info['Bank Statement'] = bs_info
......@@ -1158,6 +1161,7 @@ def get_se_cms_compare_info_auto(last_obj, application_entity):
)
# CMS Vehicle Price / 1.13 * 10 %
gzs_list = [gzs_status]
if gzs_status != consts.GZS_STATUS[1]:
gzs_value = float(amount) * 0.1 / 1.13
gzs_list.append(gzs_value)
......@@ -1219,11 +1223,12 @@ def get_se_cms_compare_info_auto(last_obj, application_entity):
(consts.SE_HIL_CON_1_FIELD[2], vin_no),
(consts.SE_HIL_CON_1_FIELD[3], cms_info.get('dealerName', '')),
(consts.SE_HIL_CON_1_FIELD[4], amount),
(consts.SE_HIL_CON_1_FIELD[5], str(cms_info.get('financialInformation', {}).get('originationPrincipal', '0.0'))),
(consts.SE_HIL_CON_1_FIELD[5],
str(cms_info.get('financialInformation', {}).get('originationPrincipal', '0.0'))),
(consts.SE_HIL_CON_1_FIELD[6], str(cms_info.get('terms', '0'))),
(consts.SE_HIL_CON_1_FIELD[7], schedule_list_str),
(consts.SE_HIL_CON_1_FIELD[11], account_no),
(consts.SE_HIL_CON_1_FIELD[12], cms_info.get('bankAccountDetails', {}).get('accountHolderName', '')),
(consts.SE_HIL_CON_1_FIELD[12], account_holder_name),
(consts.SE_HIL_CON_1_FIELD[13], bank_name),
]
......@@ -1239,7 +1244,7 @@ def get_se_cms_compare_info_auto(last_obj, application_entity):
continue
is_find = False
if app_type in main_role_info:
if len(main_role_info[app_type]) >= id_idx+1:
if len(main_role_info[app_type]) >= id_idx + 1:
is_find = True
if isinstance(field_idx, int):
hil_contract_1_input.append((key, main_role_info[app_type][id_idx][field_idx]))
......@@ -1273,12 +1278,14 @@ def get_se_cms_compare_info_auto(last_obj, application_entity):
(consts.SE_HIL_CON_2_FIELD[4], str(cms_info.get('terms', '0'))),
]
for key, app_type, id_idx, field_idx, is_force, e_write in consts.ROLE_LIST_2:
for key, app_type, id_idx, field_idx, is_force, e_write, co_skip in consts.ROLE_LIST_2:
if co_skip and isinstance(company_info, tuple):
continue
if not e_write and not online_sign:
continue
is_find = False
if app_type in main_role_info:
if len(main_role_info[app_type]) >= id_idx+1:
if len(main_role_info[app_type]) >= id_idx + 1:
is_find = True
if isinstance(field_idx, int):
hil_contract_2_input.append((key, main_role_info[app_type][id_idx][field_idx]))
......@@ -1290,25 +1297,29 @@ def get_se_cms_compare_info_auto(last_obj, application_entity):
compare_info['contract'] = contract_info
return compare_info, cms_info.get('autoApprovedDetails', {}).get('aaType', ''), is_gsyh
else:
# AFC合同-----------------------------------------------------------------------------------------------------------
# AFC合同------------------------------------------------------------------------------------------------------
vehicle_principal_str = str(cms_info.get('financialInformation', {}).get('vehiclePrincipal', '0.0'))
afc_contract_input = [
(consts.SE_AFC_CON_FIELD[0], full_no),
(consts.SE_AFC_CON_FIELD[1], amount),
(consts.SE_AFC_CON_FIELD[2], vin_no),
(consts.SE_AFC_CON_FIELD[3], str(cms_info.get('financialInformation', {}).get('originationPrincipal', '0.0'))),
(consts.SE_AFC_CON_FIELD[3],
str(cms_info.get('financialInformation', {}).get('originationPrincipal', '0.0'))),
(consts.SE_AFC_CON_FIELD[4], str(cms_info.get('terms', '0'))),
(consts.SE_AFC_CON_FIELD[5], vehicle_principal_str),
(consts.SE_AFC_CON_FIELD[6], str(cms_info.get('financialInformation', {}).get('associatedServicePrincipal', '0.0'))),
(consts.SE_AFC_CON_FIELD[6],
str(cms_info.get('financialInformation', {}).get('associatedServicePrincipal', '0.0'))),
(consts.SE_AFC_CON_FIELD[7], amount),
(consts.SE_AFC_CON_FIELD[8], vin_no),
(consts.SE_AFC_CON_FIELD[9], cms_info.get('dealerName', '')),
(consts.SE_AFC_CON_FIELD[10], str(cms_info.get('financialInformation', {}).get('originationPrincipal', '0.0'))),
(consts.SE_AFC_CON_FIELD[10],
str(cms_info.get('financialInformation', {}).get('originationPrincipal', '0.0'))),
(consts.SE_AFC_CON_FIELD[11], vehicle_principal_str),
(consts.SE_AFC_CON_FIELD[12], str(cms_info.get('financialInformation', {}).get('associatedServicePrincipal', '0.0'))),
(consts.SE_AFC_CON_FIELD[12],
str(cms_info.get('financialInformation', {}).get('associatedServicePrincipal', '0.0'))),
(consts.SE_AFC_CON_FIELD[13], str(cms_info.get('terms', '0'))),
(consts.SE_AFC_CON_FIELD[14], account_no),
(consts.SE_AFC_CON_FIELD[15], cms_info.get('bankAccountDetails', {}).get('accountHolderName', '')),
(consts.SE_AFC_CON_FIELD[15], account_holder_name),
(consts.SE_AFC_CON_FIELD[16], bank_name),
(consts.SE_AFC_CON_FIELD[17], schedule_list_str),
]
......@@ -1329,7 +1340,7 @@ def get_se_cms_compare_info_auto(last_obj, application_entity):
continue
is_find = False
if app_type in main_role_info:
if len(main_role_info[app_type]) >= id_idx+1:
if len(main_role_info[app_type]) >= id_idx + 1:
is_find = True
if isinstance(field_idx, int):
afc_contract_input.append((key, main_role_info[app_type][id_idx][field_idx]))
......@@ -1373,16 +1384,11 @@ def get_se_cms_compare_info(last_obj, application_entity, detect_list):
license_en, is_prc = consts.SE_CMS_FIRST_ID_FIELD_MAPPING[id_info['idType']]
# ['customerName', 'idNum', 'dateOfBirth', 'idExpiryDate', 'hukouProvince']
id_num = decode_des(id_info.get('idNum', ''), des_key)
field_input = [
('customerName', customer_name),
('idNum', id_num),
# ('dateOfBirth', date_of_birth),
# ('idExpiryDate', id_info.get('idExpiryDate', '')),
]
if is_prc:
# field_input.append(('hukouProvince', province))
field_input.append(('真伪', consts.IC_RES_MAPPING.get(1)))
field_input.append(('idExpiryDate', id_info.get('idExpiryDate', '')))
field_input = [('customerName', customer_name), ('idNum', id_num),
('idExpiryDate', id_info.get('idExpiryDate', ''))]
# if is_prc:
# field_input.append(('hukouProvince', province))
# field_input.append(('真伪', consts.IC_RES_MAPPING.get(1)))
license_dict[license_en] = field_input
all_id_num.append(id_num)
# 营业执照 --------------------------------------------------------------------------------------------------
......@@ -1405,12 +1411,12 @@ def get_se_cms_compare_info(last_obj, application_entity, detect_list):
company_info_list.append((customer_name, id_num, legal_name))
# SME营业执照---------------------------------------------------------------------------------------------------
if individual_info.get('customersubType', '').startswith('Self Employed'):
sep_field_input = [
('legalRepName', customer_name),
('businessLicenseDueDate', ''),
]
license_dict[consts.SME_BL_EN] = sep_field_input
# if individual_info.get('customersubType', '').startswith('Self Employed'):
# sep_field_input = [
# ('legalRepName', customer_name),
# ('businessLicenseDueDate', ''),
# ]
# license_dict[consts.SME_BL_EN] = sep_field_input
if len(all_id_num) > 0:
main_role_info.setdefault(individual_info['applicantType'], []).append(
......@@ -1518,13 +1524,18 @@ def get_se_cms_compare_info(last_obj, application_entity, detect_list):
bank_info = {}
bank_name = cms_info.get('bankAccountDetails', {}).get('bankName', '')
account_no = decode_des(cms_info.get('bankAccountDetails', {}).get('accountNo', ''), des_key)
account_holder_name = cms_info.get('bankAccountDetails', {}).get('accountHolderName', '')
is_gsyh = True if '工商' in bank_name else False
bank_field_input = [
('accountNo', account_no),
('bankName', bank_name),
('type', consts.BC_TYPE_VALUE),
]
bank_info[consts.BC_EN] = bank_field_input
if isinstance(company_info, tuple) and company_info[0] == account_holder_name:
pass
else:
bank_field_input = [
('accountNo', account_no),
('bankName', bank_name),
('type', consts.BC_TYPE_VALUE),
]
bank_info[consts.BC_EN] = bank_field_input
# DDA------------------------------------------------------------------------------------------------------------
if is_gsyh or not detect_list[-1]:
......@@ -1535,11 +1546,12 @@ def get_se_cms_compare_info(last_obj, application_entity, detect_list):
('companyName', consts.HIL_COMPANY_NAME if application_entity in consts.HIL_SET else consts.AFC_COMPANY_NAME),
('customerName', dda_name),
('idNum', dda_num),
('accountHolderName', cms_info.get('bankAccountDetails', {}).get('accountHolderName', '')),
('accountHolderName', account_holder_name),
('accountNo', account_no),
]
bank_info[consts.DDA_EN] = dda_field_input
compare_info['bankInfo'] = bank_info
if len(bank_info) > 0:
compare_info['bankInfo'] = bank_info
# 银行流水 --------------------------------------------------------------------
if cms_info.get('autoApprovedDetails', {}).get('aaType', '') in ['CAA1', 'CAA2']:
......@@ -1553,7 +1565,7 @@ def get_se_cms_compare_info(last_obj, application_entity, detect_list):
bs_field_input = [
(consts.SE_BS_FIELD[0], bs_role_list),
(consts.SE_BS_FIELD[1], first_submission_date),
(consts.SE_BS_FIELD[2], '90天'),
(consts.SE_BS_FIELD[2], 90),
]
dbr_bs_role_list = []
......@@ -1564,13 +1576,13 @@ def get_se_cms_compare_info(last_obj, application_entity, detect_list):
bs_field_input.extend([
(consts.SE_BS_FIELD[3], dbr_bs_role_list[0]),
(consts.SE_BS_FIELD[4], first_submission_date),
(consts.SE_BS_FIELD[5], '90天'),
(consts.SE_BS_FIELD[5], 90),
])
if len(dbr_bs_role_list) >= 2:
bs_field_input.extend([
(consts.SE_BS_FIELD[6], dbr_bs_role_list[1]),
(consts.SE_BS_FIELD[7], first_submission_date),
(consts.SE_BS_FIELD[8], '90天'),
(consts.SE_BS_FIELD[8], 90),
])
bs_info[consts.BS_EN] = bs_field_input
compare_info['Bank Statement'] = bs_info
......@@ -1632,6 +1644,7 @@ def get_se_cms_compare_info(last_obj, application_entity, detect_list):
)
# CMS Vehicle Price / 1.13 * 10 %
gzs_list = [gzs_status]
if gzs_status != consts.GZS_STATUS[1]:
gzs_value = float(amount) * 0.1 / 1.13
gzs_list.append(gzs_value)
......@@ -1656,7 +1669,7 @@ def get_se_cms_compare_info(last_obj, application_entity, detect_list):
dszx_amount = '500000'
bd_field_input = [
(consts.SE_BD_FIELD[0], hmh_name),
# (consts.SE_BD_FIELD[1], hmh_id),
(consts.SE_BD_FIELD[1], hmh_id),
(consts.SE_BD_FIELD[2], vin_no),
(consts.SE_BD_FIELD[3], ssx_amount),
(consts.SE_BD_FIELD[4], dszx_amount),
......@@ -1697,7 +1710,7 @@ def get_se_cms_compare_info(last_obj, application_entity, detect_list):
(consts.SE_HIL_CON_1_FIELD[6], str(cms_info.get('terms', '0'))),
(consts.SE_HIL_CON_1_FIELD[7], schedule_list_str),
(consts.SE_HIL_CON_1_FIELD[11], account_no),
(consts.SE_HIL_CON_1_FIELD[12], cms_info.get('bankAccountDetails', {}).get('accountHolderName', '')),
(consts.SE_HIL_CON_1_FIELD[12], account_holder_name),
(consts.SE_HIL_CON_1_FIELD[13], bank_name),
]
......@@ -1747,7 +1760,9 @@ def get_se_cms_compare_info(last_obj, application_entity, detect_list):
(consts.SE_HIL_CON_2_FIELD[4], str(cms_info.get('terms', '0'))),
]
for key, app_type, id_idx, field_idx, is_force, e_write in consts.ROLE_LIST_2:
for key, app_type, id_idx, field_idx, is_force, e_write, co_skip in consts.ROLE_LIST_2:
if co_skip and isinstance(company_info, tuple):
continue
if not e_write and not online_sign:
continue
is_find = False
......@@ -1764,7 +1779,7 @@ def get_se_cms_compare_info(last_obj, application_entity, detect_list):
compare_info['contract'] = contract_info
return compare_info, cms_info.get('applicationVersion', 1), is_gsyh
else:
# AFC合同-----------------------------------------------------------------------------------------------------------
# AFC合同------------------------------------------------------------------------------------------------------
vehicle_principal_str = str(cms_info.get('financialInformation', {}).get('vehiclePrincipal', '0.0'))
afc_contract_input = [
(consts.SE_AFC_CON_FIELD[0], full_no),
......@@ -1782,7 +1797,7 @@ def get_se_cms_compare_info(last_obj, application_entity, detect_list):
(consts.SE_AFC_CON_FIELD[12], str(cms_info.get('financialInformation', {}).get('associatedServicePrincipal', '0.0'))),
(consts.SE_AFC_CON_FIELD[13], str(cms_info.get('terms', '0'))),
(consts.SE_AFC_CON_FIELD[14], account_no),
(consts.SE_AFC_CON_FIELD[15], cms_info.get('bankAccountDetails', {}).get('accountHolderName', '')),
(consts.SE_AFC_CON_FIELD[15], account_holder_name),
(consts.SE_AFC_CON_FIELD[16], bank_name),
(consts.SE_AFC_CON_FIELD[17], schedule_list_str),
]
......@@ -2485,7 +2500,7 @@ def se_mvc34_compare(license_en, ocr_res_dict, field_list):
consts.TRANSFER_NUM: transfer_num,
consts.TRANSFER_DATE: transfer_date,
consts.IMG_PATH_KEY_2: img_path,
consts.SECTION_IMG_PATH_KEY_2: section_img_path,
consts.SECTION_IMG_PATH_KEY_2: section_img_path,
consts.ALL_POSITION_KEY: {
consts.TRANSFER_NAME: position_info_name,
consts.TRANSFER_NUM: position_info_num,
......@@ -2521,10 +2536,10 @@ def se_mvc34_compare(license_en, ocr_res_dict, field_list):
img_path = base_img_path if result == consts.RESULT_N else empty_str
error_type = empty_error_type if result == consts.RESULT_Y else ErrorType.OCR.value
result_field_list.append((name, value, result, ocr_str, img_path, error_type, compare_logic[name][3]))
if result == consts.RESULT_N:
failed_field.append(name)
section_img_path = ocr_res.get(consts.SECTION_IMG_PATH_KEY_2, '')
if len(failed_field) > 0 and os.path.exists(section_img_path):
info = ocr_res.get(consts.ALL_POSITION_KEY, {})
......@@ -2548,7 +2563,7 @@ def se_mvc34_compare(license_en, ocr_res_dict, field_list):
field_img_path_dict[field] = base_img_path
except Exception as e:
field_img_path_dict[field] = base_img_path
if not is_find:
for name, value in field_list:
result_field_list.append((name, value, consts.RESULT_N, empty_str, empty_str, ErrorType.NF.value, '{0}未找到'.format(license_en)))
......
......@@ -258,6 +258,9 @@ class Comparison:
return self.build_res(input_s == ocr_s)
def se_common_compare(self, input_str, ocr_str, **kwargs):
if kwargs.get('is_bd_id', False):
if ocr_str == '':
return self.RESULT_Y
if kwargs.get('is_gsyh', False):
if ocr_str == '' or ocr_str is None:
return self.RESULT_Y
......@@ -517,17 +520,18 @@ class Comparison:
except Exception as e:
return self.RESULT_N
def se_bs_date_compare(self, input_str, ocr_str_list, **kwargs):
if isinstance(ocr_str_list, list) and len(ocr_str_list) == 2:
def se_bs_date_compare(self, input_str, ocr_str, **kwargs):
if not isinstance(ocr_str, int):
try:
start_date = datetime.strptime(ocr_str_list[0], "%Y-%m-%d")
end_date = datetime.strptime(ocr_str_list[1], "%Y-%m-%d")
if end_date >= start_date + relativedelta(months=3):
return self.RESULT_Y
return self.RESULT_N
ocr_int = int(ocr_str)
except Exception as e:
return self.RESULT_N
return self.RESULT_N
else:
ocr_int = ocr_str
if ocr_int >= input_str:
return self.RESULT_Y
else:
return self.RESULT_N
cp = Comparison()
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!