from apps.mtm.models import RecordForm from apps.pm.models import ProductionPlan, SubProductionPlan, SubProductionProgress from rest_framework import serializers from apps.qm.models import TestRecord from apps.qm.serializers import TestRecordShortSerializer from apps.sam.serializers import OrderSerializer, OrderSimpleSerializer from apps.mtm.serializers import MaterialSimpleSerializer, ProcessSimpleSerializer, RecordFormSimpleSerializer, SubProductionSimpleSerializer from apps.system.serializers import OrganizationSimpleSerializer, UserSimpleSerializer from utils.mixins import DynamicFieldsSerializerMixin class ProductionPlanCreateFromOrderSerializer(serializers.ModelSerializer): class Meta: model = ProductionPlan fields = ['order', 'count', 'start_date', 'end_date'] class ProductionPlanSerializer(DynamicFieldsSerializerMixin, serializers.ModelSerializer): order_ = OrderSimpleSerializer(source='order', read_only=True) product_ = MaterialSimpleSerializer(source='product', read_only=True) class Meta: model = ProductionPlan fields ='__all__' class ResourceCalSerializer(serializers.Serializer): id = serializers.IntegerField(label='产品ID') count = serializers.IntegerField(label='生产数量') class ResourceConvertSerializer(serializers.Serializer): id = serializers.IntegerField(label='半成品ID') count = serializers.IntegerField(label='折合数量') class ResourceConvertListSerializer(serializers.ListSerializer): child = ResourceConvertSerializer() class ResourceCalListSerializer(serializers.ListSerializer): child = ResourceCalSerializer() class SubProductionPlanListSerializer(DynamicFieldsSerializerMixin, serializers.ModelSerializer): workshop_ = OrganizationSimpleSerializer(source='workshop', read_only=True) process_ = ProcessSimpleSerializer(source='process', read_only=True) subproduction_ = SubProductionSimpleSerializer(source='subproduction', read_only=True) product_ = MaterialSimpleSerializer(source='product', read_only=True) plan_product_ = serializers.SerializerMethodField() leader_1_ = UserSimpleSerializer(source='leader_1', read_only=True) leader_2_ = UserSimpleSerializer(source='leader_2', read_only=True) leader_3_ = UserSimpleSerializer(source='leader_3', read_only=True) first_test_ = TestRecordShortSerializer(source='first_test', read_only=True) # first_test_ = serializers.SerializerMethodField() class Meta: model=SubProductionPlan fields = '__all__' def get_plan_product_(self, obj): return MaterialSimpleSerializer(instance=obj.production_plan.product).data # def get_first_test_(self, obj): # if obj.first_test: # return TestRecordShortSerializer(instance=obj.first_test).data # return None class SubProductionPlanUpdateSerializer(serializers.ModelSerializer): class Meta: model = SubProductionPlan fields = ['start_date', 'end_date'] class GenSubPlanSerializer(serializers.Serializer): pass class PickNeedSerializer(serializers.Serializer): warehouse = serializers.IntegerField(label="仓库ID") class PlanDestorySerializer(serializers.Serializer): ids = serializers.ListField(child=serializers.IntegerField(), label='主计划ID列表') class SubproductionPlanSimpleSerializer(serializers.ModelSerializer): class Meta: model = SubProductionPlan fields = ['id', 'number'] class SubProductionProgressSerializer(serializers.ModelSerializer): material_ = MaterialSimpleSerializer(source='material', read_only=True) subproduction_plan_ = SubproductionPlanSimpleSerializer(source='subproduction_plan', read_only=True) class Meta: model = SubProductionProgress fields = '__all__' class FirstTestInitSerializer(serializers.Serializer): form = serializers.PrimaryKeyRelatedField(queryset=RecordForm.objects.all(), required=True) class FirstTestAuditSerializer(serializers.Serializer): leader = serializers.CharField()