Merge branch 'feature/bs_excel' into feature/0611
Showing
4 changed files
with
90 additions
and
32 deletions
... | @@ -99,6 +99,7 @@ RES_FAILED = '识别失败' | ... | @@ -99,6 +99,7 @@ RES_FAILED = '识别失败' |
99 | RES_FAILED_1 = '识别失败(阶段1)' | 99 | RES_FAILED_1 = '识别失败(阶段1)' |
100 | RES_FAILED_2 = '识别失败(阶段2)' | 100 | RES_FAILED_2 = '识别失败(阶段2)' |
101 | RES_FAILED_3 = '识别失败(阶段1数据格式错误)' | 101 | RES_FAILED_3 = '识别失败(阶段1数据格式错误)' |
102 | RES_FAILED_SET = {RES_FAILED, RES_FAILED_1, RES_FAILED_2, RES_FAILED_3} | ||
102 | 103 | ||
103 | CARD_RATIO = 0.9 | 104 | CARD_RATIO = 0.9 |
104 | UNKNOWN_CARD = '未知卡号' | 105 | UNKNOWN_CARD = '未知卡号' | ... | ... |
... | @@ -768,7 +768,9 @@ class Command(BaseCommand, LoggerMixin): | ... | @@ -768,7 +768,9 @@ class Command(BaseCommand, LoggerMixin): |
768 | type=KeywordsType.LOAN.value, on_off=True).values_list('keyword', flat=True) | 768 | type=KeywordsType.LOAN.value, on_off=True).values_list('keyword', flat=True) |
769 | wechat_keyword = Keywords.objects.filter( | 769 | wechat_keyword = Keywords.objects.filter( |
770 | type=KeywordsType.ALI_WECHART.value, on_off=True).values_list('keyword', flat=True) | 770 | type=KeywordsType.ALI_WECHART.value, on_off=True).values_list('keyword', flat=True) |
771 | wb = BSWorkbook(interest_keyword, salary_keyword, loan_keyword, wechat_keyword) | 771 | repayments_keyword = Keywords.objects.filter( |
772 | type=KeywordsType.REPAYMENTS.value, on_off=True).values_list('keyword', flat=True) | ||
773 | wb = BSWorkbook(interest_keyword, salary_keyword, loan_keyword, wechat_keyword, repayments_keyword) | ||
772 | for img_path, res in ocr_1_res.items(): | 774 | for img_path, res in ocr_1_res.items(): |
773 | pno, ino = self.parse_img_path(img_path) | 775 | pno, ino = self.parse_img_path(img_path) |
774 | part_idx = 1 | 776 | part_idx = 1 | ... | ... |
... | @@ -19,6 +19,7 @@ class KeywordsType(NamedEnum): | ... | @@ -19,6 +19,7 @@ class KeywordsType(NamedEnum): |
19 | SALARY = (1, '薪资') | 19 | SALARY = (1, '薪资') |
20 | LOAN = (2, '贷款') | 20 | LOAN = (2, '贷款') |
21 | ALI_WECHART = (3, '微信/支付宝') | 21 | ALI_WECHART = (3, '微信/支付宝') |
22 | REPAYMENTS = (4, '还款') | ||
22 | 23 | ||
23 | 24 | ||
24 | class RequestTeam(NamedEnum): | 25 | class RequestTeam(NamedEnum): | ... | ... |
... | @@ -7,24 +7,27 @@ from pandas._libs import tslib | ... | @@ -7,24 +7,27 @@ from pandas._libs import tslib |
7 | from pandas._libs.tslibs.nattype import NaTType | 7 | from pandas._libs.tslibs.nattype import NaTType |
8 | from pandas.core.indexes.datetimes import DatetimeIndex | 8 | from pandas.core.indexes.datetimes import DatetimeIndex |
9 | from openpyxl import Workbook | 9 | from openpyxl import Workbook |
10 | from openpyxl.styles import Border, Side, PatternFill, numbers | 10 | from openpyxl.styles import PatternFill, numbers |
11 | from openpyxl.utils import get_column_letter | 11 | from openpyxl.utils import get_column_letter |
12 | from apps.doc import consts | 12 | from apps.doc import consts |
13 | 13 | ||
14 | 14 | ||
15 | class BSWorkbook(Workbook): | 15 | class BSWorkbook(Workbook): |
16 | 16 | ||
17 | def __init__(self, interest_keyword, salary_keyword, loan_keyword, wechat_keyword, *args, **kwargs): | 17 | def __init__(self, interest_keyword, salary_keyword, loan_keyword, wechat_keyword, repayments_keyword, *args, **kwargs): |
18 | super().__init__(*args, **kwargs) | 18 | super().__init__(*args, **kwargs) |
19 | locale.setlocale(locale.LC_NUMERIC, 'en_US.UTF-8') | 19 | locale.setlocale(locale.LC_NUMERIC, 'en_US.UTF-8') |
20 | self.meta_sheet_title = '关键信息提取和展示' | 20 | self.meta_sheet_title = 'Key info' |
21 | self.blank_row = (None,) | 21 | self.blank_row = (None,) |
22 | self.code_header = ('页数', '电子回单验证码') | 22 | self.code_header = ('页数', '电子回单验证码') |
23 | self.date_header = ('打印时间', '起始日期', '终止日期', '流水区间结果') | 23 | self.date_header = ('打印时间', '起始日期', '终止日期', '流水区间结果') |
24 | self.keyword_header = ('关键词', '记账日期', '金额') | 24 | self.interest_keyword_header = ('结息关键词', '记账日期', '金额') |
25 | self.salary_keyword_header = ('收入关键词', '记账日期', '金额') | ||
26 | self.repayments_keyword_header = ('还款关键词', '记账日期', '金额') | ||
25 | self.interest_keyword = self.replace_newline(interest_keyword) | 27 | self.interest_keyword = self.replace_newline(interest_keyword) |
26 | self.salary_keyword = self.replace_newline(salary_keyword) | 28 | self.salary_keyword = self.replace_newline(salary_keyword) |
27 | self.loan_keyword = self.replace_newline(loan_keyword) | 29 | self.loan_keyword = self.replace_newline(loan_keyword) |
30 | self.repayments_keyword = self.replace_newline(repayments_keyword) | ||
28 | self.wechat_keyword = wechat_keyword | 31 | self.wechat_keyword = wechat_keyword |
29 | self.proof_res = ('对', '错') | 32 | self.proof_res = ('对', '错') |
30 | self.loan_fill = PatternFill("solid", fgColor="00FFCC00") | 33 | self.loan_fill = PatternFill("solid", fgColor="00FFCC00") |
... | @@ -45,7 +48,7 @@ class BSWorkbook(Workbook): | ... | @@ -45,7 +48,7 @@ class BSWorkbook(Workbook): |
45 | if not isinstance(card, str): | 48 | if not isinstance(card, str): |
46 | return consts.ERROR_CARD | 49 | return consts.ERROR_CARD |
47 | try: | 50 | try: |
48 | new_card = card.translate(consts.SHEET_TITLE_TRANS).strip()[-6:] | 51 | new_card = card.translate(consts.SHEET_TITLE_TRANS).strip()[-4:] |
49 | if len(new_card) == 0: | 52 | if len(new_card) == 0: |
50 | new_card = consts.ERROR_CARD | 53 | new_card = consts.ERROR_CARD |
51 | except Exception as e: | 54 | except Exception as e: |
... | @@ -307,13 +310,15 @@ class BSWorkbook(Workbook): | ... | @@ -307,13 +310,15 @@ class BSWorkbook(Workbook): |
307 | month_mapping.setdefault(item, []).append( | 310 | month_mapping.setdefault(item, []).append( |
308 | (ws.title, idx_list[i] + min_row, idx_list[i + 1] + min_row - 1, day_mean)) | 311 | (ws.title, idx_list[i] + min_row, idx_list[i + 1] + min_row - 1, day_mean)) |
309 | 312 | ||
310 | def build_metadata_rows(self, confidence, code, print_time, start_date, end_date): | 313 | def build_metadata_rows(self, confidence, code, print_time, start_date, end_date, res_count_tuple): |
311 | if start_date is None or end_date is None: | 314 | if start_date is None or end_date is None: |
312 | timedelta = None | 315 | timedelta = None |
313 | else: | 316 | else: |
314 | timedelta = (end_date - start_date).days | 317 | timedelta = (end_date - start_date).days |
315 | metadata_rows = [ | 318 | metadata_rows = [ |
316 | ('流水识别置信度', confidence), | 319 | ('流水识别置信度', confidence), |
320 | ('图片总数', res_count_tuple[0]), | ||
321 | ('识别成功', res_count_tuple[1]), | ||
317 | self.blank_row, | 322 | self.blank_row, |
318 | self.code_header, | 323 | self.code_header, |
319 | ] | 324 | ] |
... | @@ -323,13 +328,15 @@ class BSWorkbook(Workbook): | ... | @@ -323,13 +328,15 @@ class BSWorkbook(Workbook): |
323 | self.date_header, | 328 | self.date_header, |
324 | (print_time, start_date, end_date, timedelta), | 329 | (print_time, start_date, end_date, timedelta), |
325 | self.blank_row, | 330 | self.blank_row, |
326 | self.keyword_header] | 331 | self.interest_keyword_header] |
327 | ) | 332 | ) |
328 | return metadata_rows | 333 | return metadata_rows |
329 | 334 | ||
330 | def build_meta_sheet(self, card, confidence, code, print_time, start_date, end_date): | 335 | def build_meta_sheet(self, role_name, card, confidence, code, print_time, start_date, end_date, res_count_tuple): |
331 | metadata_rows = self.build_metadata_rows(confidence, code, print_time, start_date, end_date) | 336 | metadata_rows = self.build_metadata_rows(confidence, code, print_time, start_date, end_date, res_count_tuple) |
332 | ms = self.create_sheet('{0}({1})'.format(self.meta_sheet_title, card)) | 337 | if not isinstance(role_name, str): |
338 | role_name = consts.UNKNOWN_ROLE | ||
339 | ms = self.create_sheet('{0}{1}({2})'.format(self.meta_sheet_title, role_name, card)) | ||
333 | for row in metadata_rows: | 340 | for row in metadata_rows: |
334 | ms.append(row) | 341 | ms.append(row) |
335 | return ms | 342 | return ms |
... | @@ -398,7 +405,7 @@ class BSWorkbook(Workbook): | ... | @@ -398,7 +405,7 @@ class BSWorkbook(Workbook): |
398 | row_value[1] = '\n'.join(append_list) | 405 | row_value[1] = '\n'.join(append_list) |
399 | return row_value | 406 | return row_value |
400 | 407 | ||
401 | def build_month_sheet(self, ms, card, month_mapping, is_reverse, statistics_header_info, max_column, classify): | 408 | def build_month_sheet(self, ms, role_name, card, month_mapping, is_reverse, statistics_header_info, max_column, classify): |
402 | summary_cell_idx = statistics_header_info.get(consts.SUMMARY_KEY) | 409 | summary_cell_idx = statistics_header_info.get(consts.SUMMARY_KEY) |
403 | date_cell_idx = statistics_header_info.get(consts.DATE_KEY) | 410 | date_cell_idx = statistics_header_info.get(consts.DATE_KEY) |
404 | amount_cell_idx = statistics_header_info.get(consts.AMOUNT_KEY) # None or src or append | 411 | amount_cell_idx = statistics_header_info.get(consts.AMOUNT_KEY) # None or src or append |
... | @@ -412,15 +419,17 @@ class BSWorkbook(Workbook): | ... | @@ -412,15 +419,17 @@ class BSWorkbook(Workbook): |
412 | for i in range(max_column - src_header_len): | 419 | for i in range(max_column - src_header_len): |
413 | header.append(None) | 420 | header.append(None) |
414 | 421 | ||
415 | add_col = ['核对结果'] | 422 | add_col = ['核对结果', '合计'] |
416 | if amount_cell_idx is None: | 423 | if amount_cell_idx is None: |
417 | if income_cell_idx is not None or outlay_cell_idx is not None: | 424 | if income_cell_idx is not None or outlay_cell_idx is not None: |
418 | add_col = ['金额', '核对结果'] | 425 | add_col = ['金额', '核对结果', '合计'] |
419 | amount_cell_idx = len(header) | 426 | amount_cell_idx = len(header) |
420 | header.extend(add_col) | 427 | header.extend(add_col) |
421 | result_idx = len(header) - 1 | 428 | result_idx = len(header) - 2 |
429 | amount_sum_idx = len(header) - 1 | ||
422 | 430 | ||
423 | tmp_ws = self.create_sheet('tmp_ws') | 431 | tmp_ws = self.create_sheet('tmp_ws') |
432 | tmp2_ws = self.create_sheet('tmp2_ws') | ||
424 | if classify in consts.ALI_WECHART_CLASSIFY: | 433 | if classify in consts.ALI_WECHART_CLASSIFY: |
425 | high_light_keyword = self.wechat_keyword | 434 | high_light_keyword = self.wechat_keyword |
426 | else: | 435 | else: |
... | @@ -444,7 +453,10 @@ class BSWorkbook(Workbook): | ... | @@ -444,7 +453,10 @@ class BSWorkbook(Workbook): |
444 | 453 | ||
445 | amount_mapping = {} | 454 | amount_mapping = {} |
446 | amount_fill_row = set() | 455 | amount_fill_row = set() |
447 | loan_fill_row = set() | 456 | fill_row = set() |
457 | |||
458 | # 添加筛选 | ||
459 | new_ws.auto_filter.ref = 'A1:{0}{1}'.format(get_column_letter(new_ws.max_column), new_ws.max_row) | ||
448 | 460 | ||
449 | for rows in new_ws.iter_rows(min_row=2): | 461 | for rows in new_ws.iter_rows(min_row=2): |
450 | length = len(rows) | 462 | length = len(rows) |
... | @@ -466,7 +478,15 @@ class BSWorkbook(Workbook): | ... | @@ -466,7 +478,15 @@ class BSWorkbook(Workbook): |
466 | 478 | ||
467 | # 贷款关键词高亮 | 479 | # 贷款关键词高亮 |
468 | if summary_cell is not None and summary_cell_value in high_light_keyword: | 480 | if summary_cell is not None and summary_cell_value in high_light_keyword: |
469 | loan_fill_row.add(summary_cell.row) | 481 | fill_row.add(summary_cell.row) |
482 | |||
483 | # 户名高亮 | ||
484 | row_num = 2 | ||
485 | for cell in rows: | ||
486 | row_num = cell.row | ||
487 | if cell.value == role_name: | ||
488 | fill_row.add(summary_cell.row) | ||
489 | break | ||
470 | 490 | ||
471 | # 3.3.余额转数值 | 491 | # 3.3.余额转数值 |
472 | over_success = False | 492 | over_success = False |
... | @@ -505,16 +525,17 @@ class BSWorkbook(Workbook): | ... | @@ -505,16 +525,17 @@ class BSWorkbook(Workbook): |
505 | amount_cell.number_format = numbers.FORMAT_NUMBER_00 | 525 | amount_cell.number_format = numbers.FORMAT_NUMBER_00 |
506 | if date_cell is not None and isinstance(date_cell_value, str): | 526 | if date_cell is not None and isinstance(date_cell_value, str): |
507 | same_amount_mapping = amount_mapping.get(date_cell_value[:10], {}) | 527 | same_amount_mapping = amount_mapping.get(date_cell_value[:10], {}) |
508 | fill_rows = same_amount_mapping.get(-amount_cell.value) | 528 | fill_rows_set = same_amount_mapping.get(-amount_cell.value, set()) |
509 | if fill_rows: | 529 | if len(fill_rows_set) > 0: |
510 | amount_fill_row.add(amount_cell.row) | 530 | amount_fill_row.add(amount_cell.row) |
511 | amount_fill_row.update(fill_rows) | 531 | amount_fill_row.add(fill_rows_set.pop()) |
512 | amount_mapping.setdefault(date_cell_value[:10], {}).setdefault( | 532 | else: |
513 | amount_cell.value, []).append(amount_cell.row) | 533 | amount_mapping.setdefault(date_cell_value[:10], {}).setdefault( |
534 | amount_cell.value, set()).add(amount_cell.row) | ||
514 | 535 | ||
515 | # 3.5.核对结果 | 536 | # 3.5.核对结果 |
537 | amount_col_letter = get_column_letter(amount_cell_idx + 1) | ||
516 | if amount_success and over_success and amount_cell.row > 2: | 538 | if amount_success and over_success and amount_cell.row > 2: |
517 | amount_col_letter = get_column_letter(amount_cell_idx + 1) | ||
518 | over_col_letter = get_column_letter(over_cell_idx + 1) | 539 | over_col_letter = get_column_letter(over_cell_idx + 1) |
519 | if is_reverse: | 540 | if is_reverse: |
520 | rows[result_idx].value = '=IF({2}{0}=ROUND(SUM({2}{1},{3}{0}),4), "{4}", "{5}")'.format( | 541 | rows[result_idx].value = '=IF({2}{0}=ROUND(SUM({2}{1},{3}{0}),4), "{4}", "{5}")'.format( |
... | @@ -523,6 +544,11 @@ class BSWorkbook(Workbook): | ... | @@ -523,6 +544,11 @@ class BSWorkbook(Workbook): |
523 | rows[result_idx].value = '=IF({2}{0}=ROUND(SUM({2}{1},{3}{0}),4), "{4}", "{5}")'.format( | 544 | rows[result_idx].value = '=IF({2}{0}=ROUND(SUM({2}{1},{3}{0}),4), "{4}", "{5}")'.format( |
524 | amount_cell.row, amount_cell.row - 1, over_col_letter, amount_col_letter, *self.proof_res) | 545 | amount_cell.row, amount_cell.row - 1, over_col_letter, amount_col_letter, *self.proof_res) |
525 | 546 | ||
547 | # 3.6 金额合计列 | ||
548 | amount_sum_letter = get_column_letter(amount_sum_idx + 1) | ||
549 | rows[amount_sum_idx].value = '=SUM({0}{1},{2}{3})'.format( | ||
550 | amount_sum_letter, row_num - 1, amount_col_letter, row_num) | ||
551 | |||
526 | # 3.2.提取信息、高亮 | 552 | # 3.2.提取信息、高亮 |
527 | # row = summary_cell.row | 553 | # row = summary_cell.row |
528 | if summary_cell is not None: | 554 | if summary_cell is not None: |
... | @@ -534,13 +560,17 @@ class BSWorkbook(Workbook): | ... | @@ -534,13 +560,17 @@ class BSWorkbook(Workbook): |
534 | elif summary_cell_value in self.salary_keyword: | 560 | elif summary_cell_value in self.salary_keyword: |
535 | new_amount_cell_value = None if amount_cell is None else amount_cell.value | 561 | new_amount_cell_value = None if amount_cell is None else amount_cell.value |
536 | tmp_ws.append((summary_cell_value, date_cell_value, new_amount_cell_value)) | 562 | tmp_ws.append((summary_cell_value, date_cell_value, new_amount_cell_value)) |
563 | # 关键词3提取至临时表 | ||
564 | elif summary_cell_value in self.repayments_keyword: | ||
565 | new_amount_cell_value = None if amount_cell is None else amount_cell.value | ||
566 | tmp2_ws.append((summary_cell_value, date_cell_value, new_amount_cell_value)) | ||
537 | # 贷款关键词高亮 | 567 | # 贷款关键词高亮 |
538 | # elif summary_cell_value in high_light_keyword: | 568 | # elif summary_cell_value in high_light_keyword: |
539 | # summary_cell.fill = self.amount_fill | 569 | # summary_cell.fill = self.amount_fill |
540 | # if amount_cell is not None: | 570 | # if amount_cell is not None: |
541 | # amount_cell.fill = self.amount_fill | 571 | # amount_cell.fill = self.amount_fill |
542 | 572 | ||
543 | for row in loan_fill_row: | 573 | for row in fill_row: |
544 | for cell in new_ws[row]: | 574 | for cell in new_ws[row]: |
545 | cell.fill = self.amount_fill | 575 | cell.fill = self.amount_fill |
546 | 576 | ||
... | @@ -555,12 +585,19 @@ class BSWorkbook(Workbook): | ... | @@ -555,12 +585,19 @@ class BSWorkbook(Workbook): |
555 | 585 | ||
556 | # 关键词2信息提取 | 586 | # 关键词2信息提取 |
557 | ms.append(self.blank_row) | 587 | ms.append(self.blank_row) |
558 | ms.append(self.keyword_header) | 588 | ms.append(self.salary_keyword_header) |
559 | for row in tmp_ws.iter_rows(values_only=True): | 589 | for row in tmp_ws.iter_rows(values_only=True): |
560 | ms.append(row) | 590 | ms.append(row) |
561 | self.remove(tmp_ws) | 591 | self.remove(tmp_ws) |
562 | 592 | ||
563 | def bs_rebuild(self, bs_summary): | 593 | # 关键词3信息提取 |
594 | ms.append(self.blank_row) | ||
595 | ms.append(self.repayments_keyword_header) | ||
596 | for row in tmp2_ws.iter_rows(values_only=True): | ||
597 | ms.append(row) | ||
598 | self.remove(tmp2_ws) | ||
599 | |||
600 | def bs_rebuild(self, bs_summary, res_count_tuple): | ||
564 | # bs_summary = { | 601 | # bs_summary = { |
565 | # '卡号': { | 602 | # '卡号': { |
566 | # 'classify': 0, | 603 | # 'classify': 0, |
... | @@ -578,6 +615,7 @@ class BSWorkbook(Workbook): | ... | @@ -578,6 +615,7 @@ class BSWorkbook(Workbook): |
578 | new_card = self.get_new_card(card) | 615 | new_card = self.get_new_card(card) |
579 | # 1.原表表头收集、按照月份分割 | 616 | # 1.原表表头收集、按照月份分割 |
580 | # 1.1 总结首行信息 | 617 | # 1.1 总结首行信息 |
618 | role_name = summary.get('role', consts.UNKNOWN_ROLE) | ||
581 | classify = summary.get('classify', 0) | 619 | classify = summary.get('classify', 0) |
582 | sheet_header_info = {} | 620 | sheet_header_info = {} |
583 | header_info = {} | 621 | header_info = {} |
... | @@ -614,12 +652,14 @@ class BSWorkbook(Workbook): | ... | @@ -614,12 +652,14 @@ class BSWorkbook(Workbook): |
614 | 652 | ||
615 | # 2.元信息提取表 | 653 | # 2.元信息提取表 |
616 | confidence = self.get_confidence(max_find_count) | 654 | confidence = self.get_confidence(max_find_count) |
617 | ms = self.build_meta_sheet(new_card, | 655 | ms = self.build_meta_sheet(role_name, |
656 | new_card, | ||
618 | confidence, | 657 | confidence, |
619 | summary.get('code'), | 658 | summary.get('code'), |
620 | summary.get('print_time'), | 659 | summary.get('print_time'), |
621 | start_date, | 660 | start_date, |
622 | end_date) | 661 | end_date, |
662 | res_count_tuple) | ||
623 | 663 | ||
624 | # 3.创建月份表、提取/高亮关键行 | 664 | # 3.创建月份表、提取/高亮关键行 |
625 | # 倒序处理 | 665 | # 倒序处理 |
... | @@ -627,7 +667,7 @@ class BSWorkbook(Workbook): | ... | @@ -627,7 +667,7 @@ class BSWorkbook(Workbook): |
627 | for month_list in month_mapping.values(): | 667 | for month_list in month_mapping.values(): |
628 | month_list.sort(key=lambda x: x[-1], reverse=is_reverse) | 668 | month_list.sort(key=lambda x: x[-1], reverse=is_reverse) |
629 | 669 | ||
630 | self.build_month_sheet(ms, new_card, month_mapping, is_reverse, statistics_header_info, max_column, classify) | 670 | self.build_month_sheet(ms, role_name, new_card, month_mapping, is_reverse, statistics_header_info, max_column, classify) |
631 | 671 | ||
632 | # 4.删除原表 | 672 | # 4.删除原表 |
633 | for sheet in sheets_list: | 673 | for sheet in sheets_list: |
... | @@ -701,21 +741,35 @@ class BSWorkbook(Workbook): | ... | @@ -701,21 +741,35 @@ class BSWorkbook(Workbook): |
701 | res_list.sort(key=lambda x: (x[0], x[1], x[2])) | 741 | res_list.sort(key=lambda x: (x[0], x[1], x[2])) |
702 | ws = self.create_sheet(consts.RES_SHEET_NAME) | 742 | ws = self.create_sheet(consts.RES_SHEET_NAME) |
703 | ws.append(consts.RES_SHEET_HEADER) | 743 | ws.append(consts.RES_SHEET_HEADER) |
744 | success_count = 0 | ||
704 | for res_tuple in res_list: | 745 | for res_tuple in res_list: |
746 | if res_tuple[-1] not in consts.RES_FAILED_SET: | ||
747 | success_count += 1 | ||
705 | ws.append(res_tuple) | 748 | ws.append(res_tuple) |
749 | return len(res_list), success_count | ||
750 | else: | ||
751 | return 0, 0 | ||
752 | |||
753 | def move_res_sheet(self): | ||
754 | sheet = self.get_sheet_by_name(consts.RES_SHEET_NAME) | ||
755 | idx = self._sheets.index(sheet) | ||
756 | del self._sheets[idx] | ||
757 | self._sheets.append(sheet) | ||
706 | 758 | ||
707 | def remove_base_sheet(self): | 759 | def remove_base_sheet(self): |
708 | if len(self.sheetnames) > 1: | 760 | if len(self.sheetnames) > 1: |
709 | self.remove(self.get_sheet_by_name('Sheet')) | 761 | self.remove(self.get_sheet_by_name('Sheet')) |
710 | 762 | ||
711 | def rebuild(self, bs_summary, license_summary, res_list, document_scheme): | 763 | def rebuild(self, bs_summary, license_summary, res_list, document_scheme): |
764 | res_count_tuple = self.res_sheet(res_list) | ||
765 | |||
712 | count_list = [(consts.MODEL_FIELD_BS, len(bs_summary))] | 766 | count_list = [(consts.MODEL_FIELD_BS, len(bs_summary))] |
713 | if document_scheme == consts.DOC_SCHEME_LIST[1]: | 767 | if document_scheme == consts.DOC_SCHEME_LIST[1]: |
714 | self.license_rebuild(license_summary, document_scheme, count_list) | 768 | self.license_rebuild(license_summary, document_scheme, count_list) |
715 | self.bs_rebuild(bs_summary) | 769 | self.bs_rebuild(bs_summary, res_count_tuple) |
716 | else: | 770 | else: |
717 | self.bs_rebuild(bs_summary) | 771 | self.bs_rebuild(bs_summary, res_count_tuple) |
718 | self.license_rebuild(license_summary, document_scheme, count_list) | 772 | self.license_rebuild(license_summary, document_scheme, count_list) |
719 | self.res_sheet(res_list) | 773 | self.move_res_sheet() |
720 | self.remove_base_sheet() | 774 | self.remove_base_sheet() |
721 | return count_list | 775 | return count_list | ... | ... |
-
Please register or sign in to post a comment