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

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

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