Accept Merge Request #1092: (hotfix/优化工单工序 -> develop)

Merge Request: 1、重构工单工序的生成规则

Created By: @禹翔辉
Reviewed By: @马广威
Approved By: @马广威 
Accepted By: @禹翔辉
URL: https://jikimo-hn.coding.net/p/jikimo_sfs/d/jikimo_sf/git/merge/1092
This commit is contained in:
禹翔辉
2024-06-24 17:30:28 +08:00
committed by Coding

View File

@@ -531,46 +531,63 @@ class MrpProduction(models.Model):
def _reset_work_order_sequence(self): def _reset_work_order_sequence(self):
for rec in self: for rec in self:
sequence_list = {} sequence_list = {}
# 产品模型类型
model_type_id = rec.product_id.product_model_type_id model_type_id = rec.product_id.product_model_type_id
# 产品加工面板
model_processing_panel = rec.product_id.model_processing_panel
if model_type_id: if model_type_id:
tmpl_num = 1 if model_processing_panel:
# 成品工序 tmpl_num = 1
product_routing_tmpl_ids = model_type_id.product_routing_tmpl_ids panel_list = model_processing_panel.split(',')
if product_routing_tmpl_ids: for panel in panel_list:
for tmpl_id in product_routing_tmpl_ids: panel_sequence_list = {}
sequence_list.update({tmpl_id.route_workcenter_id.name: tmpl_num}) # 成品工序
tmpl_num += 1 product_routing_tmpl_ids = model_type_id.product_routing_tmpl_ids
# 表面工艺工序 if product_routing_tmpl_ids:
# 模型类型的表面工艺工序模版 for tmpl_id in product_routing_tmpl_ids:
surface_tmpl_ids = model_type_id.surface_technics_routing_tmpl_ids panel_sequence_list.update({tmpl_id.route_workcenter_id.name: tmpl_num})
# 产品选择的表面工艺 tmpl_num += 1
model_process_parameters_ids = rec.product_id.model_process_parameters_ids sequence_list.update({panel: panel_sequence_list})
process_dict = {} # 表面工艺工序
if model_process_parameters_ids: # 模型类型的表面工艺工序模版
for process_parameters_id in model_process_parameters_ids: surface_tmpl_ids = model_type_id.surface_technics_routing_tmpl_ids
process_id = process_parameters_id.process_id # 产品选择的表面工艺
for surface_tmpl_id in surface_tmpl_ids: model_process_parameters_ids = rec.product_id.model_process_parameters_ids
if process_id == surface_tmpl_id.route_workcenter_id.surface_technics_id: process_dict = {}
surface_tmpl_name = surface_tmpl_id.route_workcenter_id.name if model_process_parameters_ids:
process_dict.update({int(process_id.category_id.code): '%s-%s' % ( for process_parameters_id in model_process_parameters_ids:
surface_tmpl_name, process_parameters_id.name)}) process_id = process_parameters_id.process_id
process_list = sorted(process_dict.keys()) for surface_tmpl_id in surface_tmpl_ids:
for process_num in process_list: if process_id == surface_tmpl_id.route_workcenter_id.surface_technics_id:
sequence_list.update({process_dict.get(process_num): tmpl_num}) surface_tmpl_name = surface_tmpl_id.route_workcenter_id.name
tmpl_num += 1 process_dict.update({int(process_id.category_id.code): '%s-%s' % (
# 坯料工序 surface_tmpl_name, process_parameters_id.name)})
tmpl_num = 1 process_list = sorted(process_dict.keys())
embryo_routing_tmpl_ids = model_type_id.embryo_routing_tmpl_ids for process_num in process_list:
if embryo_routing_tmpl_ids: sequence_list.update({process_dict.get(process_num): tmpl_num})
for tmpl_id in embryo_routing_tmpl_ids:
sequence_list.update({tmpl_id.route_workcenter_id.name: tmpl_num})
tmpl_num += 1 tmpl_num += 1
# 坯料工序
tmpl_num = 1
embryo_routing_tmpl_ids = model_type_id.embryo_routing_tmpl_ids
if embryo_routing_tmpl_ids:
for tmpl_id in embryo_routing_tmpl_ids:
sequence_list.update({tmpl_id.route_workcenter_id.name: tmpl_num})
tmpl_num += 1
else:
raise ValidationError('该产品【加工面板】为空!')
else: else:
raise ValidationError('该产品没有选择【模版类型】!') raise ValidationError('该产品没有选择【模版类型】!')
for work in rec.workorder_ids: for work in rec.workorder_ids:
if sequence_list.get(work.name): if sequence_list.get(work.name):
work.sequence = sequence_list[work.name] work.sequence = sequence_list[work.name]
elif sequence_list.get(work.processing_panel):
processing_panel = sequence_list.get(work.processing_panel)
if processing_panel.get(work.name):
work.sequence = processing_panel[work.name]
else:
raise ValidationError('工序【%s】在产品选择的模版类型中不存在!' % work.name)
else: else:
raise ValidationError('工序【%s】在产品选择的模版类型中不存在!' % work.name) raise ValidationError('工序【%s】在产品选择的模版类型中不存在!' % work.name)
# if work.name == '获取CNC加工程序': # if work.name == '获取CNC加工程序':