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.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', 'number'] 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 ProductionPlanSimpleSerializer(serializers.ModelSerializer): class Meta: model = ProductionPlan fields = ['number', 'state'] 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) production_plan_ = ProductionPlanSimpleSerializer(source='production_plan', 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_ = 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): tr = obj.first_test if obj.first_test: return {'id':tr.id, 'is_submited':tr.is_submited} 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()