9db2ff50 by 周伟奇

Merge branch 'feature/ca_compare' into feature/0611

2 parents 554d2f4f e4460765
...@@ -1147,6 +1147,7 @@ ID_TYPE_COMPARE = { ...@@ -1147,6 +1147,7 @@ ID_TYPE_COMPARE = {
1147 1147
1148 ID_RES = 'idNumResult' 1148 ID_RES = 'idNumResult'
1149 SECOND_ID_TYPE_FIELD = 'secondIdType' 1149 SECOND_ID_TYPE_FIELD = 'secondIdType'
1150 NAME_FIELD = 'customerChineseName'
1150 SECOND_ID_FIELD = 'secondIdNum' 1151 SECOND_ID_FIELD = 'secondIdNum'
1151 SECOND_ID_RES = 'secondIdNumResult' 1152 SECOND_ID_RES = 'secondIdNumResult'
1152 1153
......
...@@ -16,6 +16,21 @@ compare_log = logging.getLogger('compare') ...@@ -16,6 +16,21 @@ compare_log = logging.getLogger('compare')
16 log_base = '[CA Compare]' 16 log_base = '[CA Compare]'
17 17
18 18
19 def name_check(ocr_res_dict, second_ocr_field, second_compare_list, second_id_num, name):
20 id_field = second_compare_list[1][1]
21 name_field = second_compare_list[0][1]
22 ocr_res_str = ocr_res_dict.get(second_ocr_field)
23 if ocr_res_str is not None:
24 ocr_res_list = json.loads(ocr_res_str)
25 for ocr_res in ocr_res_list:
26 ocr_second_id_num = ocr_res.get(id_field)
27 if ocr_second_id_num == second_id_num:
28 ocr_name = ocr_res.get(name_field)
29 if ocr_name == name:
30 return True
31 return False
32
33
19 def get_order_dict(src_dict, order_tuple): 34 def get_order_dict(src_dict, order_tuple):
20 # if consts.SECOND_ID_TYPE_FIELD in src_dict: 35 # if consts.SECOND_ID_TYPE_FIELD in src_dict:
21 # if src_dict.get(consts.SECOND_ID_TYPE_FIELD) not in consts.SECOND_ID_TYPE_COMPARE: 36 # if src_dict.get(consts.SECOND_ID_TYPE_FIELD) not in consts.SECOND_ID_TYPE_COMPARE:
...@@ -247,9 +262,22 @@ def compare(application_id, application_entity, uniq_seq, ocr_res_id): ...@@ -247,9 +262,22 @@ def compare(application_id, application_entity, uniq_seq, ocr_res_id):
247 second_ocr_field, second_compare_list = consts.SECOND_ID_TYPE_COMPARE.get(second_id_type) 262 second_ocr_field, second_compare_list = consts.SECOND_ID_TYPE_COMPARE.get(second_id_type)
248 field_compare(order_individual_cus_info, ocr_res_dict, second_ocr_field, 263 field_compare(order_individual_cus_info, ocr_res_dict, second_ocr_field,
249 second_compare_list, res_set) 264 second_compare_list, res_set)
265
266 # 姓名比对
267 second_id_res = order_individual_cus_info.pop(consts.SECOND_ID_RES, consts.RESULT_NA)
268 if second_id_res == consts.RESULT_Y:
269 second_id_num = order_individual_cus_info.get(consts.SECOND_ID_FIELD)
270 name = order_individual_cus_info.get(consts.NAME_FIELD)
271 if isinstance(second_id_num, str) and isinstance(name, str):
272 second_ocr_field, second_compare_list, _ = consts.ID_TYPE_COMPARE.get(second_id_type)
273 name_right = name_check(ocr_res_dict, second_ocr_field, second_compare_list, second_id_num, name)
274 if not name_right:
275 res_set.add(consts.RESULT_N)
276 second_id_res = consts.RESULT_N
277 order_individual_cus_info[consts.SECOND_ID_FIELD] = '{0}-{1}'.format(second_id_num, name)
278
250 # 重新排列 279 # 重新排列
251 new_dict = OrderedDict({}) 280 new_dict = OrderedDict({})
252 second_id_res = order_individual_cus_info.pop(consts.SECOND_ID_RES, consts.RESULT_NA)
253 for key, value in order_individual_cus_info.items(): 281 for key, value in order_individual_cus_info.items():
254 new_dict[key] = value 282 new_dict[key] = value
255 if key == consts.ID_RES: 283 if key == consts.ID_RES:
...@@ -376,16 +404,21 @@ def compare(application_id, application_entity, uniq_seq, ocr_res_id): ...@@ -376,16 +404,21 @@ def compare(application_id, application_entity, uniq_seq, ocr_res_id):
376 } 404 }
377 405
378 individual_list = comparison_res.get('OCR_Input', {}).get('individualCusInfo', []) 406 individual_list = comparison_res.get('OCR_Input', {}).get('individualCusInfo', [])
379 total_fields = len(individual_list) * 4 407 total_fields = 0
380 408
381 for individual in individual_list: 409 for individual in individual_list:
410
382 field_list = [] 411 field_list = []
383 if not successful_at_this_level: 412 if individual.get('customerType') not in consts.NO_COMPARE_CUSTOMER_TYPE and \
384 for field_name, _, _, _, result_field in consts.ITPRC: 413 individual.get('idType') in consts.ID_TYPE_COMPARE:
385 if individual.get(result_field) != consts.RESULT_Y: 414 total_fields += 4
386 field_list.append(field_name) 415 if not successful_at_this_level:
416 for field_name, _, _, _, result_field in consts.ITPRC:
417 if individual.get(result_field) != consts.RESULT_Y:
418 field_list.append(field_name)
387 419
388 if individual.get('secondIdType') in consts.SECOND_ID_TYPE_COMPARE: 420 if individual.get('customerType') not in consts.NO_COMPARE_CUSTOMER_TYPE and \
421 individual.get('secondIdType') in consts.SECOND_ID_TYPE_COMPARE:
389 total_fields += 1 422 total_fields += 1
390 if not successful_at_this_level: 423 if not successful_at_this_level:
391 if individual.get(consts.SECOND_ID_RES) != consts.RESULT_Y: 424 if individual.get(consts.SECOND_ID_RES) != consts.RESULT_Y:
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!