提交 5dec80aa authored 作者: 贺阳's avatar 贺阳

是必须节点的才参与倒挂和漏推的比较

上级 ecd2d710
......@@ -151,7 +151,7 @@ class BlPatrol(models.Model):
logs_by_process[log.process_code] = log
# 方法1: 根据节点的seq进行排序(推荐)
sync_logs = []
bl_nodes = self.env['cc.node'].sudo().search([('node_type', '=', 'package')], order='seq')
bl_nodes = self.env['cc.node'].sudo().search([('node_type', '=', 'package'),('is_must', '=', True)], order='seq')
if bl_nodes:
for node in bl_nodes:
if node.is_default:
......@@ -169,8 +169,7 @@ class BlPatrol(models.Model):
if current_time and previous_time and current_time < previous_time:
try:
# 检查节点类型,只处理小包节点
node = self.env['cc.node'].sudo().search(
[('node_type', '=', 'package'), ('tk_code', '=', current_log.process_code)])
node = self.env['cc.node'].sudo().search([('node_type', '=', 'package'), ('tk_code', '=', current_log.process_code)])
if node: # 只处理小包节点
progress_name = node.name or "空"
process_code = node.tk_code or "空"
......@@ -247,7 +246,7 @@ class BlPatrol(models.Model):
"""
issues = []
# 获取所有小包节点,按顺序排序
package_nodes = self.env['cc.node'].sudo().search([('node_type', '=', 'package')], order='seq')
package_nodes = self.env['cc.node'].sudo().search([('node_type', '=', 'package'),('is_must', '=', True)], order='seq')
if not package_nodes:
return issues
# 检查每个节点是否有对应的同步日志
......@@ -296,43 +295,40 @@ class BlPatrol(models.Model):
# 根据节点的seq进行排序
sync_logs = []
# 获取所有提单节点,按业务顺序排序
bl_nodes = self.env['cc.node'].sudo().search([('node_type', '=', 'bl')], order='seq')
bl_nodes = self.env['cc.node'].sudo().search([('node_type', '=', 'bl'),('is_must', '=', True)], 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:
# 获取所有提单节点,按业务顺序排序
bl_nodes = self.env['cc.node'].sudo().search([('node_type', '=', 'bl')], order='seq')
if bl_nodes:
# 收集所有有日志的节点及其时间
node_logs = {} # {node_index: (node, log, time)}
for i, node in enumerate(bl_nodes):
for log in sync_logs:
if log.process_code == node.tk_code:
node_logs[i] = (node, log, log.operate_time)
break
# 遍历每个有日志的节点,与前面所有有日志的节点比较
for current_idx in sorted(node_logs.keys()):
current_node, current_log, current_time = node_logs[current_idx]
# 与前面所有有日志的节点比较
for prev_idx in sorted(node_logs.keys()):
if prev_idx >= current_idx: # 跳过自己和自己后面的节点
continue
prev_node, prev_log, prev_time = node_logs[prev_idx]
# 检查时间顺序
if current_time and prev_time:
if current_time < prev_time:
try:
progress_name = current_log.progress_name or "空"
process_code = current_log.process_code or "空"
issues.append(
f"{bl.bl_no},出现{progress_name}({process_code})倒挂"
)
except Exception as e:
_logger.warning(f"构建倒序问题描述失败: {str(e)}")
issues.append(f"{bl.bl_no},出现节点倒挂")
# 收集所有有日志的节点及其时间
node_logs = {} # {node_index: (node, log, time)}
for i, node in enumerate(bl_nodes):
for log in sync_logs:
if log.process_code == node.tk_code:
node_logs[i] = (node, log, log.operate_time)
break
# 遍历每个有日志的节点,与前面所有有日志的节点比较
for current_idx in sorted(node_logs.keys()):
current_node, current_log, current_time = node_logs[current_idx]
# 与前面所有有日志的节点比较
for prev_idx in sorted(node_logs.keys()):
if prev_idx >= current_idx: # 跳过自己和自己后面的节点
continue
prev_node, prev_log, prev_time = node_logs[prev_idx]
# 检查时间顺序
if current_time and prev_time:
if current_time < prev_time:
try:
progress_name = current_log.progress_name or "空"
process_code = current_log.process_code or "空"
issues.append(
f"{bl.bl_no},出现{progress_name}({process_code})倒挂"
)
except Exception as e:
_logger.warning(f"构建倒序问题描述失败: {str(e)}")
issues.append(f"{bl.bl_no},出现节点倒挂")
# 检查漏推问题
missing_issues = self._check_bl_missing_nodes(bl, sync_logs)
......@@ -346,7 +342,7 @@ class BlPatrol(models.Model):
"""
issues = []
# 获取所有提单节点,按顺序排序
bl_nodes = self.env['cc.node'].sudo().search([('node_type', '=', 'bl')], order='seq')
bl_nodes = self.env['cc.node'].sudo().search([('node_type', '=', 'bl'),('is_must', '=', True)], order='seq')
if not bl_nodes:
return issues
# 检查每个节点是否有对应的同步日志
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论