Merge branch 'feature/ca_compare' into feature/0611
Showing
2 changed files
with
41 additions
and
7 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 = [] |
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: | ... | ... |
-
Please register or sign in to post a comment