77 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			77 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
	
| from rest_framework import serializers
 | |
| from rest_framework.exceptions import ValidationError
 | |
| 
 | |
| from apps.mtm.serializers import MaterialSimpleSerializer
 | |
| from apps.pm.models import Mtask, Utask
 | |
| from apps.sam.models import OrderItem
 | |
| from apps.utils.serializers import CustomModelSerializer
 | |
| from apps.system.models import Dept
 | |
| from apps.wpm.models import Mlog
 | |
| 
 | |
| 
 | |
| class UtaskSerializer(CustomModelSerializer):
 | |
|     material_ = MaterialSimpleSerializer(source='material', read_only=True)
 | |
|     belong_dept = serializers.PrimaryKeyRelatedField(
 | |
|         queryset=Dept.objects.all(), required=False)
 | |
| 
 | |
|     class Meta:
 | |
|         model = Utask
 | |
|         fields = '__all__'
 | |
| 
 | |
|     def validate(self, attrs):
 | |
|         if 'mgroup' in attrs and attrs['mgroup']:
 | |
|             attrs['belong_dept'] = attrs['mgroup'].belong_dept
 | |
|         return attrs
 | |
| 
 | |
|     def update(self, instance, validated_data):
 | |
|         if instance.state != Mtask.MTASK_CREATED:
 | |
|             raise ValidationError('任务非创建中不可编辑')
 | |
|         new_data = {key: validated_data[key] for key in [
 | |
|             'number', 'count', 'start_date', 'end_date']}
 | |
|         return super().update(instance, new_data)
 | |
| 
 | |
| 
 | |
| class MlogSimpleSerializer(CustomModelSerializer):
 | |
|     shift_name = serializers.CharField(source='shift.name', read_only=True)
 | |
| 
 | |
|     class Meta:
 | |
|         model = Mlog
 | |
|         fields = ['id', 'shift_name', 'count_use',
 | |
|                   'count_ok', 'count_real', 'submit_time']
 | |
| 
 | |
| 
 | |
| class MtaskSerializer(CustomModelSerializer):
 | |
|     material_out_ = MaterialSimpleSerializer(
 | |
|         source='material_out', read_only=True)
 | |
|     mgroup_name = serializers.CharField(source='mgroup.name', read_only=True)
 | |
|     mlogs = MlogSimpleSerializer(label='日志信息', many=True, required=False)
 | |
| 
 | |
|     class Meta:
 | |
|         model = Mtask
 | |
|         fields = '__all__'
 | |
|         read_only_fields = ['utask']
 | |
| 
 | |
|     def update(self, instance, validated_data):
 | |
|         if instance.state != Mtask.MTASK_CREATED:
 | |
|             raise ValidationError('任务非创建中不可编辑')
 | |
|         if instance.utask is not None:
 | |
|             new_data = {'count': validated_data['count']}
 | |
|         else:
 | |
|             new_data = {key: validated_data[key] for key in [
 | |
|                 'number', 'count', 'start_date', 'end_date']}
 | |
|         return super().update(instance, new_data)
 | |
| 
 | |
| 
 | |
| class SchedueSerializer(serializers.Serializer):
 | |
|     orderitems = serializers.PrimaryKeyRelatedField(
 | |
|         label='orderitem的ID列表', queryset=OrderItem.objects.all(), many=True)
 | |
|     start_date = serializers.DateField(label='计划开工日期')
 | |
|     end_date = serializers.DateField(label='计划完工日期')
 | |
|     belong_dept = serializers.PrimaryKeyRelatedField(
 | |
|         label='车间ID', queryset=Dept.objects.all(), required=False)
 | |
| 
 | |
| 
 | |
| class MtaskDaySerializer(serializers.Serializer):
 | |
|     belong_dept_name = serializers.CharField(label='车间名称')
 | |
|     date = serializers.DateField(label='日期')
 |