feat:添加工装(喷码工段需要)

This commit is contained in:
shijing 2026-05-22 15:35:09 +08:00
parent 0dd78f09b9
commit aa8e411a1b
5 changed files with 42 additions and 7 deletions

View File

@ -1,5 +1,5 @@
from django.contrib import admin from django.contrib import admin
from apps.mtm.models import Material, Shift, Mgroup, Process from apps.mtm.models import Material, Shift, Mgroup, Process, Tooling
# Register your models here. # Register your models here.
@ -23,3 +23,8 @@ class ShiftAdmin(admin.ModelAdmin):
@admin.register(Mgroup) @admin.register(Mgroup)
class MgroupAdmin(admin.ModelAdmin): class MgroupAdmin(admin.ModelAdmin):
list_display = ('id', 'name', 'cate') list_display = ('id', 'name', 'cate')
@admin.register(Tooling)
class ToolingAdmin(admin.ModelAdmin):
list_display = ('id', 'name', 'code', 'sort')

View File

@ -145,6 +145,17 @@ class Material(CommonAModel):
) )
) )
class Tooling(CommonBModel):
"""TN:工装"""
name = models.CharField('名称', max_length=100)
code = models.CharField('编号', max_length=50, default='', blank=True)
sort = models.PositiveSmallIntegerField('排序', default=1)
class Meta:
verbose_name = '工装'
ordering = ['sort', 'id']
class Shift(CommonBModel): class Shift(CommonBModel):
"""TN:班次 """TN:班次
""" """

View File

@ -1,6 +1,6 @@
from apps.utils.serializers import CustomModelSerializer from apps.utils.serializers import CustomModelSerializer
from apps.mtm.models import (Shift, Material, Mgroup, Team, Goal, from apps.mtm.models import (Shift, Material, Mgroup, Team, Goal,
Process, Route, TeamMember, RoutePack, Srule, RouteMat) Process, Route, TeamMember, RoutePack, Srule, RouteMat, Tooling)
from apps.utils.constants import EXCLUDE_FIELDS, EXCLUDE_FIELDS_BASE, EXCLUDE_FIELDS_DEPT from apps.utils.constants import EXCLUDE_FIELDS, EXCLUDE_FIELDS_BASE, EXCLUDE_FIELDS_DEPT
from rest_framework import serializers from rest_framework import serializers
from rest_framework.exceptions import ValidationError, ParseError from rest_framework.exceptions import ValidationError, ParseError
@ -339,6 +339,13 @@ class RouteSerializer(CustomModelSerializer):
res['material_out_tracking'] = None res['material_out_tracking'] = None
return res return res
class ToolingSerializer(CustomModelSerializer):
class Meta:
model = Tooling
fields = '__all__'
read_only_fields = EXCLUDE_FIELDS_BASE
class SruleSerializer(CustomModelSerializer): class SruleSerializer(CustomModelSerializer):
belong_dept_name = serializers.CharField(source='belong_dept.name', read_only=True) belong_dept_name = serializers.CharField(source='belong_dept.name', read_only=True)
class Meta: class Meta:

View File

@ -3,7 +3,7 @@ from rest_framework.routers import DefaultRouter
from apps.mtm.views import (MgroupViewSet, ShiftViewSet, TeamViewSet, MaterialViewSet, from apps.mtm.views import (MgroupViewSet, ShiftViewSet, TeamViewSet, MaterialViewSet,
GoalViewSet, ProcessViewSet, RouteViewSet, TeamMemberViewSet, GoalViewSet, ProcessViewSet, RouteViewSet, TeamMemberViewSet,
RoutePackViewSet, SruleViewSet, RouteMatViewSet) RoutePackViewSet, SruleViewSet, RouteMatViewSet, ToolingViewSet)
API_BASE_URL = 'api/mtm/' API_BASE_URL = 'api/mtm/'
HTML_BASE_URL = 'dhtml/mtm/' HTML_BASE_URL = 'dhtml/mtm/'
@ -20,6 +20,7 @@ router.register('route', RouteViewSet, basename='route')
router.register('teammember', TeamMemberViewSet, basename='teammember') router.register('teammember', TeamMemberViewSet, basename='teammember')
router.register('srule', SruleViewSet, basename='srule') router.register('srule', SruleViewSet, basename='srule')
router.register("routemat", RouteMatViewSet, basename="routemat") router.register("routemat", RouteMatViewSet, basename="routemat")
router.register("tooling", ToolingViewSet, basename="tooling")
urlpatterns = [ urlpatterns = [
path(API_BASE_URL, include(router.urls)), path(API_BASE_URL, include(router.urls)),
] ]

View File

@ -6,12 +6,13 @@ from rest_framework.response import Response
from rest_framework.exceptions import ParseError from rest_framework.exceptions import ParseError
from apps.mtm.filters import GoalFilter, MaterialFilter, RouteFilter from apps.mtm.filters import GoalFilter, MaterialFilter, RouteFilter
from apps.mtm.models import Goal, Material, Mgroup, Shift, Team, Process, Route, TeamMember, RoutePack, Srule, RouteMat from apps.mtm.models import Goal, Material, Mgroup, Shift, Team, Process, Route, TeamMember, RoutePack, Srule, RouteMat, Tooling
from apps.mtm.serializers import (GoalSerializer, MaterialSerializer, from apps.mtm.serializers import (GoalSerializer, MaterialSerializer,
MgroupGoalYearSerializer, MgroupSerializer, MgroupDaysSerializer, MgroupGoalYearSerializer, MgroupSerializer, MgroupDaysSerializer,
ShiftSerializer, TeamSerializer, ProcessSerializer, ShiftSerializer, TeamSerializer, ProcessSerializer,
RouteSerializer, TeamMemberSerializer, RoutePackSerializer, RouteSerializer, TeamMemberSerializer, RoutePackSerializer,
SruleSerializer, RouteMatSerializer, RoutePackCopySerializer, MaterialExportSerializer) SruleSerializer, RouteMatSerializer, RoutePackCopySerializer, MaterialExportSerializer,
ToolingSerializer)
from apps.mtm.services import get_mgroup_goals, daoru_material, get_mgroup_days from apps.mtm.services import get_mgroup_goals, daoru_material, get_mgroup_days
from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet from apps.utils.viewsets import CustomGenericViewSet, CustomModelViewSet
from apps.utils.mixins import BulkCreateModelMixin, BulkDestroyModelMixin, CustomListModelMixin from apps.utils.mixins import BulkCreateModelMixin, BulkDestroyModelMixin, CustomListModelMixin
@ -419,4 +420,14 @@ class RouteMatViewSet(CustomListModelMixin, BulkCreateModelMixin, BulkDestroyMod
perms_map = {"get": "*", "post": "route.update", "delete": "route.update"} perms_map = {"get": "*", "post": "route.update", "delete": "route.update"}
queryset = RouteMat.objects.all() queryset = RouteMat.objects.all()
serializer_class = RouteMatSerializer serializer_class = RouteMatSerializer
filterset_fields = ['route', 'material'] filterset_fields = ['route', 'material']
class ToolingViewSet(CustomModelViewSet):
"""
list: 工装列表
"""
queryset = Tooling.objects.all()
serializer_class = ToolingSerializer
search_fields = ['name', 'code']
ordering = ['sort', 'id']