feat: 添加标签模板接口

This commit is contained in:
caoqianming 2025-04-30 13:43:17 +08:00
parent dd6dcad74a
commit a2cba2128f
5 changed files with 58 additions and 7 deletions

View File

@ -0,0 +1,28 @@
# Generated by Django 3.2.12 on 2025-04-30 05:17
from django.db import migrations, models
import django.utils.timezone
class Migration(migrations.Migration):
dependencies = [
('cm', '0003_alter_lablemat_state'),
]
operations = [
migrations.CreateModel(
name='LabelTemplate',
fields=[
('id', models.CharField(editable=False, help_text='主键ID', max_length=20, primary_key=True, serialize=False, verbose_name='主键ID')),
('create_time', models.DateTimeField(default=django.utils.timezone.now, help_text='创建时间', verbose_name='创建时间')),
('update_time', models.DateTimeField(auto_now=True, help_text='修改时间', verbose_name='修改时间')),
('is_deleted', models.BooleanField(default=False, help_text='删除标记', verbose_name='删除标记')),
('name', models.TextField(verbose_name='名称')),
('commands', models.JSONField(blank=True, default=list, verbose_name='指令模板')),
],
options={
'abstract': False,
},
),
]

View File

@ -13,4 +13,9 @@ class LableMat(BaseModel):
supplier = models.ForeignKey(Supplier, verbose_name='外协供应商', on_delete=models.SET_NULL, null=True, blank=True) supplier = models.ForeignKey(Supplier, verbose_name='外协供应商', on_delete=models.SET_NULL, null=True, blank=True)
notok_sign = models.CharField('不合格标记', max_length=10, null=True, blank=True) notok_sign = models.CharField('不合格标记', max_length=10, null=True, blank=True)
defect = models.ForeignKey("qm.defect", verbose_name='缺陷', on_delete=models.SET_NULL, null=True, blank=True) defect = models.ForeignKey("qm.defect", verbose_name='缺陷', on_delete=models.SET_NULL, null=True, blank=True)
material_origin = models.ForeignKey(Material, verbose_name='原始物料', on_delete=models.SET_NULL, null=True, blank=True, related_name='lm_mo') material_origin = models.ForeignKey(Material, verbose_name='原始物料', on_delete=models.SET_NULL, null=True, blank=True, related_name='lm_mo')
class LabelTemplate(BaseModel):
name = models.TextField("名称")
commands = models.JSONField("指令模板", default=list, blank=True)

View File

@ -1,7 +1,8 @@
from rest_framework import serializers from rest_framework import serializers
from .models import LableMat from .models import LableMat, LabelTemplate
from apps.qm.models import NotOkOption from apps.qm.models import NotOkOption
from apps.wpm.models import WmStateOption from apps.wpm.models import WmStateOption
from apps.utils.serializers import CustomModelSerializer
class TidSerializer(serializers.Serializer): class TidSerializer(serializers.Serializer):
@ -23,4 +24,10 @@ class LabelMatSerializer(serializers.ModelSerializer):
return getattr(NotOkOption, obj.notok_sign, NotOkOption.qt).label if obj.notok_sign else None return getattr(NotOkOption, obj.notok_sign, NotOkOption.qt).label if obj.notok_sign else None
def get_state_name(self, obj): def get_state_name(self, obj):
return getattr(WmStateOption, str(obj.state), WmStateOption.OK).label if obj.state else None return getattr(WmStateOption, str(obj.state), WmStateOption.OK).label if obj.state else None
class LabelTemplateSerializer(CustomModelSerializer):
class Meta:
model = LabelTemplate
fields = '__all__'

View File

@ -1,12 +1,13 @@
from django.urls import path, include from django.urls import path, include
from rest_framework.routers import DefaultRouter from rest_framework.routers import DefaultRouter
from apps.cm.views import LableMatViewSet from apps.cm.views import LableMatViewSet, LabelTemplateViewSet
API_BASE_URL = 'api/cm/' API_BASE_URL = 'api/cm/'
HTML_BASE_URL = 'dhtml/cm/' HTML_BASE_URL = 'dhtml/cm/'
router = DefaultRouter() router = DefaultRouter()
router.register('labelmat', LableMatViewSet, basename='labelmat') router.register('labelmat', LableMatViewSet, basename='labelmat')
router.register('labeltemplate', LabelTemplateViewSet, basename='labeltemplate')
urlpatterns = [ urlpatterns = [
path(API_BASE_URL, include(router.urls)), path(API_BASE_URL, include(router.urls)),
] ]

View File

@ -1,11 +1,11 @@
from apps.cm.models import LableMat 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 from apps.cm.serializers import TidSerializer, LabelMatSerializer, LabelTemplateSerializer
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
from rest_framework.response import Response from rest_framework.response import Response
from apps.utils.viewsets import CustomGenericViewSet, RetrieveModelMixin, CustomListModelMixin from apps.utils.viewsets import CustomGenericViewSet, RetrieveModelMixin, CustomListModelMixin, CustomModelViewSet
# Create your views here. # Create your views here.
SPLIT_FIELD = "#" SPLIT_FIELD = "#"
@ -68,3 +68,13 @@ class LableMatViewSet(CustomListModelMixin, RetrieveModelMixin, CustomGenericVie
rdata = LabelMatSerializer(obj).data rdata = LabelMatSerializer(obj).data
rdata["code_label"] = f"mat{SPLIT_FIELD}{obj.id}" rdata["code_label"] = f"mat{SPLIT_FIELD}{obj.id}"
return Response(rdata) return Response(rdata)
class LabelTemplateViewSet(CustomModelViewSet):
"""
list: 标签模板
标签模板
"""
queryset = LabelTemplate.objects.all()
serializer_class = LabelTemplateSerializer