From 7c17241882f0b66497edc72b769b8f42d1948f54 Mon Sep 17 00:00:00 2001 From: yuxianghui <3437689193@qq.com> Date: Wed, 11 Dec 2024 17:24:32 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81=E5=88=B6=E9=80=A0=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E7=82=B9=E5=87=BB=E8=BF=94=E5=B7=A5=E6=8C=89=E9=92=AE=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E6=96=B0=E7=9A=84=E8=BF=87=E6=BB=A4=E6=9D=A1=E4=BB=B6?= =?UTF-8?q?=EF=BC=9B2=E3=80=81=E4=BC=98=E5=8C=96=E5=B7=A5=E5=8D=95?= =?UTF-8?q?=E5=B7=A5=E5=BA=8F=E9=80=BB=E8=BE=91=EF=BC=9B3=E3=80=81?= =?UTF-8?q?=E8=BF=94=E5=B7=A5=E6=B7=BB=E5=8A=A0=E6=A0=A1=E9=AA=8C=E9=99=90?= =?UTF-8?q?=E5=88=B6=E6=9D=A1=E4=BB=B6=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sf_manufacturing/models/mrp_production.py | 8 ++-- sf_manufacturing/wizard/rework_wizard.py | 48 +++++++++++++------ .../wizard/rework_wizard_views.xml | 2 +- 3 files changed, 39 insertions(+), 19 deletions(-) diff --git a/sf_manufacturing/models/mrp_production.py b/sf_manufacturing/models/mrp_production.py index 4fc7fde0..41333e5b 100644 --- a/sf_manufacturing/models/mrp_production.py +++ b/sf_manufacturing/models/mrp_production.py @@ -914,7 +914,7 @@ class MrpProduction(models.Model): # 对工单进行逐个插入 for work_id in work_ids: for order_id in rec.workorder_ids.filtered(lambda item: item.sequence > 0): - if work_id.name == order_id.name: + if work_id.name == order_id.name and work_id.processing_panel == order_id.processing_panel: work_id.sequence = order_id.sequence + 1 break # 对该工单之后的工单工序进行加一 @@ -1196,7 +1196,9 @@ class MrpProduction(models.Model): lambda wk: (wk.name == result_id.routing_type and wk.processing_panel == result_id.processing_panel and wk.state == 'done')).id for result_id in result_ids] - + workorder_ids = self.workorder_ids.filtered( + lambda wk: wk.technology_design_id.routing_tag == 'standard' and wk.state not in ['rework', 'cancel']) + logging.info('标准工艺工单【%s】' % workorder_ids) return { 'name': _('返工'), 'type': 'ir.actions.act_window', @@ -1205,7 +1207,7 @@ class MrpProduction(models.Model): 'target': 'new', 'context': { 'default_production_id': self.id, - 'default_workorder_ids': self.workorder_ids.ids, + 'default_workorder_ids': workorder_ids.ids if workorder_ids.ids != [] else self.workorder_ids.ids, 'default_hidden_workorder_ids': ','.join(map(str, work_id_list)) if work_id_list != [] else '', 'default_reprogramming_num': cloud_programming['reprogramming_num'], 'default_programming_state': cloud_programming['programming_state'], diff --git a/sf_manufacturing/wizard/rework_wizard.py b/sf_manufacturing/wizard/rework_wizard.py index fece391a..bcc8514b 100644 --- a/sf_manufacturing/wizard/rework_wizard.py +++ b/sf_manufacturing/wizard/rework_wizard.py @@ -62,6 +62,36 @@ class ReworkWizard(models.TransientModel): hidden_workorder_list.sort() item.hidden_workorder_ids = ','.join(hidden_workorder_list) + def efficacy_rework_wo(self, wk_ids): + """限制判断 """ + # 判断检测结果待处理所对应的工单是否勾选 + result_ids = self.production_id.detection_result_ids.filtered(lambda dr: dr.handle_result == '待处理') + work_id_list = [] + if result_ids: + work_id_list = [self.workorder_ids.filtered( + lambda wk: (wk.name == result_id.routing_type and wk.processing_panel == result_id.processing_panel + and wk.state == 'done')).id + for result_id in result_ids] + if len(wk_ids.filtered(lambda wk: wk.id in work_id_list)) != len(work_id_list): + raise ValidationError('存在【检测结果】为【待处理】所对应的工单未进行勾选!!!') + # 获取已完成的标准工单 + grouped_rw_ids = {key: list(group) for key, group in groupby(wk_ids, key=lambda w: w.processing_panel)} + for panel, panel_rw_ids in grouped_rw_ids.items(): + # 1、当制造订单内ZM面的工单都已完成时,返工勾选工序时只能勾选上ZM面的所有工序进行返工 + work_ids = self.workorder_ids.filtered(lambda w: w.state == 'done' and w.processing_panel == panel) + if len(work_ids) == 3 and len(panel_rw_ids) != 3: + raise ValidationError( + '因为[%s]面的工单已全部完成,如果要对[%s]面的工单进行返工,请勾选这个面的所有工单。' % (panel, panel)) + # 2、当FM工单在CNC工单进行选择返工,并将已全部完成的ZM面工序全部勾选上时,FM工单上所有的已完成的工单(装夹预调工单)也必须进行勾选 + if not wk_ids.filtered(lambda wk: wk.name == '装夹预调' and wk.processing_panel == panel): + if wk_ids.filtered(lambda wk: wk.name == 'CNC加工' and wk.processing_panel == panel): + sequence_max = wk_ids.filtered(lambda wk: wk.name == 'CNC加工' and wk.processing_panel == panel).sequence + for wk_id in wk_ids.filtered(lambda wk: wk.sequence < sequence_max): + if len(wk_ids.filtered(lambda wk: wk.processing_panel == wk_id.processing_panel)) == 3: + raise ValidationError( + '由于在[%s]面之前存在整个面进行了勾选的情况,所以在勾选了[%s]面的【CNC加工】工单的时,请勾选[%s]面的装夹预调工单!' % ( + panel, panel, panel)) + def confirm(self): if self.routing_type in ['装夹预调', 'CNC加工']: self.is_clamp_measure = False @@ -79,20 +109,8 @@ class ReworkWizard(models.TransientModel): if self.hidden_workorder_ids: hidden_workorder_list = self.hidden_workorder_ids.split(',') rework_workorder_ids = self.workorder_ids.filtered(lambda w: str(w.id) in hidden_workorder_list) - # 限制判断 - # 1、当制造订单内ZM面的工单都已完成时,返工勾选工序时只能勾选上ZM面的所有工序进行返工 - # 2、当FM工单在CNC工单进行选择返工,并将已全部完成的ZM面工序全部勾选上时,FM工单上所有的已完成的工单(装夹预调工单)也必须进行勾选 - # 获取已完成的标准工单 - # done_normative_workorder_ids = self.workorder_ids.filtered( - # lambda w: w.state == 'done' and w.processing_panel is not False) - # # 获取需要返工的标准工单 - # rework_normative_workorder_ids = rework_workorder_ids.filtered( - # lambda w: w.processing_panel is not False) - # if rework_normative_workorder_ids: - # for rw in rework_normative_workorder_ids: - # if len(done_normative_workorder_ids.filtered( - # lambda w: w.processing_panel == rw.processing_panel)) == 3: - # pass + # 调用效验方法 + self.efficacy_rework_wo(rework_workorder_ids) else: raise ValidationError('请选择返工工单!!!') if rework_workorder_ids: @@ -106,7 +124,7 @@ class ReworkWizard(models.TransientModel): 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': False}) + {'rfid_code': None}) # 返工工单状态设置为【返工】 rework_workorder_ids.write({'state': 'rework'}) # 查询返工工单对应的工艺设计记录,并调用方法拼接数据,用于创建新的工单 diff --git a/sf_manufacturing/wizard/rework_wizard_views.xml b/sf_manufacturing/wizard/rework_wizard_views.xml index 05d1cc04..aad8a692 100644 --- a/sf_manufacturing/wizard/rework_wizard_views.xml +++ b/sf_manufacturing/wizard/rework_wizard_views.xml @@ -14,7 +14,7 @@ - +