diff --git a/apps/cm/serializers.py b/apps/cm/serializers.py index 32aae18e..42f3fc30 100644 --- a/apps/cm/serializers.py +++ b/apps/cm/serializers.py @@ -8,6 +8,7 @@ from apps.utils.serializers import CustomModelSerializer class TidSerializer(serializers.Serializer): tid = serializers.CharField(label='表ID') label_template = serializers.CharField(label='标签模板ID(可传default)', allow_null=True, required=False) + label_template_name = serializers.CharField(label='标签模板名称', allow_null=True, required=False) extra_data = serializers.JSONField(label='额外数据', allow_null=True, required=False) diff --git a/apps/cm/views.py b/apps/cm/views.py index 001fc0a4..e7a929de 100644 --- a/apps/cm/views.py +++ b/apps/cm/views.py @@ -17,11 +17,13 @@ class LableMatViewSet(CustomListModelMixin, RetrieveModelMixin, CustomGenericVie queryset = LableMat.objects.all() select_related_fields = ["material", "material_origin", "supplier"] - def gen_commands(self, label_template, tdata): - if label_template == "default": - lt = LabelTemplate.objects.get(name="默认标签模板") - else: + def gen_commands(self, label_template, label_template_name, tdata): + if label_template: lt = LabelTemplate.objects.get(id=label_template) + else: + lt = LabelTemplate.objects.filter(name=label_template_name).first() + if not lt: + raise NotFound("标签模板不存在") commands:list = lt.commands try: for item in commands: @@ -40,6 +42,7 @@ class LableMatViewSet(CustomListModelMixin, RetrieveModelMixin, CustomGenericVie """ tid = request.data.get("tid") label_template = request.data.get("label_template", None) + label_template_name = request.data.get("label_template_name", None) extra_data = request.data.get("extra_data", {}) try: mb = MaterialBatch.objects.get(id=tid) @@ -48,9 +51,9 @@ class LableMatViewSet(CustomListModelMixin, RetrieveModelMixin, CustomGenericVie obj, _ = LableMat.objects.get_or_create(state=mb.state, material=mb.material, batch=mb.batch, defect=mb.defect, defaults={"supplier": mb.supplier}) rdata = LabelMatSerializer(obj).data rdata["code_label"] = f"mat{SPLIT_FIELD}{obj.id}" - if label_template: + if label_template or label_template_name: tdata = {**rdata, **extra_data} - commands = self.gen_commands(label_template, tdata) + commands = self.gen_commands(label_template, label_template_name, tdata) rdata["commands"] = commands return Response(rdata) @@ -63,6 +66,7 @@ class LableMatViewSet(CustomListModelMixin, RetrieveModelMixin, CustomGenericVie """ tid = request.data.get("tid") label_template = request.data.get("label_template", None) + label_template_name = request.data.get("label_template_name", None) extra_data = request.data.get("extra_data", {}) try: wm = WMaterial.objects.get(id=tid) @@ -73,9 +77,9 @@ class LableMatViewSet(CustomListModelMixin, RetrieveModelMixin, CustomGenericVie material_origin=wm.material_origin) rdata = LabelMatSerializer(obj).data rdata["code_label"] = f"mat{SPLIT_FIELD}{obj.id}" - if label_template: + if label_template or label_template_name: tdata = {**rdata, **extra_data} - commands = self.gen_commands(label_template, tdata) + commands = self.gen_commands(label_template, label_template_name, tdata) rdata["commands"] = commands return Response(rdata) @@ -88,6 +92,7 @@ class LableMatViewSet(CustomListModelMixin, RetrieveModelMixin, CustomGenericVie """ tid = request.data.get("tid") label_template = request.data.get("label_template", None) + label_template_name = request.data.get("label_template_name", None) extra_data = request.data.get("extra_data", {}) try: mioitem: MIOItem = MIOItem.objects.get(id=tid) @@ -96,9 +101,9 @@ class LableMatViewSet(CustomListModelMixin, RetrieveModelMixin, CustomGenericVie obj, _ = LableMat.objects.get_or_create(state=10, material=mioitem.material, batch=mioitem.batch, defaults={"supplier": mioitem.mio.supplier}) rdata = LabelMatSerializer(obj).data rdata["code_label"] = f"mat{SPLIT_FIELD}{obj.id}" - if label_template: + if label_template or label_template_name: tdata = {**rdata, **extra_data} - commands = self.gen_commands(label_template, tdata) + commands = self.gen_commands(label_template, label_template_name, tdata) rdata["commands"] = commands return Response(rdata)