1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- # coding=utf-8
- from django.conf import settings
- from rest_framework import serializers
- from apps.tenant.building.serializer import BuildingDetailSerializer
- from apps.tenant.inspection_order.models import InspectionOrder
- from apps.tenant.repair_order.models import RepairOrder
- from apps.upload.serializers import UploadSerializer
- from utils.serializersfield import DelayTimeCharField
- from utils.exceptions import CustomError
- class InspectionOrderDetailSerializer(serializers.ModelSerializer):
- status_text = serializers.CharField(source='get_status_display', read_only=True)
- user_name = serializers.CharField(source='user.employee.name', read_only=True)
- user_tel = serializers.CharField(source='user.employee.tel', read_only=True)
- building_text = serializers.SerializerMethodField()
- images = serializers.SerializerMethodField()
- repair_type_text = serializers.CharField(source='repair_type.name', read_only=True)
- create_at = DelayTimeCharField(source='create_time', read_only=True)
- def get_images(self, obj):
- return UploadSerializer(obj.images, many=True).data
- def get_building_text(self, obj):
- return BuildingDetailSerializer(obj.building).data
- class Meta:
- model = InspectionOrder
- fields = '__all__'
- class InspectionOrderListSerializer(serializers.ModelSerializer):
- status_text = serializers.CharField(source='get_status_display', read_only=True)
- building_text = serializers.SerializerMethodField()
- images = serializers.SerializerMethodField()
- repair_type_text = serializers.CharField(source='repair_type.name', read_only=True)
- create_at = DelayTimeCharField(source='create_time', read_only=True)
- def get_images(self, obj):
- return UploadSerializer(obj.images, many=True).data
- def get_building_text(self, obj):
- return BuildingDetailSerializer(obj.building).data
- class Meta:
- model = InspectionOrder
- fields = '__all__'
- class InspectionOrderSerializer(serializers.ModelSerializer):
- class Meta:
- model = InspectionOrder
- fields = ('id', 'building', 'problem', 'repair_type')
- def create(self, validated_data):
- # 巡检结果
- inspection_result = str(self.initial_data['inspection_result'])
- if inspection_result == '0':
- # 巡检状态如果为正常,判断当前教室是否还存有未完成保修的工单
- repair_orders = RepairOrder.objects.filter(building=self.validated_data['building'],
- status__in=[settings.NOT_CHECKED, settings.CHECKED,
- settings.DISPATCH, settings.HANG_UP])
- if repair_orders:
- raise CustomError('该地区还存在未完成的报修!')
- # 状态保存为正常
- validated_data['status'] = InspectionOrder.NOT_REPAIR
- if 'images' in self.initial_data:
- validated_data['images'] = self.initial_data['images'].split(',')
- user = self.context['request'].user
- validated_data['user'] = user
- validated_data['tenant'] = user.employee.tenant
- instance = super(InspectionOrderSerializer, self).create(validated_data)
- instance.no = instance.get_no()
- instance.save()
- # 点维修 转到报销里面,并自动派单给当前人,报销单状态直接是已派单,
- if inspection_result == '1':
- # 转报修
- repair_order = instance.turn_repair(user)
- # 自动派单
- repair_order.dispatch_repair_order(user, user.id)
- return instance
|