装箱项目表增删改查
This commit is contained in:
parent
82ada27c91
commit
6f97cb9900
|
@ -0,0 +1,37 @@
|
|||
# Generated by Django 3.2.9 on 2022-02-18 07:20
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import django.utils.timezone
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
('mtm', '0046_alter_recordform_type'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='PackItem',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, 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.CharField(max_length=100, verbose_name='名称')),
|
||||
('specification', models.CharField(blank=True, max_length=100, null=True, verbose_name='型号')),
|
||||
('unit', models.CharField(max_length=10, verbose_name='单位')),
|
||||
('count', models.PositiveIntegerField(default=1, verbose_name='数量')),
|
||||
('sort', models.PositiveIntegerField(default=1, verbose_name='序号')),
|
||||
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='packitem_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
|
||||
('material', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='mtm.material', verbose_name='关联成品')),
|
||||
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='packitem_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
),
|
||||
]
|
|
@ -1,3 +1,4 @@
|
|||
from cv2 import meanStdDev
|
||||
from django.db import models
|
||||
from django.db.models.base import Model
|
||||
import django.utils.timezone as timezone
|
||||
|
@ -49,6 +50,18 @@ class Material(CommonAModel):
|
|||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
class PackItem(CommonAModel):
|
||||
"""
|
||||
装箱项目
|
||||
"""
|
||||
material = models.ForeignKey(Material, verbose_name='关联成品',
|
||||
on_delete=models.CASCADE)
|
||||
name = models.CharField('名称', max_length=100)
|
||||
specification = models.CharField('型号', max_length=100, null=True, blank=True)
|
||||
unit = models.CharField('单位', max_length=10)
|
||||
count = models.PositiveIntegerField('数量', default=1)
|
||||
sort = models.PositiveIntegerField('序号', default=1)
|
||||
|
||||
class Process(CommonAModel):
|
||||
"""
|
||||
工序
|
||||
|
|
|
@ -3,7 +3,7 @@ from rest_framework import serializers
|
|||
from rest_framework.exceptions import ParseError, ValidationError
|
||||
|
||||
from utils.mixins import DynamicFieldsSerializerMixin
|
||||
from .models import Material, Process, RecordForm, RecordFormField, Step, SubprodctionMaterial, TechDoc, UsedStep, SubProduction
|
||||
from .models import Material, PackItem, Process, RecordForm, RecordFormField, Step, SubprodctionMaterial, TechDoc, UsedStep, SubProduction
|
||||
from apps.system.serializers import FileSimpleSerializer, OrganizationSimpleSerializer
|
||||
|
||||
|
||||
|
@ -24,6 +24,20 @@ class MaterialDetailSerializer(serializers.ModelSerializer):
|
|||
objs = Process.objects.filter(subproduction_process__product=obj, subproduction_process__is_deleted=False, is_deleted=False).distinct().order_by('number')
|
||||
return ProcessSimpleSerializer(instance=objs, many=True).data
|
||||
|
||||
class PackItemSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = PackItem
|
||||
fields = '__all__'
|
||||
|
||||
class PackItemCreateSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = PackItem
|
||||
fields = ['material', 'name', 'specification', 'unit', 'count', 'sort']
|
||||
|
||||
class PackItemUpdateSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = PackItem
|
||||
fields = ['count', 'sort']
|
||||
|
||||
class MaterialSimpleSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
from django.db.models import base
|
||||
from rest_framework import urlpatterns
|
||||
from apps.mtm.views import InputMaterialViewSet, MaterialViewSet, OtherMaterialViewSet, OutputMaterialViewSet, ProcessViewSet, RecordFormFieldViewSet, RecordFormViewSet, StepViewSet, SubProductionViewSet, TechDocViewSet, UsedStepViewSet
|
||||
from apps.mtm.views import InputMaterialViewSet, MaterialViewSet, OtherMaterialViewSet, OutputMaterialViewSet, PackItemViewSet, ProcessViewSet, RecordFormFieldViewSet, RecordFormViewSet, StepViewSet, SubProductionViewSet, TechDocViewSet, UsedStepViewSet
|
||||
from django.urls import path, include
|
||||
from rest_framework.routers import DefaultRouter
|
||||
|
||||
router = DefaultRouter()
|
||||
router.register('material', MaterialViewSet, basename='material')
|
||||
router.register('packitem', PackItemViewSet, basename='packitem')
|
||||
router.register('process', ProcessViewSet, basename='process')
|
||||
router.register('step', StepViewSet, basename='step')
|
||||
router.register('subproducation', SubProductionViewSet, basename='subproducation')
|
||||
|
|
|
@ -3,8 +3,8 @@ from rest_framework.viewsets import ModelViewSet, GenericViewSet
|
|||
from rest_framework.mixins import CreateModelMixin, ListModelMixin, UpdateModelMixin, RetrieveModelMixin, DestroyModelMixin
|
||||
from apps.mtm.filters import MaterialFilterSet, TechDocFilterset
|
||||
|
||||
from apps.mtm.models import Material, Process, RecordForm, RecordFormField, Step, SubprodctionMaterial, TechDoc, UsedStep, SubProduction
|
||||
from apps.mtm.serializers import InputMaterialSerializer, InputMaterialUpdateSerializer, MaterialDetailSerializer, MaterialSerializer, MaterialSimpleSerializer, OtherMaterialSerializer, OutputMaterialSerializer, OutputMaterialUpdateSerializer, ProcessSerializer, RecordFormCreateSerializer, RecordFormDetailSerializer, RecordFormFieldCreateSerializer, RecordFormFieldSerializer, RecordFormFieldUpdateSerializer, RecordFormSerializer, RecordFormUpdateSerializer, StepDetailSerializer, StepSerializer, SubProductionCreateUpdateSerializer, SubProductionSerializer, SubprodctionMaterialListSerializer, TechDocCreateSerializer, TechDocListSerializer, TechDocUpdateSerializer, UsedStepCreateSerializer, UsedStepListSerializer, UsedStepUpdateSerializer
|
||||
from apps.mtm.models import Material, PackItem, Process, RecordForm, RecordFormField, Step, SubprodctionMaterial, TechDoc, UsedStep, SubProduction
|
||||
from apps.mtm.serializers import InputMaterialSerializer, InputMaterialUpdateSerializer, MaterialDetailSerializer, MaterialSerializer, MaterialSimpleSerializer, OtherMaterialSerializer, OutputMaterialSerializer, OutputMaterialUpdateSerializer, PackItemCreateSerializer, PackItemUpdateSerializer, ProcessSerializer, RecordFormCreateSerializer, RecordFormDetailSerializer, RecordFormFieldCreateSerializer, RecordFormFieldSerializer, RecordFormFieldUpdateSerializer, RecordFormSerializer, RecordFormUpdateSerializer, StepDetailSerializer, StepSerializer, SubProductionCreateUpdateSerializer, SubProductionSerializer, SubprodctionMaterialListSerializer, TechDocCreateSerializer, TechDocListSerializer, TechDocUpdateSerializer, UsedStepCreateSerializer, UsedStepListSerializer, UsedStepUpdateSerializer
|
||||
from apps.system.mixins import CreateUpdateModelAMixin, OptimizationMixin
|
||||
from rest_framework.decorators import action
|
||||
from rest_framework.response import Response
|
||||
|
@ -31,6 +31,25 @@ class MaterialViewSet(PageOrNot, CreateUpdateModelAMixin, ModelViewSet):
|
|||
return MaterialDetailSerializer
|
||||
return MaterialSerializer
|
||||
|
||||
class PackItemViewSet(CreateUpdateModelAMixin, ModelViewSet):
|
||||
"""
|
||||
装箱项目-增删改查
|
||||
"""
|
||||
perms_map = {'get': '*', 'post': 'packitem_create',
|
||||
'put': 'packitem_update', 'delete': 'packitem_delete'}
|
||||
queryset = PackItem.objects.all()
|
||||
serializer_class = MaterialSerializer
|
||||
search_fields = ['name', 'number']
|
||||
filterset_fields = ['material']
|
||||
ordering = ['sort']
|
||||
|
||||
def get_serializer_class(self):
|
||||
if self.action == 'create':
|
||||
return PackItemCreateSerializer
|
||||
elif self.action == 'update':
|
||||
return PackItemUpdateSerializer
|
||||
return super().get_serializer_class()
|
||||
|
||||
|
||||
class ProcessViewSet(PageOrNot, CreateUpdateModelAMixin, ModelViewSet):
|
||||
"""
|
||||
|
|
Loading…
Reference in New Issue