Merge branch 'feature/CHINARPA-4660' into feature/uat-tmp
Showing
5 changed files
with
310 additions
and
20 deletions
... | @@ -1247,6 +1247,7 @@ FSM_CONTRACT_WEP_FIELD = 'fsm_wep_ocr' | ... | @@ -1247,6 +1247,7 @@ FSM_CONTRACT_WEP_FIELD = 'fsm_wep_ocr' |
1247 | FSM_CONTRACT_MSI_FIELD = 'fsm_msi_ocr' | 1247 | FSM_CONTRACT_MSI_FIELD = 'fsm_msi_ocr' |
1248 | FSM_CONTRACT_SC_FIELD = 'fsm_sc_ocr' | 1248 | FSM_CONTRACT_SC_FIELD = 'fsm_sc_ocr' |
1249 | FSM_CONTRACT_SC2_FIELD = 'fsm_sc2_ocr' | 1249 | FSM_CONTRACT_SC2_FIELD = 'fsm_sc2_ocr' |
1250 | FS_FIELD = 'fs_ocr' | ||
1250 | 1251 | ||
1251 | 1252 | ||
1252 | BS_CLASSIFY = 10089 | 1253 | BS_CLASSIFY = 10089 |
... | @@ -1303,6 +1304,7 @@ COMPARE_FIELDS = ( | ... | @@ -1303,6 +1304,7 @@ COMPARE_FIELDS = ( |
1303 | HIL_CONTRACT_1_FIELD, | 1304 | HIL_CONTRACT_1_FIELD, |
1304 | HIL_CONTRACT_2_FIELD, | 1305 | HIL_CONTRACT_2_FIELD, |
1305 | HIL_CONTRACT_3_FIELD, | 1306 | HIL_CONTRACT_3_FIELD, |
1307 | FS_FIELD, | ||
1306 | ) | 1308 | ) |
1307 | 1309 | ||
1308 | PRE_COMPARE_FIELDS = ( | 1310 | PRE_COMPARE_FIELDS = ( |
... | @@ -1504,6 +1506,7 @@ SE_BD_FIELD = ['被保险人姓名', '被保险人证件号码', '车架号', ' | ... | @@ -1504,6 +1506,7 @@ SE_BD_FIELD = ['被保险人姓名', '被保险人证件号码', '车架号', ' |
1504 | JDMPV_VALUE = ['-', '--', '0%', '0.00', '/', '0', ''] | 1506 | JDMPV_VALUE = ['-', '--', '0%', '0.00', '/', '0', ''] |
1505 | JYPZ_TYPE_1 = ['二手车交易凭证'] | 1507 | JYPZ_TYPE_1 = ['二手车交易凭证'] |
1506 | JYPZ_TYPE_2 = ['BMW官方认证二手车交易凭证', '二手车交易凭证'] | 1508 | JYPZ_TYPE_2 = ['BMW官方认证二手车交易凭证', '二手车交易凭证'] |
1509 | SE_FS_FIELD = ['Hash值', '公章', '财年', '资产负债表内容', '利润表内容'] | ||
1507 | 1510 | ||
1508 | SE_BANK_FIELD = ['accountNo', 'bankName'] | 1511 | SE_BANK_FIELD = ['accountNo', 'bankName'] |
1509 | SE_DDA_FIELD = ['applicationId(1)', 'applicationId(2)', 'bankName', 'companyName', 'customerName', 'idNum', 'accountHolderName', 'accountNo'] | 1512 | SE_DDA_FIELD = ['applicationId(1)', 'applicationId(2)', 'bankName', 'companyName', 'customerName', 'idNum', 'accountHolderName', 'accountNo'] |
... | @@ -1817,8 +1820,11 @@ BS_EN = 'Bank Statement' | ... | @@ -1817,8 +1820,11 @@ BS_EN = 'Bank Statement' |
1817 | HIL_CONTRACT_1_EN = '售后回租合同' | 1820 | HIL_CONTRACT_1_EN = '售后回租合同' |
1818 | HIL_CONTRACT_2_EN = '车辆租赁抵押合同' | 1821 | HIL_CONTRACT_2_EN = '车辆租赁抵押合同' |
1819 | HIL_CONTRACT_3_EN = '车辆处置协议' | 1822 | HIL_CONTRACT_3_EN = '车辆处置协议' |
1823 | FS_EN = 'Financial Statement' | ||
1824 | FSS_EN = 'Financial Statement Supplementary' | ||
1820 | 1825 | ||
1821 | DDA_NO_FIND = '需人工查看DDA或截图' | 1826 | DDA_NO_FIND = '需人工查看DDA或截图' |
1827 | FS_NO_FIND = '未提供财报或财报不完整' | ||
1822 | 1828 | ||
1823 | SKIP_CARD = {SME_BL_EN} | 1829 | SKIP_CARD = {SME_BL_EN} |
1824 | 1830 | ||
... | @@ -2159,6 +2165,15 @@ HT_COMPARE_LOGIC = { | ... | @@ -2159,6 +2165,15 @@ HT_COMPARE_LOGIC = { |
2159 | '无ASP产品': ('无ASP产品', 'se_self_compare_other_asp', {}, GZS_REASON_1), | 2165 | '无ASP产品': ('无ASP产品', 'se_self_compare_other_asp', {}, GZS_REASON_1), |
2160 | } | 2166 | } |
2161 | 2167 | ||
2168 | # 格式:'excel字段名':('数据库字段名','比对逻辑','特殊处理可以忽略','比对不合格时的返回内容') | ||
2169 | FS_COMPARE_LOGIC = { | ||
2170 | 'Hash值': ('code', 'hash_code_compare', {}, '财报Hash值与系统不一致'), | ||
2171 | '公章': ('stamp', 'stamp_dict_compare', {}, '财报无公章'), | ||
2172 | '财年': ('财年', 'fiscal_year_compare', {}, '财报所属财年错误'), | ||
2173 | '资产负债表内容': ('资产负债表内容', 'input_list_not_zero_compare', {}, '财报资产负债表为空'), | ||
2174 | '利润表内容': ('利润表内容', 'input_list_not_zero_compare', {}, '财报利润表为空'), | ||
2175 | } | ||
2176 | |||
2162 | AFC_HT_DATE_FIELDS = ['主借人日期', '共借人日期', '保证人日期1', '保证人日期2'] | 2177 | AFC_HT_DATE_FIELDS = ['主借人日期', '共借人日期', '保证人日期1', '保证人日期2'] |
2163 | 2178 | ||
2164 | # MVC_OCR_FIELD = 'mvc_ocr' | 2179 | # MVC_OCR_FIELD = 'mvc_ocr' |
... | @@ -2187,6 +2202,7 @@ SE_COMPARE_FIELD = { | ... | @@ -2187,6 +2202,7 @@ SE_COMPARE_FIELD = { |
2187 | HIL_CONTRACT_1_EN: (HIL_CONTRACT_1_FIELD, HIL_CONTRACT_1_COMPARE_LOGIC, False), | 2202 | HIL_CONTRACT_1_EN: (HIL_CONTRACT_1_FIELD, HIL_CONTRACT_1_COMPARE_LOGIC, False), |
2188 | HIL_CONTRACT_2_EN: (HIL_CONTRACT_2_FIELD, HIL_CONTRACT_2_COMPARE_LOGIC, False), | 2203 | HIL_CONTRACT_2_EN: (HIL_CONTRACT_2_FIELD, HIL_CONTRACT_2_COMPARE_LOGIC, False), |
2189 | HIL_CONTRACT_3_EN: (HIL_CONTRACT_3_FIELD, HIL_CONTRACT_3_COMPARE_LOGIC, False), | 2204 | HIL_CONTRACT_3_EN: (HIL_CONTRACT_3_FIELD, HIL_CONTRACT_3_COMPARE_LOGIC, False), |
2205 | FS_EN: (FS_FIELD, FS_COMPARE_LOGIC, False), | ||
2190 | } | 2206 | } |
2191 | 2207 | ||
2192 | SE_COMPARE_FIELD_AUTO = { | 2208 | SE_COMPARE_FIELD_AUTO = { | ... | ... |
... | @@ -336,6 +336,8 @@ class AFCOCRResult(models.Model): | ... | @@ -336,6 +336,8 @@ class AFCOCRResult(models.Model): |
336 | fsm_sc_ocr = models.TextField(null=True, verbose_name="汽车销售合同") | 336 | fsm_sc_ocr = models.TextField(null=True, verbose_name="汽车销售合同") |
337 | fsm_sc2_ocr = models.TextField(null=True, verbose_name="汽车销售合同补充合同") | 337 | fsm_sc2_ocr = models.TextField(null=True, verbose_name="汽车销售合同补充合同") |
338 | fsm_activited = models.IntegerField(null=False, default=0, verbose_name="fsm激活状态 1:激活") | 338 | fsm_activited = models.IntegerField(null=False, default=0, verbose_name="fsm激活状态 1:激活") |
339 | fs_ocr = models.TextField(null=True, verbose_name="财务报表") | ||
340 | fss_ocr = models.TextField(null=True, verbose_name="财务情况说明书") | ||
339 | 341 | ||
340 | 342 | ||
341 | update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间') | 343 | update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间') |
... | @@ -379,6 +381,8 @@ class HILOCRResult(models.Model): | ... | @@ -379,6 +381,8 @@ class HILOCRResult(models.Model): |
379 | fsm_sc_ocr = models.TextField(null=True, verbose_name="汽车销售合同") | 381 | fsm_sc_ocr = models.TextField(null=True, verbose_name="汽车销售合同") |
380 | fsm_sc2_ocr = models.TextField(null=True, verbose_name="汽车销售合同补充合同") | 382 | fsm_sc2_ocr = models.TextField(null=True, verbose_name="汽车销售合同补充合同") |
381 | fsm_activited = models.IntegerField(null=False, default=0, verbose_name="fsm激活状态 1:激活") | 383 | fsm_activited = models.IntegerField(null=False, default=0, verbose_name="fsm激活状态 1:激活") |
384 | fs_ocr = models.TextField(null=True, verbose_name="财务报表") | ||
385 | fss_ocr = models.TextField(null=True, verbose_name="财务情况说明书") | ||
382 | 386 | ||
383 | update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间') | 387 | update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间') |
384 | create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') | 388 | create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') |
... | @@ -420,6 +424,8 @@ class AFCSEOCRResult(models.Model): | ... | @@ -420,6 +424,8 @@ class AFCSEOCRResult(models.Model): |
420 | fsm_sc_ocr = models.TextField(null=True, verbose_name="汽车销售合同") | 424 | fsm_sc_ocr = models.TextField(null=True, verbose_name="汽车销售合同") |
421 | fsm_sc2_ocr = models.TextField(null=True, verbose_name="汽车销售合同补充合同") | 425 | fsm_sc2_ocr = models.TextField(null=True, verbose_name="汽车销售合同补充合同") |
422 | fsm_activited = models.IntegerField(null=False, default=0, verbose_name="fsm激活状态 1:激活") | 426 | fsm_activited = models.IntegerField(null=False, default=0, verbose_name="fsm激活状态 1:激活") |
427 | fs_ocr = models.TextField(null=True, verbose_name="财务报表") | ||
428 | fss_ocr = models.TextField(null=True, verbose_name="财务情况说明书") | ||
423 | 429 | ||
424 | update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间') | 430 | update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间') |
425 | create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') | 431 | create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') |
... | @@ -461,6 +467,8 @@ class HILSEOCRResult(models.Model): | ... | @@ -461,6 +467,8 @@ class HILSEOCRResult(models.Model): |
461 | fsm_sc_ocr = models.TextField(null=True, verbose_name="汽车销售合同") | 467 | fsm_sc_ocr = models.TextField(null=True, verbose_name="汽车销售合同") |
462 | fsm_sc2_ocr = models.TextField(null=True, verbose_name="汽车销售合同补充合同") | 468 | fsm_sc2_ocr = models.TextField(null=True, verbose_name="汽车销售合同补充合同") |
463 | fsm_activited = models.IntegerField(null=False, default=0, verbose_name="fsm激活状态 1:激活") | 469 | fsm_activited = models.IntegerField(null=False, default=0, verbose_name="fsm激活状态 1:激活") |
470 | fs_ocr = models.TextField(null=True, verbose_name="财务报表") | ||
471 | fss_ocr = models.TextField(null=True, verbose_name="财务情况说明书") | ||
464 | 472 | ||
465 | update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间') | 473 | update_time = models.DateTimeField(auto_now=True, verbose_name='修改时间') |
466 | create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') | 474 | create_time = models.DateTimeField(auto_now_add=True, verbose_name='创建时间') | ... | ... |
... | @@ -953,6 +953,12 @@ def get_se_cms_compare_info_auto(application_id, last_obj, application_entity, d | ... | @@ -953,6 +953,12 @@ def get_se_cms_compare_info_auto(application_id, last_obj, application_entity, d |
953 | if individual_info['applicantType'] == consts.APPLICANT_TYPE_ORDER[0] and not is_corporate: | 953 | if individual_info['applicantType'] == consts.APPLICANT_TYPE_ORDER[0] and not is_corporate: |
954 | is_cdfl_bo = True | 954 | is_cdfl_bo = True |
955 | 955 | ||
956 | # CHINARPA-4660 是否公户判断 | ||
957 | is_bo_tccor = False | ||
958 | customersubType = individual_info.get('customersubType', '') | ||
959 | if individual_info['applicantType'] == consts.APPLICANT_TYPE_ORDER[0] and customersubType == 'TCCOR': | ||
960 | is_bo_tccor = True | ||
961 | |||
956 | for id_info in individual_info.get('IDInformation', []): | 962 | for id_info in individual_info.get('IDInformation', []): |
957 | if id_info.get('idType') in consts.SE_CMS_FIRST_ID_FIELD_MAPPING: | 963 | if id_info.get('idType') in consts.SE_CMS_FIRST_ID_FIELD_MAPPING: |
958 | license_en, is_prc = consts.SE_CMS_FIRST_ID_FIELD_MAPPING[id_info['idType']] | 964 | license_en, is_prc = consts.SE_CMS_FIRST_ID_FIELD_MAPPING[id_info['idType']] |
... | @@ -966,25 +972,28 @@ def get_se_cms_compare_info_auto(application_id, last_obj, application_entity, d | ... | @@ -966,25 +972,28 @@ def get_se_cms_compare_info_auto(application_id, last_obj, application_entity, d |
966 | license_dict[license_en] = field_input | 972 | license_dict[license_en] = field_input |
967 | all_id_num.append(id_num) | 973 | all_id_num.append(id_num) |
968 | # 营业执照 -------------------------------------------------------------------------------------------------- | 974 | # 营业执照 -------------------------------------------------------------------------------------------------- |
969 | elif id_info.get('idType') in ['Unified Social Credit Code', 'Tax Number', 'Business License Number']: | 975 | # 4660 修改比对营业执照文档必要性的判断条件 |
976 | # elif id_info.get('idType') in ['Unified Social Credit Code', 'Tax Number', 'Business License Number']: | ||
977 | elif is_bo_tccor: | ||
970 | # ['companyName', 'legalRepName', 'businessLicenseNo', 'organizationCreditCode', | 978 | # ['companyName', 'legalRepName', 'businessLicenseNo', 'organizationCreditCode', |
971 | # 'taxRegistrationCertificateNo', 'establishmentDate', 'businessLicenseDueDate'] | 979 | # 'taxRegistrationCertificateNo', 'establishmentDate', 'businessLicenseDueDate'] |
972 | id_num = decode_des(id_info.get('idNum', ''), des_key) | 980 | id_num = decode_des(id_info.get('idNum', ''), des_key) |
973 | # bl_field_input = [ | 981 | bl_field_input = [ |
974 | # ('companyName', customer_name), | 982 | ('companyName', customer_name), |
975 | # ('legalRepName', legal_name), | 983 | ('legalRepName', legal_name), |
976 | # ('businessLicenseNo', id_num), | 984 | ('businessLicenseNo', id_num), |
977 | # ('organizationCreditCode', id_num), | 985 | ('organizationCreditCode', id_num), |
978 | # ('taxRegistrationCertificateNo', id_num), | 986 | ('taxRegistrationCertificateNo', id_num), |
979 | # ('businessLicenseDueDate', id_info.get('idExpiryDate', '')), | 987 | ('businessLicenseDueDate', id_info.get('idExpiryDate', '')), |
980 | # ] | 988 | ] |
981 | 989 | ||
982 | if is_corporate: | 990 | if is_corporate: |
983 | company_info_list.append((customer_name, id_num, legal_name)) | 991 | company_info_list.append((customer_name, id_num, legal_name)) |
984 | # else: | 992 | else: |
985 | # bl_field_input.append(('establishmentDate', establishment_date)) | 993 | bl_field_input.append(('establishmentDate', establishment_date)) |
986 | 994 | ||
987 | # license_dict[consts.BL_EN] = bl_field_input | 995 | compare_log.info('{0} [bl_field_input] [{1}]'.format(log_base, bl_field_input)) |
996 | license_dict[consts.BL_EN] = bl_field_input | ||
988 | all_id_num.append(id_num) | 997 | all_id_num.append(id_num) |
989 | 998 | ||
990 | # SME营业执照--------------------------------------------------------------------------------------------------- | 999 | # SME营业执照--------------------------------------------------------------------------------------------------- |
... | @@ -1000,6 +1009,7 @@ def get_se_cms_compare_info_auto(application_id, last_obj, application_entity, d | ... | @@ -1000,6 +1009,7 @@ def get_se_cms_compare_info_auto(application_id, last_obj, application_entity, d |
1000 | (customer_name, '、'.join(all_id_num), all_id_num[0]) | 1009 | (customer_name, '、'.join(all_id_num), all_id_num[0]) |
1001 | ) | 1010 | ) |
1002 | 1011 | ||
1012 | compare_log.info('{0} [license_dict] [{1}]'.format(log_base, license_dict)) | ||
1003 | if len(license_dict) > 0: | 1013 | if len(license_dict) > 0: |
1004 | individual_info_dict.setdefault(individual_info['applicantType'], []).append(license_dict) | 1014 | individual_info_dict.setdefault(individual_info['applicantType'], []).append(license_dict) |
1005 | 1015 | ||
... | @@ -1120,6 +1130,25 @@ def get_se_cms_compare_info_auto(application_id, last_obj, application_entity, d | ... | @@ -1120,6 +1130,25 @@ def get_se_cms_compare_info_auto(application_id, last_obj, application_entity, d |
1120 | # vehicle_info[consts.UCI_EN] = vehicle_field_input | 1130 | # vehicle_info[consts.UCI_EN] = vehicle_field_input |
1121 | compare_info['vehicleInfo'] = vehicle_info | 1131 | compare_info['vehicleInfo'] = vehicle_info |
1122 | 1132 | ||
1133 | # 公户财务报表------------------------------------------------------------------------------------------------- | ||
1134 | financial_statement_info = {} | ||
1135 | financial_statement_input = [] | ||
1136 | corporateFinancialInformation = cms_info.get('corporateFinancialInformation', {}) | ||
1137 | hashCode = corporateFinancialInformation.get('hashCode', '') | ||
1138 | fiscalYear = corporateFinancialInformation.get('fiscalYear', '') | ||
1139 | totalAssets = corporateFinancialInformation.get('totalAssets', 0) | ||
1140 | totalLiabilitiesAndOwnersEquity = corporateFinancialInformation.get('totalLiabilitiesAndOwnersEquity', 0) | ||
1141 | netProfit = corporateFinancialInformation.get('netProfit', 0) | ||
1142 | if is_bo_tccor: | ||
1143 | financial_statement_input.append((consts.SE_FS_FIELD[0], hashCode)) | ||
1144 | financial_statement_input.append((consts.SE_FS_FIELD[1], consts.SE_STAMP_VALUE)) | ||
1145 | financial_statement_input.append((consts.SE_FS_FIELD[2], fiscalYear)) | ||
1146 | financial_statement_input.append((consts.SE_FS_FIELD[3], [totalAssets, totalLiabilitiesAndOwnersEquity])) | ||
1147 | financial_statement_input.append((consts.SE_FS_FIELD[4], netProfit)) | ||
1148 | financial_statement_info[consts.FS_EN] = financial_statement_input | ||
1149 | compare_info['financialStatementInfo'] = financial_statement_info | ||
1150 | |||
1151 | |||
1123 | # 银行卡------------------------------------------------------------------------------------------------------- | 1152 | # 银行卡------------------------------------------------------------------------------------------------------- |
1124 | bank_info = {} | 1153 | bank_info = {} |
1125 | bank_name = cms_info.get('bankAccountDetails', {}).get('bankName', '') | 1154 | bank_name = cms_info.get('bankAccountDetails', {}).get('bankName', '') |
... | @@ -1375,7 +1404,10 @@ def get_se_cms_compare_info_auto(application_id, last_obj, application_entity, d | ... | @@ -1375,7 +1404,10 @@ def get_se_cms_compare_info_auto(application_id, last_obj, application_entity, d |
1375 | if len(main_role_info[app_type]) >= id_idx+1: | 1404 | if len(main_role_info[app_type]) >= id_idx+1: |
1376 | is_find = True | 1405 | is_find = True |
1377 | if isinstance(field_idx, int): | 1406 | if isinstance(field_idx, int): |
1378 | hil_contract_1_input.append((key, main_role_info[app_type][id_idx][field_idx])) | 1407 | if key == '承租人签字' and is_bo_tccor: |
1408 | hil_contract_1_input.append((key, legal_name)) | ||
1409 | else: | ||
1410 | hil_contract_1_input.append((key, main_role_info[app_type][id_idx][field_idx])) | ||
1379 | else: | 1411 | else: |
1380 | hil_contract_1_input.append((key, field_idx)) | 1412 | hil_contract_1_input.append((key, field_idx)) |
1381 | if not is_find and is_force: | 1413 | if not is_find and is_force: |
... | @@ -1417,7 +1449,10 @@ def get_se_cms_compare_info_auto(application_id, last_obj, application_entity, d | ... | @@ -1417,7 +1449,10 @@ def get_se_cms_compare_info_auto(application_id, last_obj, application_entity, d |
1417 | if len(main_role_info[app_type]) >= id_idx+1: | 1449 | if len(main_role_info[app_type]) >= id_idx+1: |
1418 | is_find = True | 1450 | is_find = True |
1419 | if isinstance(field_idx, int): | 1451 | if isinstance(field_idx, int): |
1420 | hil_contract_2_input.append((key, main_role_info[app_type][id_idx][field_idx])) | 1452 | if key == '抵押人签字' and is_bo_tccor: |
1453 | hil_contract_2_input.append((key, legal_name)) | ||
1454 | else: | ||
1455 | hil_contract_2_input.append((key, main_role_info[app_type][id_idx][field_idx])) | ||
1421 | else: | 1456 | else: |
1422 | hil_contract_2_input.append((key, field_idx)) | 1457 | hil_contract_2_input.append((key, field_idx)) |
1423 | if not is_find and is_force: | 1458 | if not is_find and is_force: |
... | @@ -1484,7 +1519,10 @@ def get_se_cms_compare_info_auto(application_id, last_obj, application_entity, d | ... | @@ -1484,7 +1519,10 @@ def get_se_cms_compare_info_auto(application_id, last_obj, application_entity, d |
1484 | if len(main_role_info[app_type]) >= id_idx+1: | 1519 | if len(main_role_info[app_type]) >= id_idx+1: |
1485 | is_find = True | 1520 | is_find = True |
1486 | if isinstance(field_idx, int): | 1521 | if isinstance(field_idx, int): |
1487 | afc_contract_input.append((key, main_role_info[app_type][id_idx][field_idx])) | 1522 | if (key == '借款人签字及时间' or key == '主借人签字') and is_bo_tccor: |
1523 | afc_contract_input.append((key, legal_name)) | ||
1524 | else: | ||
1525 | afc_contract_input.append((key, main_role_info[app_type][id_idx][field_idx])) | ||
1488 | else: | 1526 | else: |
1489 | afc_contract_input.append((key, field_idx)) | 1527 | afc_contract_input.append((key, field_idx)) |
1490 | if not is_find and is_force: | 1528 | if not is_find and is_force: |
... | @@ -1554,6 +1592,12 @@ def get_se_cms_compare_info(application_id, last_obj, application_entity, detect | ... | @@ -1554,6 +1592,12 @@ def get_se_cms_compare_info(application_id, last_obj, application_entity, detect |
1554 | if individual_info['applicantType'] == consts.APPLICANT_TYPE_ORDER[0] and not is_corporate: | 1592 | if individual_info['applicantType'] == consts.APPLICANT_TYPE_ORDER[0] and not is_corporate: |
1555 | is_cdfl_bo = True | 1593 | is_cdfl_bo = True |
1556 | 1594 | ||
1595 | # CHINARPA-4660 是否公户判断 | ||
1596 | is_bo_tccor = False | ||
1597 | customersubType = individual_info.get('customersubType', '') | ||
1598 | if individual_info['applicantType'] == consts.APPLICANT_TYPE_ORDER[0] and customersubType == 'TCCOR': | ||
1599 | is_bo_tccor = True | ||
1600 | |||
1557 | for id_info in individual_info.get('IDInformation', []): | 1601 | for id_info in individual_info.get('IDInformation', []): |
1558 | if id_info.get('idType') in consts.SE_CMS_FIRST_ID_FIELD_MAPPING: | 1602 | if id_info.get('idType') in consts.SE_CMS_FIRST_ID_FIELD_MAPPING: |
1559 | license_en, is_prc = consts.SE_CMS_FIRST_ID_FIELD_MAPPING[id_info['idType']] | 1603 | license_en, is_prc = consts.SE_CMS_FIRST_ID_FIELD_MAPPING[id_info['idType']] |
... | @@ -1567,7 +1611,9 @@ def get_se_cms_compare_info(application_id, last_obj, application_entity, detect | ... | @@ -1567,7 +1611,9 @@ def get_se_cms_compare_info(application_id, last_obj, application_entity, detect |
1567 | license_dict[license_en] = field_input | 1611 | license_dict[license_en] = field_input |
1568 | all_id_num.append(id_num) | 1612 | all_id_num.append(id_num) |
1569 | # 营业执照 -------------------------------------------------------------------------------------------------- | 1613 | # 营业执照 -------------------------------------------------------------------------------------------------- |
1570 | elif id_info.get('idType') in ['Unified Social Credit Code', 'Tax Number', 'Business License Number']: | 1614 | # 4660 修改比对营业执照文档必要性的判断条件 |
1615 | # elif id_info.get('idType') in ['Unified Social Credit Code', 'Tax Number', 'Business License Number']: | ||
1616 | elif is_bo_tccor: | ||
1571 | # ['companyName', 'legalRepName', 'businessLicenseNo', 'organizationCreditCode', | 1617 | # ['companyName', 'legalRepName', 'businessLicenseNo', 'organizationCreditCode', |
1572 | # 'taxRegistrationCertificateNo', 'establishmentDate', 'businessLicenseDueDate'] | 1618 | # 'taxRegistrationCertificateNo', 'establishmentDate', 'businessLicenseDueDate'] |
1573 | id_num = decode_des(id_info.get('idNum', ''), des_key) | 1619 | id_num = decode_des(id_info.get('idNum', ''), des_key) |
... | @@ -1585,6 +1631,7 @@ def get_se_cms_compare_info(application_id, last_obj, application_entity, detect | ... | @@ -1585,6 +1631,7 @@ def get_se_cms_compare_info(application_id, last_obj, application_entity, detect |
1585 | else: | 1631 | else: |
1586 | bl_field_input.append(('establishmentDate', establishment_date)) | 1632 | bl_field_input.append(('establishmentDate', establishment_date)) |
1587 | 1633 | ||
1634 | compare_log.info('{0} [bl_field_input] [{1}]'.format(log_base, bl_field_input)) | ||
1588 | license_dict[consts.BL_EN] = bl_field_input | 1635 | license_dict[consts.BL_EN] = bl_field_input |
1589 | all_id_num.append(id_num) | 1636 | all_id_num.append(id_num) |
1590 | 1637 | ||
... | @@ -1601,6 +1648,7 @@ def get_se_cms_compare_info(application_id, last_obj, application_entity, detect | ... | @@ -1601,6 +1648,7 @@ def get_se_cms_compare_info(application_id, last_obj, application_entity, detect |
1601 | (customer_name, '、'.join(all_id_num), all_id_num[0]) | 1648 | (customer_name, '、'.join(all_id_num), all_id_num[0]) |
1602 | ) | 1649 | ) |
1603 | 1650 | ||
1651 | compare_log.info('{0} [license_dict] [{1}]'.format(log_base, license_dict)) | ||
1604 | if len(license_dict) > 0: | 1652 | if len(license_dict) > 0: |
1605 | individual_info_dict.setdefault(individual_info['applicantType'], []).append(license_dict) | 1653 | individual_info_dict.setdefault(individual_info['applicantType'], []).append(license_dict) |
1606 | 1654 | ||
... | @@ -1721,6 +1769,25 @@ def get_se_cms_compare_info(application_id, last_obj, application_entity, detect | ... | @@ -1721,6 +1769,25 @@ def get_se_cms_compare_info(application_id, last_obj, application_entity, detect |
1721 | vehicle_info[consts.UCI_EN] = vehicle_field_input | 1769 | vehicle_info[consts.UCI_EN] = vehicle_field_input |
1722 | compare_info['vehicleInfo'] = vehicle_info | 1770 | compare_info['vehicleInfo'] = vehicle_info |
1723 | 1771 | ||
1772 | # 公户财务报表------------------------------------------------------------------------------------------------- | ||
1773 | financial_statement_info = {} | ||
1774 | financial_statement_input = [] | ||
1775 | corporateFinancialInformation = cms_info.get('corporateFinancialInformation', {}) | ||
1776 | hashCode = corporateFinancialInformation.get('hashCode', '') | ||
1777 | fiscalYear = corporateFinancialInformation.get('fiscalYear', '') | ||
1778 | totalAssets = corporateFinancialInformation.get('totalAssets', 0) | ||
1779 | totalLiabilitiesAndOwnersEquity = corporateFinancialInformation.get('totalLiabilitiesAndOwnersEquity', 0) | ||
1780 | netProfit = corporateFinancialInformation.get('netProfit', 0) | ||
1781 | if is_bo_tccor: | ||
1782 | financial_statement_input.append((consts.SE_FS_FIELD[0], hashCode)) | ||
1783 | financial_statement_input.append((consts.SE_FS_FIELD[1], consts.SE_STAMP_VALUE)) | ||
1784 | financial_statement_input.append((consts.SE_FS_FIELD[2], fiscalYear)) | ||
1785 | financial_statement_input.append((consts.SE_FS_FIELD[3], [totalAssets, totalLiabilitiesAndOwnersEquity])) | ||
1786 | financial_statement_input.append((consts.SE_FS_FIELD[4], netProfit)) | ||
1787 | financial_statement_info[consts.FS_EN] = financial_statement_input | ||
1788 | compare_info['financialStatementInfo'] = financial_statement_info | ||
1789 | |||
1790 | |||
1724 | # 银行卡------------------------------------------------------------------------------------------------------- | 1791 | # 银行卡------------------------------------------------------------------------------------------------------- |
1725 | bank_info = {} | 1792 | bank_info = {} |
1726 | bank_name = cms_info.get('bankAccountDetails', {}).get('bankName', '') | 1793 | bank_name = cms_info.get('bankAccountDetails', {}).get('bankName', '') |
... | @@ -1939,7 +2006,10 @@ def get_se_cms_compare_info(application_id, last_obj, application_entity, detect | ... | @@ -1939,7 +2006,10 @@ def get_se_cms_compare_info(application_id, last_obj, application_entity, detect |
1939 | if len(main_role_info[app_type]) >= id_idx+1: | 2006 | if len(main_role_info[app_type]) >= id_idx+1: |
1940 | is_find = True | 2007 | is_find = True |
1941 | if isinstance(field_idx, int): | 2008 | if isinstance(field_idx, int): |
1942 | hil_contract_1_input.append((key, main_role_info[app_type][id_idx][field_idx])) | 2009 | if key == '承租人签字' and is_bo_tccor: |
2010 | hil_contract_1_input.append((key, legal_name)) | ||
2011 | else: | ||
2012 | hil_contract_1_input.append((key, main_role_info[app_type][id_idx][field_idx])) | ||
1943 | else: | 2013 | else: |
1944 | hil_contract_1_input.append((key, field_idx)) | 2014 | hil_contract_1_input.append((key, field_idx)) |
1945 | if not is_find and is_force: | 2015 | if not is_find and is_force: |
... | @@ -1958,7 +2028,10 @@ def get_se_cms_compare_info(application_id, last_obj, application_entity, detect | ... | @@ -1958,7 +2028,10 @@ def get_se_cms_compare_info(application_id, last_obj, application_entity, detect |
1958 | (consts.SE_HIL_CON_3_FIELD[6], main_id), | 2028 | (consts.SE_HIL_CON_3_FIELD[6], main_id), |
1959 | ] | 2029 | ] |
1960 | if online_sign: | 2030 | if online_sign: |
1961 | hil_contract_3_input.append((consts.SE_HIL_CON_3_FIELD[7], main_name)) | 2031 | if is_bo_tccor: |
2032 | hil_contract_3_input.append((consts.SE_HIL_CON_3_FIELD[7], legal_name)) | ||
2033 | else: | ||
2034 | hil_contract_3_input.append((consts.SE_HIL_CON_3_FIELD[7], main_name)) | ||
1962 | contract_info[consts.HIL_CONTRACT_3_EN] = hil_contract_3_input | 2035 | contract_info[consts.HIL_CONTRACT_3_EN] = hil_contract_3_input |
1963 | 2036 | ||
1964 | # HIL合同 车辆租赁抵押合同 -------------------------------------------------------------------------------------- | 2037 | # HIL合同 车辆租赁抵押合同 -------------------------------------------------------------------------------------- |
... | @@ -1981,7 +2054,10 @@ def get_se_cms_compare_info(application_id, last_obj, application_entity, detect | ... | @@ -1981,7 +2054,10 @@ def get_se_cms_compare_info(application_id, last_obj, application_entity, detect |
1981 | if len(main_role_info[app_type]) >= id_idx+1: | 2054 | if len(main_role_info[app_type]) >= id_idx+1: |
1982 | is_find = True | 2055 | is_find = True |
1983 | if isinstance(field_idx, int): | 2056 | if isinstance(field_idx, int): |
1984 | hil_contract_2_input.append((key, main_role_info[app_type][id_idx][field_idx])) | 2057 | if key == '抵押人签字' and is_bo_tccor: |
2058 | hil_contract_2_input.append((key, legal_name)) | ||
2059 | else: | ||
2060 | hil_contract_2_input.append((key, main_role_info[app_type][id_idx][field_idx])) | ||
1985 | else: | 2061 | else: |
1986 | hil_contract_2_input.append((key, field_idx)) | 2062 | hil_contract_2_input.append((key, field_idx)) |
1987 | if not is_find and is_force: | 2063 | if not is_find and is_force: |
... | @@ -2048,7 +2124,10 @@ def get_se_cms_compare_info(application_id, last_obj, application_entity, detect | ... | @@ -2048,7 +2124,10 @@ def get_se_cms_compare_info(application_id, last_obj, application_entity, detect |
2048 | if len(main_role_info[app_type]) >= id_idx+1: | 2124 | if len(main_role_info[app_type]) >= id_idx+1: |
2049 | is_find = True | 2125 | is_find = True |
2050 | if isinstance(field_idx, int): | 2126 | if isinstance(field_idx, int): |
2051 | afc_contract_input.append((key, main_role_info[app_type][id_idx][field_idx])) | 2127 | if (key == '借款人签字及时间' or key == '主借人签字') and is_bo_tccor: |
2128 | afc_contract_input.append((key, legal_name)) | ||
2129 | else: | ||
2130 | afc_contract_input.append((key, main_role_info[app_type][id_idx][field_idx])) | ||
2052 | else: | 2131 | else: |
2053 | afc_contract_input.append((key, field_idx)) | 2132 | afc_contract_input.append((key, field_idx)) |
2054 | if not is_find and is_force: | 2133 | if not is_find and is_force: |
... | @@ -2523,6 +2602,113 @@ def se_compare_license(license_en, ocr_res_dict, field_list): | ... | @@ -2523,6 +2602,113 @@ def se_compare_license(license_en, ocr_res_dict, field_list): |
2523 | 2602 | ||
2524 | return result_field_list, no_ocr_result, field_img_path_dict | 2603 | return result_field_list, no_ocr_result, field_img_path_dict |
2525 | 2604 | ||
2605 | def se_fs_compare(license_en, ocr_res_dict, field_list): | ||
2606 | compare_log.info('{0} [se_fs_compare] start'.format(log_base)) | ||
2607 | ocr_field, compare_logic, special_expiry_date = consts.SE_COMPARE_FIELD[license_en] | ||
2608 | |||
2609 | is_find = False | ||
2610 | no_ocr_result = False | ||
2611 | special_expiry_date_slice = False | ||
2612 | result_field_list = [] | ||
2613 | section_img_info = dict() | ||
2614 | field_img_path_dict = dict() | ||
2615 | ocr_res_str = ocr_res_dict.get(ocr_field) | ||
2616 | compare_log.info('{0} [se_fs_compare] ocr_res:{1}'.format(log_base, ocr_res_str)) | ||
2617 | if ocr_res_str is not None: | ||
2618 | ocr_res_list = json.loads(ocr_res_str) | ||
2619 | |||
2620 | length = len(ocr_res_list) | ||
2621 | |||
2622 | last_ocr_str = ocr_res_list[length-1] | ||
2623 | compare_log.info('{0} [se_fs_compare] [code len {1}] [stamp len {2}] ]'.format(log_base, len(last_ocr_str.get('code',{})), len(last_ocr_str.get('stamp',{})))) | ||
2624 | |||
2625 | if len(last_ocr_str.get('code',{})) != 3 or len(last_ocr_str.get('stamp',{})) != 3: | ||
2626 | # 先判断最后一次上传的文件是不是包括3个,如果不是直接返回"未提供财报或财报不完整" | ||
2627 | compare_log.info('{0} [se_fs_compare error] last ocr result len < 3'.format(log_base)) | ||
2628 | else: | ||
2629 | for res_idx in range(length-1, -1, -1): | ||
2630 | if is_find: | ||
2631 | break | ||
2632 | |||
2633 | for idx, (name, value) in enumerate(field_list): | ||
2634 | compare_log.info('{0} [se_fs_compare for ... in] [idx:{1}] [name:{2}] [value:{3}]'.format(log_base, idx, name, value)) | ||
2635 | ocr_str = ocr_res_list[res_idx].get(compare_logic[name][0]) | ||
2636 | compare_log.info('{0} [se_fs_compare ocr_str] [ocr_str:{1}]'.format(log_base, ocr_str)) | ||
2637 | #财年/资产负债表内容/利润表内容 不需要ocr结果,所以即使为空也可以进入比对 | ||
2638 | if isinstance(ocr_str, str) or isinstance(ocr_str, dict) or compare_logic[name][0] == '财年' or compare_logic[name][0] == '资产负债表内容' or compare_logic[name][0] == '利润表内容': | ||
2639 | result = getattr(cp, compare_logic[name][1])(value, ocr_str, **compare_logic[name][2]) | ||
2640 | compare_log.info('{0} [se_fs_compare result:{1}]'.format(log_base, result)) | ||
2641 | no_key = False | ||
2642 | else: | ||
2643 | result = consts.RESULT_N | ||
2644 | ocr_str = empty_str | ||
2645 | no_key = True | ||
2646 | |||
2647 | if idx == 0 and result == consts.RESULT_N and length > 1: | ||
2648 | break | ||
2649 | |||
2650 | is_find = True | ||
2651 | section_img_info[consts.SECTION_IMG_PATH_KEY] = ocr_res_list[res_idx].get(consts.SECTION_IMG_PATH_KEY, '') | ||
2652 | section_img_info[consts.ALL_POSITION_KEY] = ocr_res_list[res_idx].get(consts.ALL_POSITION_KEY, {}) | ||
2653 | if special_expiry_date: | ||
2654 | section_img_info[consts.SECTION_IMG_PATH_KEY_2] = ocr_res_list[res_idx].get( | ||
2655 | consts.SECTION_IMG_PATH_KEY_2, '') | ||
2656 | section_img_info[consts.ALL_POSITION_KEY_2] = ocr_res_list[res_idx].get(consts.ALL_POSITION_KEY_2, {}) | ||
2657 | |||
2658 | img_path = ocr_res_list[res_idx].get(consts.IMG_PATH_KEY, '') if result == consts.RESULT_N else empty_str | ||
2659 | if isinstance(value, list): | ||
2660 | value = json.dumps(value, ensure_ascii=False) | ||
2661 | error_type = empty_error_type if result == consts.RESULT_Y else ErrorType.OCR.value | ||
2662 | result_field_list.append((name, value, result, ocr_str, img_path, error_type, compare_logic[name][3])) | ||
2663 | else: | ||
2664 | no_ocr_result = True | ||
2665 | |||
2666 | if not is_find: | ||
2667 | for name, value in field_list: | ||
2668 | if isinstance(value, list): | ||
2669 | value = json.dumps(value, ensure_ascii=False) | ||
2670 | no_find_str = consts.FS_NO_FIND | ||
2671 | result_field_list.append((name, value, consts.RESULT_N, empty_str, empty_str, ErrorType.NF.value, no_find_str)) | ||
2672 | |||
2673 | if is_find: | ||
2674 | section_img_path = section_img_info.get(consts.SECTION_IMG_PATH_KEY, '') | ||
2675 | if os.path.exists(section_img_path): | ||
2676 | failed_field = [] | ||
2677 | base_img_path = empty_str | ||
2678 | for name, _, result, _, img_path, _, _ in result_field_list: | ||
2679 | if result == consts.RESULT_N: | ||
2680 | if special_expiry_date_slice and name == 'idExpiryDate': | ||
2681 | continue | ||
2682 | failed_field.append(name) | ||
2683 | if base_img_path == empty_str: | ||
2684 | base_img_path = img_path | ||
2685 | if len(failed_field) > 0: | ||
2686 | info = section_img_info.get(consts.ALL_POSITION_KEY, {}) | ||
2687 | section_position = info.get(consts.POSITION_KEY, {}) | ||
2688 | section_angle = info.get(consts.ANGLE_KEY, 0) | ||
2689 | try: | ||
2690 | last_img = img_process(section_img_path, section_position, section_angle) | ||
2691 | except Exception as e: | ||
2692 | for field in failed_field: | ||
2693 | field_img_path_dict[field] = base_img_path | ||
2694 | else: | ||
2695 | pre, suf = os.path.splitext(section_img_path) | ||
2696 | for field in failed_field: | ||
2697 | try: | ||
2698 | res_field = compare_logic[field][0] | ||
2699 | is_valid, coord_tuple = field_build_coordinates(info.get(res_field, {})) | ||
2700 | if is_valid: | ||
2701 | save_path = '{0}_{1}{2}'.format(pre, field, suf) | ||
2702 | field_img = last_img[coord_tuple[0]:coord_tuple[1], coord_tuple[2]:coord_tuple[3], :] | ||
2703 | cv2.imwrite(save_path, field_img) | ||
2704 | field_img_path_dict[field] = save_path | ||
2705 | else: | ||
2706 | field_img_path_dict[field] = base_img_path | ||
2707 | except Exception as e: | ||
2708 | field_img_path_dict[field] = base_img_path | ||
2709 | |||
2710 | return result_field_list, field_img_path_dict | ||
2711 | |||
2526 | 2712 | ||
2527 | def se_compare_license_id(license_en, id_res_list, field_list, is_auto): | 2713 | def se_compare_license_id(license_en, id_res_list, field_list, is_auto): |
2528 | if is_auto: | 2714 | if is_auto: |
... | @@ -3023,9 +3209,11 @@ def se_compare_process(compare_info, ocr_res_dict, is_gsyh, is_auto, id_res_list | ... | @@ -3023,9 +3209,11 @@ def se_compare_process(compare_info, ocr_res_dict, is_gsyh, is_auto, id_res_list |
3023 | rpa_failure_reason = {} | 3209 | rpa_failure_reason = {} |
3024 | field_result_dict = {} | 3210 | field_result_dict = {} |
3025 | 3211 | ||
3212 | # compare_info 格式: {'financialStatementInfo': {'Financial Statement': [('11', '22'), ('111', '222'), ('1111', '2222')]}} | ||
3026 | for info_key, info_value in compare_info.items(): | 3213 | for info_key, info_value in compare_info.items(): |
3027 | if info_key in ['individualCusInfo', 'applicantInformation']: | 3214 | if info_key in ['individualCusInfo', 'applicantInformation']: |
3028 | for idx, license_list in info_value.items(): | 3215 | for idx, license_list in info_value.items(): |
3216 | compare_log.info('{0} [compare license_list] [entity={1}]'.format(log_base, license_list)) | ||
3029 | for license_dict in license_list: | 3217 | for license_dict in license_list: |
3030 | for license_en, field_list in license_dict.items(): | 3218 | for license_en, field_list in license_dict.items(): |
3031 | strip_list = [] | 3219 | strip_list = [] |
... | @@ -3081,6 +3269,7 @@ def se_compare_process(compare_info, ocr_res_dict, is_gsyh, is_auto, id_res_list | ... | @@ -3081,6 +3269,7 @@ def se_compare_process(compare_info, ocr_res_dict, is_gsyh, is_auto, id_res_list |
3081 | each_license_failed_count, len(result_field_list))) | 3269 | each_license_failed_count, len(result_field_list))) |
3082 | else: | 3270 | else: |
3083 | for license_en, field_list in info_value.items(): | 3271 | for license_en, field_list in info_value.items(): |
3272 | compare_log.info('{0} [compare license_en] [entity={1}]'.format(log_base, license_en)) | ||
3084 | strip_list = [] | 3273 | strip_list = [] |
3085 | for a, b in field_list: | 3274 | for a, b in field_list: |
3086 | if isinstance(b, str): | 3275 | if isinstance(b, str): |
... | @@ -3104,6 +3293,8 @@ def se_compare_process(compare_info, ocr_res_dict, is_gsyh, is_auto, id_res_list | ... | @@ -3104,6 +3293,8 @@ def se_compare_process(compare_info, ocr_res_dict, is_gsyh, is_auto, id_res_list |
3104 | result_field_list, field_img_path_dict = se_contract_qrs_compare(license_en, ocr_res_dict, strip_list) | 3293 | result_field_list, field_img_path_dict = se_contract_qrs_compare(license_en, ocr_res_dict, strip_list) |
3105 | elif license_en == consts.BS_EN: | 3294 | elif license_en == consts.BS_EN: |
3106 | result_field_list, field_img_path_dict = se_bs_compare(license_en, ocr_res_dict, strip_list, is_auto, aa_type) | 3295 | result_field_list, field_img_path_dict = se_bs_compare(license_en, ocr_res_dict, strip_list, is_auto, aa_type) |
3296 | elif license_en == consts.FS_EN: | ||
3297 | result_field_list, field_img_path_dict = se_fs_compare(license_en, ocr_res_dict, strip_list) | ||
3107 | else: | 3298 | else: |
3108 | result_field_list, _, field_img_path_dict = se_compare_license(license_en, ocr_res_dict, strip_list) | 3299 | result_field_list, _, field_img_path_dict = se_compare_license(license_en, ocr_res_dict, strip_list) |
3109 | 3300 | ... | ... |
... | @@ -701,5 +701,49 @@ class Comparison: | ... | @@ -701,5 +701,49 @@ class Comparison: |
701 | except Exception as e: | 701 | except Exception as e: |
702 | return self.RESULT_N | 702 | return self.RESULT_N |
703 | 703 | ||
704 | def hash_code_compare(self, input_str, ocr_dict, **kwargs): | ||
705 | try: | ||
706 | balance_sheet_hash = ocr_dict.get('balance_sheet','') | ||
707 | income_statement_hash = ocr_dict.get('income_statement','') | ||
708 | cash_flow_statement_hash = ocr_dict.get('cash_flow_statement','') | ||
709 | if balance_sheet_hash != input_str or income_statement_hash != input_str or cash_flow_statement_hash != input_str: | ||
710 | return self.RESULT_N | ||
711 | else: | ||
712 | return self.RESULT_Y | ||
713 | except Exception as e: | ||
714 | return self.RESULT_N | ||
715 | |||
716 | def stamp_dict_compare(self, input_str, ocr_dict, **kwargs): | ||
717 | try: | ||
718 | balance_sheet_stamp = ocr_dict.get('balance_sheet','') | ||
719 | income_statement_stamp = ocr_dict.get('income_statement','') | ||
720 | cash_flow_statement_stamp = ocr_dict.get('cash_flow_statement','') | ||
721 | if balance_sheet_stamp != 1 or income_statement_stamp != 1 or cash_flow_statement_stamp != 1: | ||
722 | return self.RESULT_N | ||
723 | else: | ||
724 | return self.RESULT_Y | ||
725 | except Exception as e: | ||
726 | return self.RESULT_N | ||
727 | |||
728 | def fiscal_year_compare(self, input_str, ocr_list, **kwargs): | ||
729 | try: | ||
730 | this_year_str = datetime.now().strftime('%Y') | ||
731 | this_year = int(this_year_str) | ||
732 | last_year = this_year - 1 | ||
733 | if str(input_str) != str(this_year) and str(input_str) != str(last_year): | ||
734 | return self.RESULT_N | ||
735 | return self.RESULT_Y | ||
736 | except Exception as e: | ||
737 | return self.RESULT_N | ||
738 | |||
739 | def input_list_not_zero_compare(self, input_list, ocr_list, **kwargs): | ||
740 | try: | ||
741 | for item in input_list: | ||
742 | if float(item) <= 0: | ||
743 | return self.RESULT_N | ||
744 | return self.RESULT_Y | ||
745 | except Exception as e: | ||
746 | return self.RESULT_N | ||
747 | |||
704 | 748 | ||
705 | cp = Comparison() | 749 | cp = Comparison() | ... | ... |
src/common/tools/mssql_script28.py
0 → 100644
1 | import pyodbc | ||
2 | |||
3 | hil_sql = """ | ||
4 | ALTER TABLE hil_ocr_result ADD fs_ocr nvarchar(max); | ||
5 | ALTER TABLE hil_se_ocr_result ADD fs_ocr nvarchar(max); | ||
6 | ALTER TABLE hil_ocr_result ADD fss_ocr nvarchar(max); | ||
7 | ALTER TABLE hil_se_ocr_result ADD fss_ocr nvarchar(max); | ||
8 | """ | ||
9 | |||
10 | afc_sql = """ | ||
11 | ALTER TABLE afc_ocr_result ADD fs_ocr nvarchar(max); | ||
12 | ALTER TABLE afc_se_ocr_result ADD fs_ocr nvarchar(max); | ||
13 | ALTER TABLE afc_ocr_result ADD fss_ocr nvarchar(max); | ||
14 | ALTER TABLE afc_se_ocr_result ADD fss_ocr nvarchar(max); | ||
15 | """ | ||
16 | |||
17 | hil_cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};', autocommit=True) | ||
18 | |||
19 | hil_cursor = hil_cnxn.cursor() | ||
20 | hil_cursor.execute(hil_sql) | ||
21 | |||
22 | hil_cursor.close() | ||
23 | hil_cnxn.close() | ||
24 | |||
25 | afc_cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};', autocommit=True) | ||
26 | |||
27 | afc_cursor = afc_cnxn.cursor() | ||
28 | afc_cursor.execute(afc_sql) | ||
29 | |||
30 | afc_cursor.close() | ||
31 | afc_cnxn.close() |
-
Please register or sign in to post a comment