se compare part 2
Showing
2 changed files
with
115 additions
and
58 deletions
| ... | @@ -488,3 +488,16 @@ class IDBCRecords(models.Model): | ... | @@ -488,3 +488,16 @@ class IDBCRecords(models.Model): | 
| 488 | db_table = 'idbc_records' | 488 | db_table = 'idbc_records' | 
| 489 | 489 | ||
| 490 | 490 | ||
| 491 | class AFCSECompareResult(models.Model): | ||
| 492 | id = models.AutoField(primary_key=True, verbose_name="id") # 主键 | ||
| 493 | application_id = models.CharField(max_length=64, verbose_name="申请id") # 索引 | ||
| 494 | |||
| 495 | update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间') | ||
| 496 | create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') | ||
| 497 | |||
| 498 | class Meta: | ||
| 499 | managed = False | ||
| 500 | db_table = 'afc_se_compare_result' | ||
| 501 | situ_db_label = 'afc' | ||
| 502 | |||
| 503 | ... | ... | 
| ... | @@ -149,34 +149,7 @@ def usedcar_info_compare(info_dict, ocr_res_dict, ocr_field, compare_list, res_s | ... | @@ -149,34 +149,7 @@ def usedcar_info_compare(info_dict, ocr_res_dict, ocr_field, compare_list, res_s | 
| 149 | return is_find and key_right, no_match_vino | 149 | return is_find and key_right, no_match_vino | 
| 150 | 150 | ||
| 151 | 151 | ||
| 152 | @app.task | 152 | def ca_compare(application_id, application_entity, ocr_res_id, last_obj, ocr_res_dict): | 
| 153 | def compare(application_id, application_entity, uniq_seq, ocr_res_id, is_ca=True): | ||
| 154 | # POS: application_id, application_entity, uniq_seq, None | ||
| 155 | # OCR: application_id, business_type(application_entity), None, ocr_res_id | ||
| 156 | |||
| 157 | compare_log.info('{0} [receive task] [entity={1}] [id={2}] [uniq_seq={3}] [ocr_res_id={4}]'.format( | ||
| 158 | log_base, application_entity, application_id, uniq_seq, ocr_res_id)) | ||
| 159 | |||
| 160 | # 根据application_id查找最新的比对信息,如果没有,结束 | ||
| 161 | comparison_class = HILComparisonInfo if application_entity == consts.HIL_PREFIX else AFCComparisonInfo | ||
| 162 | last_obj = comparison_class.objects.filter(application_id=application_id).last() | ||
| 163 | if last_obj is None: | ||
| 164 | compare_log.info('{0} [comparison info empty] [entity={1}] [id={2}] [uniq_seq={3}] [ocr_res_id={4}]'.format( | ||
| 165 | log_base, application_entity, application_id, uniq_seq, ocr_res_id)) | ||
| 166 | return | ||
| 167 | |||
| 168 | # 根据application_id查找OCR累计结果指定license字段,如果没有,结束 | ||
| 169 | result_class = HILOCRResult if application_entity == consts.HIL_PREFIX else AFCOCRResult | ||
| 170 | if ocr_res_id is None: | ||
| 171 | ocr_res_dict = result_class.objects.filter(application_id=application_id).values(*consts.COMPARE_FIELDS).first() | ||
| 172 | else: | ||
| 173 | ocr_res_dict = result_class.objects.filter(id=ocr_res_id).values(*consts.COMPARE_FIELDS).first() | ||
| 174 | if ocr_res_dict is None: | ||
| 175 | compare_log.info('{0} [ocr info empty] [entity={1}] [id={2}] [uniq_seq={3}] [ocr_res_id={4}]'.format( | ||
| 176 | log_base, application_entity, application_id, uniq_seq, ocr_res_id | ||
| 177 | )) | ||
| 178 | return | ||
| 179 | |||
| 180 | start_time = datetime.now() | 153 | start_time = datetime.now() | 
| 181 | compare_failed = False | 154 | compare_failed = False | 
| 182 | 155 | ||
| ... | @@ -300,38 +273,36 @@ def compare(application_id, application_entity, uniq_seq, ocr_res_id, is_ca=True | ... | @@ -300,38 +273,36 @@ def compare(application_id, application_entity, uniq_seq, ocr_res_id, is_ca=True | 
| 300 | 273 | ||
| 301 | comparison_res['OCR_Input']['corporateCusInfo'] = order_corporate_cus_info | 274 | comparison_res['OCR_Input']['corporateCusInfo'] = order_corporate_cus_info | 
| 302 | 275 | ||
| 303 | comparison_res['OCR_Input']['wholeResult'] = consts.RESULT_N if consts.RESULT_N in res_set or consts.RESULT_NA in res_set else consts.RESULT_Y | 276 | comparison_res['OCR_Input'][ | 
| 277 | 'wholeResult'] = consts.RESULT_N if consts.RESULT_N in res_set or consts.RESULT_NA in res_set else consts.RESULT_Y | ||
| 304 | 278 | ||
| 305 | except Exception as e: | 279 | except Exception as e: | 
| 306 | compare_failed = True | 280 | compare_failed = True | 
| 307 | compare_log.error('{0} [compare error] [entity={1}] [id={2}] [uniq_seq={3}] [ocr_res_id={4}] ' | 281 | compare_log.error('{0} [CA] [compare error] [entity={1}] [id={2}] [ocr_res_id={3}] [error={4}]'.format( | 
| 308 | '[error={5}]'.format(log_base, application_entity, application_id, uniq_seq, ocr_res_id, | 282 | log_base, application_entity, application_id, ocr_res_id, traceback.format_exc())) | 
| 309 | traceback.format_exc())) | ||
| 310 | else: | 283 | else: | 
| 311 | compare_log.info('{0} [compare success] [entity={1}] [id={2}] [uniq_seq={3}] [ocr_res_id={4}] ' | 284 | compare_log.info('{0} [CA] [compare success] [entity={1}] [id={2}] [ocr_res_id={3}] [compare_res={4}]'.format( | 
| 312 | '[compare_res={5}]'.format(log_base, application_entity, application_id, uniq_seq, | 285 | log_base, application_entity, application_id, ocr_res_id, comparison_res)) | 
| 313 | ocr_res_id, comparison_res)) | ||
| 314 | 286 | ||
| 315 | is_gcap_send = Configs.objects.filter(id=1).first() | 287 | is_gcap_send = Configs.objects.filter(id=1).first() | 
| 316 | if is_gcap_send is not None and is_gcap_send.value == 'N': | 288 | if is_gcap_send is not None and is_gcap_send.value == 'N': | 
| 317 | compare_log.info('{0} [gcap closed] [entity={1}] [id={2}] [uniq_seq={3}] [ocr_res_id={4}]'.format( | 289 | compare_log.info('{0} [CA] [gcap closed] [entity={1}] [id={2}] [ocr_res_id={3}]'.format( | 
| 318 | log_base, application_entity, application_id, uniq_seq, ocr_res_id)) | 290 | log_base, application_entity, application_id, ocr_res_id)) | 
| 319 | return | 291 | return | 
| 320 | 292 | ||
| 321 | # 时间延迟 | 293 | # 时间延迟 | 
| 322 | send_time = last_obj.create_time + timedelta(seconds=15) | 294 | send_time = last_obj.create_time + timedelta(seconds=15) | 
| 323 | while datetime.now() < send_time: | 295 | while datetime.now() < send_time: | 
| 324 | compare_log.info('{0} [time wait 5s] [entity={1}] [id={2}] [uniq_seq={3}] [ocr_res_id={4}]'.format( | 296 | compare_log.info('{0} [CA] [time wait 5s] [entity={1}] [id={2}] [ocr_res_id={3}]'.format( | 
| 325 | log_base, application_entity, application_id, uniq_seq, ocr_res_id)) | 297 | log_base, application_entity, application_id, ocr_res_id)) | 
| 326 | time.sleep(5) | 298 | time.sleep(5) | 
| 327 | 299 | ||
| 328 | # 将比对结果发送GCAP | 300 | # 将比对结果发送GCAP | 
| 329 | try: | 301 | try: | 
| 330 | data = gcap.dict_to_xml(comparison_res) | 302 | data = gcap.dict_to_xml(comparison_res) | 
| 331 | except Exception as e: | 303 | except Exception as e: | 
| 332 | compare_log.error('{0} [dict to xml failed] [entity={1}] [id={2}] [uniq_seq={3}] [ocr_res_id={4}] ' | 304 | compare_log.error('{0} [CA] [dict to xml failed] [entity={1}] [id={2}] [ocr_res_id={3}] [error={4}]'.format( | 
| 333 | '[error={5}]'.format(log_base, application_entity, application_id, uniq_seq, ocr_res_id, | 305 | log_base, application_entity, application_id, ocr_res_id, traceback.format_exc())) | 
| 334 | traceback.format_exc())) | ||
| 335 | else: | 306 | else: | 
| 336 | try: | 307 | try: | 
| 337 | for times in range(consts.RETRY_TIMES): | 308 | for times in range(consts.RETRY_TIMES): | 
| ... | @@ -344,16 +315,15 @@ def compare(application_id, application_entity, uniq_seq, ocr_res_id, is_ca=True | ... | @@ -344,16 +315,15 @@ def compare(application_id, application_entity, uniq_seq, ocr_res_id, is_ca=True | 
| 344 | else: | 315 | else: | 
| 345 | raise GCAPException(gcap_exc) | 316 | raise GCAPException(gcap_exc) | 
| 346 | except Exception as e: | 317 | except Exception as e: | 
| 347 | compare_log.error('{0} [gcap failed] [entity={1}] [id={2}] [uniq_seq={3}] [ocr_res_id={4}] ' | 318 | compare_log.error('{0} [CA] [gcap failed] [entity={1}] [id={2}] [ocr_res_id={3}] [error={4}]'.format( | 
| 348 | '[error={5}]'.format(log_base, application_entity, application_id, uniq_seq, | 319 | log_base, application_entity, application_id, ocr_res_id, traceback.format_exc())) | 
| 349 | ocr_res_id, traceback.format_exc())) | ||
| 350 | else: | 320 | else: | 
| 351 | compare_log.info('{0} [gcap success] [entity={1}] [id={2}] [uniq_seq={3}] [ocr_res_id={4}] ' | 321 | compare_log.info('{0} [CA] [gcap success] [entity={1}] [id={2}] [ocr_res_id={3}] [response={4}]'.format( | 
| 352 | '[response={5}]'.format(log_base, application_entity, application_id, uniq_seq, | 322 | log_base, application_entity, application_id, ocr_res_id, res_text)) | 
| 353 | ocr_res_id, res_text)) | 323 | compare_log.info('{0} [CA] [task success] [entity={1}] [id={2}] [ocr_res_id={3}]'.format( | 
| 354 | compare_log.info('{0} [task success] [entity={1}] [id={2}] [uniq_seq={3}] [ocr_res_id={4}]'.format( | 324 | log_base, application_entity, application_id, ocr_res_id)) | 
| 355 | log_base, application_entity, application_id, uniq_seq, ocr_res_id)) | 325 | |
| 356 | finally: | 326 | # report | 
| 357 | try: | 327 | try: | 
| 358 | end_time = datetime.now() | 328 | end_time = datetime.now() | 
| 359 | if compare_failed: | 329 | if compare_failed: | 
| ... | @@ -361,7 +331,8 @@ def compare(application_id, application_entity, uniq_seq, ocr_res_id, is_ca=True | ... | @@ -361,7 +331,8 @@ def compare(application_id, application_entity, uniq_seq, ocr_res_id, is_ca=True | 
| 361 | failure_reason = 'Compare process error' | 331 | failure_reason = 'Compare process error' | 
| 362 | total_fields = 0 | 332 | total_fields = 0 | 
| 363 | else: | 333 | else: | 
| 364 | successful_at_this_level = True if comparison_res['OCR_Input']['wholeResult'] == consts.RESULT_Y else False | 334 | successful_at_this_level = True if comparison_res['OCR_Input'][ | 
| 335 | 'wholeResult'] == consts.RESULT_Y else False | ||
| 365 | field_failed = { | 336 | field_failed = { | 
| 366 | 'individualCusInfo': [], | 337 | 'individualCusInfo': [], | 
| 367 | 'corporateCusInfo': [], | 338 | 'corporateCusInfo': [], | 
| ... | @@ -427,7 +398,6 @@ def compare(application_id, application_entity, uniq_seq, ocr_res_id, is_ca=True | ... | @@ -427,7 +398,6 @@ def compare(application_id, application_entity, uniq_seq, ocr_res_id, is_ca=True | 
| 427 | else: | 398 | else: | 
| 428 | failure_reason = '' | 399 | failure_reason = '' | 
| 429 | 400 | ||
| 430 | |||
| 431 | request_trigger = RequestTrigger.SUBMITING.value if ocr_res_id is None else RequestTrigger.UPLOADING.value | 401 | request_trigger = RequestTrigger.SUBMITING.value if ocr_res_id is None else RequestTrigger.UPLOADING.value | 
| 432 | report_class = HILCompareReport if application_entity == consts.HIL_PREFIX else AFCCompareReport | 402 | report_class = HILCompareReport if application_entity == consts.HIL_PREFIX else AFCCompareReport | 
| 433 | report_class.objects.create( | 403 | report_class.objects.create( | 
| ... | @@ -442,10 +412,84 @@ def compare(application_id, application_entity, uniq_seq, ocr_res_id, is_ca=True | ... | @@ -442,10 +412,84 @@ def compare(application_id, application_entity, uniq_seq, ocr_res_id, is_ca=True | 
| 442 | total_fields=total_fields, | 412 | total_fields=total_fields, | 
| 443 | workflow_name=last_obj.customer_type, | 413 | workflow_name=last_obj.customer_type, | 
| 444 | ) | 414 | ) | 
| 445 | compare_log.info('{0} [report save success] [entity={1}] [id={2}] [uniq_seq={3}] [ocr_res_id={4}]'.format( | 415 | compare_log.info( | 
| 446 | log_base, application_entity, application_id, uniq_seq, ocr_res_id)) | 416 | '{0} [CA] [report save success] [entity={1}] [id={2}] [ocr_res_id={3}]'.format( | 
| 417 | log_base, application_entity, application_id, ocr_res_id)) | ||
| 418 | except Exception as e: | ||
| 419 | compare_log.error('{0} [CA] [report save error] [entity={1}] [id={2}] [ocr_res_id={3}] ' | ||
| 420 | '[error={4}]'.format(log_base, application_entity, application_id, ocr_res_id, | ||
| 421 | traceback.format_exc())) | ||
| 422 | |||
| 423 | |||
| 424 | def se_compare(application_id, application_entity, ocr_res_id, last_obj, ocr_res_dict): | ||
| 425 | try: | ||
| 426 | # 比对逻辑 | ||
| 427 | pass | ||
| 428 | except Exception as e: | ||
| 429 | pass | ||
| 430 | else: | ||
| 431 | # 将比对结果写入数据库 | ||
| 432 | try: | ||
| 433 | pass | ||
| 434 | except Exception as e: | ||
| 435 | pass | ||
| 436 | |||
| 437 | # report | ||
| 438 | try: | ||
| 439 | request_trigger = RequestTrigger.SUBMITING.value if ocr_res_id is None else RequestTrigger.UPLOADING.value | ||
| 440 | report_class = HILCompareReport if application_entity == consts.HIL_PREFIX else AFCCompareReport | ||
| 441 | report_class.objects.create( | ||
| 442 | case_number=application_id, | ||
| 443 | request_team=RequestTeam.SETTLEMENT.value, | ||
| 444 | request_trigger=request_trigger, | ||
| 445 | transaction_start=start_time, | ||
| 446 | transaction_end=end_time, | ||
| 447 | successful_at_this_level=successful_at_this_level, | ||
| 448 | failure_reason=failure_reason, | ||
| 449 | process_name=ProcessName.CACOMPARE.value, | ||
| 450 | total_fields=total_fields, | ||
| 451 | workflow_name=customer_type, | ||
| 452 | ) | ||
| 453 | compare_log.info( | ||
| 454 | '{0} [SE] [report save success] [entity={1}] [id={2}] [ocr_res_id={3}]'.format( | ||
| 455 | log_base, application_entity, application_id, ocr_res_id)) | ||
| 447 | except Exception as e: | 456 | except Exception as e: | 
| 448 | compare_log.error('{0} [report save success] [entity={1}] [id={2}] [uniq_seq={3}] [ocr_res_id={4}] ' | 457 | compare_log.error('{0} [SE] [report save error] [entity={1}] [id={2}] [ocr_res_id={3}] ' | 
| 449 | '[error={5}]'.format(log_base, application_entity, application_id, uniq_seq, | 458 | '[error={4}]'.format(log_base, application_entity, application_id, ocr_res_id, | 
| 450 | ocr_res_id, traceback.format_exc())) | 459 | traceback.format_exc())) | 
| 460 | |||
| 461 | |||
| 462 | @app.task | ||
| 463 | def compare(application_id, application_entity, uniq_seq, ocr_res_id, is_ca=True): | ||
| 464 | # POS: application_id, application_entity, uniq_seq, None | ||
| 465 | # OCR: application_id, business_type(application_entity), None, ocr_res_id | ||
| 466 | |||
| 467 | compare_log.info('{0} [receive task] [entity={1}] [id={2}] [uniq_seq={3}] [ocr_res_id={4}] [is_ca={5}]'.format( | ||
| 468 | log_base, application_entity, application_id, uniq_seq, ocr_res_id, is_ca)) | ||
| 469 | |||
| 470 | # 根据application_id查找最新的比对信息,如果没有,结束 | ||
| 471 | comparison_class = HILComparisonInfo if application_entity == consts.HIL_PREFIX else AFCComparisonInfo | ||
| 472 | last_obj = comparison_class.objects.filter(application_id=application_id).last() | ||
| 473 | if last_obj is None: | ||
| 474 | compare_log.info('{0} [comparison info empty] [entity={1}] [id={2}] [uniq_seq={3}] [ocr_res_id={4}] ' | ||
| 475 | '[is_ca={5}]'.format(log_base, application_entity, application_id, uniq_seq, ocr_res_id, is_ca)) | ||
| 476 | return | ||
| 477 | |||
| 478 | # 根据application_id查找OCR累计结果指定license字段,如果没有,结束 | ||
| 479 | result_class = HILOCRResult if application_entity == consts.HIL_PREFIX else AFCOCRResult | ||
| 480 | if ocr_res_id is None: | ||
| 481 | ocr_res_dict = result_class.objects.filter(application_id=application_id).values(*consts.COMPARE_FIELDS).first() | ||
| 482 | else: | ||
| 483 | ocr_res_dict = result_class.objects.filter(id=ocr_res_id).values(*consts.COMPARE_FIELDS).first() | ||
| 484 | if ocr_res_dict is None: | ||
| 485 | compare_log.info('{0} [ocr info empty] [entity={1}] [id={2}] [uniq_seq={3}] [ocr_res_id={4}] ' | ||
| 486 | '[is_ca={5}]'.format(log_base, application_entity, application_id, uniq_seq, ocr_res_id, is_ca)) | ||
| 487 | return | ||
| 488 | |||
| 489 | if is_ca: | ||
| 490 | ca_compare(application_id, application_entity, ocr_res_id, last_obj, ocr_res_dict) | ||
| 491 | else: | ||
| 492 | se_compare() | ||
| 493 | |||
| 494 | |||
| 451 | 495 | ... | ... | 
- 
Please register or sign in to post a comment