c7852512 by 周伟奇

update bs report

1 parent 9e45e68d
...@@ -23,7 +23,7 @@ from common.electronic_hil_contract.hil_contract_ocr import predict as hil_predi ...@@ -23,7 +23,7 @@ from common.electronic_hil_contract.hil_contract_ocr import predict as hil_predi
23 from apps.doc import consts 23 from apps.doc import consts
24 # from apps.doc.ocr.edms import EDMS, rh 24 # from apps.doc.ocr.edms import EDMS, rh
25 from apps.doc.ocr.ecm import ECM, rh 25 from apps.doc.ocr.ecm import ECM, rh
26 from apps.doc.named_enum import KeywordsType, FailureReason, WorkflowName, ProcessName, RequestTeam, RequestTrigger 26 from apps.doc.named_enum import KeywordsType, FailureReason, WorkflowName, ProcessName, RequestTeam, RequestTrigger, BSCheckResult
27 from apps.doc.exceptions import EDMSException, OCR1Exception, OCR2Exception, OCR4Exception 27 from apps.doc.exceptions import EDMSException, OCR1Exception, OCR2Exception, OCR4Exception
28 from apps.doc.ocr.wb import BSWorkbook 28 from apps.doc.ocr.wb import BSWorkbook
29 from apps.doc.models import ( 29 from apps.doc.models import (
...@@ -944,7 +944,7 @@ class Command(BaseCommand, LoggerMixin): ...@@ -944,7 +944,7 @@ class Command(BaseCommand, LoggerMixin):
944 'role': bs_info.get('role', ''), 944 'role': bs_info.get('role', ''),
945 'print_time': print_date, 945 'print_time': print_date,
946 'timedelta': bs_info.get('timedelta', ''), 946 'timedelta': bs_info.get('timedelta', ''),
947 'verify': bs_info.get('verify', True) 947 'verify': bs_info.get('verify_res_ebank', True)
948 } 948 }
949 ) 949 )
950 return res 950 return res
...@@ -1626,7 +1626,7 @@ class Command(BaseCommand, LoggerMixin): ...@@ -1626,7 +1626,7 @@ class Command(BaseCommand, LoggerMixin):
1626 # 'idcard': True or False, 1626 # 'idcard': True or False,
1627 # 'bs': None or normal or mobile, 1627 # 'bs': None or normal or mobile,
1628 # } 1628 # }
1629 report_list = [None, False, None, None] 1629 report_list = [None, False, None, None, None, None]
1630 do_dda = is_hil and doc.document_scheme == consts.DOC_SCHEME_LIST[1] 1630 do_dda = is_hil and doc.document_scheme == consts.DOC_SCHEME_LIST[1]
1631 except Exception as e: 1631 except Exception as e:
1632 self.online_log.error('{0} [process error (db filter)] [task={1}] [error={2}]'.format( 1632 self.online_log.error('{0} [process error (db filter)] [task={1}] [error={2}]'.format(
...@@ -1815,6 +1815,15 @@ class Command(BaseCommand, LoggerMixin): ...@@ -1815,6 +1815,15 @@ class Command(BaseCommand, LoggerMixin):
1815 else: 1815 else:
1816 report_list[2] = WorkflowName.NORMAL.value 1816 report_list[2] = WorkflowName.NORMAL.value
1817 1817
1818 bs_name_list = []
1819 for tmp_classify in bs_classify_set:
1820 try:
1821 bs_name = consts.CLASSIFY_LIST[tmp_classify][0]
1822 except Exception as e:
1823 bs_name = 'Unknown'
1824 bs_name_list.append(bs_name)
1825 report_list[4] = '、'.join(bs_name_list)
1826
1818 merged_bs_summary = self.rebuild_bs_summary(bs_summary, unknown_summary) 1827 merged_bs_summary = self.rebuild_bs_summary(bs_summary, unknown_summary)
1819 del unknown_summary 1828 del unknown_summary
1820 1829
...@@ -1901,6 +1910,40 @@ class Command(BaseCommand, LoggerMixin): ...@@ -1901,6 +1910,40 @@ class Command(BaseCommand, LoggerMixin):
1901 else: 1910 else:
1902 self.online_log.info('{0} [process complete] [task={1}]'.format(self.log_base, task_str)) 1911 self.online_log.info('{0} [process complete] [task={1}]'.format(self.log_base, task_str))
1903 os.remove(excel_path) 1912 os.remove(excel_path)
1913
1914 # report新增流水真伪
1915 try:
1916 check_false_classify = set()
1917 all_check_classify = set()
1918 if isinstance(doc.metadata, str):
1919 verify_field = 'verify_res_ebank'
1920 else:
1921 verify_field = 'verify_res_paper_bank'
1922 for bs_info in merged_bs_summary.values():
1923 all_check_classify.add(bs_info['classify'])
1924 if verify_field not in bs_info:
1925 report_list[5] = BSCheckResult.CHECK_FAILED.value
1926 break
1927 if not bs_info[verify_field]:
1928 check_false_classify.add(bs_info['classify'])
1929 else:
1930 # 电子
1931 if isinstance(doc.metadata, str):
1932 if len(check_false_classify) > 0:
1933 report_list[5] = BSCheckResult.CHECK_FALSE.value
1934 else:
1935 report_list[5] = BSCheckResult.CHECK_TRUE.value
1936 # 纸质
1937 else:
1938 if check_false_classify & consts.BS_VERIFY_CLASSIFY:
1939 report_list[5] = BSCheckResult.CHECK_FALSE.value
1940 elif all_check_classify & consts.BS_VERIFY_CLASSIFY:
1941 report_list[5] = BSCheckResult.CHECK_TRUE.value
1942 else:
1943 report_list[5] = BSCheckResult.NO_CHECK.value
1944 except Exception as e:
1945 report_list[5] = BSCheckResult.CHECK_FAILED.value
1946
1904 finally: 1947 finally:
1905 self.rebuild_contract(license_summary, contract_result_compare) 1948 self.rebuild_contract(license_summary, contract_result_compare)
1906 1949
...@@ -2222,6 +2265,9 @@ class Command(BaseCommand, LoggerMixin): ...@@ -2222,6 +2265,9 @@ class Command(BaseCommand, LoggerMixin):
2222 2265
2223 try: 2266 try:
2224 if report_list[2] is not None: 2267 if report_list[2] is not None:
2268 is_ebank = True if isinstance(doc.metadata, str) else False
2269 bank_name = report_list[4] if isinstance(report_list[4], str) else 'Unknown'
2270 bs_check_result = report_list[5] if isinstance(report_list[5], int) else BSCheckResult.CHECK_FAILED.value
2225 report_table.objects.create( 2271 report_table.objects.create(
2226 case_number=doc.application_id, 2272 case_number=doc.application_id,
2227 request_team=RequestTeam.get_value(doc.document_scheme, 0), 2273 request_team=RequestTeam.get_value(doc.document_scheme, 0),
...@@ -2231,6 +2277,9 @@ class Command(BaseCommand, LoggerMixin): ...@@ -2231,6 +2277,9 @@ class Command(BaseCommand, LoggerMixin):
2231 transaction_end=end_time, 2277 transaction_end=end_time,
2232 process_name=ProcessName.BS.value, 2278 process_name=ProcessName.BS.value,
2233 workflow_name=report_list[2], 2279 workflow_name=report_list[2],
2280 bank_name=bank_name,
2281 is_ebank=is_ebank,
2282 bs_check_result=bs_check_result,
2234 ) 2283 )
2235 except Exception as e: 2284 except Exception as e:
2236 self.online_log.error('{0} [process error (report db save)] [error={1}]'.format( 2285 self.online_log.error('{0} [process error (report db save)] [error={1}]'.format(
......
...@@ -455,12 +455,9 @@ class HILOCRReport(models.Model): ...@@ -455,12 +455,9 @@ class HILOCRReport(models.Model):
455 workflow_name = models.SmallIntegerField(null=True, verbose_name="工作流程") 455 workflow_name = models.SmallIntegerField(null=True, verbose_name="工作流程")
456 notes = models.CharField(null=True, max_length=2048, verbose_name="备注") 456 notes = models.CharField(null=True, max_length=2048, verbose_name="备注")
457 457
458 # 1. bank_name string eg. '农业银行-交易清单' 458 bank_name = models.CharField(null=True, max_length=2048, verbose_name="版式名称")
459 # 2. is_ebank boolean eg. 1 459 is_ebank = models.BooleanField(default=False, verbose_name="是否电子")
460 460 bs_check_result = models.SmallIntegerField(default=0, verbose_name="鉴伪结果") # 0 无鉴伪 1鉴伪pass 2鉴伪nopass 3鉴伪过程异常
461 # 1. is_bs_check boolean eg. 1
462 # 2. bs_check_result int eg. 2(电子-author)
463 #
464 461
465 class Meta: 462 class Meta:
466 managed = False 463 managed = False
...@@ -482,6 +479,10 @@ class AFCOCRReport(models.Model): ...@@ -482,6 +479,10 @@ class AFCOCRReport(models.Model):
482 workflow_name = models.SmallIntegerField(null=True, verbose_name="工作流程") 479 workflow_name = models.SmallIntegerField(null=True, verbose_name="工作流程")
483 notes = models.CharField(null=True, max_length=2048, verbose_name="备注") 480 notes = models.CharField(null=True, max_length=2048, verbose_name="备注")
484 481
482 bank_name = models.CharField(null=True, max_length=2048, verbose_name="版式名称")
483 is_ebank = models.BooleanField(default=False, verbose_name="是否电子")
484 bs_check_result = models.SmallIntegerField(default=0, verbose_name="鉴伪结果") # 0 无鉴伪 1鉴伪pass 2鉴伪nopass
485
485 class Meta: 486 class Meta:
486 managed = False 487 managed = False
487 db_table = 'afc_ocr_report' 488 db_table = 'afc_ocr_report'
......
...@@ -83,3 +83,10 @@ class RPAResult(NamedEnum): ...@@ -83,3 +83,10 @@ class RPAResult(NamedEnum):
83 ERROR1 = (2, 'business error') 83 ERROR1 = (2, 'business error')
84 ERROR2 = (3, 'system error') 84 ERROR2 = (3, 'system error')
85 NULL = (0, 'null') 85 NULL = (0, 'null')
86
87
88 class BSCheckResult(NamedEnum):
89 NO_CHECK = (0, 'NO_CHECK')
90 CHECK_TRUE = (1, 'CHECK_TRUE')
91 CHECK_FALSE = (2, 'CHECK_FALSE')
92 CHECK_FAILED = (3, 'CHECK_FAILED')
......
...@@ -394,8 +394,9 @@ class BSWorkbook(Workbook): ...@@ -394,8 +394,9 @@ class BSWorkbook(Workbook):
394 cell.fill = self.amount_fill 394 cell.fill = self.amount_fill
395 395
396 # verify_res = False if len(metadata_highlight_row) > 0 or len(verify_highlight_row) > 0 else True 396 # verify_res = False if len(metadata_highlight_row) > 0 or len(verify_highlight_row) > 0 else True
397 verify_res = False if len(metadata_highlight_row) > 0 else True 397 verify_res_ebank = False if len(metadata_highlight_row) > 0 else True
398 return ms, timedelta, verify_res 398 verify_res_paper_bank = False if len(verify_highlight_row) > 0 else True
399 return ms, timedelta, verify_res_ebank, verify_res_paper_bank
399 400
400 @staticmethod 401 @staticmethod
401 def amount_format(amount_str): 402 def amount_format(amount_str):
...@@ -726,7 +727,7 @@ class BSWorkbook(Workbook): ...@@ -726,7 +727,7 @@ class BSWorkbook(Workbook):
726 # 2.元信息提取表 727 # 2.元信息提取表
727 confidence = self.get_confidence(max_find_count, classify) 728 confidence = self.get_confidence(max_find_count, classify)
728 is_verify_classify = classify in consts.BS_VERIFY_CLASSIFY 729 is_verify_classify = classify in consts.BS_VERIFY_CLASSIFY
729 ms, timedelta, verify_res = self.build_meta_sheet(role_name, 730 ms, timedelta, verify_res_ebank, verify_res_paper_bank = self.build_meta_sheet(role_name,
730 new_card, 731 new_card,
731 confidence, 732 confidence,
732 summary.get('code'), 733 summary.get('code'),
...@@ -740,7 +741,8 @@ class BSWorkbook(Workbook): ...@@ -740,7 +741,8 @@ class BSWorkbook(Workbook):
740 741
741 summary['timedelta'] = timedelta 742 summary['timedelta'] = timedelta
742 summary['end_date'] = end_date 743 summary['end_date'] = end_date
743 summary['verify'] = verify_res 744 summary['verify_res_ebank'] = verify_res_ebank
745 summary['verify_res_paper_bank'] = verify_res_paper_bank
744 746
745 # 3.创建月份表、提取/高亮关键行 747 # 3.创建月份表、提取/高亮关键行
746 # 倒序处理 748 # 倒序处理
......
...@@ -10,11 +10,17 @@ hil_sql = """ ...@@ -10,11 +10,17 @@ hil_sql = """
10 duration smallint, 10 duration smallint,
11 create_time datetime not null 11 create_time datetime not null
12 ); 12 );
13
14 ALTER TABLE hil_ocr_report ADD bank_name nvarchar(2048);
15 ALTER TABLE hil_ocr_report ADD is_ebank bit default 0 not null;
16 ALTER TABLE hil_ocr_report ADD bs_check_result tinyint default 0 not null;
13 """ 17 """
14 18
15 # afc_sql = """ 19 afc_sql = """
16 # 20 ALTER TABLE afc_ocr_report ADD bank_name nvarchar(2048);
17 # """ 21 ALTER TABLE afc_ocr_report ADD is_ebank bit default 0 not null;
22 ALTER TABLE afc_ocr_report ADD bs_check_result tinyint default 0 not null;
23 """
18 24
19 hil_cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};', autocommit=True) 25 hil_cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};', autocommit=True)
20 26
...@@ -24,10 +30,10 @@ hil_cursor.execute(hil_sql) ...@@ -24,10 +30,10 @@ hil_cursor.execute(hil_sql)
24 hil_cursor.close() 30 hil_cursor.close()
25 hil_cnxn.close() 31 hil_cnxn.close()
26 32
27 # afc_cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};', autocommit=True) 33 afc_cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};', autocommit=True)
28 # 34
29 # afc_cursor = afc_cnxn.cursor() 35 afc_cursor = afc_cnxn.cursor()
30 # afc_cursor.execute(afc_sql) 36 afc_cursor.execute(afc_sql)
31 # 37
32 # afc_cursor.close() 38 afc_cursor.close()
33 # afc_cnxn.close() 39 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!