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

1.优化

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