提交 5865634f authored 作者: 刘擎阳's avatar 刘擎阳

1.优化

上级 69889a83
...@@ -151,20 +151,20 @@ class OrderStateChangeRule(models.Model): ...@@ -151,20 +151,20 @@ class OrderStateChangeRule(models.Model):
retries += 1 # 上传失败,增加重试次数 retries += 1 # 上传失败,增加重试次数
if retries > max_retries: if retries > max_retries:
_logger.info(f"上传文件 {file_obj.attachment_name} 失败,已尝试 {max_retries} 次,仍然失败。") _logger.info(f"上传文件 {file_obj.attachment_name} 失败,已尝试 {max_retries} 次,仍然失败。")
break # 超过最大重试次数后跳出循环 return False # 超过最大重试次数后跳出循环
else: else:
_logger.info(f"上传文件 {file_obj.attachment_name} 失败,正在重新尝试第 {retries} 次...") _logger.info(f"上传文件 {file_obj.attachment_name} 失败,正在重新尝试第 {retries} 次...")
else: else:
# 如果上传成功,退出重试循环 # 如果上传成功,退出重试循环
_logger.info(f"文件 {file_obj.attachment_name} 上传成功") _logger.info(f"文件 {file_obj.attachment_name} 上传成功")
break return True
except Exception as e: except Exception as e:
# 捕获任何异常并重试 # 捕获任何异常并重试
retries += 1 retries += 1
_logger.info(f"发生异常:{e},正在重新尝试第 {retries} 次上传文件 {file_obj.attachment_name}...") _logger.info(f"发生异常:{e},正在重新尝试第 {retries} 次上传文件 {file_obj.attachment_name}...")
if retries > max_retries: if retries > max_retries:
_logger.info(f"上传文件 {file_obj.attachment_name} 失败,已尝试 {max_retries} 次,仍然失败。") _logger.info(f"上传文件 {file_obj.attachment_name} 失败,已尝试 {max_retries} 次,仍然失败。")
break # 超过最大重试次数后跳出循环 return False # 超过最大重试次数后跳出循环
def get_pdf_order_data(self, attachment_data): def get_pdf_order_data(self, attachment_data):
"""识别PDF数据方法""" """识别PDF数据方法"""
...@@ -339,6 +339,7 @@ class OrderStateChangeRule(models.Model): ...@@ -339,6 +339,7 @@ class OrderStateChangeRule(models.Model):
ids = [i[0] for i in result] ids = [i[0] for i in result]
bl_objs = self.env['cc.bl'].sudo().search([('id', 'in', ids)]) if ids else False bl_objs = self.env['cc.bl'].sudo().search([('id', 'in', ids)]) if ids else False
not_bl_pdf_arr = [] not_bl_pdf_arr = []
upload_fail_arr = []
if bl_objs: if bl_objs:
for bl_obj in bl_objs: for bl_obj in bl_objs:
target_awb = bl_obj.bl_no target_awb = bl_obj.bl_no
...@@ -354,19 +355,23 @@ class OrderStateChangeRule(models.Model): ...@@ -354,19 +355,23 @@ class OrderStateChangeRule(models.Model):
if result_merge.get("output") and os.path.exists(result_merge["output"]): if result_merge.get("output") and os.path.exists(result_merge["output"]):
with open(result_merge["output"], 'rb') as f: with open(result_merge["output"], 'rb') as f:
extracted_pdf_bytes = f.read() extracted_pdf_bytes = f.read()
self.upload_pod_attachment(bl_obj, f'{bl_obj.bl_no}.pdf', extracted_pdf_bytes) is_upload_ok = self.upload_pod_attachment(bl_obj, f'{bl_obj.bl_no}.pdf', extracted_pdf_bytes)
if not is_upload_ok:
upload_fail_arr.append(bl_obj.bl_no)
else: else:
not_bl_pdf_arr.append(bl_obj.bl_no) not_bl_pdf_arr.append(bl_obj.bl_no)
self._cr.commit() self._cr.commit()
# 4. 异常报警逻辑 # 4. 异常报警逻辑
if not bl_objs or not_bl_pdf_arr: if not bl_objs or not_bl_pdf_arr or upload_fail_arr:
mail_time = (datetime.utcnow() + timedelta(hours=8)).strftime("%Y-%m-%d %H:%M:%S") mail_time = (datetime.utcnow() + timedelta(hours=8)).strftime("%Y-%m-%d %H:%M:%S")
content = f"""<p>您好: content = f"""<p>您好:
邮箱在{mail_time}(+8)时间接收到主题为POD的邮件,但未识别到对应的提单,请检查 邮箱在{mail_time}(+8)时间接收到主题为POD的邮件,但未识别到对应的提单,请检查
避免推送超时!</p> 避免推送超时!</p>
""" """
if not_bl_pdf_arr: if not_bl_pdf_arr:
content += f"\n 以下提单未提取到PDF文件 {'/'.join(not_bl_pdf_arr)}" content += f"\n 以下提单未提取到PDF文件: {'/'.join(not_bl_pdf_arr)}"
if upload_fail_arr:
content += f"<br> 以下提单向TK推送POD文件失败: {'/'.join(upload_fail_arr)}"
# 给客户配置的每个邮箱都发送邮件 # 给客户配置的每个邮箱都发送邮件
patrol_sender_email = self.env["ir.config_parameter"].sudo().get_param( patrol_sender_email = self.env["ir.config_parameter"].sudo().get_param(
'patrol_sender_email') or '' 'patrol_sender_email') or ''
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论