serializers.py 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. # coding=utf-8
  2. from django.conf import settings
  3. from rest_framework import serializers
  4. from apps.tenant.inspection_order.models import InspectionOrder
  5. from apps.tenant.repair_order.models import RepairOrder
  6. from apps.upload.serializers import UploadSerializer
  7. from utils.serializersfield import DelayTimeCharField
  8. from utils.exceptions import CustomError
  9. class InspectionOrderDetailSerializer(serializers.ModelSerializer):
  10. status_text = serializers.CharField(source='get_status_display', read_only=True)
  11. user_name = serializers.CharField(source='user.employee.name', read_only=True)
  12. user_tel = serializers.CharField(source='user.employee.tel', read_only=True)
  13. images = serializers.SerializerMethodField()
  14. repair_type_text = serializers.CharField(source='repair_type.name', read_only=True)
  15. create_at = DelayTimeCharField(source='create_time', read_only=True)
  16. def get_images(self, obj):
  17. return UploadSerializer(obj.images, many=True).data
  18. class Meta:
  19. model = InspectionOrder
  20. fields = '__all__'
  21. class InspectionOrderListSerializer(serializers.ModelSerializer):
  22. status_text = serializers.CharField(source='get_status_display', read_only=True)
  23. images = serializers.SerializerMethodField()
  24. repair_type_text = serializers.CharField(source='repair_type.name', read_only=True)
  25. create_at = DelayTimeCharField(source='create_time', read_only=True)
  26. def get_images(self, obj):
  27. return UploadSerializer(obj.images, many=True).data
  28. class Meta:
  29. model = InspectionOrder
  30. fields = '__all__'
  31. class InspectionOrderSerializer(serializers.ModelSerializer):
  32. class Meta:
  33. model = InspectionOrder
  34. fields = ('id', 'device_id', 'device_name', 'device_address', 'problem', 'repair_type')
  35. def create(self, validated_data):
  36. # 巡检结果
  37. inspection_result = str(self.initial_data['inspection_result'])
  38. device = None
  39. if 'device' in self.initial_data:
  40. device = self.initial_data['device']
  41. if inspection_result == '0':
  42. # 巡检状态如果为正常,判断当前教室是否还存有未完成保修的工单
  43. # repair_orders = RepairOrder.objects.filter(device_address=self.initial_data['device_address'],
  44. # device_name=self.initial_data['device_name'],
  45. # device=device,
  46. # status__in=[settings.NOT_CHECKED, settings.CHECKED,
  47. # settings.DISPATCH, settings.HANG_UP])
  48. # if repair_orders:
  49. # raise CustomError('该地区还存在未完成的报修!')
  50. # 状态保存为正常
  51. validated_data['status'] = InspectionOrder.NOT_REPAIR
  52. if 'images' in self.initial_data:
  53. validated_data['images'] = self.initial_data['images'].split(',')
  54. user = self.context['request'].user
  55. validated_data['user'] = user
  56. validated_data['tenant'] = user.employee.tenant
  57. validated_data['device'] = device
  58. instance = super(InspectionOrderSerializer, self).create(validated_data)
  59. instance.no = instance.get_no()
  60. instance.save()
  61. # 点维修 转到报销里面,并自动派单给当前人,报销单状态直接是已派单,
  62. if inspection_result == '1':
  63. # 转报修
  64. repair_order = instance.turn_repair(user)
  65. # 自动派单
  66. repair_order.dispatch_repair_order(user, user.id)
  67. return instance