1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- import random
- import string
- from django.utils import timezone
- from django.conf import settings
- from django.db import models
- from apps.tenant.building.models import Building
- from apps.tenant.models import Tenant
- from apps.tenant.option.models import Option
- from apps.upload.models import Upload
- from apps.tenant.repair_order.models import RepairOrder
- from utils.exceptions import CustomError
- class InspectionOrder(models.Model):
- NOT_REPAIR = 1
- HAS_REPAIR = 2
- REPAIR = 3
- STATUS_CHOICES = (
- (NOT_REPAIR, '巡检正常'),
- (HAS_REPAIR, '已报修'),
- (REPAIR, '已修复'),
- )
- building = models.ForeignKey(Building, verbose_name=u'巡检地点', on_delete=models.PROTECT)
- no = models.CharField(max_length=50, verbose_name=u'编号', blank=True)
- status = models.PositiveSmallIntegerField(choices=STATUS_CHOICES, verbose_name=u'状态', default=NOT_REPAIR)
- tenant = models.ForeignKey(Tenant, verbose_name=u'租户', on_delete=models.PROTECT, blank=True)
- user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=u"巡检人员", on_delete=models.PROTECT,
- editable=False, related_name='inspection_order_user')
- problem = models.CharField(max_length=500, verbose_name=u'巡检问题')
- create_time = models.DateTimeField(verbose_name=u'巡检时间', auto_now_add=True)
- images = models.ManyToManyField(Upload, verbose_name=u'图片', blank=True)
- repair_type = models.ForeignKey(Option, verbose_name=u'报修类型', on_delete=models.PROTECT, null=True)
- repair_order = models.ForeignKey(RepairOrder, verbose_name=u'转报修', on_delete=models.PROTECT, null=True)
- turn_repair_time = models.DateTimeField(verbose_name=u'转报修时间', null=True)
- turn_repair_user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name=u"转报修人", on_delete=models.PROTECT,
- null=True, related_name='turn_repair_user')
- class Meta:
- db_table = 'inspection_order'
- verbose_name = '巡检工单'
- ordering = ['-create_time']
- index_together = (
- 'status',
- 'create_time',
- )
- default_permissions = ()
- permissions = [
- ('browse_inspection_order', u'查看'),
- ('add_inspection_order', u'添加'),
- ('delete_inspection_order', u'删除'),
- ('dturn_repair_inspection_order', u'转报修'),
- ]
- @staticmethod
- def get_instance_by_id(id, tenant):
- try:
- id = int(id)
- except:
- raise CustomError('无效的inspection_order_id')
- instance = InspectionOrder.objects.filter(pk=id, tenant=tenant).first()
- if not instance:
- raise CustomError('未找到对应的巡检工单实例')
- return instance
- def get_no(self):
- now = timezone.now()
- no = '%s%d-%s' % ('XJ', self.tenant.id, now.strftime('%Y%m%d%H%M%S'))
- return no
- def turn_repair(self, user):
- # 巡检转报修
- repair_order = RepairOrder.objects.create(tenant=self.tenant, building=self.building,
- fault_des=self.problem, repair_type=self.repair_type, user=self.user,
- tel=self.user.employee.tel,name=self.user.employee.name,
- order_type=RepairOrder.INSPECTION_ORDER)
- repair_order.no = repair_order.get_no()
- images = self.images.all()
- for image in images:
- repair_order.images.add(image.id)
- repair_order.save()
- self.status = InspectionOrder.HAS_REPAIR
- self.repair_order = repair_order
- self.turn_repair_time = timezone.now()
- self.turn_repair_user = user
- self.save()
- return repair_order
|