处理返工报错

This commit is contained in:
yuxianghui
2025-06-05 10:17:39 +08:00
parent 0204e0e24f
commit c6cb1d367d
2 changed files with 18 additions and 13 deletions

View File

@@ -9,7 +9,7 @@ class MrpWorkorder(models.Model):
exception_ids = fields.One2many('jikimo.workorder.exception', 'workorder_id', string='工单异常记录')
def write(self, values):
if 'test_results' in values and self.exception_ids:
if values.get('test_results') and self.exception_ids:
pending_exception = self.exception_ids.filtered(
lambda exc: exc.state == 'pending' and exc.exception_code == 'YC0005'
)

View File

@@ -126,16 +126,17 @@ class ReworkWizard(models.TransientModel):
# 2、返工CNC工单和装夹预调工单则自动解绑RFID
clamp_workorder_ids = rework_workorder_ids.filtered(lambda rp: rp.routing_type == '装夹预调')
vals_list = [{
'id': order.id,
'rfid_code_old': order.rfid_code,
'rfid_code': False
} for order in rework_workorder_ids]
rework_workorder_ids.write(vals_list)
# for order in rework_workorder_ids:
# order.write({
# 'rfid_code_old': order.rfid_code,
# 'rfid_code': False
# })
if clamp_workorder_ids:
for clamp_workorder_id in clamp_workorder_ids:
self.production_id.workorder_ids.filtered(lambda wk: (
wk.processing_panel == clamp_workorder_id.processing_panel)).write({'rfid_code': None})
wk.processing_panel == clamp_workorder_id.processing_panel)).write(
{'rfid_code_old': clamp_workorder_id.rfid_code,
'rfid_code': None})
# 返工工单状态设置为【返工】
rework_workorder_ids.write({'state': 'rework'})
# 查询返工工单对应的工艺设计记录,并调用方法拼接数据,用于创建新的工单
@@ -219,11 +220,13 @@ class ReworkWizard(models.TransientModel):
self.production_id.get_new_program(panel_name)
if self.reprogramming_num >= 0 and self.programming_state == '已下发':
# ============= 处理CNC加工加工工单的 CNC程序和cmm程序 信息=============
for cnc_work in new_work_ids.filtered(lambda wk: wk.name == 'CNC加工' or wk.name == '人工线下加工'):
for cnc_work in new_work_ids.filtered(
lambda wk: wk.name == 'CNC加工' or wk.name == '人工线下加工'):
ret = {'programming_list': []}
old_cnc_rework = max(self.production_id.workorder_ids.filtered(
lambda crw: crw.processing_panel == cnc_work.processing_panel
and crw.state == 'rework' and (crw.routing_type == 'CNC加工' or crw.routing_type == '人工线下加工')),
and crw.state == 'rework' and (
crw.routing_type == 'CNC加工' or crw.routing_type == '人工线下加工')),
key=lambda w: w.create_date
)
# 获取当前工单的CNC程序和cmm程序
@@ -265,7 +268,8 @@ class ReworkWizard(models.TransientModel):
new_cnc_workorder = self.production_id.workorder_ids.filtered(
lambda ap1: ap1.processing_panel == cnc_work.processing_panel
and ap1.state not in (
'rework', 'done') and (ap1.routing_type == 'CNC加工' or ap1.routing_type == '人工线下加工')
'rework', 'done') and (
ap1.routing_type == 'CNC加工' or ap1.routing_type == '人工线下加工')
)
if not new_cnc_workorder.cnc_ids:
new_cnc_workorder.write({
@@ -302,7 +306,8 @@ class ReworkWizard(models.TransientModel):
'is_rework': False})
# ==================申请重新编程=======================
if self.is_reprogramming is True:
self.production_id.update_programming_state(trigger_time=datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
self.production_id.update_programming_state(
trigger_time=datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
self.production_id.write(
{'programming_state': '编程中', 'work_state': '编程中', 'state': 'progress'})
# ================= 返工完成,制造订单状态置为加工中 ==============
@@ -323,7 +328,7 @@ class ReworkWizard(models.TransientModel):
for p in production_id.detection_result_ids.filtered(
lambda ap1: ap1.handle_result == '待处理'):
if p.processing_panel is not False and p.processing_panel not in panel_arr:
if len(panel_arr)>0:
if len(panel_arr) > 0:
panel_arr += ','.join(p.processing_panel)
else:
panel_arr = p.processing_panel