add contract
Showing
3 changed files
with
55 additions
and
7 deletions
| ... | @@ -208,7 +208,43 @@ class Command(BaseCommand, LoggerMixin): | ... | @@ -208,7 +208,43 @@ class Command(BaseCommand, LoggerMixin): |
| 208 | res_list.append((pno, ino, part_idx, consts.RES_SUCCESS_EMPTY)) | 208 | res_list.append((pno, ino, part_idx, consts.RES_SUCCESS_EMPTY)) |
| 209 | 209 | ||
| 210 | def contract_process(self, ocr_data, contract_result, res_list, pno, ino, part_idx, img_path): | 210 | def contract_process(self, ocr_data, contract_result, res_list, pno, ino, part_idx, img_path): |
| 211 | pass | 211 | contract_dict = ocr_data.get('data') |
| 212 | if not contract_dict or 'page_num' not in contract_dict or 'page_info' not in contract_dict: | ||
| 213 | res_list.append((pno, ino, part_idx, consts.RES_SUCCESS_EMPTY)) | ||
| 214 | return | ||
| 215 | res_list.append((pno, ino, part_idx, consts.RES_SUCCESS)) | ||
| 216 | page_num = contract_dict.get('page_num') | ||
| 217 | rebuild_page_info = [] | ||
| 218 | text_key = 'words' | ||
| 219 | for key, value in contract_dict.get('page_info', {}).items(): | ||
| 220 | if value is None: | ||
| 221 | rebuild_page_info.append((key, )) | ||
| 222 | elif text_key in value: | ||
| 223 | if value[text_key] is None: | ||
| 224 | rebuild_page_info.append((key,)) | ||
| 225 | elif isinstance(value[text_key], str): | ||
| 226 | rebuild_page_info.append((key, value[text_key])) | ||
| 227 | elif isinstance(value[text_key], list): | ||
| 228 | rebuild_page_info.append((key,)) | ||
| 229 | for row_list in value[text_key]: | ||
| 230 | rebuild_page_info.append(row_list) | ||
| 231 | else: | ||
| 232 | rebuild_page_info.append((key,)) | ||
| 233 | for sub_key, sub_value in value.items(): | ||
| 234 | if sub_value is None: | ||
| 235 | rebuild_page_info.append((sub_key,)) | ||
| 236 | elif text_key in sub_value: | ||
| 237 | if sub_value[text_key] is None: | ||
| 238 | rebuild_page_info.append((sub_key,)) | ||
| 239 | elif isinstance(sub_value[text_key], str): | ||
| 240 | rebuild_page_info.append((sub_key, sub_value[text_key])) | ||
| 241 | elif isinstance(sub_value[text_key], list): | ||
| 242 | rebuild_page_info.append((sub_key,)) | ||
| 243 | for row_list in sub_value[text_key]: | ||
| 244 | rebuild_page_info.append(row_list) | ||
| 245 | |||
| 246 | contract_result.setdefault(page_num, []).append(rebuild_page_info) | ||
| 247 | |||
| 212 | 248 | ||
| 213 | def license1_process(self, ocr_data, license_summary, classify, res_list, pno, ino, part_idx, img_path, do_dda, dda_id_bc_mapping): | 249 | def license1_process(self, ocr_data, license_summary, classify, res_list, pno, ino, part_idx, img_path, do_dda, dda_id_bc_mapping): |
| 214 | # 类别:'0'身份证, '1'居住证 | 250 | # 类别:'0'身份证, '1'居住证 |
| ... | @@ -943,9 +979,9 @@ class Command(BaseCommand, LoggerMixin): | ... | @@ -943,9 +979,9 @@ class Command(BaseCommand, LoggerMixin): |
| 943 | 979 | ||
| 944 | # self.bs_log.info('[task={0}] [bs_summary={1}]'.format(task_str, merged_bs_summary)) | 980 | # self.bs_log.info('[task={0}] [bs_summary={1}]'.format(task_str, merged_bs_summary)) |
| 945 | 981 | ||
| 946 | self.online_log.info('{0} [task={1}] [merged_bs_summary={2}] [license_summary={3}] ' | 982 | self.online_log.info('{0} [task={1}] [merged_bs_summary={2}] [license_summary={3}] [contract={4}] ' |
| 947 | '[res_list={4}]'.format(self.log_base, task_str, merged_bs_summary, | 983 | '[res_list={5}]'.format(self.log_base, task_str, merged_bs_summary, |
| 948 | license_summary, res_list)) | 984 | contract_result, license_summary, res_list)) |
| 949 | 985 | ||
| 950 | except Exception as e: | 986 | except Exception as e: |
| 951 | 987 | ||
| ... | @@ -966,7 +1002,7 @@ class Command(BaseCommand, LoggerMixin): | ... | @@ -966,7 +1002,7 @@ class Command(BaseCommand, LoggerMixin): |
| 966 | # 重构Excel文件 | 1002 | # 重构Excel文件 |
| 967 | # src_excel_path = os.path.join(doc_data_path, 'src.xlsx') | 1003 | # src_excel_path = os.path.join(doc_data_path, 'src.xlsx') |
| 968 | # wb.save(src_excel_path) | 1004 | # wb.save(src_excel_path) |
| 969 | count_list = wb.rebuild(merged_bs_summary, license_summary, res_list, doc.document_scheme) | 1005 | count_list = wb.rebuild(merged_bs_summary, license_summary, res_list, doc.document_scheme, contract_result) |
| 970 | wb.save(excel_path) | 1006 | wb.save(excel_path) |
| 971 | 1007 | ||
| 972 | except Exception as e: | 1008 | except Exception as e: | ... | ... |
| ... | @@ -702,6 +702,17 @@ class BSWorkbook(Workbook): | ... | @@ -702,6 +702,17 @@ class BSWorkbook(Workbook): |
| 702 | if field_str is not None: | 702 | if field_str is not None: |
| 703 | count_list.append((field_str, count)) | 703 | count_list.append((field_str, count)) |
| 704 | 704 | ||
| 705 | def contract_rebuild(self, contract_result): | ||
| 706 | if len(contract_result) == 0: | ||
| 707 | return | ||
| 708 | ws = self.create_sheet(consts.CONTRACT_SHEET_NAME) | ||
| 709 | for page_num, info_list in contract_result: | ||
| 710 | ws.append('page {0}'.format(page_num)) | ||
| 711 | for info in info_list: | ||
| 712 | for row in info: | ||
| 713 | ws.append(row) | ||
| 714 | ws.append((None, )) | ||
| 715 | |||
| 705 | @staticmethod | 716 | @staticmethod |
| 706 | def remove_yuan(amount_key_set, key, src_str): | 717 | def remove_yuan(amount_key_set, key, src_str): |
| 707 | if key in amount_key_set and isinstance(src_str, str): | 718 | if key in amount_key_set and isinstance(src_str, str): |
| ... | @@ -801,12 +812,13 @@ class BSWorkbook(Workbook): | ... | @@ -801,12 +812,13 @@ class BSWorkbook(Workbook): |
| 801 | if len(self.sheetnames) > 1: | 812 | if len(self.sheetnames) > 1: |
| 802 | self.remove(self.get_sheet_by_name('Sheet')) | 813 | self.remove(self.get_sheet_by_name('Sheet')) |
| 803 | 814 | ||
| 804 | def rebuild(self, bs_summary, license_summary, res_list, document_scheme): | 815 | def rebuild(self, bs_summary, license_summary, res_list, document_scheme, contract_result): |
| 805 | res_count_tuple = self.res_sheet(res_list) | 816 | res_count_tuple = self.res_sheet(res_list) |
| 806 | 817 | ||
| 807 | count_list = [(consts.MODEL_FIELD_BS, len(bs_summary))] | 818 | count_list = [(consts.MODEL_FIELD_BS, len(bs_summary))] |
| 808 | if document_scheme == consts.DOC_SCHEME_LIST[1]: | 819 | if document_scheme == consts.DOC_SCHEME_LIST[1]: |
| 809 | self.license_rebuild(license_summary, document_scheme, count_list) | 820 | self.license_rebuild(license_summary, document_scheme, count_list) |
| 821 | self.contract_rebuild(contract_result) | ||
| 810 | self.bs_rebuild(bs_summary, res_count_tuple) | 822 | self.bs_rebuild(bs_summary, res_count_tuple) |
| 811 | else: | 823 | else: |
| 812 | self.bs_rebuild(bs_summary, res_count_tuple) | 824 | self.bs_rebuild(bs_summary, res_count_tuple) | ... | ... |
-
Please register or sign in to post a comment