1、处理大批量修改cnc编程单的工单状态时,导致工单状态的自动计算方法进行递归而产生的栈溢出问题

This commit is contained in:
yuxianghui
2024-07-29 11:32:33 +08:00
parent 55016918eb
commit 639dd4e78d
3 changed files with 25 additions and 8 deletions

View File

@@ -36,9 +36,11 @@ class MrpProduction(models.Model):
def _compute_tool_state_remark(self):
for item in self:
if item.workorder_ids:
workorder_ids = item.workorder_ids.filtered(lambda a: a.state not in ('rework', '返工'))
if workorder_ids.filtered(lambda a: a.tool_state_remark):
work_ids = workorder_ids.filtered(lambda a: a.tool_state == '1' and a.state not in ['rework'])
work_ids = []
for workorder_id in item.workorder_ids:
if workorder_id.tool_state == '1':
work_ids.append(workorder_id)
if work_ids:
tool_state_remark = ''
for work_id in work_ids:
if tool_state_remark == '':
@@ -54,10 +56,16 @@ class MrpProduction(models.Model):
for item in self:
if item.workorder_ids:
tool_state = item.tool_state
workorder_ids = item.workorder_ids.filtered(lambda a: a.state not in ('rework', '返工'))
if workorder_ids.filtered(lambda a: a.tool_state == '2'):
work_ids_1 = []
work_ids_2 = []
for workorder_id in item.workorder_ids:
if workorder_id.tool_state == '2':
work_ids_2.append(workorder_id)
elif workorder_id.tool_state == '1':
work_ids_1.append(workorder_id)
if work_ids_2:
item.tool_state = '2'
elif workorder_ids.filtered(lambda a: a.tool_state == '1'):
elif work_ids_1:
item.tool_state = '1'
else:
item.tool_state = '0'

View File

@@ -194,7 +194,7 @@ class ResMrpWorkOrder(models.Model):
for cnc_id in cnc_ids:
if cnc_id.cutting_tool_name not in tool_state_remark:
tool_state_remark.append(cnc_id.cutting_tool_name)
item.tool_state_remark = f"{item.processing_panel}缺刀:{tool_state_remark}]"
item.tool_state_remark = f"{item.processing_panel}缺刀:{tool_state_remark}"
else:
item.tool_state_remark = None