add bd compare
Showing
5 changed files
with
86 additions
and
1 deletions
| ... | @@ -1178,6 +1178,7 @@ DDA_OCR_FIELD = 'bs_ocr' | ... | @@ -1178,6 +1178,7 @@ DDA_OCR_FIELD = 'bs_ocr' |
| 1178 | HMH_OCR_FIELD = 'hmh_ocr' | 1178 | HMH_OCR_FIELD = 'hmh_ocr' |
| 1179 | JYPZ_OCR_FIELD = 'jypz_ocr' | 1179 | JYPZ_OCR_FIELD = 'jypz_ocr' |
| 1180 | HT_FIELD = 'ht_ocr' | 1180 | HT_FIELD = 'ht_ocr' |
| 1181 | BD_FIELD = 'bd_ocr' | ||
| 1181 | 1182 | ||
| 1182 | RESULT_MAPPING = { | 1183 | RESULT_MAPPING = { |
| 1183 | MVI_CLASSIFY: MVI_OCR_FIELD, | 1184 | MVI_CLASSIFY: MVI_OCR_FIELD, |
| ... | @@ -1195,6 +1196,7 @@ RESULT_MAPPING = { | ... | @@ -1195,6 +1196,7 @@ RESULT_MAPPING = { |
| 1195 | HMH_CLASSIFY: HMH_OCR_FIELD, | 1196 | HMH_CLASSIFY: HMH_OCR_FIELD, |
| 1196 | JYPZ_CLASSIFY: JYPZ_OCR_FIELD, | 1197 | JYPZ_CLASSIFY: JYPZ_OCR_FIELD, |
| 1197 | CONTRACT_CLASSIFY: HT_FIELD, | 1198 | CONTRACT_CLASSIFY: HT_FIELD, |
| 1199 | INSURANCE_CLASSIFY: BD_FIELD, | ||
| 1198 | } | 1200 | } |
| 1199 | 1201 | ||
| 1200 | CA_ADD_COMPARE_FIELDS = (IC_OCR_FIELD, BL_OCR_FIELD) | 1202 | CA_ADD_COMPARE_FIELDS = (IC_OCR_FIELD, BL_OCR_FIELD) |
| ... | @@ -1213,6 +1215,7 @@ COMPARE_FIELDS = (MVI_OCR_FIELD, | ... | @@ -1213,6 +1215,7 @@ COMPARE_FIELDS = (MVI_OCR_FIELD, |
| 1213 | HMH_OCR_FIELD, | 1215 | HMH_OCR_FIELD, |
| 1214 | JYPZ_OCR_FIELD, | 1216 | JYPZ_OCR_FIELD, |
| 1215 | HT_FIELD, | 1217 | HT_FIELD, |
| 1218 | BD_FIELD, | ||
| 1216 | ) | 1219 | ) |
| 1217 | 1220 | ||
| 1218 | # 身份证 | 1221 | # 身份证 |
| ... | @@ -1394,6 +1397,8 @@ SE_LAYOUT_VALUE = '旧版-旧打印、新版-新打印' | ... | @@ -1394,6 +1397,8 @@ SE_LAYOUT_VALUE = '旧版-旧打印、新版-新打印' |
| 1394 | SE_GB_NEW_FIELD = ['vinNo'] | 1397 | SE_GB_NEW_FIELD = ['vinNo'] |
| 1395 | SE_GB_USED_FIELD = ['customerName', 'idNum', 'date'] | 1398 | SE_GB_USED_FIELD = ['customerName', 'idNum', 'date'] |
| 1396 | SE_HMH_FIELD = ['借款人/承租人姓名', '借款人/承租人证件号', '申请号', '渠道', '签字'] | 1399 | SE_HMH_FIELD = ['借款人/承租人姓名', '借款人/承租人证件号', '申请号', '渠道', '签字'] |
| 1400 | SE_BD_FIELD = ['被保险人姓名', '被保险人证件号码', '车架号', '机动车损失保险金额', '第三者责任保险金额', '绝对免赔率', '保险起始日期', '保险截止日期', '保单章', '第一受益人', '保险费合计'] | ||
| 1401 | JDMPV_VALUE = ['-', '--', '0%', '0.00', '/', '0'] | ||
| 1397 | 1402 | ||
| 1398 | SE_BANK_FIELD = ['accountNo', 'bankName'] | 1403 | SE_BANK_FIELD = ['accountNo', 'bankName'] |
| 1399 | SE_DDA_FIELD = ['applicationId(1)', 'applicationId(2)', 'bankName', 'companyName', 'customerName', 'idNum', 'accountHolderName', 'accountNo'] | 1404 | SE_DDA_FIELD = ['applicationId(1)', 'applicationId(2)', 'bankName', 'companyName', 'customerName', 'idNum', 'accountHolderName', 'accountNo'] |
| ... | @@ -1502,6 +1507,7 @@ DDA_EN = 'DDA' | ... | @@ -1502,6 +1507,7 @@ DDA_EN = 'DDA' |
| 1502 | HMH_EN = 'Mortgage Waiver Letter' | 1507 | HMH_EN = 'Mortgage Waiver Letter' |
| 1503 | JYPZ_EN = 'Used Car Document' | 1508 | JYPZ_EN = 'Used Car Document' |
| 1504 | AFC_CONTRACT_EN = 'AFC Contract' | 1509 | AFC_CONTRACT_EN = 'AFC Contract' |
| 1510 | BD_EN = 'Insurance' | ||
| 1505 | 1511 | ||
| 1506 | SKIP_CARD = {SME_BL_EN} | 1512 | SKIP_CARD = {SME_BL_EN} |
| 1507 | 1513 | ||
| ... | @@ -1643,6 +1649,20 @@ HMH_COMPARE_LOGIC = { | ... | @@ -1643,6 +1649,20 @@ HMH_COMPARE_LOGIC = { |
| 1643 | '签字': ('借款人签字/盖章', 'se_common_compare', {}, '抵押登记豁免函签字需人工核查'), | 1649 | '签字': ('借款人签字/盖章', 'se_common_compare', {}, '抵押登记豁免函签字需人工核查'), |
| 1644 | } | 1650 | } |
| 1645 | 1651 | ||
| 1652 | BD_COMPARE_LOGIC = { | ||
| 1653 | '被保险人姓名': ('被保险人姓名', 'se_name_compare', {}, '保单被保险人姓名与系统不一致'), | ||
| 1654 | '被保险人证件号码': ('被保险人证件号码', 'se_common_compare', {}, '保单被保险人证件号码与系统不一致'), | ||
| 1655 | '车架号': ('车架号', 'se_common_compare', {}, '保单车架号与系统不一致'), | ||
| 1656 | '机动车损失保险金额': ('机动车损失保险金额', 'se_amount_lte_compare', {}, '保单车损险异常'), | ||
| 1657 | '第三者责任保险金额': ('机动车第三者责任保险金额', 'se_amount_lte_compare', {}, '保单三者险异常'), | ||
| 1658 | '绝对免赔率': ('机动车损失保险绝对免赔率/绝对免赔额', 'se_one_compare', {}, '保单无绝对免赔项'), | ||
| 1659 | '保险起始日期': ('保险起始日期', 'se_bd_date_compare', {'start': True}, '保单起始时间有误'), | ||
| 1660 | '保险截止日期': ('保险截止日期', 'se_bd_date_compare', {}, '保单截止时间有误'), | ||
| 1661 | '保单章': ('保单章', 'se_common_compare', {}, '保单无保单章'), | ||
| 1662 | '第一受益人': ('特别约定第一受益人', 'se_common_compare', {}, '保单第一受益人有误,需人工核查'), | ||
| 1663 | '保险费合计': ('保险费合计', 'se_amount_compare', {}, '保单保费疑似无法覆盖ASP保险融资'), | ||
| 1664 | } | ||
| 1665 | |||
| 1646 | HT_COMPARE_LOGIC = { | 1666 | HT_COMPARE_LOGIC = { |
| 1647 | '合同编号-每页': ('合同编号-每页', 'se_list_compare', {}, '合同编号与系统不一致'), | 1667 | '合同编号-每页': ('合同编号-每页', 'se_list_compare', {}, '合同编号与系统不一致'), |
| 1648 | '所购车辆价格-小写-重要条款': ('所购车辆价格-小写-重要条款', 'se_amount_str_compare', {}, '合同首页中车辆价格与系统不一致'), | 1668 | '所购车辆价格-小写-重要条款': ('所购车辆价格-小写-重要条款', 'se_amount_str_compare', {}, '合同首页中车辆价格与系统不一致'), |
| ... | @@ -1710,7 +1730,8 @@ SE_COMPARE_FIELD = { | ... | @@ -1710,7 +1730,8 @@ SE_COMPARE_FIELD = { |
| 1710 | DDA_EN: (DDA_OCR_FIELD, DDA_COMPARE_LOGIC, False), | 1730 | DDA_EN: (DDA_OCR_FIELD, DDA_COMPARE_LOGIC, False), |
| 1711 | HMH_EN: (HMH_OCR_FIELD, HMH_COMPARE_LOGIC, False), | 1731 | HMH_EN: (HMH_OCR_FIELD, HMH_COMPARE_LOGIC, False), |
| 1712 | JYPZ_EN: (JYPZ_OCR_FIELD, JYPZ_COMPARE_LOGIC, False), | 1732 | JYPZ_EN: (JYPZ_OCR_FIELD, JYPZ_COMPARE_LOGIC, False), |
| 1713 | AFC_CONTRACT_EN: (HT_FIELD, HT_COMPARE_LOGIC, False) | 1733 | AFC_CONTRACT_EN: (HT_FIELD, HT_COMPARE_LOGIC, False), |
| 1734 | BD_EN: (BD_FIELD, BD_COMPARE_LOGIC, False), | ||
| 1714 | } | 1735 | } |
| 1715 | 1736 | ||
| 1716 | 1737 | ... | ... |
| ... | @@ -314,6 +314,7 @@ class AFCOCRResult(models.Model): | ... | @@ -314,6 +314,7 @@ class AFCOCRResult(models.Model): |
| 314 | hmh_ocr = models.TextField(null=True, verbose_name="豁免函") | 314 | hmh_ocr = models.TextField(null=True, verbose_name="豁免函") |
| 315 | jypz_ocr = models.TextField(null=True, verbose_name="二手车交易凭证") | 315 | jypz_ocr = models.TextField(null=True, verbose_name="二手车交易凭证") |
| 316 | ht_ocr = models.TextField(null=True, verbose_name="AFC合同") | 316 | ht_ocr = models.TextField(null=True, verbose_name="AFC合同") |
| 317 | bd_ocr = models.TextField(null=True, verbose_name="保单") | ||
| 317 | 318 | ||
| 318 | update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间') | 319 | update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间') |
| 319 | create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') | 320 | create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') |
| ... | @@ -344,6 +345,7 @@ class HILOCRResult(models.Model): | ... | @@ -344,6 +345,7 @@ class HILOCRResult(models.Model): |
| 344 | hmh_ocr = models.TextField(null=True, verbose_name="豁免函") | 345 | hmh_ocr = models.TextField(null=True, verbose_name="豁免函") |
| 345 | jypz_ocr = models.TextField(null=True, verbose_name="二手车交易凭证") | 346 | jypz_ocr = models.TextField(null=True, verbose_name="二手车交易凭证") |
| 346 | ht_ocr = models.TextField(null=True, verbose_name="AFC合同") | 347 | ht_ocr = models.TextField(null=True, verbose_name="AFC合同") |
| 348 | bd_ocr = models.TextField(null=True, verbose_name="保单") | ||
| 347 | 349 | ||
| 348 | update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间') | 350 | update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间') |
| 349 | create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') | 351 | create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') |
| ... | @@ -373,6 +375,7 @@ class AFCSEOCRResult(models.Model): | ... | @@ -373,6 +375,7 @@ class AFCSEOCRResult(models.Model): |
| 373 | hmh_ocr = models.TextField(null=True, verbose_name="豁免函") | 375 | hmh_ocr = models.TextField(null=True, verbose_name="豁免函") |
| 374 | jypz_ocr = models.TextField(null=True, verbose_name="二手车交易凭证") | 376 | jypz_ocr = models.TextField(null=True, verbose_name="二手车交易凭证") |
| 375 | ht_ocr = models.TextField(null=True, verbose_name="AFC合同") | 377 | ht_ocr = models.TextField(null=True, verbose_name="AFC合同") |
| 378 | bd_ocr = models.TextField(null=True, verbose_name="保单") | ||
| 376 | 379 | ||
| 377 | update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间') | 380 | update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间') |
| 378 | create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') | 381 | create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') |
| ... | @@ -403,6 +406,7 @@ class HILSEOCRResult(models.Model): | ... | @@ -403,6 +406,7 @@ class HILSEOCRResult(models.Model): |
| 403 | hmh_ocr = models.TextField(null=True, verbose_name="豁免函") | 406 | hmh_ocr = models.TextField(null=True, verbose_name="豁免函") |
| 404 | jypz_ocr = models.TextField(null=True, verbose_name="二手车交易凭证") | 407 | jypz_ocr = models.TextField(null=True, verbose_name="二手车交易凭证") |
| 405 | ht_ocr = models.TextField(null=True, verbose_name="AFC合同") | 408 | ht_ocr = models.TextField(null=True, verbose_name="AFC合同") |
| 409 | bd_ocr = models.TextField(null=True, verbose_name="保单") | ||
| 406 | 410 | ||
| 407 | update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间') | 411 | update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间') |
| 408 | create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') | 412 | create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') | ... | ... |
This diff is collapsed.
Click to expand it.
| ... | @@ -363,6 +363,15 @@ class Comparison: | ... | @@ -363,6 +363,15 @@ class Comparison: |
| 363 | input_tmp = input_str.replace('元', '').replace(',', '') | 363 | input_tmp = input_str.replace('元', '').replace(',', '') |
| 364 | return self.build_res(ocr_tmp == input_tmp) | 364 | return self.build_res(ocr_tmp == input_tmp) |
| 365 | 365 | ||
| 366 | def se_amount_lte_compare(self, input_str, ocr_str, **kwargs): | ||
| 367 | try: | ||
| 368 | float_input = float(input_str) | ||
| 369 | float_ocr = float(ocr_str) | ||
| 370 | except Exception as e: | ||
| 371 | return self.RESULT_N | ||
| 372 | else: | ||
| 373 | return self.build_res(float_ocr >= float_input) | ||
| 374 | |||
| 366 | def se_amount_compare(self, input_str, ocr_str, **kwargs): | 375 | def se_amount_compare(self, input_str, ocr_str, **kwargs): |
| 367 | if input_str == ocr_str: | 376 | if input_str == ocr_str: |
| 368 | return self.RESULT_Y | 377 | return self.RESULT_Y |
| ... | @@ -375,6 +384,12 @@ class Comparison: | ... | @@ -375,6 +384,12 @@ class Comparison: |
| 375 | else: | 384 | else: |
| 376 | return self.build_res(float_ocr == float_input) | 385 | return self.build_res(float_ocr == float_input) |
| 377 | 386 | ||
| 387 | def se_one_compare(self, input_list, ocr_str, **kwargs): | ||
| 388 | if isinstance(input_list, list): | ||
| 389 | if ocr_str in input_list: | ||
| 390 | return self.RESULT_Y | ||
| 391 | return self.RESULT_N | ||
| 392 | |||
| 378 | def se_company_compare(self, input_str, ocr_str, **kwargs): | 393 | def se_company_compare(self, input_str, ocr_str, **kwargs): |
| 379 | input_tmp = re.sub(self.re_obj, '', input_str).strip() | 394 | input_tmp = re.sub(self.re_obj, '', input_str).strip() |
| 380 | ocr_tmp = re.sub(self.re_obj, '', ocr_str).strip() | 395 | ocr_tmp = re.sub(self.re_obj, '', ocr_str).strip() |
| ... | @@ -439,6 +454,24 @@ class Comparison: | ... | @@ -439,6 +454,24 @@ class Comparison: |
| 439 | else: | 454 | else: |
| 440 | return self.build_res(compare_date <= ocr_date) | 455 | return self.build_res(compare_date <= ocr_date) |
| 441 | 456 | ||
| 457 | def se_bd_date_compare(self, input_str, ocr_str, **kwargs): | ||
| 458 | try: | ||
| 459 | input_date = datetime.strptime(input_str, "%Y-%m-%d").date() | ||
| 460 | ocr_date = datetime.strptime(ocr_str, "%Y-%m-%d").date() | ||
| 461 | if kwargs.get('start', False): | ||
| 462 | if input_date != ocr_date: | ||
| 463 | return self.RESULT_N | ||
| 464 | |||
| 465 | six_month_date = (datetime.today() - relativedelta(months=6)).date() | ||
| 466 | today_date = datetime.today().date() | ||
| 467 | return self.build_res(six_month_date <= ocr_date <= today_date) | ||
| 468 | else: | ||
| 469 | if input_date == ocr_date or ocr_date == input_date + relativedelta(days=1): | ||
| 470 | return self.RESULT_Y | ||
| 471 | return self.RESULT_N | ||
| 472 | except Exception as e: | ||
| 473 | return self.RESULT_N | ||
| 474 | |||
| 442 | 475 | ||
| 443 | cp = Comparison() | 476 | cp = Comparison() |
| 444 | 477 | ... | ... |
src/common/tools/mssql_script11.py
0 → 100644
| 1 | import pyodbc | ||
| 2 | |||
| 3 | hil_sql = """ | ||
| 4 | ALTER TABLE hil_ocr_result ADD bd_ocr nvarchar(max); | ||
| 5 | ALTER TABLE hil_se_ocr_result ADD bd_ocr nvarchar(max); | ||
| 6 | """ | ||
| 7 | |||
| 8 | afc_sql = """ | ||
| 9 | ALTER TABLE afc_ocr_result ADD bd_ocr nvarchar(max); | ||
| 10 | ALTER TABLE afc_se_ocr_result ADD bd_ocr nvarchar(max); | ||
| 11 | """ | ||
| 12 | |||
| 13 | hil_cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};', autocommit=True) | ||
| 14 | |||
| 15 | hil_cursor = hil_cnxn.cursor() | ||
| 16 | hil_cursor.execute(hil_sql) | ||
| 17 | |||
| 18 | hil_cursor.close() | ||
| 19 | hil_cnxn.close() | ||
| 20 | |||
| 21 | afc_cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};', autocommit=True) | ||
| 22 | |||
| 23 | afc_cursor = afc_cnxn.cursor() | ||
| 24 | afc_cursor.execute(afc_sql) | ||
| 25 | |||
| 26 | afc_cursor.close() | ||
| 27 | afc_cnxn.close() |
-
Please register or sign in to post a comment