feat: labeltemplate获取标签指令接口
This commit is contained in:
parent
8a75fcbc42
commit
5e2fd57b89
|
@ -3,6 +3,7 @@ from apps.utils.models import BaseModel
|
||||||
from apps.mtm.models import Material
|
from apps.mtm.models import Material
|
||||||
from apps.pum.models import Supplier
|
from apps.pum.models import Supplier
|
||||||
from apps.wpm.models import WmStateOption
|
from apps.wpm.models import WmStateOption
|
||||||
|
from rest_framework.exceptions import NotFound, ParseError
|
||||||
# Create your models here.
|
# Create your models here.
|
||||||
|
|
||||||
class LableMat(BaseModel):
|
class LableMat(BaseModel):
|
||||||
|
@ -21,3 +22,21 @@ class LabelTemplate(BaseModel):
|
||||||
name = models.TextField("名称")
|
name = models.TextField("名称")
|
||||||
commands = models.JSONField("指令模板", default=list, blank=True)
|
commands = models.JSONField("指令模板", default=list, blank=True)
|
||||||
process_json = models.JSONField("工序", default=list, blank=True)
|
process_json = models.JSONField("工序", default=list, blank=True)
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def gen_commands(cls, 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:
|
||||||
|
n_commands = []
|
||||||
|
for item in commands:
|
||||||
|
item = item.format(**tdata)
|
||||||
|
n_commands.append(item)
|
||||||
|
except Exception as e:
|
||||||
|
raise ParseError(f"标签解析错误-{str(e)}")
|
||||||
|
return n_commands
|
|
@ -7,10 +7,15 @@ from apps.utils.serializers import CustomModelSerializer
|
||||||
|
|
||||||
class TidSerializer(serializers.Serializer):
|
class TidSerializer(serializers.Serializer):
|
||||||
tid = serializers.CharField(label='表ID')
|
tid = serializers.CharField(label='表ID')
|
||||||
label_template = serializers.CharField(label='标签模板ID(可传default)', allow_null=True, required=False)
|
label_template = serializers.CharField(label='标签模板ID', allow_null=True, required=False)
|
||||||
label_template_name = serializers.CharField(label='标签模板名称', 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)
|
extra_data = serializers.JSONField(label='额外数据', allow_null=True, required=False)
|
||||||
|
|
||||||
|
class Tid2Serializer(serializers.Serializer):
|
||||||
|
label_template = serializers.CharField(label='标签模板ID', allow_null=True, required=False)
|
||||||
|
label_template_name = serializers.CharField(label='标签模板名称', allow_null=True, required=False)
|
||||||
|
data = serializers.JSONField(label='数据', allow_null=True, required=False)
|
||||||
|
|
||||||
|
|
||||||
class LabelMatSerializer(serializers.ModelSerializer):
|
class LabelMatSerializer(serializers.ModelSerializer):
|
||||||
material_name = serializers.StringRelatedField(source='material', read_only=True)
|
material_name = serializers.StringRelatedField(source='material', read_only=True)
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
from apps.cm.models import LableMat, LabelTemplate
|
from apps.cm.models import LableMat, LabelTemplate
|
||||||
from rest_framework.decorators import action
|
from rest_framework.decorators import action
|
||||||
from apps.cm.serializers import TidSerializer, LabelMatSerializer, LabelTemplateSerializer
|
from apps.cm.serializers import TidSerializer, LabelMatSerializer, LabelTemplateSerializer, Tid2Serializer
|
||||||
from apps.inm.models import MaterialBatch, MIOItem
|
from apps.inm.models import MaterialBatch, MIOItem
|
||||||
from apps.wpm.models import WMaterial
|
from apps.wpm.models import WMaterial
|
||||||
from rest_framework.exceptions import ParseError, NotFound
|
from rest_framework.exceptions import ParseError, NotFound
|
||||||
|
@ -17,24 +17,6 @@ class LableMatViewSet(CustomListModelMixin, RetrieveModelMixin, CustomGenericVie
|
||||||
queryset = LableMat.objects.all()
|
queryset = LableMat.objects.all()
|
||||||
select_related_fields = ["material", "material_origin", "supplier"]
|
select_related_fields = ["material", "material_origin", "supplier"]
|
||||||
|
|
||||||
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:
|
|
||||||
n_commands = []
|
|
||||||
for item in commands:
|
|
||||||
item = item.format(**tdata)
|
|
||||||
n_commands.append(item)
|
|
||||||
except Exception as e:
|
|
||||||
raise ParseError(f"标签解析错误-{str(e)}")
|
|
||||||
return n_commands
|
|
||||||
|
|
||||||
|
|
||||||
@action(methods=["post"], detail=False, serializer_class=TidSerializer)
|
@action(methods=["post"], detail=False, serializer_class=TidSerializer)
|
||||||
def get_from_mb(self, request, pk=None):
|
def get_from_mb(self, request, pk=None):
|
||||||
"""
|
"""
|
||||||
|
@ -55,7 +37,7 @@ class LableMatViewSet(CustomListModelMixin, RetrieveModelMixin, CustomGenericVie
|
||||||
rdata["code_label"] = f"mat{SPLIT_FIELD}{obj.id}"
|
rdata["code_label"] = f"mat{SPLIT_FIELD}{obj.id}"
|
||||||
if label_template or label_template_name:
|
if label_template or label_template_name:
|
||||||
tdata = {**rdata, **extra_data}
|
tdata = {**rdata, **extra_data}
|
||||||
commands = self.gen_commands(label_template, label_template_name, tdata)
|
commands = LabelTemplate.gen_commands(label_template, label_template_name, tdata)
|
||||||
rdata["commands"] = commands
|
rdata["commands"] = commands
|
||||||
return Response(rdata)
|
return Response(rdata)
|
||||||
|
|
||||||
|
@ -81,7 +63,7 @@ class LableMatViewSet(CustomListModelMixin, RetrieveModelMixin, CustomGenericVie
|
||||||
rdata["code_label"] = f"mat{SPLIT_FIELD}{obj.id}"
|
rdata["code_label"] = f"mat{SPLIT_FIELD}{obj.id}"
|
||||||
if label_template or label_template_name:
|
if label_template or label_template_name:
|
||||||
tdata = {**rdata, **extra_data}
|
tdata = {**rdata, **extra_data}
|
||||||
commands = self.gen_commands(label_template, label_template_name, tdata)
|
commands = LabelTemplate.gen_commands(label_template, label_template_name, tdata)
|
||||||
rdata["commands"] = commands
|
rdata["commands"] = commands
|
||||||
return Response(rdata)
|
return Response(rdata)
|
||||||
|
|
||||||
|
@ -105,7 +87,7 @@ class LableMatViewSet(CustomListModelMixin, RetrieveModelMixin, CustomGenericVie
|
||||||
rdata["code_label"] = f"mat{SPLIT_FIELD}{obj.id}"
|
rdata["code_label"] = f"mat{SPLIT_FIELD}{obj.id}"
|
||||||
if label_template or label_template_name:
|
if label_template or label_template_name:
|
||||||
tdata = {**rdata, **extra_data}
|
tdata = {**rdata, **extra_data}
|
||||||
commands = self.gen_commands(label_template, label_template_name, tdata)
|
commands = LabelTemplate.gen_commands(label_template, label_template_name, tdata)
|
||||||
rdata["commands"] = commands
|
rdata["commands"] = commands
|
||||||
return Response(rdata)
|
return Response(rdata)
|
||||||
|
|
||||||
|
@ -119,3 +101,16 @@ class LabelTemplateViewSet(CustomModelViewSet):
|
||||||
queryset = LabelTemplate.objects.all()
|
queryset = LabelTemplate.objects.all()
|
||||||
serializer_class = LabelTemplateSerializer
|
serializer_class = LabelTemplateSerializer
|
||||||
filterset_class = LabelTemplateFilter
|
filterset_class = LabelTemplateFilter
|
||||||
|
|
||||||
|
@action(methods=["post"], detail=False, serializer_class=Tid2Serializer)
|
||||||
|
def commands(self, request, *args, **kwargs):
|
||||||
|
"""
|
||||||
|
获取标签指令
|
||||||
|
|
||||||
|
获取标签指令
|
||||||
|
"""
|
||||||
|
label_template = request.data.get("label_template", None)
|
||||||
|
label_template_name = request.data.get("label_template_name", None)
|
||||||
|
data = request.data.get("data", {})
|
||||||
|
return Response({"commands": LabelTemplate.gen_commands(label_template, label_template_name, data)})
|
||||||
|
|
Loading…
Reference in New Issue