diff --git a/apps/mtm/views.py b/apps/mtm/views.py index 5f3d4788..9bb00e4c 100644 --- a/apps/mtm/views.py +++ b/apps/mtm/views.py @@ -362,13 +362,29 @@ class RoutePackViewSet(CustomModelViewSet): @action(methods=['get'], detail=True, perms_map={'get': '*'}) def final_materials(self, request, *args, **kwargs): """获取最终产品 - + 获取最终产品""" ins:RoutePack = self.get_object() matIds = ins.get_final_material_ids() qs = Material.objects.filter(id__in=matIds) res = [{"id": x.id, "name": str(x)} for x in qs] return Response(res) + + @action(methods=['get'], detail=True, perms_map={'get': '*'}) + def validate(self, request, *args, **kwargs): + """校验工艺图是否合法(不存盘) + + 供拖拽画布实时校验DAG结构,返回 {valid, error},不修改gjson + """ + ins:RoutePack = self.get_object() + try: + ins.validate_and_return_gjson() + return Response({"valid": True, "error": ""}) + except ParseError as e: + detail = e.detail + if isinstance(detail, (list, tuple)): + detail = detail[0] if detail else "" + return Response({"valid": False, "error": str(detail)}) class RouteViewSet(CustomModelViewSet): queryset = Route.objects.all() serializer_class = RouteSerializer