提交 82dc502b authored 作者: 贺阳's avatar 贺阳

按节点编码分组,根据同步时间降序,得到对应的同步日志对象,然后再根据节点编码的顺序排序

上级 647974dd
...@@ -140,8 +140,26 @@ class BlPatrol(models.Model): ...@@ -140,8 +140,26 @@ class BlPatrol(models.Model):
# 获取该提单下所有小包的同步日志 # 获取该提单下所有小包的同步日志
ship_packages = bl.ship_package_ids ship_packages = bl.ship_package_ids
for package in ship_packages: for package in ship_packages:
sync_logs = package.sync_log_ids # 小包日志 # 按节点编码分组,根据同步时间降序,得到对应的同步日志对象,然后再根据节点编码的顺序排序,得到同步日志对象数组
# 检查多条日志的倒叙问题 - 只检查小包节点,不检查关务节点 logs_by_process = {}
for log in package.sync_log_ids:
if log.process_code not in logs_by_process:
logs_by_process[log.process_code] = log
else:
# 如果已有该节点的日志,比较sync_time,保留最新的
if log.sync_time and log.sync_time > logs_by_process[log.process_code].sync_time:
logs_by_process[log.process_code] = log
# 方法1: 根据节点的seq进行排序(推荐)
sync_logs = []
bl_nodes = self.env['cc.node'].sudo().search([('node_type', '=', 'package')], order='seq')
if bl_nodes:
for node in bl_nodes:
if node.is_default:
continue
if node.tk_code in logs_by_process:
sync_logs.append(logs_by_process[node.tk_code])
sync_logs = [log for log in sync_logs if log is not None]
#根据key排序获取logs
if len(sync_logs) >= 2: if len(sync_logs) >= 2:
for i in range(1, len(sync_logs)): for i in range(1, len(sync_logs)):
current_log = sync_logs[i] # 当前日志 current_log = sync_logs[i] # 当前日志
...@@ -266,10 +284,25 @@ class BlPatrol(models.Model): ...@@ -266,10 +284,25 @@ class BlPatrol(models.Model):
检查提单关务节点问题 检查提单关务节点问题
""" """
issues = [] issues = []
sync_logs = bl.bl_sync_log_ids # 提单日志 # 按节点编码分组,根据同步时间降序,得到对应的同步日志对象
logs_by_bl_process = {}
for log in bl.bl_sync_log_ids:
if log.process_code not in logs_by_bl_process:
logs_by_bl_process[log.process_code] = log
else:
# 如果已有该节点的日志,比较sync_time,保留最新的
if log.sync_time and log.sync_time > logs_by_bl_process[log.process_code].sync_time:
logs_by_bl_process[log.process_code] = log
# 根据节点的seq进行排序
sync_logs = []
# 获取所有提单节点,按业务顺序排序
bl_nodes = self.env['cc.node'].sudo().search([('node_type', '=', 'bl')], order='seq')
if bl_nodes:
for node in bl_nodes:
if node.tk_code in logs_by_bl_process.keys():
sync_logs.append(logs_by_bl_process[node.tk_code])
# 检查倒叙问题 # 检查倒叙问题
if len(sync_logs) >= 2: if len(sync_logs) >= 2:
_logger.info(f"=== 提单 {bl.bl_no} 倒序检查调试 ===")
# 获取所有提单节点,按业务顺序排序 # 获取所有提单节点,按业务顺序排序
bl_nodes = self.env['cc.node'].sudo().search([('node_type', '=', 'bl')], order='seq') bl_nodes = self.env['cc.node'].sudo().search([('node_type', '=', 'bl')], order='seq')
if bl_nodes: if bl_nodes:
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论