更新财务报表的三个报表的处理,dict为空,则excel中sheet不创建
Showing
3 changed files
with
37 additions
and
2 deletions
... | @@ -98,6 +98,7 @@ RES_SHEET_HEADER = ('页码', '图片序号', '检测图片序号', '结果') | ... | @@ -98,6 +98,7 @@ RES_SHEET_HEADER = ('页码', '图片序号', '检测图片序号', '结果') |
98 | RES_SUCCESS = '识别成功' | 98 | RES_SUCCESS = '识别成功' |
99 | RES_SUCCESS_OTHER = '识别成功(其他类)' | 99 | RES_SUCCESS_OTHER = '识别成功(其他类)' |
100 | RES_SUCCESS_EMPTY = '识别成功(空数据)' | 100 | RES_SUCCESS_EMPTY = '识别成功(空数据)' |
101 | RES_SUCCESS_FINANCIAL_STATEMENT = '识别成功(财务报表类)' | ||
101 | RES_FAILED = '识别失败' | 102 | RES_FAILED = '识别失败' |
102 | RES_FAILED_1 = '识别失败(阶段1)' | 103 | RES_FAILED_1 = '识别失败(阶段1)' |
103 | RES_FAILED_2 = '识别失败(阶段2)' | 104 | RES_FAILED_2 = '识别失败(阶段2)' | ... | ... |
... | @@ -1725,7 +1725,7 @@ class Command(BaseCommand, LoggerMixin): | ... | @@ -1725,7 +1725,7 @@ class Command(BaseCommand, LoggerMixin): |
1725 | contract_result = {} | 1725 | contract_result = {} |
1726 | contract_result_compare = {} | 1726 | contract_result_compare = {} |
1727 | # 添加财报三个报表的处理 | 1727 | # 添加财报三个报表的处理 |
1728 | financial_statement_dict = {"code": {}, "stamp": {}} | 1728 | financial_statement_dict = {} |
1729 | res_list = [] | 1729 | res_list = [] |
1730 | interest_keyword = Keywords.objects.filter( | 1730 | interest_keyword = Keywords.objects.filter( |
1731 | type=KeywordsType.INTEREST.value, on_off=True).values_list('keyword', flat=True) | 1731 | type=KeywordsType.INTEREST.value, on_off=True).values_list('keyword', flat=True) |
... | @@ -1756,6 +1756,14 @@ class Command(BaseCommand, LoggerMixin): | ... | @@ -1756,6 +1756,14 @@ class Command(BaseCommand, LoggerMixin): |
1756 | self.log_base, img_path)) | 1756 | self.log_base, img_path)) |
1757 | continue | 1757 | continue |
1758 | elif classify in consts.FINANCIAL_STATEMENT_CLASSIFY_LIST: | 1758 | elif classify in consts.FINANCIAL_STATEMENT_CLASSIFY_LIST: |
1759 | # 添加到 res_list 中 | ||
1760 | res_list.append((pno, ino, part_idx, consts.RES_SUCCESS_FINANCIAL_STATEMENT)) | ||
1761 | # 只要分类为财报三个报表的,就在 financial_statement_dict 中添加对应的 code 和 stamp 两个dict | ||
1762 | if "code" not in financial_statement_dict: | ||
1763 | financial_statement_dict["code"] = {} | ||
1764 | if "stamp" not in financial_statement_dict: | ||
1765 | financial_statement_dict["stamp"] = {} | ||
1766 | |||
1759 | financial_statement_table_name = None | 1767 | financial_statement_table_name = None |
1760 | if classify == 97: | 1768 | if classify == 97: |
1761 | financial_statement_table_name = "balance_sheet" | 1769 | financial_statement_table_name = "balance_sheet" |
... | @@ -2057,7 +2065,9 @@ class Command(BaseCommand, LoggerMixin): | ... | @@ -2057,7 +2065,9 @@ class Command(BaseCommand, LoggerMixin): |
2057 | license_summary[consts.BS_CLASSIFY] = bs_rebuild | 2065 | license_summary[consts.BS_CLASSIFY] = bs_rebuild |
2058 | 2066 | ||
2059 | # 比对 | 2067 | # 比对 |
2060 | if len(license_summary) > 0 and doc.document_scheme != consts.DOC_SCHEME_LIST[2]: | 2068 | if len(license_summary) > 0: |
2069 | if doc.document_scheme != consts.DOC_SCHEME_LIST[2]: | ||
2070 | # if len(license_summary) > 0 and doc.document_scheme != consts.DOC_SCHEME_LIST[2]: | ||
2061 | try: | 2071 | try: |
2062 | is_ca = True if doc.document_scheme == consts.DOC_SCHEME_LIST[0] else False | 2072 | is_ca = True if doc.document_scheme == consts.DOC_SCHEME_LIST[0] else False |
2063 | # 更新OCR累计识别结果表 | 2073 | # 更新OCR累计识别结果表 |
... | @@ -2097,6 +2107,22 @@ class Command(BaseCommand, LoggerMixin): | ... | @@ -2097,6 +2107,22 @@ class Command(BaseCommand, LoggerMixin): |
2097 | else: | 2107 | else: |
2098 | self.online_log.info('{0} [comparison info send success] [task={1}] ' | 2108 | self.online_log.info('{0} [comparison info send success] [task={1}] ' |
2099 | '[res_id={2}]'.format(self.log_base, task_str, res_obj.id)) | 2109 | '[res_id={2}]'.format(self.log_base, task_str, res_obj.id)) |
2110 | else: | ||
2111 | # license_summary 为空 | ||
2112 | self.online_log.info('{0} [task={1}] [no license_summary]'.format(self.log_base, task_str)) | ||
2113 | try: | ||
2114 | is_ca = True if doc.document_scheme == consts.DOC_SCHEME_LIST[0] else False | ||
2115 | # 更新OCR累计识别结果表 | ||
2116 | if business_type == consts.HIL_PREFIX: | ||
2117 | result_class = HILOCRResult if is_ca else HILSEOCRResult | ||
2118 | res_obj = atomicSaveDBHIL(self,result_class,doc,license_summary,ic_merge,rp_merge, task_str, financial_statement_dict) | ||
2119 | else: | ||
2120 | result_class = AFCOCRResult if is_ca else AFCSEOCRResult | ||
2121 | res_obj = atomicSaveDBAFC(self,result_class,doc,license_summary,ic_merge,rp_merge, task_str, financial_statement_dict) | ||
2122 | except Exception as e: | ||
2123 | self.online_log.error( | ||
2124 | '{0} [process error (ocr result save)] [task={1}] [error={2}]'.format( | ||
2125 | self.log_base, task_str, traceback.format_exc())) | ||
2100 | 2126 | ||
2101 | # DDA处理 | 2127 | # DDA处理 |
2102 | if do_dda: | 2128 | if do_dda: |
... | @@ -2451,6 +2477,8 @@ def atomicSaveDBAFC(self,result_class,doc,license_summary,ic_merge,rp_merge,task | ... | @@ -2451,6 +2477,8 @@ def atomicSaveDBAFC(self,result_class,doc,license_summary,ic_merge,rp_merge,task |
2451 | res_obj = result_class() | 2477 | res_obj = result_class() |
2452 | res_obj.application_id = doc.application_id | 2478 | res_obj.application_id = doc.application_id |
2453 | self.online_log.info('{0} [res_obj is None application_id={1} doc_id={2}]'.format(self.log_base, doc.application_id,doc.id)) | 2479 | self.online_log.info('{0} [res_obj is None application_id={1} doc_id={2}]'.format(self.log_base, doc.application_id,doc.id)) |
2480 | if res_obj is not None: | ||
2481 | if financial_statement_dict: | ||
2454 | res_obj.fs_ocr = json.dumps([financial_statement_dict]) | 2482 | res_obj.fs_ocr = json.dumps([financial_statement_dict]) |
2455 | for classify, field in consts.RESULT_MAPPING.items(): | 2483 | for classify, field in consts.RESULT_MAPPING.items(): |
2456 | if not hasattr(res_obj, field): | 2484 | if not hasattr(res_obj, field): |
... | @@ -2485,6 +2513,8 @@ def atomicSaveDBHIL(self,result_class,doc,license_summary,ic_merge,rp_merge, tas | ... | @@ -2485,6 +2513,8 @@ def atomicSaveDBHIL(self,result_class,doc,license_summary,ic_merge,rp_merge, tas |
2485 | res_obj = result_class() | 2513 | res_obj = result_class() |
2486 | res_obj.application_id = doc.application_id | 2514 | res_obj.application_id = doc.application_id |
2487 | self.online_log.info('{0} [res_obj is None application_id={1} doc_id={2}]'.format(self.log_base, doc.application_id,doc.id)) | 2515 | self.online_log.info('{0} [res_obj is None application_id={1} doc_id={2}]'.format(self.log_base, doc.application_id,doc.id)) |
2516 | if res_obj is not None: | ||
2517 | if financial_statement_dict: | ||
2488 | res_obj.fs_ocr = json.dumps([financial_statement_dict]) | 2518 | res_obj.fs_ocr = json.dumps([financial_statement_dict]) |
2489 | for classify, field in consts.RESULT_MAPPING.items(): | 2519 | for classify, field in consts.RESULT_MAPPING.items(): |
2490 | if not hasattr(res_obj, field): | 2520 | if not hasattr(res_obj, field): | ... | ... |
... | @@ -829,6 +829,10 @@ class BSWorkbook(Workbook): | ... | @@ -829,6 +829,10 @@ class BSWorkbook(Workbook): |
829 | 829 | ||
830 | 830 | ||
831 | def financial_rebuild(self, financial_statement_dict): | 831 | def financial_rebuild(self, financial_statement_dict): |
832 | # 如果 financial_statement_dict 为空,则不创建表 | ||
833 | if not financial_statement_dict: | ||
834 | return | ||
835 | # 如果 financial_statement_dict 不为空,则创建表 | ||
832 | ws = self.create_sheet(consts.FINANCIAL_SHEET_NAME) | 836 | ws = self.create_sheet(consts.FINANCIAL_SHEET_NAME) |
833 | for fin_key, fin_value in financial_statement_dict.items(): | 837 | for fin_key, fin_value in financial_statement_dict.items(): |
834 | table_str = "识别码" | 838 | table_str = "识别码" | ... | ... |
-
Please register or sign in to post a comment