Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
H
hh_ccs
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
贺阳
hh_ccs
Commits
d5ccac2a
提交
d5ccac2a
authored
11月 03, 2025
作者:
贺阳
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
失败的保存成功的提单优化
上级
ab556fae
显示空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
20 行增加
和
36 行删除
+20
-36
batch_get_pod_info_wizard.py
ccs_base/wizard/batch_get_pod_info_wizard.py
+20
-36
没有找到文件。
ccs_base/wizard/batch_get_pod_info_wizard.py
浏览文件 @
d5ccac2a
...
@@ -134,22 +134,19 @@ class BatchGetPodInfoWizard(models.TransientModel):
...
@@ -134,22 +134,19 @@ class BatchGetPodInfoWizard(models.TransientModel):
_logger
.
info
(
f
"所有提单都处理成功,自动勾选同步选项"
)
_logger
.
info
(
f
"所有提单都处理成功,自动勾选同步选项"
)
else
:
else
:
# 有失败的文件,保持未勾选状态,让用户决定
# 有失败的文件,保持未勾选状态,让用户决定
# 将成功处理的提单
信息追加到show_error_message中(使用特殊分隔符)
# 将成功处理的提单
号追加到show_error_message中
if
successful_files
:
if
successful_files
:
successful_bl_
data
=
[]
successful_bl_
nos
=
[]
for
file_info
in
successful_files
:
for
file_info
in
successful_files
:
if
file_info
.
get
(
'bl'
):
if
file_info
.
get
(
'bl'
):
bl
=
file_info
[
'bl'
]
bl
=
file_info
[
'bl'
]
successful_bl_data
.
append
({
successful_bl_nos
.
append
(
bl
.
bl_no
)
'bl_id'
:
bl
.
id
,
# 在错误消息后面追加成功处理的提单号
'bl_no'
:
bl
.
bl_no
})
# 在错误消息后面追加成功处理的提单信息(使用特殊分隔符,不会在UI中显示)
successful_bls_json
=
json
.
dumps
(
successful_bl_data
,
ensure_ascii
=
False
)
existing_error
=
self
.
show_error_message
or
''
existing_error
=
self
.
show_error_message
or
''
# 使用特殊分隔符,方便后续解析,但在UI中不会显示这部分
successful_bl_nos_str
=
'、'
.
join
(
successful_bl_nos
)
if
successful_bl_nos
else
''
self
.
show_error_message
=
f
"{existing_error}
\n
<!--SUCCESSFUL_BLS_START-->{successful_bls_json}<!--SUCCESSFUL_BLS_END-->"
success_msg
=
f
"
\n
成功处理的提单: {successful_bl_nos_str}"
if
successful_bl_nos_str
else
''
_logger
.
info
(
f
"部分提单处理失败(成功:{len(successful_files)},失败:{len(failed_files)}),成功处理的提单信息已保存到错误消息中"
)
self
.
show_error_message
=
f
"{existing_error}{success_msg}"
_logger
.
info
(
f
"部分提单处理失败(成功:{len(successful_files)},失败:{len(failed_files)}),成功处理的提单号已显示"
)
self
.
sync_successful_processed
=
False
self
.
sync_successful_processed
=
False
# 序列化并存储处理后的文件数据(包括成功和失败的,但只有成功的才会合并PDF)
# 序列化并存储处理后的文件数据(包括成功和失败的,但只有成功的才会合并PDF)
...
@@ -277,36 +274,23 @@ class BatchGetPodInfoWizard(models.TransientModel):
...
@@ -277,36 +274,23 @@ class BatchGetPodInfoWizard(models.TransientModel):
}
}
# 只处理成功涂抹的提单
# 只处理成功涂抹的提单
# 从show_error_message中获取成功处理的提单ID(如果有失败的话)
# 直接根据processed_files中的processing_failed标志筛选成功处理的文件,无需从文本解析
successful_bl_ids
=
[]
if
self
.
show_error_message
and
'<!--SUCCESSFUL_BLS_START-->'
in
str
(
self
.
show_error_message
):
try
:
# 从show_error_message中提取成功处理的提单信息
error_msg
=
str
(
self
.
show_error_message
)
start_marker
=
'<!--SUCCESSFUL_BLS_START-->'
end_marker
=
'<!--SUCCESSFUL_BLS_END-->'
start_idx
=
error_msg
.
find
(
start_marker
)
end_idx
=
error_msg
.
find
(
end_marker
)
if
start_idx
!=
-
1
and
end_idx
!=
-
1
:
successful_bls_json
=
error_msg
[
start_idx
+
len
(
start_marker
):
end_idx
]
successful_bl_data
=
json
.
loads
(
successful_bls_json
)
successful_bl_ids
=
[
item
[
'bl_id'
]
for
item
in
successful_bl_data
]
_logger
.
info
(
f
"从错误消息中解析出{len(successful_bl_ids)}个成功处理的提单ID"
)
except
Exception
as
e
:
_logger
.
warning
(
f
"解析成功处理的提单数据失败: {str(e)}"
)
# 过滤出成功处理的文件
successful_processed_files
=
[]
successful_processed_files
=
[]
if
successful_bl_ids
:
# 如果有成功处理的提单ID(说明有失败),只处理成功的
if
processed_files
:
if
processed_files
:
successful_bl_ids_set
=
set
(
successful_bl_ids
)
for
file_info
in
processed_files
:
for
file_info
in
processed_files
:
if
file_info
.
get
(
'bl'
)
and
file_info
[
'bl'
]
.
id
in
successful_bl_ids_set
:
# 检查是否有bl对象和有文件数据
if
not
file_info
.
get
(
'bl'
):
continue
bl
=
file_info
[
'bl'
]
file_data
=
file_info
.
get
(
'file_data'
,
''
)
# 检查处理是否失败(通过processing_failed标记)
processing_failed
=
file_info
.
get
(
'processing_failed'
,
False
)
# 如果有文件数据且未标记为失败,则认为处理成功
if
file_data
and
not
processing_failed
:
successful_processed_files
.
append
(
file_info
)
successful_processed_files
.
append
(
file_info
)
_logger
.
info
(
f
"从{len(processed_files)}个文件中筛选出{len(successful_processed_files)}个成功处理的文件"
)
else
:
else
:
# 如果没有失败(没有成功处理的提单ID列表),说明全部成功,处理所有文件
_logger
.
warning
(
"没有找到已处理的文件数据"
)
successful_processed_files
=
processed_files
# 回写到附件信息
# 回写到附件信息
if
successful_processed_files
and
(
self
.
sync_last_mile_pod
or
self
.
sync_match_node
):
if
successful_processed_files
and
(
self
.
sync_last_mile_pod
or
self
.
sync_match_node
):
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论