diff --git a/apps/mtm/models.py b/apps/mtm/models.py index 8746b87d..f6fb10eb 100644 --- a/apps/mtm/models.py +++ b/apps/mtm/models.py @@ -476,7 +476,7 @@ class Route(CommonADModel): return rqs @classmethod - def validate_dag(cls, final_material_out:Material, rqs): + def validate_dag(cls, final_material_out:Material, rqs, check_input=True): """ TN:校验工艺路线是否正确: - 所有 Route 必须有 material_in 和 material_out @@ -507,7 +507,7 @@ class Route(CommonADModel): # 3. 检查final_material_out是否是终点 final_id = final_material_out.id - if final_id in reverse_graph: + if check_input and final_id in reverse_graph: # raise ParseError( # f"最终物料 {final_material_out.name}(ID:{final_id}) 不能作为任何Route的输入" # ) diff --git a/apps/pm/services.py b/apps/pm/services.py index bfbb369b..ac51ade9 100644 --- a/apps/pm/services.py +++ b/apps/pm/services.py @@ -211,14 +211,18 @@ class PmService: if not gjson_item: raise ParseError("缺少该产品的生产子图") rqs = Route.get_routes(routeIds=gjson_item["routes"]) + if not rqs.exists(): + raise ParseError('未配置工艺路线') + Route.validate_dag(product, rqs) else: rqs = Route.get_routes(material=product) + if not rqs.exists(): + raise ParseError('未配置工艺路线') + Route.validate_dag(product, rqs, check_input=False) - if not rqs.exists(): - raise ParseError('未配置工艺路线') + # 通过出材率校正任务数, out_rate 默认为 100 - Route.validate_dag(product, rqs) r_count_dict = cls.cal_x_task_count(product.id, count, rqs) # 创建小任务