From 96b6722209b9d4ea4c6fe67b3656602891e73383 Mon Sep 17 00:00:00 2001
From: 周伟奇 <zhouweiqi@situdata.com>
Date: Wed, 23 Sep 2020 15:39:31 +0800
Subject: [PATCH] fix bug & add license

---
 .gitignore                                          |  3 ++-
 src/apps/doc/consts.py                              | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------------
 src/apps/doc/management/commands/doc_ocr_process.py |  7 ++++---
 src/apps/doc/ocr/wb.py                              | 11 ++++++++++-
 4 files changed, 72 insertions(+), 39 deletions(-)

diff --git a/.gitignore b/.gitignore
index 35d4051..6a222c2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -34,4 +34,5 @@ data/*
 src/*.sh
 
 test.py
-ocr_test.py
\ No newline at end of file
+ocr_test.py
+ocr_test_2.py
\ No newline at end of file
diff --git a/src/apps/doc/consts.py b/src/apps/doc/consts.py
index 2947d70..75ecbe4 100644
--- a/src/apps/doc/consts.py
+++ b/src/apps/doc/consts.py
@@ -1,13 +1,6 @@
 PAGE_DEFAULT = 1
 PAGE_SIZE_DEFAULT = 10
 
-TRANS = str.maketrans('Cc((oODlLmAsSbg', '000000011345569')
-
-CARD_RATIO = 0.9
-UNKNOWN_CARD = '未知卡号'
-UNKNOWN_ROLE = '未知户名'
-DATE_FORMAT = ['%Y年%m月%d日', '%Y/%m/%d', '%Y-%m-%d', '%Y%m%d']
-
 FIXED_APPLICATION_ID_PREFIX = 'CH-S'
 
 DOC_SCHEME_LIST = ['ACCEPTANCE', 'SETTLEMENT', 'CONTRACT MANAGEMENT']
@@ -19,6 +12,8 @@ SPLIT_STR = '_'
 BUSINESS_TYPE_LIST = [HIL_PREFIX, AFC_PREFIX]
 HIL_SET = {'HIL', 'HIl', 'HiL', 'Hil', 'hIL', 'hIl', 'hiL', 'hil', 'CO00002'}
 
+# -------EDMS相关---------------------------------------------------------------------------------------------------
+
 SESSION_PREFIX = 'FHLSID'
 CUSTOM_CLIENT = 'CustomClient'
 FIXED_TOKEN = '00000000-0000-0000-0000-000000000000'
@@ -40,13 +35,23 @@ DEALER_CODE_META_FIELD_id = 13
 BUSINESS_TYPE_META_FIELD_id = 93
 DEALER_CODE = 'ocr_situ_group'
 
+# ---------银行流水模板相关--------------------------------------------------------------------------------------------
+
+TRANS = str.maketrans('Cc((oODlLmAsSbg', '000000011345569')
+
+CARD_RATIO = 0.9
+UNKNOWN_CARD = '未知卡号'
+UNKNOWN_ROLE = '未知户名'
+DATE_FORMAT = ['%Y年%m月%d日', '%Y/%m/%d', '%Y-%m-%d', '%Y%m%d']
+
 AMOUNT_COL_TITLE_SET = {"交易金额", "金额", "收入/支出金额", "发生额"}
 OVERAGE_COL_TITLE_SET = {"账户余额", "余额"}
 PROOF_COL_TITLE = '核对结果'
 PROOF_RES = ('对', '错')
 META_SHEET_TITLE = '关键信息提取和展示'
 
-FIXED_HEADERS = ('记账日期', '记账时间', '金额', '余额', '交易名称', '附言', '对方账户名', '对方卡号/账号', '对方开户行', '核对结果', '借贷', '收入', '支出')
+FIXED_HEADERS = ('记账日期', '记账时间', '金额', '余额', '交易名称', '附言', '对方账户名', '对方卡号/账号',
+                 '对方开户行', '核对结果', '借贷', '收入', '支出')
 FIXED_COL_AMOUNT = len(FIXED_HEADERS)
 BASE_HEADERS_MAPPING = {label: idx+1 for idx, label in enumerate(FIXED_HEADERS)}
 BORROW_HEADER_COL = BASE_HEADERS_MAPPING['借贷']
@@ -375,32 +380,6 @@ HEADERS_MAPPING.update(
 # ]
 
 # {
-#     "0": "全表格-中国农业银行个人账户明细",
-#     "1": "全表格-中国银行",
-#     "2": "全表格-北京银行",
-#     "3": "全表格-工商银行",
-#     "4": "全表格-建设银行",
-#     "5": "部分格线-横版-中信银行账户交易明细",
-#     "6": "部分格线-横版-中信银行账户交易明细特殊",
-#     "7": "部分格线-竖版-中国农业银行",
-#     "8": "部分格线-竖版-中国农业银行分账户(窄页)",
-#     "9": "部分格线-竖版-平安电子账单"
-# }
-
-# CLASSIFY_LIST = [
-#     ('农业银行', (1, None, 3, 5, None, 8, 7, 6, None, None, None, None, None)),
-#     ('中国银行', (1, 2, 4, 5, 6, 9, 10, 11, 12, None, None, None, None)),
-#     ('北京银行', (1, None, 4, 5, None, 2, 6, 7, None, None, 3, None, None)),
-#     ('工商银行', (1, None, 9, 10, None, 7, None, None, None, None, None, None, None)),
-#     ('建设银行', (None, None, None, None, None, 2, None, None, None, None, None, None, None)),
-#     ('中信银行', (1, None, None, 5, None, 2, 6, 7, 8, None, None, 3, 4)),
-#     ('中信银行', (1, None, None, 5, None, 2, 6, 7, 8, None, None, 3, 4)),
-#     ('农业银行', (1, None, 3, 4, None, 2, None, 5, None, None, None, None, None)),
-#     ('农业银行', (1, None, 3, 4, None, 2, None, 5, None, None, None, None, None)),
-#     ('平安电子账单', (2, None, 5, 6, None, 4, None, None, None, None, None, None, None)),
-# ]
-
-# {
 #     "0":"其他",
 #     "1":"普通打印-全表格-中国农业银行",
 #     "2":"普通打印-全表格-中国银行",
@@ -456,3 +435,46 @@ CLASSIFY_LIST = [
     ('邮储银行', (2, None, 5, 6, None, 4, None, 7, None, None, None, None, None)),
     ('邮储银行', (2, None, 5, 6, None, 4, None, 7, None, None, None, None, None)),
 ]
+
+# ----------license相关------------------------------------------------------------------------------------------------
+# 营业执照
+BL_KEY = 'bl'
+# 二手车发票
+UCI_KEY = 'uci'
+# 港澳台通行证
+EEP_KEY = 'eep'
+# 行驶证
+DL_KEY = 'dl'
+# 护照
+PP_KEY = 'pp'
+# 银行卡
+BC_KEY = 'bc'
+# 身份证
+IC_KEY = 'ic'
+# 机动车登记证书
+MVC_KEY = 'mvc'
+# 机动车销售统一发票
+MVI_KEY = 'mvi'
+# 增值税发票
+VAT_KEY = 'vat'
+
+LICENSE_ORDER = ((MVI_KEY, '机动车销售统一发票'),
+                 (IC_KEY, '身份证'),
+                 (BC_KEY, '银行卡'),
+                 (BL_KEY, '营业执照'),
+                 (UCI_KEY, '二手车发票'),
+                 (EEP_KEY, '港澳台通行证'),
+                 (DL_KEY, '行驶证'),
+                 (PP_KEY, '护照'),
+                 (MVC_KEY, '机动车登记证书'),
+                 (VAT_KEY, '增值税发票'))
+
+BC_FIELD = (('CardNum', '银行卡号'),
+            ('BankName', '发卡行名称'),
+            ('CardName', '银行卡名称'),
+            ('BankCode', '发卡行代号'),
+            ('CardType', '银行卡类型'),
+            ('Date', '日期'))
+
+SUCCESS_CODE_SET = {'0', 0}
+
diff --git a/src/apps/doc/management/commands/doc_ocr_process.py b/src/apps/doc/management/commands/doc_ocr_process.py
index d343e24..fac067e 100644
--- a/src/apps/doc/management/commands/doc_ocr_process.py
+++ b/src/apps/doc/management/commands/doc_ocr_process.py
@@ -236,7 +236,7 @@ class Command(BaseCommand, LoggerMixin):
                     merged_bs_summary[main_card]['sheet'].extend(bs_summary[card]['sheet'])
                     merged_bs_summary[main_card]['role'].extend(bs_summary[card]['role'])
                     merged_bs_summary[main_card]['role_set'].update(bs_summary[card]['role_set'])
-                    merged_bs_summary[main_card]['code'].extend(bs_summary[card]['sheet'])
+                    merged_bs_summary[main_card]['code'].extend(bs_summary[card]['code'])
                     merged_bs_summary[main_card]['print_time'].extend(bs_summary[card]['print_time'])
                     merged_bs_summary[main_card]['start_date'].extend(bs_summary[card]['start_date'])
                     merged_bs_summary[main_card]['end_date'].extend(bs_summary[card]['end_date'])
@@ -310,7 +310,7 @@ class Command(BaseCommand, LoggerMixin):
                     if role in card_summary['role_set']:
                         merge_role.append(role)
                         card_summary['sheet'].extend(summary['sheet'])
-                        card_summary['code'].extend(summary['sheet'])
+                        card_summary['code'].extend(summary['code'])
                         card_summary['print_time'].extend(summary['print_time'])
                         card_summary['start_date'].extend(summary['start_date'])
                         card_summary['end_date'].extend(summary['end_date'])
@@ -340,7 +340,8 @@ class Command(BaseCommand, LoggerMixin):
     # TODO 协程异步发送OCR请求
     # TODO 异常邮件通知
     # TODO 数据库断联问题
-    # TODO 非流水证件处理,Excel模板
+    # TODO 非流水证件处理
+    # TODO EDMS API GATEWAY
     def handle(self, *args, **kwargs):
         sleep_second = int(conf.SLEEP_SECOND)
         max_sleep_second = int(conf.MAX_SLEEP_SECOND)
diff --git a/src/apps/doc/ocr/wb.py b/src/apps/doc/ocr/wb.py
index 027f221..154ee8c 100644
--- a/src/apps/doc/ocr/wb.py
+++ b/src/apps/doc/ocr/wb.py
@@ -358,5 +358,14 @@ class BSWorkbook(Workbook):
             for sheet in summary['sheet']:
                 self.remove(self.get_sheet_by_name(sheet))
 
+    def license_rebuild(self, license_summary):
+        for en_key, cn_key in consts.LICENSE_ORDER:
+            ws = self.create_sheet(cn_key)
+            for bl in license_summary.get(en_key, []):
+                for bl_field in bl:
+                    ws.append(bl_field)
+                ws.append((None, ))
+
     def rebuild(self, bs_summary, license_summary):
-        self.bs_rebuild(bs_summary)
\ No newline at end of file
+        self.bs_rebuild(bs_summary)
+        # self.license_rebuild(license_summary)
--
libgit2 0.24.0