cc65b4fb by 周伟奇

add bankcard

1 parent 1b812e1f
...@@ -882,3 +882,25 @@ class AFCAutoSettlement(models.Model): ...@@ -882,3 +882,25 @@ class AFCAutoSettlement(models.Model):
882 situ_db_label = 'afc' 882 situ_db_label = 'afc'
883 883
884 884
885 class HILbankVerification(models.Model):
886 id = models.AutoField(primary_key=True, verbose_name="id") # 主键
887 application_id = models.CharField(max_length=64, verbose_name="申请id") # 索引
888 on_off = models.BooleanField(default=True, verbose_name="是否有效")
889 update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间')
890 create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
891
892 class Meta:
893 managed = False
894 db_table = 'hil_bank_verification'
895
896
897 class AFCbankVerification(models.Model):
898 id = models.AutoField(primary_key=True, verbose_name="id") # 主键
899 application_id = models.CharField(max_length=64, verbose_name="申请id") # 索引
900 on_off = models.BooleanField(default=True, verbose_name="是否有效")
901 update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间')
902 create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
903
904 class Meta:
905 managed = False
906 db_table = 'afc_bank_verification'
......
...@@ -495,7 +495,7 @@ class BSWorkbook(Workbook): ...@@ -495,7 +495,7 @@ class BSWorkbook(Workbook):
495 high_light_keyword = self.wechat_keyword 495 high_light_keyword = self.wechat_keyword
496 else: 496 else:
497 high_light_keyword = self.loan_keyword 497 high_light_keyword = self.loan_keyword
498 for month in sorted(month_mapping.keys()): 498 for month in sorted(month_mapping.keys(), reverse=True):
499 # 3.1.拷贝数据 499 # 3.1.拷贝数据
500 parts = month_mapping.get(month) 500 parts = month_mapping.get(month)
501 new_ws = self.create_sheet('{0}({1})'.format(month, card)) 501 new_ws = self.create_sheet('{0}({1})'.format(month, card))
......
...@@ -42,6 +42,8 @@ from .models import ( ...@@ -42,6 +42,8 @@ from .models import (
42 HILSECompareResultRecord, 42 HILSECompareResultRecord,
43 HILAutoSettlement, 43 HILAutoSettlement,
44 AFCAutoSettlement, 44 AFCAutoSettlement,
45 HILbankVerification,
46 AFCbankVerification,
45 ) 47 )
46 from .named_enum import ErrorType, AutoResult, WholeResult, RPAResult 48 from .named_enum import ErrorType, AutoResult, WholeResult, RPAResult
47 from .mixins import DocHandler, MPOSHandler 49 from .mixins import DocHandler, MPOSHandler
...@@ -112,7 +114,7 @@ se_bank_args = { ...@@ -112,7 +114,7 @@ se_bank_args = {
112 'applicantType': fields.Str(required=True, validate=validate.Length(max=16)), 114 'applicantType': fields.Str(required=True, validate=validate.Length(max=16)),
113 'accountHolderName': fields.Str(required=True, validate=validate.Length(max=256)), 115 'accountHolderName': fields.Str(required=True, validate=validate.Length(max=256)),
114 'accountNo': fields.Str(required=True, validate=validate.Length(max=256)), 116 'accountNo': fields.Str(required=True, validate=validate.Length(max=256)),
115 'bankVerificationStatus': fields.Str(required=False, validate=validate.Length(max=16)), 117 'bankVerificationStatus': fields.Str(required=False, validate=validate.Length(max=128)),
116 'isAllDocUploaded': fields.Boolean(required=False) 118 'isAllDocUploaded': fields.Boolean(required=False)
117 } 119 }
118 120
...@@ -748,29 +750,25 @@ class SECompareView(GenericView): ...@@ -748,29 +750,25 @@ class SECompareView(GenericView):
748 @use_args(se_compare_args, location='data') 750 @use_args(se_compare_args, location='data')
749 def post(self, request, args): 751 def post(self, request, args):
750 # 存库 752 # 存库
751 # content = args.get('content', {}) 753 content = args.get('content', {})
752 # business_type = content.get('applicationEntity') 754 business_type = content.get('applicationEntity')
753 # application_id = content.get('applicationId') 755 application_id = content.get('applicationId')
754 # is_auto = content.get('isAutoSettlement', False) 756 bank_verify = content.get('bankInfo', {}).get('bankVerificationStatus', '')
755 # 757
756 # auto_class = HILAutoSettlement if business_type in consts.HIL_SET else AFCAutoSettlement 758 bank_class = HILbankVerification if business_type in consts.HIL_SET else AFCbankVerification
757 # auto_obj = auto_class.objects.filter(application_id=application_id).first() 759 bank_obj = bank_class.objects.filter(application_id=application_id).first()
758 # if is_auto: 760
759 # # 加入优先级队列 761 if bank_obj is None and bank_verify == 'PASS':
760 # PriorityApplication.objects.update_or_create( 762 bank_class.objects.create(
761 # application_id=application_id, defaults={'on_off': True}) 763 application_id=application_id,
762 # # 加入auto表 764 )
763 # if auto_obj is None: 765 elif bank_obj is not None and bank_verify == 'PASS' and bank_obj.on_off is False:
764 # auto_class.objects.create( 766 bank_obj.on_off = True
765 # application_id=application_id, 767 bank_obj.save()
766 # ) 768 elif bank_obj is not None and bank_verify != 'PASS' and bank_obj.on_off is True:
767 # elif auto_obj.on_off is False: 769 bank_obj.on_off = False
768 # auto_obj.on_off = True 770 bank_obj.save()
769 # auto_obj.save() 771
770 # else:
771 # if auto_obj is not None and auto_obj.on_off is True:
772 # auto_obj.on_off = False
773 # auto_obj.save()
774 return response.ok() 772 return response.ok()
775 773
776 post.openapi_doc = ''' 774 post.openapi_doc = '''
......
...@@ -29,6 +29,8 @@ from apps.doc.models import ( ...@@ -29,6 +29,8 @@ from apps.doc.models import (
29 HILCACompareResult, 29 HILCACompareResult,
30 HILAutoSettlement, 30 HILAutoSettlement,
31 AFCAutoSettlement, 31 AFCAutoSettlement,
32 HILbankVerification,
33 AFCbankVerification,
32 ) 34 )
33 from apps.doc import consts 35 from apps.doc import consts
34 from apps.doc.ocr.gcap import gcap 36 from apps.doc.ocr.gcap import gcap
...@@ -872,7 +874,7 @@ def ca_compare(application_id, application_entity, ocr_res_id, last_obj, ocr_res ...@@ -872,7 +874,7 @@ def ca_compare(application_id, application_entity, ocr_res_id, last_obj, ocr_res
872 traceback.format_exc())) 874 traceback.format_exc()))
873 875
874 876
875 def get_se_cms_compare_info_auto(last_obj, application_entity, auto=True): 877 def get_se_cms_compare_info_auto(last_obj, application_entity, auto=True, ignore_bank=False):
876 cms_info = json.loads(last_obj.content) 878 cms_info = json.loads(last_obj.content)
877 879
878 compare_info = {} 880 compare_info = {}
...@@ -1083,7 +1085,7 @@ def get_se_cms_compare_info_auto(last_obj, application_entity, auto=True): ...@@ -1083,7 +1085,7 @@ def get_se_cms_compare_info_auto(last_obj, application_entity, auto=True):
1083 1085
1084 if isinstance(company_info, tuple) and company_info[0] == account_holder_name: 1086 if isinstance(company_info, tuple) and company_info[0] == account_holder_name:
1085 pass 1087 pass
1086 else: 1088 elif not ignore_bank:
1087 bank_field_input = [ 1089 bank_field_input = [
1088 ('accountNo', account_no), 1090 ('accountNo', account_no),
1089 ('bankName', bank_name), 1091 ('bankName', bank_name),
...@@ -1408,7 +1410,7 @@ def get_se_cms_compare_info_auto(last_obj, application_entity, auto=True): ...@@ -1408,7 +1410,7 @@ def get_se_cms_compare_info_auto(last_obj, application_entity, auto=True):
1408 return compare_info, cms_info.get('autoApprovedDetails', {}).get('aaType', ''), is_gsyh 1410 return compare_info, cms_info.get('autoApprovedDetails', {}).get('aaType', ''), is_gsyh
1409 1411
1410 1412
1411 def get_se_cms_compare_info(last_obj, application_entity, detect_list, auto=False): 1413 def get_se_cms_compare_info(last_obj, application_entity, detect_list, auto=False, ignore_bank=False):
1412 cms_info = json.loads(last_obj.content) 1414 cms_info = json.loads(last_obj.content)
1413 1415
1414 compare_info = {} 1416 compare_info = {}
...@@ -1618,7 +1620,7 @@ def get_se_cms_compare_info(last_obj, application_entity, detect_list, auto=Fals ...@@ -1618,7 +1620,7 @@ def get_se_cms_compare_info(last_obj, application_entity, detect_list, auto=Fals
1618 1620
1619 if isinstance(company_info, tuple) and company_info[0] == account_holder_name: 1621 if isinstance(company_info, tuple) and company_info[0] == account_holder_name:
1620 pass 1622 pass
1621 else: 1623 elif not ignore_bank:
1622 bank_field_input = [ 1624 bank_field_input = [
1623 ('accountNo', account_no), 1625 ('accountNo', account_no),
1624 ('bankName', bank_name), 1626 ('bankName', bank_name),
...@@ -2700,12 +2702,12 @@ def se_result_detect(ocr_res_dict): ...@@ -2700,12 +2702,12 @@ def se_result_detect(ocr_res_dict):
2700 return detect_list 2702 return detect_list
2701 2703
2702 2704
2703 def se_compare_auto(application_id, application_entity, ocr_res_id, last_obj, ocr_res_dict, auto_obj): 2705 def se_compare_auto(application_id, application_entity, ocr_res_id, last_obj, ocr_res_dict, auto_obj, ignore_bank):
2704 try: 2706 try:
2705 # 比对逻辑 2707 # 比对逻辑
2706 # detect_list = se_result_detect(ocr_res_dict) 2708 # detect_list = se_result_detect(ocr_res_dict)
2707 compare_info, aa_type, is_gsyh = get_se_cms_compare_info_auto( 2709 compare_info, aa_type, is_gsyh = get_se_cms_compare_info_auto(
2708 last_obj, application_entity) 2710 last_obj, application_entity, ignore_bank=ignore_bank)
2709 compare_result, total_fields, failed_count, successful_at_this_level, failure_reason_str, cn_failure_reason_str, bs_failure_reason_str, _ = se_compare_process(compare_info, ocr_res_dict, is_gsyh, True) 2711 compare_result, total_fields, failed_count, successful_at_this_level, failure_reason_str, cn_failure_reason_str, bs_failure_reason_str, _ = se_compare_process(compare_info, ocr_res_dict, is_gsyh, True)
2710 compare_log.info('{0} [Auto SE] [compare success] [entity={1}] [id={2}] [ocr_res_id={3}] [result={4}]'.format( 2712 compare_log.info('{0} [Auto SE] [compare success] [entity={1}] [id={2}] [ocr_res_id={3}] [result={4}]'.format(
2711 log_base, application_entity, application_id, ocr_res_id, compare_result)) 2713 log_base, application_entity, application_id, ocr_res_id, compare_result))
...@@ -2744,13 +2746,13 @@ def se_compare_auto(application_id, application_entity, ocr_res_id, last_obj, oc ...@@ -2744,13 +2746,13 @@ def se_compare_auto(application_id, application_entity, ocr_res_id, last_obj, oc
2744 return successful_at_this_level 2746 return successful_at_this_level
2745 2747
2746 2748
2747 def se_compare(application_id, application_entity, ocr_res_id, last_obj, ocr_res_dict, is_cms, auto_result): 2749 def se_compare(application_id, application_entity, ocr_res_id, last_obj, ocr_res_dict, is_cms, auto_result, ignore_bank):
2748 try: 2750 try:
2749 # 比对逻辑 2751 # 比对逻辑
2750 start_time = datetime.now() 2752 start_time = datetime.now()
2751 detect_list = se_result_detect(ocr_res_dict) 2753 detect_list = se_result_detect(ocr_res_dict)
2752 compare_info, application_version, is_gsyh = get_se_cms_compare_info( 2754 compare_info, application_version, is_gsyh = get_se_cms_compare_info(
2753 last_obj, application_entity, detect_list) 2755 last_obj, application_entity, detect_list, ignore_bank=ignore_bank)
2754 compare_result, total_fields, failed_count, successful_at_this_level, failure_reason_str, cn_failure_reason_str, bs_failure_reason_str, rpa_failure_reason = se_compare_process(compare_info, ocr_res_dict, is_gsyh, False) 2756 compare_result, total_fields, failed_count, successful_at_this_level, failure_reason_str, cn_failure_reason_str, bs_failure_reason_str, rpa_failure_reason = se_compare_process(compare_info, ocr_res_dict, is_gsyh, False)
2755 compare_log.info('{0} [SE] [compare success] [entity={1}] [id={2}] [ocr_res_id={3}] [result={4}]'.format( 2757 compare_log.info('{0} [SE] [compare success] [entity={1}] [id={2}] [ocr_res_id={3}] [result={4}]'.format(
2756 log_base, application_entity, application_id, ocr_res_id, compare_result)) 2758 log_base, application_entity, application_id, ocr_res_id, compare_result))
...@@ -2903,12 +2905,14 @@ def compare(application_id, application_entity, uniq_seq, ocr_res_id, is_ca=True ...@@ -2903,12 +2905,14 @@ def compare(application_id, application_entity, uniq_seq, ocr_res_id, is_ca=True
2903 # auto settlement 2905 # auto settlement
2904 auto_class = HILAutoSettlement if application_entity == consts.HIL_PREFIX else AFCAutoSettlement 2906 auto_class = HILAutoSettlement if application_entity == consts.HIL_PREFIX else AFCAutoSettlement
2905 auto_obj = auto_class.objects.filter(application_id=application_id, on_off=True).first() 2907 auto_obj = auto_class.objects.filter(application_id=application_id, on_off=True).first()
2908 bank_class = HILbankVerification if application_entity == consts.HIL_PREFIX else AFCbankVerification
2909 ignore_bank = bank_class.objects.filter(application_id=application_id, on_off=True).exists()
2906 if auto_obj is not None: 2910 if auto_obj is not None:
2907 auto_result = se_compare_auto(application_id, application_entity, ocr_res_id, last_obj, ocr_res_dict, auto_obj) 2911 auto_result = se_compare_auto(application_id, application_entity, ocr_res_id, last_obj, ocr_res_dict, auto_obj, ignore_bank)
2908 else: 2912 else:
2909 auto_result = None 2913 auto_result = None
2910 2914
2911 full_result = se_compare(application_id, application_entity, ocr_res_id, last_obj, ocr_res_dict, is_cms, auto_result) 2915 full_result = se_compare(application_id, application_entity, ocr_res_id, last_obj, ocr_res_dict, is_cms, auto_result, ignore_bank)
2912 2916
2913 if auto_obj is not None: 2917 if auto_obj is not None:
2914 try: 2918 try:
......
1 import pyodbc
2
3 hil_sql = """
4 create table hil_bank_verification
5 (
6 id bigint identity primary key,
7 application_id nvarchar(64) not null,
8 on_off bit default 1 not null,
9 update_time datetime not null,
10 create_time datetime not null
11 );
12
13 create index hil_bank_verification_application_id_index
14 on hil_bank_verification (application_id);
15 """
16
17 afc_sql = """
18 create table afc_bank_verification
19 (
20 id bigint identity primary key,
21 application_id nvarchar(64) not null,
22 on_off bit default 1 not null,
23 update_time datetime not null,
24 create_time datetime not null
25 );
26
27 create index afc_bank_verification_application_id_index
28 on afc_bank_verification (application_id);
29 """
30
31 hil_cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};', autocommit=True)
32
33 hil_cursor = hil_cnxn.cursor()
34 hil_cursor.execute(hil_sql)
35
36 hil_cursor.close()
37 hil_cnxn.close()
38
39 afc_cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};', autocommit=True)
40
41 afc_cursor = afc_cnxn.cursor()
42 afc_cursor.execute(afc_sql)
43
44 afc_cursor.close()
45 afc_cnxn.close()
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!