diff --git a/src/apps/doc/views.py b/src/apps/doc/views.py index 7bda33b..26ee057 100644 --- a/src/apps/doc/views.py +++ b/src/apps/doc/views.py @@ -647,7 +647,7 @@ class CompareView(GenericView): corporate_cus_info=corporate_cus_info, ) # 触发比对 - compare.apply_async((application_id, business_type, uniq_seq, None, True), + compare.apply_async((application_id, business_type, uniq_seq, None, True, False), queue='queue_compare') return response.ok() @@ -708,7 +708,7 @@ class SECompareView(GenericView): quotationt_info=quotationt_info ) # 触发比对 - compare.apply_async((application_id, business_type, uniq_seq, None, False), + compare.apply_async((application_id, business_type, uniq_seq, None, False, False), queue='queue_compare') return response.ok() @@ -1091,7 +1091,10 @@ class SECMSView(GenericView): # pos上传比对信息接口 SE @use_args(se_cms_args, location='data') def post(self, request, args): - self.running_log.info('cms in') + + # 触发比对 + compare.apply_async((application_id, business_type, uniq_seq, None, False, True), + queue='queue_compare') return response.ok() post.openapi_doc = ''' diff --git a/src/celery_compare/tasks.py b/src/celery_compare/tasks.py index 3df9500..4b6b680 100644 --- a/src/celery_compare/tasks.py +++ b/src/celery_compare/tasks.py @@ -881,6 +881,110 @@ def get_se_compare_info(last_obj, application_entity, detect_list): return compare_info, is_gsyh +def cms_get_se_compare_info(last_obj, application_entity, detect_list): + # { + # "content": { + # "financeCompany": "宝马汽车金融有限公司", + # "contractNo": "CH-B100000123", + # "status": "HIL", + # "branch": "宝马汽车金融有限公司", + # "fpCampaign": "Q1_2021_BMW_BASIC", + # "applicationVersion": 1, + # "submissionDate": {}, + # "mortgageType": "Mortgage Contract", + # "dealerRegion": "West", + # "insuranceRealNameCity": false, + # "totalFinanceAmount": 1234.56, + # "terms": 24, + # "dealerName": "乐山长宝汽车销售服务有限公司", + # "tier": "2", + # "province": "四川省", + # "fapiaoIssuerDealer": "乐山长宝汽车销售服务有限公司", + # "customerName": "蔡红", + # "customerIdNo": "511102196706080000", + # "vehicleStatus": "Used", + # "applicationSource": "eApp", + # "contractSource": "Online Sign", + # "applicationRating": 100, + # "applicantInformation": [ + # { + # "applicantType": "Borrower", + # "customersubType": "TCCOR", + # "selfEmployedSubType": "CSIBM", + # "name": "李四", + # "legalRepName": "张三", + # "dateOfBirth": {}, + # "nationality": "中国", + # "establishmentDate": {}, + # "IDInformation": [ + # { + # "idType": "ITARI", + # "idNum": "111111199404251100", + # "idExpiryDate": {} + # } + # ] + # } + # ], + # "autoApprovedDetails": { + # "aaType": "CAA1" + # }, + # "financialInformation": { + # "vehiclePrice": 1234.56, + # "grossPrice": 1234.56, + # "associatedServicePrice": 1234.56, + # "vehiclePrincipal": 1234.56, + # "associatedServicePrincipal": 1234.56, + # "originationPrincipal": 1234.56, + # "totalDownPayment": 1234.56, + # "vehicleDownPaymentRatio": 1234.56, + # "optionAmount": 1234.56, + # "sumOfMSRPAndOption": 1234.56 + # }, + # "paymentSchedule": [ + # { + # "no": 3, + # "grossRentalAmount": 1234.56 + # } + # ], + # "associatedServices": [ + # { + # "associatedServices": "机动车保险", + # "price": 1234.56, + # "financed": 1234.56, + # "total": 1234.56 + # } + # ], + # "vehicleInformation": { + # "vinNo": "LBV23482934DJFKD" + # }, + # "bankAccountDetails": { + # "bankName": "中国银行", + # "accountHolderName": "张三", + # "accountNo": "12312123123123124" + # }, + # "insuranceDetails": { + # "insuranceType": "ComprehensiveInsurance", + # "insuranceAmount": "60000000", + # "startDate": {}, + # "endDate": {} + # }, + # "corporateFinancialInformation": { + # "hashCode": "238231", + # "borrowerName": "张三", + # "fiscalYear": 2019, + # "totaAssets": 1234.56, + # "totalLiabilitiesAndOwnersEquity": 1234.56, + # "cashAndCashEquivalentAtEndOfPeriod": 1234.56, + # "netProfit": 1234.56 + # }, + # "settlemnetVerification": { + # "applicationNo": "CH-B100000123" + # } + # } + # } + pass + + def se_compare_license(license_en, ocr_res_dict, field_list): ocr_field, compare_logic, special_expiry_date = consts.SE_COMPARE_FIELD[license_en] @@ -1094,12 +1198,16 @@ def se_result_detect(ocr_res_dict): detect_list.append(ocr_res_str is None) return detect_list -def se_compare(application_id, application_entity, ocr_res_id, last_obj, ocr_res_dict): + +def se_compare(application_id, application_entity, ocr_res_id, last_obj, ocr_res_dict, is_cms): try: # 比对逻辑 start_time = datetime.now() detect_list = se_result_detect(ocr_res_dict) - compare_info, is_gsyh = get_se_compare_info(last_obj, application_entity, detect_list) + if is_cms: + compare_info, is_gsyh = cms_get_se_compare_info(last_obj, application_entity, detect_list) + else: + compare_info, is_gsyh = get_se_compare_info(last_obj, application_entity, detect_list) compare_result, total_fields, failed_count, successful_at_this_level, failure_reason_str = se_compare_process( compare_info, ocr_res_dict, is_gsyh) compare_log.info('{0} [SE] [compare success] [entity={1}] [id={2}] [ocr_res_id={3}] [result={4}]'.format( @@ -1155,14 +1263,17 @@ def se_compare(application_id, application_entity, ocr_res_id, last_obj, ocr_res '[error={4}]'.format(log_base, application_entity, application_id, ocr_res_id, traceback.format_exc())) + # cms结果发送 + @app.task -def compare(application_id, application_entity, uniq_seq, ocr_res_id, is_ca=True): +def compare(application_id, application_entity, uniq_seq, ocr_res_id, is_ca=True, is_cms=False): # POS: application_id, application_entity, uniq_seq, None # OCR: application_id, business_type(application_entity), None, ocr_res_id - compare_log.info('{0} [receive task] [entity={1}] [id={2}] [uniq_seq={3}] [ocr_res_id={4}] [is_ca={5}]'.format( - log_base, application_entity, application_id, uniq_seq, ocr_res_id, is_ca)) + compare_log.info('{0} [receive task] [entity={1}] [id={2}] [uniq_seq={3}] [ocr_res_id={4}] [is_ca={5}] ' + '[is_cms={6}]'.format(log_base, application_entity, application_id, uniq_seq, ocr_res_id, + is_ca, is_cms)) # 根据application_id查找最新的比对信息,如果没有,结束 if is_ca: @@ -1172,7 +1283,8 @@ def compare(application_id, application_entity, uniq_seq, ocr_res_id, is_ca=True last_obj = comparison_class.objects.filter(application_id=application_id).last() if last_obj is None: compare_log.info('{0} [comparison info empty] [entity={1}] [id={2}] [uniq_seq={3}] [ocr_res_id={4}] ' - '[is_ca={5}]'.format(log_base, application_entity, application_id, uniq_seq, ocr_res_id, is_ca)) + '[is_ca={5}] [is_cms]={6}'.format(log_base, application_entity, application_id, uniq_seq, + ocr_res_id, is_ca, is_cms)) return # 根据application_id查找OCR累计结果指定license字段,如果没有,结束 @@ -1186,13 +1298,14 @@ def compare(application_id, application_entity, uniq_seq, ocr_res_id, is_ca=True ocr_res_dict = result_class.objects.filter(id=ocr_res_id).values(*consts.COMPARE_FIELDS).first() if ocr_res_dict is None: compare_log.info('{0} [ocr info empty] [entity={1}] [id={2}] [uniq_seq={3}] [ocr_res_id={4}] ' - '[is_ca={5}]'.format(log_base, application_entity, application_id, uniq_seq, ocr_res_id, is_ca)) + '[is_ca={5}] [is_cms]={6}'.format(log_base, application_entity, application_id, + uniq_seq, ocr_res_id, is_ca, is_cms)) return if is_ca: ca_compare(application_id, application_entity, ocr_res_id, last_obj, ocr_res_dict) else: - se_compare(application_id, application_entity, ocr_res_id, last_obj, ocr_res_dict) + se_compare(application_id, application_entity, ocr_res_id, last_obj, ocr_res_dict, is_cms)