d6fc968c by 冯轩

Merge branch 'hotfix/2025-02'

2 parents 8eb3eae2 a0de225f
...@@ -2130,9 +2130,19 @@ class Command(BaseCommand, LoggerMixin): ...@@ -2130,9 +2130,19 @@ class Command(BaseCommand, LoggerMixin):
2130 # 更新OCR累计识别结果表 2130 # 更新OCR累计识别结果表
2131 if business_type == consts.HIL_PREFIX: 2131 if business_type == consts.HIL_PREFIX:
2132 result_class = HILOCRResult if is_ca else HILSEOCRResult 2132 result_class = HILOCRResult if is_ca else HILSEOCRResult
2133 try:
2134 res_obj = atomicSaveDBHIL(self,result_class,doc,license_summary,ic_merge,rp_merge, task_str, financial_statement_dict, financial_explanation_dict)
2135 except Exception as e:
2136 # 遇到报错重试一次,希望解决两个文件首次入库都插入的问题
2137 self.online_log.error('{0} [process error (ocr result save) retry] [task={1}] [error={2}]'.format(self.log_base, task_str, traceback.format_exc()))
2133 res_obj = atomicSaveDBHIL(self,result_class,doc,license_summary,ic_merge,rp_merge, task_str, financial_statement_dict, financial_explanation_dict) 2138 res_obj = atomicSaveDBHIL(self,result_class,doc,license_summary,ic_merge,rp_merge, task_str, financial_statement_dict, financial_explanation_dict)
2134 else: 2139 else:
2135 result_class = AFCOCRResult if is_ca else AFCSEOCRResult 2140 result_class = AFCOCRResult if is_ca else AFCSEOCRResult
2141 try:
2142 res_obj = atomicSaveDBAFC(self,result_class,doc,license_summary,ic_merge,rp_merge, task_str, financial_statement_dict, financial_explanation_dict)
2143 except Exception as e:
2144 # 遇到报错重试一次,希望解决两个文件首次入库都插入的问题
2145 self.online_log.error('{0} [process error (ocr result save) retry] [task={1}] [error={2}]'.format(self.log_base, task_str, traceback.format_exc()))
2136 res_obj = atomicSaveDBAFC(self,result_class,doc,license_summary,ic_merge,rp_merge, task_str, financial_statement_dict, financial_explanation_dict) 2146 res_obj = atomicSaveDBAFC(self,result_class,doc,license_summary,ic_merge,rp_merge, task_str, financial_statement_dict, financial_explanation_dict)
2137 2147
2138 except Exception as e: 2148 except Exception as e:
...@@ -2172,9 +2182,19 @@ class Command(BaseCommand, LoggerMixin): ...@@ -2172,9 +2182,19 @@ class Command(BaseCommand, LoggerMixin):
2172 # 更新OCR累计识别结果表 2182 # 更新OCR累计识别结果表
2173 if business_type == consts.HIL_PREFIX: 2183 if business_type == consts.HIL_PREFIX:
2174 result_class = HILOCRResult if is_ca else HILSEOCRResult 2184 result_class = HILOCRResult if is_ca else HILSEOCRResult
2185 try:
2186 res_obj = atomicSaveDBHIL(self,result_class,doc,license_summary,ic_merge,rp_merge, task_str, financial_statement_dict, financial_explanation_dict)
2187 except Exception as e:
2188 # 遇到报错重试一次,希望解决两个文件首次入库都插入的问题
2189 self.online_log.error('{0} [process error (ocr result save) retry] [task={1}] [error={2}]'.format(self.log_base, task_str, traceback.format_exc()))
2175 res_obj = atomicSaveDBHIL(self,result_class,doc,license_summary,ic_merge,rp_merge, task_str, financial_statement_dict, financial_explanation_dict) 2190 res_obj = atomicSaveDBHIL(self,result_class,doc,license_summary,ic_merge,rp_merge, task_str, financial_statement_dict, financial_explanation_dict)
2176 else: 2191 else:
2177 result_class = AFCOCRResult if is_ca else AFCSEOCRResult 2192 result_class = AFCOCRResult if is_ca else AFCSEOCRResult
2193 try:
2194 res_obj = atomicSaveDBAFC(self,result_class,doc,license_summary,ic_merge,rp_merge, task_str, financial_statement_dict, financial_explanation_dict)
2195 except Exception as e:
2196 # 遇到报错重试一次,希望解决两个文件首次入库都插入的问题
2197 self.online_log.error('{0} [process error (ocr result save) retry] [task={1}] [error={2}]'.format(self.log_base, task_str, traceback.format_exc()))
2178 res_obj = atomicSaveDBAFC(self,result_class,doc,license_summary,ic_merge,rp_merge, task_str, financial_statement_dict, financial_explanation_dict) 2198 res_obj = atomicSaveDBAFC(self,result_class,doc,license_summary,ic_merge,rp_merge, task_str, financial_statement_dict, financial_explanation_dict)
2179 except Exception as e: 2199 except Exception as e:
2180 self.online_log.error( 2200 self.online_log.error(
......
...@@ -3773,20 +3773,29 @@ def fsm_compare(application_id, application_entity, uniq_seq, ocr_res_id, is_ca= ...@@ -3773,20 +3773,29 @@ def fsm_compare(application_id, application_entity, uniq_seq, ocr_res_id, is_ca=
3773 3773
3774 compare_log.info('[fsm thread]') 3774 compare_log.info('[fsm thread]')
3775 #pool = ThreadPoolExecutor(max_workers=6, thread_name_prefix="fsm_thread_") 3775 #pool = ThreadPoolExecutor(max_workers=6, thread_name_prefix="fsm_thread_")
3776 try:
3777 # 这个try不生效
3776 pool.submit(fsm_compare_thread, application_id, application_entity, uniq_seq, ocr_res_id, is_ca, is_cms) 3778 pool.submit(fsm_compare_thread, application_id, application_entity, uniq_seq, ocr_res_id, is_ca, is_cms)
3779 except Exception as e:
3780 compare_log.info('[fsm thread fail] [error={0}]'.format(traceback.format_exc()))
3777 #pool.shutdown(wait=True) 3781 #pool.shutdown(wait=True)
3778 3782
3779 3783
3780 def fsm_compare_thread(application_id, application_entity, uniq_seq, ocr_res_id, is_ca=True, is_cms=False): 3784 def fsm_compare_thread(application_id, application_entity, uniq_seq, ocr_res_id, is_ca=True, is_cms=False):
3785 try:
3781 compare_log.info('{0} [receive fsm task] [entity={1}] [id={2}] [uniq_seq={3}] [ocr_res_id={4}] [is_ca={5}] ' 3786 compare_log.info('{0} [receive fsm task] [entity={1}] [id={2}] [uniq_seq={3}] [ocr_res_id={4}] [is_ca={5}] '
3782 '[is_cms={6}]'.format(log_base, application_entity, application_id, uniq_seq, ocr_res_id, 3787 '[is_cms={6}]'.format(log_base, application_entity, application_id, uniq_seq, ocr_res_id,
3783 is_ca, is_cms)) 3788 is_ca, is_cms))
3784 3789
3785 # 查看此订单号下是否有未完成的文件,如果有,等1分钟 3790 # 查看此订单号下是否有未完成的文件,如果有,等1分钟
3791 try:
3786 doc_wait_file_class = HILDoc if application_entity == consts.HIL_PREFIX else AFCDoc 3792 doc_wait_file_class = HILDoc if application_entity == consts.HIL_PREFIX else AFCDoc
3787 doc_wait_file_result = doc_wait_file_class.objects.filter(application_id=application_id, status=1).first() 3793 doc_wait_file_result = doc_wait_file_class.objects.filter(application_id=application_id, status=1).first()
3788 compare_log.info('doc_wait_file_result:{0}'.format(doc_wait_file_result)) 3794 compare_log.info('doc_wait_file_result:{0}'.format(doc_wait_file_result))
3789 compare_log.info('{0} [comparison unfinished file check] [entity={1}] [id={2}] [doc_wait_file_result={3}]'.format(log_base, application_entity, application_id, doc_wait_file_result)) 3795 compare_log.info('{0} [comparison unfinished file check] [entity={1}] [id={2}] [doc_wait_file_result={3}]'.format(log_base, application_entity, application_id, doc_wait_file_result))
3796 except Exception as e:
3797 doc_wait_file_result = None
3798 compare_log.info('[get doc_wait_file_result fail] [error={0}]'.format(traceback.format_exc()))
3790 if doc_wait_file_result is not None: 3799 if doc_wait_file_result is not None:
3791 # 实时查询延迟时间 3800 # 实时查询延迟时间
3792 try: 3801 try:
...@@ -3806,7 +3815,6 @@ def fsm_compare_thread(application_id, application_entity, uniq_seq, ocr_res_id, ...@@ -3806,7 +3815,6 @@ def fsm_compare_thread(application_id, application_entity, uniq_seq, ocr_res_id,
3806 compare_log.info('[sleep error] [error={0}]'.format(traceback.format_exc())) 3815 compare_log.info('[sleep error] [error={0}]'.format(traceback.format_exc()))
3807 compare_log.info('{0} [comparison unfinished file wait delay_time end] [entity={1}] [id={2}] [doc_id={3}]'.format(log_base, application_entity, application_id, doc_wait_file_result.id)) 3816 compare_log.info('{0} [comparison unfinished file wait delay_time end] [entity={1}] [id={2}] [doc_id={3}]'.format(log_base, application_entity, application_id, doc_wait_file_result.id))
3808 3817
3809
3810 # 调用java fsm 比对流程接口(http) 3818 # 调用java fsm 比对流程接口(http)
3811 # 调用Java fsm 比对流程接口, fsm 是se流程, ca可以暂时忽略 3819 # 调用Java fsm 比对流程接口, fsm 是se流程, ca可以暂时忽略
3812 auto_class = HILAutoSettlement if application_entity == consts.HIL_PREFIX else AFCAutoSettlement 3820 auto_class = HILAutoSettlement if application_entity == consts.HIL_PREFIX else AFCAutoSettlement
...@@ -3835,6 +3843,8 @@ def fsm_compare_thread(application_id, application_entity, uniq_seq, ocr_res_id, ...@@ -3835,6 +3843,8 @@ def fsm_compare_thread(application_id, application_entity, uniq_seq, ocr_res_id,
3835 except Exception as e: 3843 except Exception as e:
3836 compare_log.error("fsm full request to java error, url:{0}, param:{1}, errorMsg:{2}".format( 3844 compare_log.error("fsm full request to java error, url:{0}, param:{1}, errorMsg:{2}".format(
3837 url, json.dumps(body), traceback.format_exc())) 3845 url, json.dumps(body), traceback.format_exc()))
3846 except Exception as e:
3847 compare_log.info('[fsm_compare_thread error] [error={0}]'.format(traceback.format_exc()))
3838 3848
3839 3849
3840 @app.task 3850 @app.task
...@@ -3851,42 +3861,21 @@ def compare(application_id, application_entity, uniq_seq, ocr_res_id, is_ca=True ...@@ -3851,42 +3861,21 @@ def compare(application_id, application_entity, uniq_seq, ocr_res_id, is_ca=True
3851 3861
3852 compare_log.info('[non fsm thread]') 3862 compare_log.info('[non fsm thread]')
3853 #pool = ThreadPoolExecutor(max_workers=6, thread_name_prefix="non_fsm_thread_") 3863 #pool = ThreadPoolExecutor(max_workers=6, thread_name_prefix="non_fsm_thread_")
3864 try:
3865 # 这个try不生效
3854 pool.submit(compare_thread, application_id, application_entity, uniq_seq, ocr_res_id, is_ca, is_cms) 3866 pool.submit(compare_thread, application_id, application_entity, uniq_seq, ocr_res_id, is_ca, is_cms)
3867 except Exception as e:
3868 compare_log.info('[non fsm thread fail] [error={0}]'.format(traceback.format_exc()))
3855 #pool.shutdown(wait=True) 3869 #pool.shutdown(wait=True)
3856 3870
3857 def compare_thread(application_id, application_entity, uniq_seq, ocr_res_id, is_ca=True, is_cms=False): 3871 def compare_thread(application_id, application_entity, uniq_seq, ocr_res_id, is_ca=True, is_cms=False):
3858 # POS: application_id, application_entity, uniq_seq, None 3872 # POS: application_id, application_entity, uniq_seq, None
3859 # OCR: application_id, business_type(application_entity), None, ocr_res_id 3873 # OCR: application_id, business_type(application_entity), None, ocr_res_id
3860 3874 try:
3861 compare_log.info('{0} [receive task] [entity={1}] [id={2}] [uniq_seq={3}] [ocr_res_id={4}] [is_ca={5}] ' 3875 compare_log.info('{0} [receive task] [entity={1}] [id={2}] [uniq_seq={3}] [ocr_res_id={4}] [is_ca={5}] '
3862 '[is_cms={6}]'.format(log_base, application_entity, application_id, uniq_seq, ocr_res_id, 3876 '[is_cms={6}]'.format(log_base, application_entity, application_id, uniq_seq, ocr_res_id,
3863 is_ca, is_cms)) 3877 is_ca, is_cms))
3864 3878
3865 # 查看此订单号下是否有未完成的文件,如果有,等?分钟
3866 doc_wait_file_class = HILDoc if application_entity == consts.HIL_PREFIX else AFCDoc
3867 doc_wait_file_result = doc_wait_file_class.objects.filter(application_id=application_id, status=1).first()
3868 compare_log.info('doc_wait_file_result:{0}'.format(doc_wait_file_result))
3869 compare_log.info('{0} [comparison unfinished file check] [entity={1}] [id={2}] [doc_wait_file_result={3}]'.format(log_base, application_entity, application_id, doc_wait_file_result))
3870 if doc_wait_file_result is not None:
3871 # 实时查询延迟时间
3872 try:
3873 delay_time_config = Configs.objects.filter(id=4).first()
3874 if delay_time_config is not None and delay_time_config.value is not None and delay_time_config.value.isdigit():
3875 delay_time = delay_time_config.value
3876 else:
3877 delay_time = 0
3878 except Exception as e:
3879 delay_time = 0
3880 compare_log.info('[get delay_time_config fail] [error={0}]'.format(traceback.format_exc()))
3881 compare_log.info('delay_time:{0}'.format(delay_time))
3882 compare_log.info('{0} [comparison unfinished file wait delay_time start] [entity={1}] [id={2}] [doc_id={3}]'.format(log_base, application_entity, application_id, doc_wait_file_result.id))
3883 try:
3884 time.sleep(int(delay_time))
3885 except Exception as e:
3886 compare_log.info('[sleep error] [error={0}]'.format(traceback.format_exc()))
3887 compare_log.info('{0} [comparison unfinished file wait delay_time end] [entity={1}] [id={2}] [doc_id={3}]'.format(log_base, application_entity, application_id, doc_wait_file_result.id))
3888
3889
3890 # 根据application_id查找最新的比对信息,如果没有,结束 3879 # 根据application_id查找最新的比对信息,如果没有,结束
3891 if is_ca: 3880 if is_ca:
3892 comparison_class = HILComparisonInfo if application_entity == consts.HIL_PREFIX else AFCComparisonInfo 3881 comparison_class = HILComparisonInfo if application_entity == consts.HIL_PREFIX else AFCComparisonInfo
...@@ -3925,6 +3914,35 @@ def compare_thread(application_id, application_entity, uniq_seq, ocr_res_id, is_ ...@@ -3925,6 +3914,35 @@ def compare_thread(application_id, application_entity, uniq_seq, ocr_res_id, is_
3925 uniq_seq, ocr_res_id, is_ca, is_cms)) 3914 uniq_seq, ocr_res_id, is_ca, is_cms))
3926 return 3915 return
3927 3916
3917 # 查看此订单号下是否有未完成的文件,如果有,等?分钟
3918 try:
3919 doc_wait_file_class = HILDoc if application_entity == consts.HIL_PREFIX else AFCDoc
3920 doc_wait_file_result = doc_wait_file_class.objects.filter(application_id=application_id, status=1).first()
3921 compare_log.info('doc_wait_file_result:{0}'.format(doc_wait_file_result))
3922 compare_log.info('{0} [comparison unfinished file check] [entity={1}] [id={2}] [doc_wait_file_result={3}]'.format(log_base, application_entity, application_id, doc_wait_file_result))
3923 except Exception as e:
3924 doc_wait_file_result = None
3925 compare_log.info('[get doc_wait_file_result fail] [error={0}]'.format(traceback.format_exc()))
3926 if doc_wait_file_result is not None:
3927 # 实时查询延迟时间
3928 try:
3929 delay_time_config = Configs.objects.filter(id=4).first()
3930 if delay_time_config is not None and delay_time_config.value is not None and delay_time_config.value.isdigit():
3931 delay_time = delay_time_config.value
3932 else:
3933 delay_time = 0
3934 except Exception as e:
3935 delay_time = 0
3936 compare_log.info('[get delay_time_config fail] [error={0}]'.format(traceback.format_exc()))
3937 compare_log.info('delay_time:{0}'.format(delay_time))
3938 compare_log.info('{0} [comparison unfinished file wait delay_time start] [entity={1}] [id={2}] [doc_id={3}]'.format(log_base, application_entity, application_id, doc_wait_file_result.id))
3939 try:
3940 time.sleep(int(delay_time))
3941 except Exception as e:
3942 compare_log.info('[sleep error] [error={0}]'.format(traceback.format_exc()))
3943 compare_log.info('{0} [comparison unfinished file wait delay_time end] [entity={1}] [id={2}] [doc_id={3}]'.format(log_base, application_entity, application_id, doc_wait_file_result.id))
3944
3945
3928 if is_ca: 3946 if is_ca:
3929 ca_compare(application_id, application_entity, ocr_res_id, last_obj, ocr_res_dict) 3947 ca_compare(application_id, application_entity, ocr_res_id, last_obj, ocr_res_dict)
3930 else: 3948 else:
...@@ -3969,4 +3987,5 @@ def compare_thread(application_id, application_entity, uniq_seq, ocr_res_id, is_ ...@@ -3969,4 +3987,5 @@ def compare_thread(application_id, application_entity, uniq_seq, ocr_res_id, is_
3969 compare_log.error('{0} [Auto SE] [result save error] [entity={1}] [id={2}] [ocr_res_id={3}] ' 3987 compare_log.error('{0} [Auto SE] [result save error] [entity={1}] [id={2}] [ocr_res_id={3}] '
3970 '[error={4}]'.format(log_base, application_entity, application_id, ocr_res_id, 3988 '[error={4}]'.format(log_base, application_entity, application_id, ocr_res_id,
3971 traceback.format_exc())) 3989 traceback.format_exc()))
3972 3990 except Exception as e:
3991 compare_log.info('[compare_thread error] [error={0}]'.format(traceback.format_exc()))
......
...@@ -102,7 +102,7 @@ for db_setting in DATABASES.values(): ...@@ -102,7 +102,7 @@ for db_setting in DATABASES.values():
102 'driver': 'ODBC Driver 17 for SQL Server', 102 'driver': 'ODBC Driver 17 for SQL Server',
103 'extra_params': "odbc_cursortype=2" 103 'extra_params': "odbc_cursortype=2"
104 } 104 }
105 105 db_setting['CONN_MAX_AGE'] = 60
106 # set this to False if you want to turn off pyodbc's connection pooling 106 # set this to False if you want to turn off pyodbc's connection pooling
107 DATABASE_CONNECTION_POOLING = True 107 DATABASE_CONNECTION_POOLING = True
108 108
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!