修改表名

This commit is contained in:
caoqianming 2021-11-02 17:08:36 +08:00
parent f8676bc6ad
commit c49bb54868
5 changed files with 64 additions and 24 deletions

View File

@ -0,0 +1,40 @@
# Generated by Django 3.2.6 on 2021-11-02 09:07
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', '0027_alter_recordformfield_need_judge'),
]
operations = [
migrations.CreateModel(
name='SubprodctionMaterial',
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='删除标记')),
('is_main', models.BooleanField(default=False, verbose_name='是否主产出')),
('count', models.FloatField(default=0, verbose_name='消耗量/产出量')),
('type', models.IntegerField(default=1, verbose_name='物料应用类型')),
('sort', models.IntegerField(default=1, verbose_name='排序号')),
('create_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='subprodctionmaterial_create_by', to=settings.AUTH_USER_MODEL, verbose_name='创建人')),
('material', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='subplan_material', to='mtm.material', verbose_name='物料')),
('subproduction', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='mtm.subproduction', verbose_name='关联生产分解')),
('update_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='subprodctionmaterial_update_by', to=settings.AUTH_USER_MODEL, verbose_name='最后编辑人')),
],
options={
'abstract': False,
},
),
migrations.DeleteModel(
name='SubplanMaterial',
),
]

View File

@ -160,7 +160,7 @@ class SubProduction(CommonAModel):
verbose_name = '产品生产工序' verbose_name = '产品生产工序'
verbose_name_plural = verbose_name verbose_name_plural = verbose_name
class SubplanMaterial(CommonAModel): class SubprodctionMaterial(CommonAModel):
""" """
输入/输出物料/工具工装 输入/输出物料/工具工装
""" """
@ -171,7 +171,7 @@ class SubplanMaterial(CommonAModel):
) )
material = models.ForeignKey(Material, verbose_name='物料', on_delete=models.CASCADE, related_name='subplan_material') material = models.ForeignKey(Material, verbose_name='物料', on_delete=models.CASCADE, related_name='subplan_material')
is_main = models.BooleanField('是否主产出', default=False) # 以该产品完成度计算进度 is_main = models.BooleanField('是否主产出', default=False) # 以该产品完成度计算进度
count = models.FloatField('消耗量/产出量', default=1) count = models.FloatField('消耗量/产出量', default=0)
subproduction = models.ForeignKey(SubProduction, verbose_name='关联生产分解', on_delete=models.CASCADE) subproduction = models.ForeignKey(SubProduction, verbose_name='关联生产分解', on_delete=models.CASCADE)
type = models.IntegerField('物料应用类型', default=1) type = models.IntegerField('物料应用类型', default=1)
sort = models.IntegerField('排序号', default=1) sort = models.IntegerField('排序号', default=1)

View File

@ -1,7 +1,7 @@
from apps.em.serializers import EquipmentSimpleSerializer from apps.em.serializers import EquipmentSimpleSerializer
from rest_framework import serializers from rest_framework import serializers
from rest_framework.exceptions import ParseError, ValidationError from rest_framework.exceptions import ParseError, ValidationError
from .models import Material, Process, RecordForm, RecordFormField, Step, SubplanMaterial, TechDoc, UsedStep, SubProduction from .models import Material, Process, RecordForm, RecordFormField, Step, SubprodctionMaterial, TechDoc, UsedStep, SubProduction
from apps.system.serializers import FileSimpleSerializer, OrganizationSimpleSerializer from apps.system.serializers import FileSimpleSerializer, OrganizationSimpleSerializer
@ -69,53 +69,53 @@ class SubProductionSerializer(serializers.ModelSerializer):
class OtherMaterialSerializer(serializers.ModelSerializer): class OtherMaterialSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = SubplanMaterial model = SubprodctionMaterial
fields = ['sort', 'material', 'subproduction'] fields = ['sort', 'material', 'subproduction']
def create(self, validated_data): def create(self, validated_data):
if SubplanMaterial.objects.filter(material=validated_data['material'], subproduction=validated_data['subproduction'], is_deleted=False, type=3).exists(): if SubprodctionMaterial.objects.filter(material=validated_data['material'], subproduction=validated_data['subproduction'], is_deleted=False, type=3).exists():
raise ValidationError('该物料已存在') raise ValidationError('该物料已存在')
validated_data['type']=3 validated_data['type']=3
return super().create(validated_data) return super().create(validated_data)
class SubplanMaterialListSerializer(serializers.ModelSerializer): class SubprodctionMaterialListSerializer(serializers.ModelSerializer):
material_ = MaterialSimpleSerializer(source='material', read_only=True) material_ = MaterialSimpleSerializer(source='material', read_only=True)
class Meta: class Meta:
model = SubplanMaterial model = SubprodctionMaterial
fields = '__all__' fields = '__all__'
class InputMaterialSerializer(serializers.ModelSerializer): class InputMaterialSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = SubplanMaterial model = SubprodctionMaterial
fields = ['count', 'sort', 'material', 'subproduction'] fields = ['count', 'sort', 'material', 'subproduction']
def create(self, validated_data): def create(self, validated_data):
if SubplanMaterial.objects.filter(material=validated_data['material'], subproduction=validated_data['subproduction'], is_deleted=False, type=1).exists(): if SubprodctionMaterial.objects.filter(material=validated_data['material'], subproduction=validated_data['subproduction'], is_deleted=False, type=1).exists():
raise ValidationError('该物料已存在') raise ValidationError('该物料已存在')
validated_data['type']=1 validated_data['type']=1
return super().create(validated_data) return super().create(validated_data)
class InputMaterialUpdateSerializer(serializers.ModelSerializer): class InputMaterialUpdateSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = SubplanMaterial model = SubprodctionMaterial
fields = ['count', 'sort'] fields = ['count', 'sort']
class OutputMaterialSerializer(serializers.ModelSerializer): class OutputMaterialSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = SubplanMaterial model = SubprodctionMaterial
fields = ['count', 'sort', 'material', 'subproduction', 'is_main'] fields = ['count', 'sort', 'material', 'subproduction', 'is_main']
def create(self, validated_data): def create(self, validated_data):
if SubplanMaterial.objects.filter(subproduction=validated_data['subproduction'], is_deleted=False, is_main=True, type=2).exists(): if SubprodctionMaterial.objects.filter(subproduction=validated_data['subproduction'], is_deleted=False, is_main=True, type=2).exists():
raise ValidationError('主产出只能有1个') raise ValidationError('主产出只能有1个')
if SubplanMaterial.objects.filter(material=validated_data['material'], subproduction=validated_data['subproduction'], is_deleted=False, type=2).exists(): if SubprodctionMaterial.objects.filter(material=validated_data['material'], subproduction=validated_data['subproduction'], is_deleted=False, type=2).exists():
raise ValidationError('该物料已存在') raise ValidationError('该物料已存在')
validated_data['type']=2 validated_data['type']=2
return super().create(validated_data) return super().create(validated_data)
class OutputMaterialUpdateSerializer(serializers.ModelSerializer): class OutputMaterialUpdateSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = SubplanMaterial model = SubprodctionMaterial
fields = ['count', 'sort', 'is_main'] fields = ['count', 'sort', 'is_main']

View File

@ -2,8 +2,8 @@ from django.shortcuts import render
from rest_framework.viewsets import ModelViewSet, GenericViewSet from rest_framework.viewsets import ModelViewSet, GenericViewSet
from rest_framework.mixins import CreateModelMixin, ListModelMixin, UpdateModelMixin, RetrieveModelMixin, DestroyModelMixin from rest_framework.mixins import CreateModelMixin, ListModelMixin, UpdateModelMixin, RetrieveModelMixin, DestroyModelMixin
from apps.mtm.models import Material, Process, RecordForm, RecordFormField, Step, SubplanMaterial, TechDoc, UsedStep, SubProduction 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, SubProductionSerializer, SubplanMaterialListSerializer, TechDocCreateSerializer, TechDocListSerializer, TechDocUpdateSerializer, UsedStepCreateSerializer, UsedStepListSerializer, UsedStepUpdateSerializer from apps.mtm.serializers import InputMaterialSerializer, InputMaterialUpdateSerializer, MaterialDetailSerializer, MaterialSerializer, MaterialSimpleSerializer, OtherMaterialSerializer, OutputMaterialSerializer, OutputMaterialUpdateSerializer, ProcessSerializer, RecordFormCreateSerializer, RecordFormDetailSerializer, RecordFormFieldCreateSerializer, RecordFormFieldSerializer, RecordFormFieldUpdateSerializer, RecordFormSerializer, RecordFormUpdateSerializer, StepDetailSerializer, StepSerializer, SubProductionSerializer, SubprodctionMaterialListSerializer, TechDocCreateSerializer, TechDocListSerializer, TechDocUpdateSerializer, UsedStepCreateSerializer, UsedStepListSerializer, UsedStepUpdateSerializer
from apps.system.mixins import CreateUpdateModelAMixin, OptimizationMixin from apps.system.mixins import CreateUpdateModelAMixin, OptimizationMixin
from rest_framework.decorators import action from rest_framework.decorators import action
from rest_framework.response import Response from rest_framework.response import Response
@ -85,14 +85,14 @@ class InputMaterialViewSet(CreateUpdateModelAMixin, ModelViewSet):
输入物料-增删改查 输入物料-增删改查
""" """
perms_map = {'*':'*'} perms_map = {'*':'*'}
queryset = SubplanMaterial.objects.select_related('material').filter(type=1) queryset = SubprodctionMaterial.objects.select_related('material').filter(type=1)
serializer_class = InputMaterialSerializer serializer_class = InputMaterialSerializer
filterset_fields = ['subproduction'] filterset_fields = ['subproduction']
ordering = ['sort', '-create_time'] ordering = ['sort', '-create_time']
def get_serializer_class(self): def get_serializer_class(self):
if self.action == 'list': if self.action == 'list':
return SubplanMaterialListSerializer return SubprodctionMaterialListSerializer
elif self.action == 'update': elif self.action == 'update':
return InputMaterialUpdateSerializer return InputMaterialUpdateSerializer
return InputMaterialSerializer return InputMaterialSerializer
@ -102,14 +102,14 @@ class OutputMaterialViewSet(CreateUpdateModelAMixin, ModelViewSet):
输出物料-增删改查 输出物料-增删改查
""" """
perms_map = {'*':'*'} perms_map = {'*':'*'}
queryset = SubplanMaterial.objects.select_related('material').filter(type=2) queryset = SubprodctionMaterial.objects.select_related('material').filter(type=2)
serializer_class = OutputMaterialSerializer serializer_class = OutputMaterialSerializer
filterset_fields = ['subproduction'] filterset_fields = ['subproduction']
ordering = ['sort', '-create_time'] ordering = ['sort', '-create_time']
def get_serializer_class(self): def get_serializer_class(self):
if self.action == 'list': if self.action == 'list':
return SubplanMaterialListSerializer return SubprodctionMaterialListSerializer
elif self.action == 'update': elif self.action == 'update':
return OutputMaterialUpdateSerializer return OutputMaterialUpdateSerializer
return OutputMaterialSerializer return OutputMaterialSerializer
@ -119,14 +119,14 @@ class OtherMaterialViewSet(CreateUpdateModelAMixin, ListModelMixin, DestroyModel
其他物料-增删改查 其他物料-增删改查
""" """
perms_map = {'*':'*'} perms_map = {'*':'*'}
queryset = SubplanMaterial.objects.select_related('material').filter(type=3) queryset = SubprodctionMaterial.objects.select_related('material').filter(type=3)
serializer_class = OutputMaterialSerializer serializer_class = OutputMaterialSerializer
filterset_fields = ['subproduction'] filterset_fields = ['subproduction']
ordering = ['sort', '-create_time'] ordering = ['sort', '-create_time']
def get_serializer_class(self): def get_serializer_class(self):
if self.action == 'list': if self.action == 'list':
return SubplanMaterialListSerializer return SubprodctionMaterialListSerializer
return OtherMaterialSerializer return OtherMaterialSerializer
class UsedStepViewSet(OptimizationMixin, CreateModelMixin, DestroyModelMixin, ListModelMixin, UpdateModelMixin, GenericViewSet): class UsedStepViewSet(OptimizationMixin, CreateModelMixin, DestroyModelMixin, ListModelMixin, UpdateModelMixin, GenericViewSet):

View File

@ -5,7 +5,7 @@ from apps.em.models import Equipment
from apps.em.serializers import EquipmentSerializer from apps.em.serializers import EquipmentSerializer
from apps.inm.models import MaterialBatch from apps.inm.models import MaterialBatch
from apps.inm.serializers import MaterialBatchSerializer from apps.inm.serializers import MaterialBatchSerializer
from apps.mtm.models import Step, SubProduction, UsedStep from apps.mtm.models import Step, SubProduction, SubprodctionMaterial, UsedStep
from apps.system.mixins import CreateUpdateModelAMixin from apps.system.mixins import CreateUpdateModelAMixin
from apps.pm.serializers import GenSubPlanSerializer, PickNeedSerializer, PlanDestorySerializer, ProductionPlanCreateFromOrderSerializer, ProductionPlanSerializer, ResourceCalListSerializer, ResourceCalSerializer, SubProductionPlanListSerializer, SubProductionPlanUpdateSerializer, SubProductionProgressSerializer from apps.pm.serializers import GenSubPlanSerializer, PickNeedSerializer, PlanDestorySerializer, ProductionPlanCreateFromOrderSerializer, ProductionPlanSerializer, ResourceCalListSerializer, ResourceCalSerializer, SubProductionPlanListSerializer, SubProductionPlanUpdateSerializer, SubProductionProgressSerializer
from rest_framework.mixins import CreateModelMixin, ListModelMixin, UpdateModelMixin from rest_framework.mixins import CreateModelMixin, ListModelMixin, UpdateModelMixin
@ -87,7 +87,7 @@ class ProductionPlanViewSet(CreateUpdateModelAMixin, ListModelMixin, CreateModel
start_date=production_plan.start_date, end_date=production_plan.end_date, start_date=production_plan.start_date, end_date=production_plan.end_date,
workshop=i.process.workshop, process=i.process, create_by=request.user, workshop=i.process.workshop, process=i.process, create_by=request.user,
steps = list(steps)) steps = list(steps))
for m in SubProduction.objects.filter(subproduction=i, is_deleted=False).order_by('sort'): for m in SubprodctionMaterial.objects.filter(subproduction=i, is_deleted=False).order_by('sort'):
SubProductionProgress.objects.create(material=m.material, type=m.type, count=m.count*production_plan.count, subproduction_plan=instance) SubProductionProgress.objects.create(material=m.material, type=m.type, count=m.count*production_plan.count, subproduction_plan=instance)
production_plan.is_planed=True production_plan.is_planed=True
production_plan.save() production_plan.save()