se compare part 1
Showing
5 changed files
with
142 additions
and
9 deletions
| ... | @@ -23,7 +23,20 @@ from apps.doc.ocr.edms import EDMS, rh | ... | @@ -23,7 +23,20 @@ from apps.doc.ocr.edms import EDMS, rh |
| 23 | from apps.doc.named_enum import KeywordsType, FailureReason, WorkflowName, ProcessName, RequestTeam, RequestTrigger | 23 | from apps.doc.named_enum import KeywordsType, FailureReason, WorkflowName, ProcessName, RequestTeam, RequestTrigger |
| 24 | from apps.doc.exceptions import EDMSException, OCR1Exception, OCR2Exception, OCR4Exception | 24 | from apps.doc.exceptions import EDMSException, OCR1Exception, OCR2Exception, OCR4Exception |
| 25 | from apps.doc.ocr.wb import BSWorkbook | 25 | from apps.doc.ocr.wb import BSWorkbook |
| 26 | from apps.doc.models import DocStatus, HILDoc, AFCDoc, Keywords, HILOCRResult, AFCOCRResult, HILOCRReport, AFCOCRReport, DDARecords, IDBCRecords | 26 | from apps.doc.models import ( |
| 27 | DocStatus, | ||
| 28 | HILDoc, | ||
| 29 | AFCDoc, | ||
| 30 | Keywords, | ||
| 31 | HILOCRResult, | ||
| 32 | AFCOCRResult, | ||
| 33 | AFCSEOCRResult, | ||
| 34 | HILOCRReport, | ||
| 35 | HILSEOCRResult, | ||
| 36 | AFCOCRReport, | ||
| 37 | DDARecords, | ||
| 38 | IDBCRecords | ||
| 39 | ) | ||
| 27 | from celery_compare.tasks import compare | 40 | from celery_compare.tasks import compare |
| 28 | 41 | ||
| 29 | 42 | ||
| ... | @@ -967,15 +980,21 @@ class Command(BaseCommand, LoggerMixin): | ... | @@ -967,15 +980,21 @@ class Command(BaseCommand, LoggerMixin): |
| 967 | # TODO 识别结果存一张表,方便跑报表 | 980 | # TODO 识别结果存一张表,方便跑报表 |
| 968 | 981 | ||
| 969 | # CA比对 | 982 | # CA比对 |
| 970 | if doc.document_scheme == consts.DOC_SCHEME_LIST[0]: | 983 | if len(license_summary) > 0 and doc.document_scheme != consts.DOC_SCHEME_LIST[2]: |
| 971 | try: | 984 | try: |
| 985 | is_ca = True if doc.document_scheme == consts.DOC_SCHEME_LIST[0] else False | ||
| 972 | # 更新OCR累计识别结果表 | 986 | # 更新OCR累计识别结果表 |
| 973 | result_class = HILOCRResult if business_type == consts.HIL_PREFIX else AFCOCRResult | 987 | if business_type == consts.HIL_PREFIX: |
| 988 | result_class = HILOCRResult if is_ca else HILSEOCRResult | ||
| 989 | else: | ||
| 990 | result_class = AFCOCRResult if is_ca else AFCSEOCRResult | ||
| 974 | res_obj = result_class.objects.filter(application_id=doc.application_id).first() | 991 | res_obj = result_class.objects.filter(application_id=doc.application_id).first() |
| 975 | if res_obj is None: | 992 | if res_obj is None: |
| 976 | res_obj = result_class() | 993 | res_obj = result_class() |
| 977 | res_obj.application_id = doc.application_id | 994 | res_obj.application_id = doc.application_id |
| 978 | for classify, field in consts.RESULT_MAPPING.items(): | 995 | for classify, field in consts.RESULT_MAPPING.items(): |
| 996 | if not hasattr(res_obj, field): | ||
| 997 | continue | ||
| 979 | license_list = license_summary.get(classify) | 998 | license_list = license_summary.get(classify) |
| 980 | if not license_list: | 999 | if not license_list: |
| 981 | continue | 1000 | continue |
| ... | @@ -985,8 +1004,6 @@ class Command(BaseCommand, LoggerMixin): | ... | @@ -985,8 +1004,6 @@ class Command(BaseCommand, LoggerMixin): |
| 985 | elif classify == consts.RP_CLASSIFY and rp_merge: | 1004 | elif classify == consts.RP_CLASSIFY and rp_merge: |
| 986 | license_list[0].update(license_list[1]) | 1005 | license_list[0].update(license_list[1]) |
| 987 | license_list.pop(1) | 1006 | license_list.pop(1) |
| 988 | if not hasattr(res_obj, field): | ||
| 989 | continue | ||
| 990 | old_res_str = getattr(res_obj, field) | 1007 | old_res_str = getattr(res_obj, field) |
| 991 | if old_res_str is None: | 1008 | if old_res_str is None: |
| 992 | last_res_str = json.dumps(license_list) | 1009 | last_res_str = json.dumps(license_list) |
| ... | @@ -1006,8 +1023,8 @@ class Command(BaseCommand, LoggerMixin): | ... | @@ -1006,8 +1023,8 @@ class Command(BaseCommand, LoggerMixin): |
| 1006 | # 触发比对 | 1023 | # 触发比对 |
| 1007 | try: | 1024 | try: |
| 1008 | # pass | 1025 | # pass |
| 1009 | compare.apply_async((doc.application_id, business_type, None, res_obj.id), | 1026 | compare.apply_async((doc.application_id, business_type, None, res_obj.id, |
| 1010 | queue='queue_compare') | 1027 | is_ca), queue='queue_compare') |
| 1011 | except Exception as e: | 1028 | except Exception as e: |
| 1012 | self.online_log.error( | 1029 | self.online_log.error( |
| 1013 | '{0} [process error (comparison info send)] [task={1}] [error={2}]'.format( | 1030 | '{0} [process error (comparison info send)] [task={1}] [error={2}]'.format( | ... | ... |
| ... | @@ -268,6 +268,59 @@ class HILOCRResult(models.Model): | ... | @@ -268,6 +268,59 @@ class HILOCRResult(models.Model): |
| 268 | db_table = 'hil_ocr_result' | 268 | db_table = 'hil_ocr_result' |
| 269 | 269 | ||
| 270 | 270 | ||
| 271 | # OCR结果累计表 | ||
| 272 | class AFCSEOCRResult(models.Model): | ||
| 273 | id = models.AutoField(primary_key=True, verbose_name="id") # 主键 | ||
| 274 | application_id = models.CharField(max_length=64, verbose_name="申请id") # 索引 | ||
| 275 | |||
| 276 | bs_ocr = models.TextField(null=True, verbose_name="银行流水") | ||
| 277 | mvi_ocr = models.TextField(null=True, verbose_name="机动车销售统一发票") | ||
| 278 | ic_ocr = models.TextField(null=True, verbose_name="身份证") | ||
| 279 | rp_ocr = models.TextField(null=True, verbose_name="居住证") | ||
| 280 | bc_ocr = models.TextField(null=True, verbose_name="银行卡") | ||
| 281 | bl_ocr = models.TextField(null=True, verbose_name="营业执照") | ||
| 282 | uci_ocr = models.TextField(null=True, verbose_name="二手车发票") | ||
| 283 | eep_ocr = models.TextField(null=True, verbose_name="港澳台通行证") | ||
| 284 | dl_ocr = models.TextField(null=True, verbose_name="行驶证") | ||
| 285 | pp_ocr = models.TextField(null=True, verbose_name="护照") | ||
| 286 | mvc_ocr = models.TextField(null=True, verbose_name="机动车登记证") | ||
| 287 | vat_ocr = models.TextField(null=True, verbose_name="增值税发票") | ||
| 288 | |||
| 289 | update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间') | ||
| 290 | create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') | ||
| 291 | |||
| 292 | class Meta: | ||
| 293 | managed = False | ||
| 294 | db_table = 'afc_se_ocr_result' | ||
| 295 | situ_db_label = 'afc' | ||
| 296 | |||
| 297 | |||
| 298 | # OCR结果累计表 | ||
| 299 | class HILSEOCRResult(models.Model): | ||
| 300 | id = models.AutoField(primary_key=True, verbose_name="id") # 主键 | ||
| 301 | application_id = models.CharField(max_length=64, verbose_name="申请id") # 索引 | ||
| 302 | |||
| 303 | bs_ocr = models.TextField(null=True, verbose_name="银行流水") | ||
| 304 | mvi_ocr = models.TextField(null=True, verbose_name="机动车销售统一发票") | ||
| 305 | ic_ocr = models.TextField(null=True, verbose_name="身份证") | ||
| 306 | rp_ocr = models.TextField(null=True, verbose_name="居住证") | ||
| 307 | bc_ocr = models.TextField(null=True, verbose_name="银行卡") | ||
| 308 | bl_ocr = models.TextField(null=True, verbose_name="营业执照") | ||
| 309 | uci_ocr = models.TextField(null=True, verbose_name="二手车发票") | ||
| 310 | eep_ocr = models.TextField(null=True, verbose_name="港澳台通行证") | ||
| 311 | dl_ocr = models.TextField(null=True, verbose_name="行驶证") | ||
| 312 | pp_ocr = models.TextField(null=True, verbose_name="护照") | ||
| 313 | mvc_ocr = models.TextField(null=True, verbose_name="机动车登记证") | ||
| 314 | vat_ocr = models.TextField(null=True, verbose_name="增值税发票") | ||
| 315 | |||
| 316 | update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间') | ||
| 317 | create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') | ||
| 318 | |||
| 319 | class Meta: | ||
| 320 | managed = False | ||
| 321 | db_table = 'hil_se_ocr_result' | ||
| 322 | |||
| 323 | |||
| 271 | # OCR Report | 324 | # OCR Report |
| 272 | class HILOCRReport(models.Model): | 325 | class HILOCRReport(models.Model): |
| 273 | id = models.AutoField(primary_key=True, verbose_name="id") # 主键 | 326 | id = models.AutoField(primary_key=True, verbose_name="id") # 主键 | ... | ... |
| ... | @@ -474,7 +474,8 @@ class CompareView(GenericView): | ... | @@ -474,7 +474,8 @@ class CompareView(GenericView): |
| 474 | corporate_cus_info=corporate_cus_info, | 474 | corporate_cus_info=corporate_cus_info, |
| 475 | ) | 475 | ) |
| 476 | # 触发比对 | 476 | # 触发比对 |
| 477 | compare.apply_async((application_id, business_type, uniq_seq, None), queue='queue_compare') | 477 | compare.apply_async((application_id, business_type, uniq_seq, None, True), |
| 478 | queue='queue_compare') | ||
| 478 | return response.ok() | 479 | return response.ok() |
| 479 | 480 | ||
| 480 | post.openapi_doc = ''' | 481 | post.openapi_doc = ''' | ... | ... |
| ... | @@ -150,7 +150,7 @@ def usedcar_info_compare(info_dict, ocr_res_dict, ocr_field, compare_list, res_s | ... | @@ -150,7 +150,7 @@ def usedcar_info_compare(info_dict, ocr_res_dict, ocr_field, compare_list, res_s |
| 150 | 150 | ||
| 151 | 151 | ||
| 152 | @app.task | 152 | @app.task |
| 153 | def compare(application_id, application_entity, uniq_seq, ocr_res_id): | 153 | def compare(application_id, application_entity, uniq_seq, ocr_res_id, is_ca=True): |
| 154 | # POS: application_id, application_entity, uniq_seq, None | 154 | # POS: application_id, application_entity, uniq_seq, None |
| 155 | # OCR: application_id, business_type(application_entity), None, ocr_res_id | 155 | # OCR: application_id, business_type(application_entity), None, ocr_res_id |
| 156 | 156 | ... | ... |
src/common/tools/mssql_script6.py
0 → 100644
| 1 | import pyodbc | ||
| 2 | |||
| 3 | |||
| 4 | hil_sql = """ | ||
| 5 | create table hil_se_ocr_result | ||
| 6 | ( | ||
| 7 | id int identity primary key, | ||
| 8 | application_id nvarchar(64) not null, | ||
| 9 | bs_ocr nvarchar(max), | ||
| 10 | mvi_ocr nvarchar(max), | ||
| 11 | ic_ocr nvarchar(max), | ||
| 12 | rp_ocr nvarchar(max), | ||
| 13 | bc_ocr nvarchar(max), | ||
| 14 | bl_ocr nvarchar(max), | ||
| 15 | uci_ocr nvarchar(max), | ||
| 16 | eep_ocr nvarchar(max), | ||
| 17 | dl_ocr nvarchar(max), | ||
| 18 | pp_ocr nvarchar(max), | ||
| 19 | mvc_ocr nvarchar(max), | ||
| 20 | vat_ocr nvarchar(max), | ||
| 21 | update_time datetime not null, | ||
| 22 | create_time datetime not null | ||
| 23 | ); | ||
| 24 | create unique index hil_se_ocr_result_application_id_uindex | ||
| 25 | on hil_se_ocr_result (application_id); | ||
| 26 | """ | ||
| 27 | |||
| 28 | afc_sql = """ | ||
| 29 | create table afc_se_ocr_result | ||
| 30 | ( | ||
| 31 | id int identity primary key, | ||
| 32 | application_id nvarchar(64) not null, | ||
| 33 | bs_ocr nvarchar(max), | ||
| 34 | mvi_ocr nvarchar(max), | ||
| 35 | ic_ocr nvarchar(max), | ||
| 36 | rp_ocr nvarchar(max), | ||
| 37 | bc_ocr nvarchar(max), | ||
| 38 | bl_ocr nvarchar(max), | ||
| 39 | uci_ocr nvarchar(max), | ||
| 40 | eep_ocr nvarchar(max), | ||
| 41 | dl_ocr nvarchar(max), | ||
| 42 | pp_ocr nvarchar(max), | ||
| 43 | mvc_ocr nvarchar(max), | ||
| 44 | vat_ocr nvarchar(max), | ||
| 45 | update_time datetime not null, | ||
| 46 | create_time datetime not null | ||
| 47 | ); | ||
| 48 | create unique index afc_se_ocr_result_application_id_uindex | ||
| 49 | on afc_se_ocr_result (application_id); | ||
| 50 | """ | ||
| 51 | |||
| 52 | hil_cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};', autocommit=True) | ||
| 53 | hil_cursor = hil_cnxn.cursor() | ||
| 54 | hil_cursor.execute(hil_sql) | ||
| 55 | hil_cursor.close() | ||
| 56 | hil_cnxn.close() | ||
| 57 | |||
| 58 | afc_cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};', autocommit=True) | ||
| 59 | afc_cursor = afc_cnxn.cursor() | ||
| 60 | afc_cursor.execute(afc_sql) | ||
| 61 | afc_cursor.close() | ||
| 62 | afc_cnxn.close() |
-
Please register or sign in to post a comment