46 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			46 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Python
		
	
	
	
| from email.policy import default
 | |
| from rest_framework import serializers
 | |
| from apps.pm.models import ProductionPlan, SubProductionPlan
 | |
| from apps.mtm.serializers import MaterialSimpleSerializer, ProcessSimpleSerializer
 | |
| from apps.system.models import Organization
 | |
| 
 | |
| class SubplanGanttSerializer(serializers.ModelSerializer):
 | |
|     process_ = ProcessSimpleSerializer(source='process', read_only=True)
 | |
|     product_ = MaterialSimpleSerializer(source='product', read_only=True)
 | |
|     class Meta:
 | |
|         model = SubProductionPlan
 | |
|         fields = ['id', 'number', 'start_date', 'end_date', 'count', 'count_real', 'count_ok', 'start_date_real', 'end_date_real', 'process_', 'product_']
 | |
| 
 | |
| class PlanGanttSerializer(serializers.ModelSerializer):
 | |
|     children = serializers.SerializerMethodField()
 | |
|     product_ = MaterialSimpleSerializer(source='product', read_only=True)
 | |
|     class Meta:
 | |
|         model = ProductionPlan
 | |
|         fields = ['id', 'number', 'start_date', 'end_date', 'children', 'count', 'count_real', 
 | |
|                 'count_ok', 'product', 'product_']
 | |
| 
 | |
|     def get_children(self, obj):
 | |
|         subplans = SubProductionPlan.objects.filter(production_plan=obj).order_by('process__number')
 | |
|         return SubplanGanttSerializer(instance=subplans, many=True).data
 | |
| 
 | |
| class ProcessYieldSerializer(serializers.Serializer):
 | |
|     datetime_start = serializers.DateField(label='开始时间', required=False, allow_null=True)
 | |
|     datetime_end = serializers.DateField(label='结束时间', required=False, allow_null=True)
 | |
| 
 | |
| class SrmCountSerializer(serializers.Serializer):
 | |
|     datetime_start = serializers.DateField(label='开始时间', required=False, allow_null=True)
 | |
|     datetime_end = serializers.DateField(label='结束时间', required=False, allow_null=True)
 | |
| 
 | |
| class ProductCountSerializer(serializers.Serializer):
 | |
|     tag_choices=(
 | |
|         (1, '统计成品'),
 | |
|         (2, '统计全部')
 | |
|     )
 | |
|     datetime_start = serializers.DateField(label='开始时间', required=False, allow_null=True)
 | |
|     datetime_end = serializers.DateField(label='结束时间', required=False, allow_null=True)
 | |
|     tag = serializers.ChoiceField(choices=tag_choices, label='统计范围1成品2全部', default=1)
 | |
|     dept = serializers.PrimaryKeyRelatedField(queryset=Organization.objects.all(), label="车间", required=False)
 | |
| 
 | |
| class AtWorkCountSerializer(serializers.Serializer):
 | |
|     year = serializers.IntegerField(label='年')
 | |
|     month = serializers.IntegerField(label='月') |