802a919c by 周伟奇

fix merge

2 parents c61cf5a2 12a2684f
......@@ -6,4 +6,5 @@ urlpatterns = [
path(r'v1', views.CompareView.as_view()),
path(r'settlement/v1', views.SECompareView.as_view()),
path(r'offline/v1', views.CompareOfflineView.as_view()),
path(r'result', views.CompareResultView.as_view()),
]
......
......@@ -12,6 +12,7 @@ FIXED_APPLICATION_ID_PREFIX = 'CH-S'
DOC_SCHEME_LIST = ['ACCEPTANCE', 'SETTLEMENT', 'CONTRACTMANAGEMENT']
DATA_SOURCE_LIST = ['POS', 'EAPP', 'ECONTRACT']
COMPARE_DOC_SCHEME_LIST = ['CA', 'SE']
HIL_PREFIX = 'HIL'
AFC_PREFIX = 'AFC'
......@@ -1055,13 +1056,13 @@ IC_RES_MAPPING = {
1: '真实证件',
}
# ----------------- compare ---------------------
# ----------------- CA compare ---------------------
ENTITY = ['HIL', 'AFC']
CUSTOMER_TYPE = ['TCCOR', 'TCDAS', 'TCFRE', 'TCIAS', 'TCIND', 'TCSEP', 'TCURE']
NO_COMPARE_CUSTOMER_TYPE = ['TCFRE', 'TCIND']
VEHICLE_STATUS = ['PCUSD', 'PCNEW']
APPLICANT_TYPE = ['COAPP', 'CUSTR', 'GAUTR1', 'GAUTR2']
APPLICANT_TYPE = ['CUSTR', 'COAPP', 'GAUTR1', 'GAUTR2']
ID_TYPE = ['ITARI', 'ITHKM', 'ITPRC', 'ITPSP', 'ITRES', 'ITTID', 'ITUSC', 'ITCCU']
SECOND_ID_TYPE = ['ITARI', 'ITHKM', 'ITPRC', 'ITPSP', 'ITRES', 'ITTID']
SUB_TYPE = ['CSIBM', 'CSOTH', 'CSSME']
......@@ -1087,22 +1088,38 @@ EEP_OCR_FIELD = 'eep_ocr'
DL_OCR_FIELD = 'dl_ocr'
PP_OCR_FIELD = 'pp_ocr'
MVC_OCR_FIELD = 'mvc_ocr'
MVI_OCR_FIELD = 'mvi_ocr'
BC_OCR_FIELD = 'bc_ocr'
UCI_OCR_FIELD = 'uci_ocr'
DDA_OCR_FIELD = 'bs_ocr'
RESULT_MAPPING = {
# MVI_CLASSIFY: 'mvi_ocr',
MVI_CLASSIFY: MVI_OCR_FIELD,
IC_CLASSIFY: IC_OCR_FIELD,
RP_CLASSIFY: RP_OCR_FIELD,
# BC_CLASSIFY: 'bc_ocr',
BC_CLASSIFY: BC_OCR_FIELD,
BL_CLASSIFY: BL_OCR_FIELD,
# UCI_CLASSIFY: 'uci_ocr',
UCI_CLASSIFY: UCI_OCR_FIELD,
EEP_CLASSIFY: EEP_OCR_FIELD,
DL_CLASSIFY: DL_OCR_FIELD,
PP_CLASSIFY: PP_OCR_FIELD,
MVC_CLASSIFY: MVC_OCR_FIELD,
DDA_CLASSIFY: DDA_OCR_FIELD,
# VAT_CLASSIFY: 'vat_ocr',
}
COMPARE_FIELDS = (IC_OCR_FIELD, RP_OCR_FIELD, BL_OCR_FIELD, EEP_OCR_FIELD, DL_OCR_FIELD, PP_OCR_FIELD, MVC_OCR_FIELD)
COMPARE_FIELDS = (MVI_OCR_FIELD,
IC_OCR_FIELD,
RP_OCR_FIELD,
BC_OCR_FIELD,
BL_OCR_FIELD,
UCI_OCR_FIELD,
EEP_OCR_FIELD,
DL_OCR_FIELD,
PP_OCR_FIELD,
MVC_OCR_FIELD,
DDA_OCR_FIELD,
)
# 身份证
ITPRC = [
......@@ -1253,5 +1270,167 @@ DDA_MAPPING = [
DDA_PRO_MIN = 0.6
# ----------------------- SE compare -----------------------
SE_FIRST_ID_FIELD = ['customerName', 'idNum', 'dateOfBirth', 'idExpiryDate']
SE_ID_CARD_FIELD = ['customerName', 'idNum', 'dateOfBirth', 'idExpiryDate', 'hukouProvince', 'hukouCity']
SE_SECOND_ID_FIELD = [
('customerName', 'customerName'),
('secondIdNum', 'idNum'),
]
SE_CORPORATE_ID_FIELD = [
('legalRepName', 'customerName'),
('firstIdNo', 'idNum')
]
SE_SEP_FIELD = [
('companyName', 'companyName'),
('customerName', 'legalRepName'),
('registeredCapital', 'registeredCapital'),
('selfEmployedSubType', 'organizationType')
]
SE_CORPORATE_FIELD = ['companyName', 'legalRepName', 'businessLicenseNo', 'organizationCreditCode',
'taxRegistrationCertificateNo', 'establishmentDate', 'businessLicenseDueDate']
SE_CORPORATE_ALL_FIELD = ['companyName', 'legalRepName', 'firstIdNo', 'businessLicenseNo', 'organizationCreditCode',
'taxRegistrationCertificateNo', 'establishmentDate', 'businessLicenseDueDate']
SE_NEW_FIELD = ['vinNo', 'dealer', 'vehicleTransactionAmount']
SE_USED_FIELD = ['vinNo', 'vehicleTransactionAmount']
SE_NEW_ADD_FIELD = ['customerName', 'idNum', 'dateOfInvoice']
SE_GB_NEW_FIELD = ['vinNo']
SE_GB_USED_FIELD = ['customerName', 'idNum', 'date']
SE_BANK_FIELD = ['accountNo', 'bankName']
SE_DDA_FIELD = ['applicationId(1)', 'applicationId(2)', 'bankName', 'companyName', 'customerName', 'idNum', 'accountHolderName', 'accountNo']
HIL_COMPANY_NAME = '先锋国际融资租赁有限公司'
AFC_COMPANY_NAME = '宝马汽车金融(中国)有限公司'
ID_EN = 'PRC ID'
PP_EN = 'Passport'
EEP_EN = 'Resident Permit to Mainland'
RP_EN = 'Resident ID'
BL_EN = 'Business permit'
MVI_EN = 'newCar Invoice'
UCI_EN = 'usedCar Invoice'
MVC_EN = 'Green Book'
BC_EN = 'Bank Card'
DDA_EN = 'DDA'
ID_COMPARE_LOGIC = {
'customerName': ('姓名', 'se_name_compare', {}),
'idNum': ('公民身份号码', 'se_common_compare', {}),
'dateOfBirth': ('出生年月', 'se_date_compare', {'input_replace': ''}),
'idExpiryDate': ('有效期限', 'se_date_compare', {'long': True, 'ocr_split': True, 'input_replace': ''}),
'hukouProvince': ('住址', 'se_contain_compare', {}),
'hukouCity': ('住址', 'se_contain_compare', {}),
}
PP_COMPARE_LOGIC = {
'customerName': ('英文姓名', 'se_name_compare', {'is_passport': True}),
'idNum': ('护照号码', 'se_common_compare', {}),
'dateOfBirth': ('出生日期', 'se_date_compare', {'input_replace': ''}),
'idExpiryDate': ('有效期至', 'se_date_compare', {'input_replace': ''}),
}
EEP_COMPARE_LOGIC = {
'customerName': ('中文名', 'se_common_compare', {}),
'idNum': ('证件号码', 'se_common_compare', {}),
'dateOfBirth': ('出生日期', 'se_date_compare', {'input_replace': '.'}),
'idExpiryDate': ('有效期限', 'se_date_compare', {'ocr_split': True, 'input_replace': '.'}),
}
RP_COMPARE_LOGIC = {
'customerName': ('姓名', 'se_name_compare', {}),
'idNum': ('公民身份号码', 'se_common_compare', {}),
'dateOfBirth': ('出生年月', 'se_date_compare', {'input_replace': ''}),
'idExpiryDate': ('有效期限', 'se_date_compare', {'ocr_split': True, 'input_replace': ''}),
'hukouProvince': ('住址', 'se_contain_compare', {}),
'hukouCity': ('住址', 'se_contain_compare', {}),
}
BL_COMPARE_LOGIC = {
'companyName': ('企业名称', 'se_company_compare', {}),
'legalRepName': ('经营者姓名', 'se_name_compare', {}),
'firstIdNo': ('注册号', 'se_common_compare', {}),
'businessLicenseNo': ('注册号', 'se_common_compare', {}),
'organizationCreditCode': ('注册号', 'se_common_compare', {}),
'taxRegistrationCertificateNo': ('注册号', 'se_common_compare', {}),
'establishmentDate': ('成立日期', 'se_date_compare', {'ocr_replace': True}),
'businessLicenseDueDate': ('营业期限', 'se_date_compare', {'ocr_split': True, 'long': True, 'ocr_replace': True}),
'organizationType': ('企业类型', 'se_type_compare', {}),
'registeredCapital': ('注册资本', 'se_rmb_compare', {}),
}
MVI_COMPARE_LOGIC = {
'vinNo': ('车辆识别代码', 'se_common_compare', {}),
'dealer': ('销方名称', 'se_common_compare', {}),
'vehicleTransactionAmount': ('价税合计小写', 'se_amount_compare', {}),
'customerName': ('购方名称', 'se_name_compare', {}),
'idNum': ('购买方身份证号或组织机构代码', 'se_common_compare', {}),
'dateOfInvoice': ('开票日期', 'se_date_compare', {}),
}
UCI_COMPARE_LOGIC = {
'vinNo': ('车架号', 'se_common_compare', {}),
'vehicleTransactionAmount': ('价税合计小写', 'se_amount_compare', {}),
'customerName': ('购方名称', 'se_name_compare', {}),
'idNum': ('购方纳税人识别号', 'se_common_compare', {}),
}
MVC_COMPARE_LOGIC = {
'vinNo': ('9.车辆识别代号/车架号', 'se_common_compare', {}),
# 'customerName': ('姓名/名称', ),
# 'idNum': ('身份证明名称/号码', ),
# 'date': ('转移登记日期', ),
}
BC_COMPARE_LOGIC = {
'accountNo': ('CardNum', 'se_common_compare', {}),
'bankName': ('BankName', 'se_common_compare', {}),
}
DDA_COMPARE_LOGIC = {
'applicationId(1)': ('check_Num', ),
'applicationId(2)': ('check_Num', ),
'bankName': ('to_bank', ),
'companyName': ('to_company', ),
'customerName': (DDA_IC_NAME, ),
'idNum': (DDA_IC_ID, ),
'accountHolderName': (DDA_BC_NAME, ),
'accountNo': (DDA_BC_ID, ),
}
# MVC_OCR_FIELD = 'mvc_ocr'
SE_COMPARE_FIELD = {
ID_EN: (IC_OCR_FIELD, ID_COMPARE_LOGIC, True),
PP_EN: (PP_OCR_FIELD, PP_COMPARE_LOGIC, False),
EEP_EN: (EEP_OCR_FIELD, EEP_COMPARE_LOGIC, False),
RP_EN: (RP_OCR_FIELD, RP_COMPARE_LOGIC, True),
BL_EN: (BL_OCR_FIELD, BL_COMPARE_LOGIC, False),
MVI_EN: (MVI_OCR_FIELD, MVI_COMPARE_LOGIC, False),
UCI_EN: (UCI_OCR_FIELD, UCI_COMPARE_LOGIC, False),
MVC_EN: (MVC_OCR_FIELD, MVC_COMPARE_LOGIC, False),
BC_EN: (BC_OCR_FIELD, BC_COMPARE_LOGIC, False),
DDA_EN: (DDA_OCR_FIELD, DDA_COMPARE_LOGIC, False),
}
SE_FIRST_ID_FIELD_MAPPING = {
'ITPRC': (ID_EN, SE_ID_CARD_FIELD),
'ITPSP': (PP_EN, SE_FIRST_ID_FIELD),
'ITHKM': (EEP_EN, SE_FIRST_ID_FIELD),
'ITTID': (EEP_EN, SE_FIRST_ID_FIELD),
'ITRES': (RP_EN, SE_FIRST_ID_FIELD),
}
SE_SECOND_ID_FIELD_MAPPING = {
'ITPRC': (ID_EN, SE_SECOND_ID_FIELD),
'ITPSP': (PP_EN, SE_SECOND_ID_FIELD),
'ITHKM': (EEP_EN, SE_SECOND_ID_FIELD),
'ITTID': (EEP_EN, SE_SECOND_ID_FIELD),
'ITRES': (RP_EN, SE_SECOND_ID_FIELD),
}
HEAD_LIST = ['Info', 'Index', 'License', 'Field', 'Input', 'OCR', 'Result', 'Position', 'Image', 'errorType']
......
......@@ -23,7 +23,21 @@ from apps.doc.ocr.edms import EDMS, rh
from apps.doc.named_enum import KeywordsType, FailureReason, WorkflowName, ProcessName, RequestTeam, RequestTrigger
from apps.doc.exceptions import EDMSException, OCR1Exception, OCR2Exception, OCR4Exception
from apps.doc.ocr.wb import BSWorkbook
from apps.doc.models import DocStatus, HILDoc, AFCDoc, Keywords, HILOCRResult, AFCOCRResult, HILOCRReport, AFCOCRReport, DDARecords, IDBCRecords, Configs
from apps.doc.models import (
DocStatus,
HILDoc,
AFCDoc,
Keywords,
HILOCRResult,
AFCOCRResult,
AFCSEOCRResult,
HILOCRReport,
HILSEOCRResult,
AFCOCRReport,
DDARecords,
IDBCRecords,
Configs,
)
from celery_compare.tasks import compare
......@@ -990,16 +1004,22 @@ class Command(BaseCommand, LoggerMixin):
finally:
# TODO 识别结果存一张表,方便跑报表
# CA比对
if doc.document_scheme == consts.DOC_SCHEME_LIST[0] and len(license_summary) > 0:
# 比对
if len(license_summary) > 0 and doc.document_scheme != consts.DOC_SCHEME_LIST[2]:
try:
is_ca = True if doc.document_scheme == consts.DOC_SCHEME_LIST[0] else False
# 更新OCR累计识别结果表
result_class = HILOCRResult if business_type == consts.HIL_PREFIX else AFCOCRResult
if business_type == consts.HIL_PREFIX:
result_class = HILOCRResult if is_ca else HILSEOCRResult
else:
result_class = AFCOCRResult if is_ca else AFCSEOCRResult
res_obj = result_class.objects.filter(application_id=doc.application_id).first()
if res_obj is None:
res_obj = result_class()
res_obj.application_id = doc.application_id
for classify, field in consts.RESULT_MAPPING.items():
if not hasattr(res_obj, field):
continue
license_list = license_summary.get(classify)
if not license_list:
continue
......@@ -1009,8 +1029,6 @@ class Command(BaseCommand, LoggerMixin):
elif classify == consts.RP_CLASSIFY and rp_merge:
license_list[0].update(license_list[1])
license_list.pop(1)
if not hasattr(res_obj, field):
continue
old_res_str = getattr(res_obj, field)
if old_res_str is None:
last_res_str = json.dumps(license_list)
......@@ -1030,8 +1048,8 @@ class Command(BaseCommand, LoggerMixin):
# 触发比对
try:
# pass
compare.apply_async((doc.application_id, business_type, None, res_obj.id),
queue='queue_compare')
compare.apply_async((doc.application_id, business_type, None, res_obj.id,
is_ca), queue='queue_compare')
except Exception as e:
self.online_log.error(
'{0} [process error (comparison info send)] [task={1}] [error={2}]'.format(
......
......@@ -51,6 +51,7 @@ class ProcessName(NamedEnum):
IDCARD = (2, 'F2_IDReport')
DDA = (3, 'CL_S1_DDAConsolidation')
CACOMPARE = (4, 'S1_CA_DocumentVerify')
SE_CACOMPARE = (5, 'S1_SE_DocumentVerify')
class WorkflowName(NamedEnum):
......
......@@ -6,7 +6,7 @@ import datetime
import fitz
import shutil
from django.utils import timezone
from django.db.utils import IntegrityError
from django.http import HttpResponse
from django.db.models import Q
from rest_framework.permissions import IsAuthenticated
from webargs import fields, validate
......@@ -16,7 +16,21 @@ from common import response
from common.mixins import GenericView
from common.tools.file_tools import file_write
from common.redis_cache import redis_handler as rh
from .models import DocStatus, PriorityApplication, GCAPRecords, AFCComparisonInfo, HILComparisonInfo, AFCCompareOfflineReport, HILCompareOfflineReport
from .models import (
DocStatus,
PriorityApplication,
GCAPRecords,
AFCComparisonInfo,
AFCSEComparisonInfo,
HILComparisonInfo,
HILSEComparisonInfo,
AFCCompareOfflineReport,
HILCompareOfflineReport,
AFCCACompareResult,
AFCSECompareResult,
HILCACompareResult,
HILSECompareResult,
)
from .mixins import DocHandler
from . import consts
from apps.account.authentication import OAuth2AuthenticationWithUser
......@@ -257,6 +271,13 @@ doc_list_args = {
'create_time_end': fields.Date(required=False),
}
compare_result_args = {
'entity': fields.Str(required=True, validate=validate.OneOf(consts.BUSINESS_TYPE_LIST)),
'scheme': fields.Str(required=True, validate=validate.OneOf(consts.COMPARE_DOC_SCHEME_LIST)),
'id': fields.Int(required=False, validate=lambda val: val >= 1),
'case_id': fields.Str(required=True, validate=validate.Length(max=64)),
}
upload_pdf_args = {
'pdf_file': fields.Raw(required=True),
}
......@@ -474,7 +495,8 @@ class CompareView(GenericView):
corporate_cus_info=corporate_cus_info,
)
# 触发比对
compare.apply_async((application_id, business_type, uniq_seq, None), queue='queue_compare')
compare.apply_async((application_id, business_type, uniq_seq, None, True),
queue='queue_compare')
return response.ok()
post.openapi_doc = '''
......@@ -504,7 +526,38 @@ class SECompareView(GenericView):
# pos上传比对信息接口 SE
@use_args(se_compare_args, location='data')
def post(self, request, args):
self.running_log.info('se compare in')
# 存库
content = args.get('content', {})
uniq_seq = content.get('uniqSeq')
business_type = content.get('applicationEntity')
application_id = content.get('applicationId')
individual_cus_info = json.dumps(content.get('individualCusInfo'))
vehicle_info = json.dumps(content.get('vehicleInfo'))
insurance_info = json.dumps(content.get('insuranceInfo'))
bank_info = json.dumps(content.get('bankInfo'))
quotationt_info = json.dumps(content.get('quotationtInfo'))
corporate_cus_info = json.dumps(content.get('corporateCusInfo')) if isinstance(
content.get('corporateCusInfo'), dict) else None
comparison_class = HILSEComparisonInfo if business_type in consts.HIL_SET else AFCSEComparisonInfo
comparison_class.objects.create(
uniq_seq=uniq_seq,
application_id=application_id,
application_version=content.get('applicationVersion'),
customer_type=content.get('customerType'),
first_submmison_date=content.get('firstSubmmisonDate'),
property_doc_policy=content.get('propertyDocumentPolicy', None),
individual_cus_info=individual_cus_info,
corporate_cus_info=corporate_cus_info,
vehicle_info=vehicle_info,
insurance_info=insurance_info,
bank_info=bank_info,
quotationt_info=quotationt_info
)
# 触发比对
compare.apply_async((application_id, business_type, uniq_seq, None, False),
queue='queue_compare')
return response.ok()
post.openapi_doc = '''
......@@ -695,3 +748,59 @@ class DocView(GenericView, DocHandler):
is_priority, enqueue_res))
data = {'excel_path': os.path.join(save_dir_path, '{0}.xlsx'.format(doc.id))}
return response.ok(data=data)
class CompareResultView(GenericView):
# 获取比对结果
@use_args(compare_result_args, location='querystring')
def get(self, request, args):
result_id = args.get('id', None)
entity = args.get('entity')
scheme = args.get('scheme')
case_id = args.get('case_id')
if entity == consts.HIL_PREFIX:
result_table = HILCACompareResult if scheme == consts.COMPARE_DOC_SCHEME_LIST[0] else HILSECompareResult
else:
result_table = AFCCACompareResult if scheme == consts.COMPARE_DOC_SCHEME_LIST[0] else AFCSECompareResult
if result_id is None:
result_str_list = result_table.objects.filter(id=result_id).values_list('result', flat=True)
else:
result_str_list = result_table.objects.filter(application_id=case_id).values_list('result', flat=True)
if len(result_str_list) == 0:
compare_result_list = []
else:
compare_result_list = json.loads(result_str_list[0])
if len(compare_result_list) == 0:
body_html = "<h1>没有比对结果</h1>"
else:
head_content = ''.join(['<th>{0}</th>'.format(head_name) for head_name in consts.HEAD_LIST])
head_html = '<tr>{0}</tr>'.format(head_content)
row_html_list = []
for row_dict in compare_result_list:
row_list = [row_dict.get(head, '') for head in consts.HEAD_LIST]
row_content = ''.join(['<td>{0}</td>'.format(row_str) for row_str in row_list])
row_html = '<tr>{0}</tr>'.format(row_content)
row_html_list.append(row_html)
content_html = ''.join(row_html_list)
body_html = '<table border="1">{0}{1}</table>'.format(head_html, content_html)
html = """
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>比对结果</title>
</head>
<body>
{0}
</body>
</html>
""".format(body_html)
return HttpResponse(html)
# return response.ok(data=compare_result)
......
......@@ -136,6 +136,85 @@ class Comparison:
return self.build_res(input_str == compare_str), compare_str
def se_name_compare(self, input_str, ocr_str, **kwargs):
if kwargs.get('is_passport'):
input_tmp = input_str.upper().replace(' ', '')
ocr_tmp = ocr_str.upper().replace(' ', '')
if input_tmp.find(ocr_tmp) == -1:
return self.RESULT_N
else:
return self.RESULT_Y
else:
# if re.search(r'[a-zA-Z]]', input_str):
# return self.RESULT_NA, ocr_str
input_s = input_str.translate(self.TRANS)
ocr_s = ocr_str.translate(self.TRANS)
return self.build_res(input_s == ocr_s)
def se_common_compare(self, input_str, ocr_str, **kwargs):
return self.build_res(input_str == ocr_str)
def se_date_compare(self, input_str, ocr_str, **kwargs):
if kwargs.get('long', False):
if '长期' in ocr_str or '永久' in ocr_str:
if input_str in ['2099-12-31', '2099-01-01', '2999-12-31', '2999-01-01']:
return self.RESULT_Y
else:
return self.RESULT_N
if kwargs.get('ocr_split', False):
if '至' in ocr_str:
ocr_str = ocr_str.split('至')[-1]
elif '-' in ocr_str:
ocr_str = ocr_str.split('-')[-1]
if kwargs.get('ocr_replace', False):
ocr_str = ocr_str.replace('年', '-').replace('月', '-').replace('日', '')
if kwargs.get('input_replace') is not None:
input_str = input_str.replace('-', kwargs.get('input_replace'))
return self.build_res(input_str == ocr_str)
def se_contain_compare(self, input_str, ocr_str, **kwargs):
if ocr_str.find(input_str) == -1:
return self.RESULT_N
else:
return self.RESULT_Y
def se_amount_compare(self, input_str, ocr_str, **kwargs):
if input_str == ocr_str:
return self.RESULT_Y
else:
try:
float_input = float(input_str)
float_ocr = float(ocr_str)
except Exception as e:
return self.RESULT_N
else:
return self.build_res(float_ocr == float_input)
def se_company_compare(self, input_str, ocr_str, **kwargs):
input_tmp = re.sub(self.re_obj, '', input_str).strip()
ocr_tmp = re.sub(self.re_obj, '', ocr_str).strip()
return self.build_res(input_tmp == ocr_tmp)
def se_rmb_compare(self, input_str, ocr_str, **kwargs):
try:
ocr_lower = rmb_handler.to_rmb_lower(ocr_str)
res = self.build_res(float(input_str) == ocr_lower)
# input_rmb_upper = to_rmb_upper(float(input_str))
# res = self.build_res(input_rmb_upper == ocr_str)
except Exception as e:
return self.RESULT_N
else:
return res
def se_type_compare(self, input_str, ocr_str, **kwargs):
for map_tuple in self.TYPE_MAPPING:
if re.search(map_tuple[0], ocr_str) is not None:
compare_str = map_tuple[1]
break
else:
compare_str = self.CSOTH
return self.build_res(input_str == compare_str)
cp = Comparison()
......
import pyodbc
hil_sql = """
create table hil_se_comparison_info
(
id bigint identity primary key,
uniq_seq nvarchar(128) not null,
application_id nvarchar(64) not null,
application_version tinyint default 0 not null,
customer_type nvarchar(16) not null,
first_submmison_date nvarchar(16) not null,
property_doc_policy nvarchar(16),
individual_cus_info nvarchar(max) not null,
corporate_cus_info nvarchar(max),
vehicle_info nvarchar(max) not null,
insurance_info nvarchar(max) not null,
bank_info nvarchar(max) not null,
quotationt_info nvarchar(max) not null,
update_time datetime not null,
create_time datetime not null
);
create index hil_se_comparison_info_application_id_index
on hil_se_comparison_info (application_id);
create index hil_se_comparison_info_create_time_index
on hil_se_comparison_info (create_time);
create index hil_se_comparison_info_uniq_seq_index
on hil_se_comparison_info (uniq_seq);
create table hil_se_ocr_result
(
id int identity primary key,
application_id nvarchar(64) not null,
bs_ocr nvarchar(max),
mvi_ocr nvarchar(max),
ic_ocr nvarchar(max),
rp_ocr nvarchar(max),
bc_ocr nvarchar(max),
bl_ocr nvarchar(max),
uci_ocr nvarchar(max),
eep_ocr nvarchar(max),
dl_ocr nvarchar(max),
pp_ocr nvarchar(max),
mvc_ocr nvarchar(max),
vat_ocr nvarchar(max),
update_time datetime not null,
create_time datetime not null
);
create unique index hil_se_ocr_result_application_id_uindex
on hil_se_ocr_result (application_id);
create table hil_ca_compare_result
(
id int identity primary key,
application_id nvarchar(64) not null,
is_finish bit default 0 not null,
compare_count smallint default 0 not null,
failed_count smallint default 0 not null,
reason1_count smallint default 0 not null,
reason2_count smallint default 0 not null,
reason3_count smallint default 0 not null,
reason4_count smallint default 0 not null,
reason5_count smallint default 0 not null,
reason6_count smallint default 0 not null,
reason7_count smallint default 0 not null,
reason8_count smallint default 0 not null,
reason9_count smallint default 0 not null,
reason10_count smallint default 0 not null,
result nvarchar(max),
update_time datetime not null,
create_time datetime not null
);
create unique index hil_ca_compare_result_application_id_uindex
on hil_ca_compare_result (application_id);
create index hil_ca_compare_result_update_time_index
on hil_ca_compare_result (update_time);
create table hil_se_compare_result
(
id int identity primary key,
application_id nvarchar(64) not null,
is_finish bit default 0 not null,
compare_count smallint default 0 not null,
failed_count smallint default 0 not null,
reason1_count smallint default 0 not null,
reason2_count smallint default 0 not null,
reason3_count smallint default 0 not null,
reason4_count smallint default 0 not null,
reason5_count smallint default 0 not null,
reason6_count smallint default 0 not null,
reason7_count smallint default 0 not null,
reason8_count smallint default 0 not null,
reason9_count smallint default 0 not null,
reason10_count smallint default 0 not null,
result nvarchar(max),
update_time datetime not null,
create_time datetime not null
);
create unique index hil_se_compare_result_application_id_uindex
on hil_se_compare_result (application_id);
create index hil_se_compare_result_update_time_index
on hil_se_compare_result (update_time);
"""
afc_sql = """
create table afc_se_comparison_info
(
id bigint identity primary key,
uniq_seq nvarchar(128) not null,
application_id nvarchar(64) not null,
application_version tinyint default 0 not null,
customer_type nvarchar(16) not null,
first_submmison_date nvarchar(16) not null,
property_doc_policy nvarchar(16),
individual_cus_info nvarchar(max) not null,
corporate_cus_info nvarchar(max),
vehicle_info nvarchar(max) not null,
insurance_info nvarchar(max) not null,
bank_info nvarchar(max) not null,
quotationt_info nvarchar(max) not null,
update_time datetime not null,
create_time datetime not null
);
create index afc_se_comparison_info_application_id_index
on afc_se_comparison_info (application_id);
create index afc_se_comparison_info_create_time_index
on afc_se_comparison_info (create_time);
create index afc_se_comparison_info_uniq_seq_index
on afc_se_comparison_info (uniq_seq);
create table afc_se_ocr_result
(
id int identity primary key,
application_id nvarchar(64) not null,
bs_ocr nvarchar(max),
mvi_ocr nvarchar(max),
ic_ocr nvarchar(max),
rp_ocr nvarchar(max),
bc_ocr nvarchar(max),
bl_ocr nvarchar(max),
uci_ocr nvarchar(max),
eep_ocr nvarchar(max),
dl_ocr nvarchar(max),
pp_ocr nvarchar(max),
mvc_ocr nvarchar(max),
vat_ocr nvarchar(max),
update_time datetime not null,
create_time datetime not null
);
create unique index afc_se_ocr_result_application_id_uindex
on afc_se_ocr_result (application_id);
create table afc_ca_compare_result
(
id int identity primary key,
application_id nvarchar(64) not null,
is_finish bit default 0 not null,
compare_count smallint default 0 not null,
failed_count smallint default 0 not null,
reason1_count smallint default 0 not null,
reason2_count smallint default 0 not null,
reason3_count smallint default 0 not null,
reason4_count smallint default 0 not null,
reason5_count smallint default 0 not null,
reason6_count smallint default 0 not null,
reason7_count smallint default 0 not null,
reason8_count smallint default 0 not null,
reason9_count smallint default 0 not null,
reason10_count smallint default 0 not null,
result nvarchar(max),
update_time datetime not null,
create_time datetime not null
);
create unique index afc_ca_compare_result_application_id_uindex
on afc_ca_compare_result (application_id);
create index afc_ca_compare_result_update_time_index
on afc_ca_compare_result (update_time);
create table afc_se_compare_result
(
id int identity primary key,
application_id nvarchar(64) not null,
is_finish bit default 0 not null,
compare_count smallint default 0 not null,
failed_count smallint default 0 not null,
reason1_count smallint default 0 not null,
reason2_count smallint default 0 not null,
reason3_count smallint default 0 not null,
reason4_count smallint default 0 not null,
reason5_count smallint default 0 not null,
reason6_count smallint default 0 not null,
reason7_count smallint default 0 not null,
reason8_count smallint default 0 not null,
reason9_count smallint default 0 not null,
reason10_count smallint default 0 not null,
result nvarchar(max),
update_time datetime not null,
create_time datetime not null
);
create unique index afc_se_compare_result_application_id_uindex
on afc_se_compare_result (application_id);
create index afc_se_compare_result_update_time_index
on afc_se_compare_result (update_time);
"""
hil_cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};', autocommit=True)
hil_cursor = hil_cnxn.cursor()
hil_cursor.execute(hil_sql)
hil_cursor.close()
hil_cnxn.close()
afc_cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};', autocommit=True)
afc_cursor = afc_cnxn.cursor()
afc_cursor.execute(afc_sql)
afc_cursor.close()
afc_cnxn.close()
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!