Merge branch 'feature/ca_compare' into feature/0611
Showing
2 changed files
with
37 additions
and
3 deletions
| ... | @@ -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 = [] |
| 412 | if individual.get('customerType') not in consts.NO_COMPARE_CUSTOMER_TYPE and \ | ||
| 413 | individual.get('idType') in consts.ID_TYPE_COMPARE: | ||
| 414 | total_fields += 4 | ||
| 383 | if not successful_at_this_level: | 415 | if not successful_at_this_level: |
| 384 | for field_name, _, _, _, result_field in consts.ITPRC: | 416 | for field_name, _, _, _, result_field in consts.ITPRC: |
| 385 | if individual.get(result_field) != consts.RESULT_Y: | 417 | if individual.get(result_field) != consts.RESULT_Y: |
| 386 | field_list.append(field_name) | 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: | ... | ... |
-
Please register or sign in to post a comment