处理返工报错

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='工单异常记录') exception_ids = fields.One2many('jikimo.workorder.exception', 'workorder_id', string='工单异常记录')
def write(self, values): 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( pending_exception = self.exception_ids.filtered(
lambda exc: exc.state == 'pending' and exc.exception_code == 'YC0005' lambda exc: exc.state == 'pending' and exc.exception_code == 'YC0005'
) )

View File

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