add offline report
Showing
8 changed files
with
150 additions
and
13 deletions
| ... | @@ -7,6 +7,7 @@ import base64 | ... | @@ -7,6 +7,7 @@ import base64 |
| 7 | import signal | 7 | import signal |
| 8 | import requests | 8 | import requests |
| 9 | import traceback | 9 | import traceback |
| 10 | from django import db | ||
| 10 | from PIL import Image | 11 | from PIL import Image |
| 11 | from datetime import datetime | 12 | from datetime import datetime |
| 12 | from django.core.management import BaseCommand | 13 | from django.core.management import BaseCommand |
| ... | @@ -19,6 +20,8 @@ from common.tools.pdf_to_img import PDFHandler | ... | @@ -19,6 +20,8 @@ from common.tools.pdf_to_img import PDFHandler |
| 19 | from apps.doc import consts | 20 | from apps.doc import consts |
| 20 | from apps.doc.exceptions import OCR1Exception, OCR2Exception, LTGTException | 21 | from apps.doc.exceptions import OCR1Exception, OCR2Exception, LTGTException |
| 21 | from apps.doc.ocr.wb import BSWorkbook | 22 | from apps.doc.ocr.wb import BSWorkbook |
| 23 | from apps.doc.models import OfflineReport | ||
| 24 | from apps.doc.named_enum import OfflineFailureReason | ||
| 22 | 25 | ||
| 23 | 26 | ||
| 24 | class TIFFHandler: | 27 | class TIFFHandler: |
| ... | @@ -384,6 +387,9 @@ class Command(BaseCommand, LoggerMixin): | ... | @@ -384,6 +387,9 @@ class Command(BaseCommand, LoggerMixin): |
| 384 | if len(true_file_set) == 0 and len(os_error_filename_set) > 0: | 387 | if len(true_file_set) == 0 and len(os_error_filename_set) > 0: |
| 385 | true_file_set.add(os_error_filename_set.pop()) | 388 | true_file_set.add(os_error_filename_set.pop()) |
| 386 | for name in true_file_set: | 389 | for name in true_file_set: |
| 390 | is_success = True | ||
| 391 | failure_reason = OfflineFailureReason.OS_ERROR.value | ||
| 392 | start_time = time.time() | ||
| 387 | path = os.path.join(input_dir, name) | 393 | path = os.path.join(input_dir, name) |
| 388 | try: | 394 | try: |
| 389 | if not os.path.exists(path): | 395 | if not os.path.exists(path): |
| ... | @@ -408,16 +414,21 @@ class Command(BaseCommand, LoggerMixin): | ... | @@ -408,16 +414,21 @@ class Command(BaseCommand, LoggerMixin): |
| 408 | failed_path = os.path.join(failed_output_dir, '{0}_{1}'.format(time.time(), name)) | 414 | failed_path = os.path.join(failed_output_dir, '{0}_{1}'.format(time.time(), name)) |
| 409 | shutil.move(path, failed_path) | 415 | shutil.move(path, failed_path) |
| 410 | except OSError: | 416 | except OSError: |
| 417 | is_success = False | ||
| 418 | failure_reason = OfflineFailureReason.OS_ERROR.value | ||
| 411 | os_error_filename_set.add(name) | 419 | os_error_filename_set.add(name) |
| 412 | self.folder_log.error('{0} [os error] [path={1}] [error={2}]'.format( | 420 | self.folder_log.error('{0} [os error] [path={1}] [error={2}]'.format( |
| 413 | self.log_base, path, traceback.format_exc())) | 421 | self.log_base, path, traceback.format_exc())) |
| 414 | except Exception as e: | 422 | except Exception as e: |
| 423 | is_success = False | ||
| 424 | failure_reason = OfflineFailureReason.PROCESS_ERROR.value | ||
| 415 | try: | 425 | try: |
| 416 | self.folder_log.error('{0} [file error] [path={1}] [error={2}]'.format(self.log_base, path, | 426 | self.folder_log.error('{0} [file error] [path={1}] [error={2}]'.format(self.log_base, path, |
| 417 | traceback.format_exc())) | 427 | traceback.format_exc())) |
| 418 | failed_path = os.path.join(failed_output_dir, '{0}_{1}'.format(time.time(), name)) | 428 | failed_path = os.path.join(failed_output_dir, '{0}_{1}'.format(time.time(), name)) |
| 419 | shutil.move(path, failed_path) | 429 | shutil.move(path, failed_path) |
| 420 | except Exception as e: | 430 | except Exception as e: |
| 431 | failure_reason = OfflineFailureReason.OS_ERROR.value | ||
| 421 | os_error_filename_set.add(name) | 432 | os_error_filename_set.add(name) |
| 422 | self.folder_log.error('{0} [file move error] [path={1}] [error={2}]'.format( | 433 | self.folder_log.error('{0} [file move error] [path={1}] [error={2}]'.format( |
| 423 | self.log_base, path, traceback.format_exc())) | 434 | self.log_base, path, traceback.format_exc())) |
| ... | @@ -433,8 +444,23 @@ class Command(BaseCommand, LoggerMixin): | ... | @@ -433,8 +444,23 @@ class Command(BaseCommand, LoggerMixin): |
| 433 | self.DATE_KEY: date_str | 444 | self.DATE_KEY: date_str |
| 434 | } | 445 | } |
| 435 | ) | 446 | ) |
| 447 | finally: | ||
| 448 | end_time = time.time() | ||
| 449 | try: | ||
| 450 | OfflineReport.objects.create( | ||
| 451 | input_folder=input_dir, | ||
| 452 | doc_type=consts.DDA_CLASSIFY, | ||
| 453 | file_name=name, | ||
| 454 | status=is_success, | ||
| 455 | failure_reason=failure_reason, | ||
| 456 | duration=int(end_time - start_time) | ||
| 457 | ) | ||
| 458 | except Exception as e: | ||
| 459 | self.folder_log.error('{0} [db save failed] [path={1}] [error={2}]'.format( | ||
| 460 | self.log_base, path, traceback.format_exc())) | ||
| 436 | 461 | ||
| 437 | def handle(self, *args, **kwargs): | 462 | def handle(self, *args, **kwargs): |
| 463 | db.close_old_connections() | ||
| 438 | if len(self.input_dirs) == 0: | 464 | if len(self.input_dirs) == 0: |
| 439 | return | 465 | return |
| 440 | result_queue = Queue() | 466 | result_queue = Queue() | ... | ... |
| ... | @@ -7,6 +7,7 @@ import base64 | ... | @@ -7,6 +7,7 @@ import base64 |
| 7 | import signal | 7 | import signal |
| 8 | import requests | 8 | import requests |
| 9 | import traceback | 9 | import traceback |
| 10 | from django import db | ||
| 10 | from PIL import Image | 11 | from PIL import Image |
| 11 | from datetime import datetime | 12 | from datetime import datetime |
| 12 | from django.core.management import BaseCommand | 13 | from django.core.management import BaseCommand |
| ... | @@ -20,6 +21,8 @@ from common.electronic_afc_contract.afc_contract_ocr import predict as afc_predi | ... | @@ -20,6 +21,8 @@ from common.electronic_afc_contract.afc_contract_ocr import predict as afc_predi |
| 20 | from apps.doc import consts | 21 | from apps.doc import consts |
| 21 | from apps.doc.exceptions import OCR1Exception, OCR2Exception, LTGTException | 22 | from apps.doc.exceptions import OCR1Exception, OCR2Exception, LTGTException |
| 22 | from apps.doc.ocr.wb import BSWorkbook | 23 | from apps.doc.ocr.wb import BSWorkbook |
| 24 | from apps.doc.models import OfflineReport | ||
| 25 | from apps.doc.named_enum import OfflineFailureReason | ||
| 23 | 26 | ||
| 24 | 27 | ||
| 25 | class TIFFHandler: | 28 | class TIFFHandler: |
| ... | @@ -688,6 +691,9 @@ class Command(BaseCommand, LoggerMixin): | ... | @@ -688,6 +691,9 @@ class Command(BaseCommand, LoggerMixin): |
| 688 | for name in true_file_set: | 691 | for name in true_file_set: |
| 689 | time.sleep(5) | 692 | time.sleep(5) |
| 690 | path = os.path.join(input_dir, name) | 693 | path = os.path.join(input_dir, name) |
| 694 | is_success = True | ||
| 695 | failure_reason = OfflineFailureReason.OS_ERROR.value | ||
| 696 | start_time = time.time() | ||
| 691 | 697 | ||
| 692 | try: | 698 | try: |
| 693 | if not os.path.exists(path): | 699 | if not os.path.exists(path): |
| ... | @@ -716,16 +722,21 @@ class Command(BaseCommand, LoggerMixin): | ... | @@ -716,16 +722,21 @@ class Command(BaseCommand, LoggerMixin): |
| 716 | failed_path = os.path.join(failed_output_dir, '{0}_{1}'.format(time.time(), name)) | 722 | failed_path = os.path.join(failed_output_dir, '{0}_{1}'.format(time.time(), name)) |
| 717 | shutil.move(path, failed_path) | 723 | shutil.move(path, failed_path) |
| 718 | except OSError: | 724 | except OSError: |
| 725 | is_success = False | ||
| 726 | failure_reason = OfflineFailureReason.OS_ERROR.value | ||
| 719 | os_error_filename_set.add(name) | 727 | os_error_filename_set.add(name) |
| 720 | self.folder_log.error('{0} [os error] [path={1}] [error={2}]'.format( | 728 | self.folder_log.error('{0} [os error] [path={1}] [error={2}]'.format( |
| 721 | self.log_base, path, traceback.format_exc())) | 729 | self.log_base, path, traceback.format_exc())) |
| 722 | except Exception as e: | 730 | except Exception as e: |
| 731 | is_success = False | ||
| 732 | failure_reason = OfflineFailureReason.PROCESS_ERROR.value | ||
| 723 | try: | 733 | try: |
| 724 | self.folder_log.error('{0} [file error] [path={1}] [error={2}]'.format(self.log_base, path, | 734 | self.folder_log.error('{0} [file error] [path={1}] [error={2}]'.format(self.log_base, path, |
| 725 | traceback.format_exc())) | 735 | traceback.format_exc())) |
| 726 | failed_path = os.path.join(failed_output_dir, '{0}_{1}'.format(time.time(), name)) | 736 | failed_path = os.path.join(failed_output_dir, '{0}_{1}'.format(time.time(), name)) |
| 727 | shutil.move(path, failed_path) | 737 | shutil.move(path, failed_path) |
| 728 | except Exception as e: | 738 | except Exception as e: |
| 739 | failure_reason = OfflineFailureReason.OS_ERROR.value | ||
| 729 | os_error_filename_set.add(name) | 740 | os_error_filename_set.add(name) |
| 730 | self.folder_log.error('{0} [file move error] [path={1}] [error={2}]'.format( | 741 | self.folder_log.error('{0} [file move error] [path={1}] [error={2}]'.format( |
| 731 | self.log_base, path, traceback.format_exc())) | 742 | self.log_base, path, traceback.format_exc())) |
| ... | @@ -755,8 +766,23 @@ class Command(BaseCommand, LoggerMixin): | ... | @@ -755,8 +766,23 @@ class Command(BaseCommand, LoggerMixin): |
| 755 | self.FILE_KEY: name, | 766 | self.FILE_KEY: name, |
| 756 | } | 767 | } |
| 757 | ) | 768 | ) |
| 769 | finally: | ||
| 770 | end_time = time.time() | ||
| 771 | try: | ||
| 772 | OfflineReport.objects.create( | ||
| 773 | input_folder=input_dir, | ||
| 774 | doc_type=classify, | ||
| 775 | file_name=name, | ||
| 776 | status=is_success, | ||
| 777 | failure_reason=failure_reason, | ||
| 778 | duration=int(end_time - start_time) | ||
| 779 | ) | ||
| 780 | except Exception as e: | ||
| 781 | self.folder_log.error('{0} [db save failed] [path={1}] [error={2}]'.format( | ||
| 782 | self.log_base, path, traceback.format_exc())) | ||
| 758 | 783 | ||
| 759 | def handle(self, *args, **kwargs): | 784 | def handle(self, *args, **kwargs): |
| 785 | db.close_old_connections() | ||
| 760 | if len(self.input_dirs) == 0: | 786 | if len(self.input_dirs) == 0: |
| 761 | return | 787 | return |
| 762 | result_queue = Queue() | 788 | result_queue = Queue() | ... | ... |
| ... | @@ -6,6 +6,7 @@ import base64 | ... | @@ -6,6 +6,7 @@ import base64 |
| 6 | import signal | 6 | import signal |
| 7 | import requests | 7 | import requests |
| 8 | import traceback | 8 | import traceback |
| 9 | from django import db | ||
| 9 | from PIL import Image | 10 | from PIL import Image |
| 10 | from datetime import datetime | 11 | from datetime import datetime |
| 11 | from django.core.management import BaseCommand | 12 | from django.core.management import BaseCommand |
| ... | @@ -17,6 +18,8 @@ from common.tools.pdf_to_img import PDFHandler | ... | @@ -17,6 +18,8 @@ from common.tools.pdf_to_img import PDFHandler |
| 17 | from apps.doc import consts | 18 | from apps.doc import consts |
| 18 | from apps.doc.exceptions import OCR1Exception, OCR4Exception | 19 | from apps.doc.exceptions import OCR1Exception, OCR4Exception |
| 19 | from apps.doc.ocr.wb import BSWorkbook | 20 | from apps.doc.ocr.wb import BSWorkbook |
| 21 | from apps.doc.models import OfflineReport | ||
| 22 | from apps.doc.named_enum import OfflineFailureReason | ||
| 20 | 23 | ||
| 21 | 24 | ||
| 22 | class TIFFHandler: | 25 | class TIFFHandler: |
| ... | @@ -337,6 +340,9 @@ class Command(BaseCommand, LoggerMixin): | ... | @@ -337,6 +340,9 @@ class Command(BaseCommand, LoggerMixin): |
| 337 | if len(true_file_set) == 0 and len(os_error_filename_set) > 0: | 340 | if len(true_file_set) == 0 and len(os_error_filename_set) > 0: |
| 338 | true_file_set.add(os_error_filename_set.pop()) | 341 | true_file_set.add(os_error_filename_set.pop()) |
| 339 | for name in true_file_set: | 342 | for name in true_file_set: |
| 343 | is_success = True | ||
| 344 | failure_reason = OfflineFailureReason.OS_ERROR.value | ||
| 345 | start_time = time.time() | ||
| 340 | path = os.path.join(input_dir, name) | 346 | path = os.path.join(input_dir, name) |
| 341 | 347 | ||
| 342 | try: | 348 | try: |
| ... | @@ -358,21 +364,41 @@ class Command(BaseCommand, LoggerMixin): | ... | @@ -358,21 +364,41 @@ class Command(BaseCommand, LoggerMixin): |
| 358 | failed_path = os.path.join(failed_output_dir, '{0}_{1}'.format(time.time(), name)) | 364 | failed_path = os.path.join(failed_output_dir, '{0}_{1}'.format(time.time(), name)) |
| 359 | shutil.move(path, failed_path) | 365 | shutil.move(path, failed_path) |
| 360 | except OSError: | 366 | except OSError: |
| 367 | is_success = False | ||
| 368 | failure_reason = OfflineFailureReason.OS_ERROR.value | ||
| 361 | os_error_filename_set.add(name) | 369 | os_error_filename_set.add(name) |
| 362 | self.folder_log.error('{0} [os error] [path={1}] [error={2}]'.format( | 370 | self.folder_log.error('{0} [os error] [path={1}] [error={2}]'.format( |
| 363 | self.log_base, path, traceback.format_exc())) | 371 | self.log_base, path, traceback.format_exc())) |
| 364 | except Exception as e: | 372 | except Exception as e: |
| 373 | is_success = False | ||
| 374 | failure_reason = OfflineFailureReason.PROCESS_ERROR.value | ||
| 365 | try: | 375 | try: |
| 366 | self.folder_log.error('{0} [file error] [path={1}] [error={2}]'.format(self.log_base, path, | 376 | self.folder_log.error('{0} [file error] [path={1}] [error={2}]'.format(self.log_base, path, |
| 367 | traceback.format_exc())) | 377 | traceback.format_exc())) |
| 368 | failed_path = os.path.join(failed_output_dir, '{0}_{1}'.format(time.time(), name)) | 378 | failed_path = os.path.join(failed_output_dir, '{0}_{1}'.format(time.time(), name)) |
| 369 | shutil.move(path, failed_path) | 379 | shutil.move(path, failed_path) |
| 370 | except Exception as e: | 380 | except Exception as e: |
| 381 | failure_reason = OfflineFailureReason.OS_ERROR.value | ||
| 371 | os_error_filename_set.add(name) | 382 | os_error_filename_set.add(name) |
| 372 | self.folder_log.error('{0} [file move error] [path={1}] [error={2}]'.format( | 383 | self.folder_log.error('{0} [file move error] [path={1}] [error={2}]'.format( |
| 373 | self.log_base, path, traceback.format_exc())) | 384 | self.log_base, path, traceback.format_exc())) |
| 385 | finally: | ||
| 386 | end_time = time.time() | ||
| 387 | try: | ||
| 388 | OfflineReport.objects.create( | ||
| 389 | input_folder=input_dir, | ||
| 390 | doc_type=classify, | ||
| 391 | file_name=name, | ||
| 392 | status=is_success, | ||
| 393 | failure_reason=failure_reason, | ||
| 394 | duration=int(end_time-start_time) | ||
| 395 | ) | ||
| 396 | except Exception as e: | ||
| 397 | self.folder_log.error('{0} [db save failed] [path={1}] [error={2}]'.format( | ||
| 398 | self.log_base, path, traceback.format_exc())) | ||
| 374 | 399 | ||
| 375 | def handle(self, *args, **kwargs): | 400 | def handle(self, *args, **kwargs): |
| 401 | db.close_old_connections() | ||
| 376 | process_list = [] | 402 | process_list = [] |
| 377 | for classify_idx, input_dir in self.input_dirs.items(): | 403 | for classify_idx, input_dir in self.input_dirs.items(): |
| 378 | classify = int(classify_idx.split('_')[0]) | 404 | classify = int(classify_idx.split('_')[0]) | ... | ... |
| ... | @@ -6,6 +6,7 @@ import base64 | ... | @@ -6,6 +6,7 @@ import base64 |
| 6 | import signal | 6 | import signal |
| 7 | import requests | 7 | import requests |
| 8 | import traceback | 8 | import traceback |
| 9 | from django import db | ||
| 9 | from PIL import Image | 10 | from PIL import Image |
| 10 | from datetime import datetime | 11 | from datetime import datetime |
| 11 | from django.core.management import BaseCommand | 12 | from django.core.management import BaseCommand |
| ... | @@ -20,6 +21,8 @@ from common.tools.pdf_to_img import PDFHandler | ... | @@ -20,6 +21,8 @@ from common.tools.pdf_to_img import PDFHandler |
| 20 | from apps.doc import consts | 21 | from apps.doc import consts |
| 21 | from apps.doc.exceptions import OCR1Exception, OCR4Exception | 22 | from apps.doc.exceptions import OCR1Exception, OCR4Exception |
| 22 | from apps.doc.ocr.wb import BSWorkbook, PatternFill | 23 | from apps.doc.ocr.wb import BSWorkbook, PatternFill |
| 24 | from apps.doc.models import OfflineReport | ||
| 25 | from apps.doc.named_enum import OfflineFailureReason | ||
| 23 | 26 | ||
| 24 | 27 | ||
| 25 | class Finder: | 28 | class Finder: |
| ... | @@ -582,6 +585,9 @@ class Command(BaseCommand, LoggerMixin): | ... | @@ -582,6 +585,9 @@ class Command(BaseCommand, LoggerMixin): |
| 582 | for name in true_file_set: | 585 | for name in true_file_set: |
| 583 | time.sleep(10) # 防止文件较大时,读取到不完整文件 | 586 | time.sleep(10) # 防止文件较大时,读取到不完整文件 |
| 584 | path = os.path.join(input_dir, name) | 587 | path = os.path.join(input_dir, name) |
| 588 | is_success = True | ||
| 589 | failure_reason = OfflineFailureReason.OS_ERROR.value | ||
| 590 | start_time = time.time() | ||
| 585 | 591 | ||
| 586 | try: | 592 | try: |
| 587 | if not os.path.exists(path): | 593 | if not os.path.exists(path): |
| ... | @@ -605,20 +611,40 @@ class Command(BaseCommand, LoggerMixin): | ... | @@ -605,20 +611,40 @@ class Command(BaseCommand, LoggerMixin): |
| 605 | failed_path = os.path.join(failed_output_dir, '{0}_{1}'.format(time.time(), name)) | 611 | failed_path = os.path.join(failed_output_dir, '{0}_{1}'.format(time.time(), name)) |
| 606 | shutil.move(path, failed_path) | 612 | shutil.move(path, failed_path) |
| 607 | except OSError: | 613 | except OSError: |
| 614 | is_success = False | ||
| 615 | failure_reason = OfflineFailureReason.OS_ERROR.value | ||
| 608 | os_error_filename_set.add(name) | 616 | os_error_filename_set.add(name) |
| 609 | self.folder_log.error('{0} [os error] [path={1}] [error={2}]'.format( | 617 | self.folder_log.error('{0} [os error] [path={1}] [error={2}]'.format( |
| 610 | self.log_base, path, traceback.format_exc())) | 618 | self.log_base, path, traceback.format_exc())) |
| 611 | except Exception as e: | 619 | except Exception as e: |
| 620 | is_success = False | ||
| 621 | failure_reason = OfflineFailureReason.PROCESS_ERROR.value | ||
| 612 | try: | 622 | try: |
| 613 | self.folder_log.error('{0} [file error] [path={1}] [error={2}]'.format(self.log_base, path, | 623 | self.folder_log.error('{0} [file error] [path={1}] [error={2}]'.format(self.log_base, path, |
| 614 | traceback.format_exc())) | 624 | traceback.format_exc())) |
| 615 | failed_path = os.path.join(failed_output_dir, '{0}_{1}'.format(time.time(), name)) | 625 | failed_path = os.path.join(failed_output_dir, '{0}_{1}'.format(time.time(), name)) |
| 616 | shutil.move(path, failed_path) | 626 | shutil.move(path, failed_path) |
| 617 | except Exception as e: | 627 | except Exception as e: |
| 628 | failure_reason = OfflineFailureReason.OS_ERROR.value | ||
| 618 | os_error_filename_set.add(name) | 629 | os_error_filename_set.add(name) |
| 619 | self.folder_log.error('{0} [file move error] [path={1}] [error={2}]'.format( | 630 | self.folder_log.error('{0} [file move error] [path={1}] [error={2}]'.format( |
| 620 | self.log_base, path, traceback.format_exc())) | 631 | self.log_base, path, traceback.format_exc())) |
| 632 | finally: | ||
| 633 | end_time = time.time() | ||
| 634 | try: | ||
| 635 | OfflineReport.objects.create( | ||
| 636 | input_folder=input_dir, | ||
| 637 | doc_type=consts.FOLDER_WSC_CLASSIFY, | ||
| 638 | file_name=name, | ||
| 639 | status=is_success, | ||
| 640 | failure_reason=failure_reason, | ||
| 641 | duration=int(end_time - start_time) | ||
| 642 | ) | ||
| 643 | except Exception as e: | ||
| 644 | self.folder_log.error('{0} [db save failed] [path={1}] [error={2}]'.format( | ||
| 645 | self.log_base, path, traceback.format_exc())) | ||
| 621 | 646 | ||
| 622 | def handle(self, *args, **kwargs): | 647 | def handle(self, *args, **kwargs): |
| 648 | db.close_old_connections() | ||
| 623 | self.folder_process(self.input_dir) | 649 | self.folder_process(self.input_dir) |
| 624 | self.folder_log.info('{0} [stop safely]'.format(self.log_base)) | 650 | self.folder_log.info('{0} [stop safely]'.format(self.log_base)) | ... | ... |
| ... | @@ -933,23 +933,37 @@ class MposReport(models.Model): | ... | @@ -933,23 +933,37 @@ class MposReport(models.Model): |
| 933 | db_table = 'mpos_report' | 933 | db_table = 'mpos_report' |
| 934 | 934 | ||
| 935 | 935 | ||
| 936 | # class HILOfflineReport(models.Model): | 936 | class OfflineReport(models.Model): |
| 937 | id = models.AutoField(primary_key=True, verbose_name="id") # 主键 | ||
| 938 | |||
| 939 | input_folder = models.CharField(max_length=512, verbose_name="文件夹路径") | ||
| 940 | doc_type = models.SmallIntegerField(default=0, verbose_name="文件类型") | ||
| 941 | file_name = models.CharField(max_length=1024, verbose_name="文件名") | ||
| 942 | status = models.BooleanField(default=True, verbose_name="是否成功") | ||
| 943 | failure_reason = models.SmallIntegerField(default=0, verbose_name="失败原因") | ||
| 944 | duration = models.IntegerField(verbose_name='处理时长') | ||
| 945 | |||
| 946 | create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') | ||
| 947 | |||
| 948 | class Meta: | ||
| 949 | managed = False | ||
| 950 | db_table = 'offline_report' | ||
| 951 | |||
| 952 | |||
| 953 | # class AFCOfflineReport(models.Model): | ||
| 937 | # id = models.AutoField(primary_key=True, verbose_name="id") # 主键 | 954 | # id = models.AutoField(primary_key=True, verbose_name="id") # 主键 |
| 938 | # | 955 | # |
| 939 | # update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间') | 956 | # input_folder = models.CharField(max_length=512, verbose_name="文件夹路径") |
| 957 | # doc_type = models.SmallIntegerField(default=0, verbose_name="文件类型") | ||
| 958 | # file_name = models.CharField(max_length=1024, verbose_name="文件名") | ||
| 959 | # status = models.BooleanField(default=True, verbose_name="是否成功") | ||
| 960 | # failure_reason = models.SmallIntegerField(default=0, verbose_name="失败原因") | ||
| 961 | # duration = models.IntegerField(verbose_name='处理时长') | ||
| 962 | # | ||
| 940 | # create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') | 963 | # create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') |
| 941 | # | 964 | # |
| 942 | # class Meta: | 965 | # class Meta: |
| 943 | # managed = False | 966 | # managed = False |
| 944 | # db_table = 'hil_offline_report' | 967 | # db_table = 'afc_offline_report' |
| 945 | 968 | # situ_db_label = 'afc' | |
| 946 | |||
| 947 | # new teble: hil/afc_offline_ocr_report | ||
| 948 | # 1. file_name string eg. 'CH-B2432.pdf' | ||
| 949 | # 2. doc_type int eg. 2(VAT Invoice) | ||
| 950 | # 3. successful_at_this_level boolean eg. 0 | ||
| 951 | # 4. failure_reason int eg. 2(PDF) | ||
| 952 | # 5. duration int eg. 100 | ||
| 953 | # | ||
| 954 | # id/input_folder/start_time/end_time/create_time | ||
| 955 | 969 | ... | ... |
| ... | @@ -90,3 +90,8 @@ class BSCheckResult(NamedEnum): | ... | @@ -90,3 +90,8 @@ class BSCheckResult(NamedEnum): |
| 90 | CHECK_TRUE = (1, 'CHECK_TRUE') | 90 | CHECK_TRUE = (1, 'CHECK_TRUE') |
| 91 | CHECK_FALSE = (2, 'CHECK_FALSE') | 91 | CHECK_FALSE = (2, 'CHECK_FALSE') |
| 92 | CHECK_FAILED = (3, 'CHECK_FAILED') | 92 | CHECK_FAILED = (3, 'CHECK_FAILED') |
| 93 | |||
| 94 | |||
| 95 | class OfflineFailureReason(NamedEnum): | ||
| 96 | OS_ERROR = (0, 'OS_ERROR') | ||
| 97 | PROCESS_ERROR = (1, 'PROCESS_ERROR') | ... | ... |
| ... | @@ -14,6 +14,18 @@ hil_sql = """ | ... | @@ -14,6 +14,18 @@ hil_sql = """ |
| 14 | ALTER TABLE hil_ocr_report ADD bank_name nvarchar(2048); | 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; | 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; | 16 | ALTER TABLE hil_ocr_report ADD bs_check_result tinyint default 0 not null; |
| 17 | |||
| 18 | create table offline_report | ||
| 19 | ( | ||
| 20 | id bigint identity primary key, | ||
| 21 | input_folder nvarchar(512) not null, | ||
| 22 | doc_type tinyint default 0 not null, | ||
| 23 | file_name nvarchar(1024) not null, | ||
| 24 | status bit default 1 not null, | ||
| 25 | failure_reason tinyint default 0 not null, | ||
| 26 | duration smallint not null, | ||
| 27 | create_time datetime not null | ||
| 28 | ); | ||
| 17 | """ | 29 | """ |
| 18 | 30 | ||
| 19 | afc_sql = """ | 31 | afc_sql = """ | ... | ... |
-
Please register or sign in to post a comment