96 lines
3.8 KiB
Python
96 lines
3.8 KiB
Python
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']
|
|
|
|
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_ = 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() |