访客增加拉送货项目, 人员类型增加司机
This commit is contained in:
parent
d48795f237
commit
543a460090
|
@ -17,7 +17,8 @@ class Employee(CommonBModel):
|
|||
PEOPLE_TYPE_CHOICES = (
|
||||
('employee', '内部员工'),
|
||||
('remployee', '相关方人员'),
|
||||
('visitor', '访客')
|
||||
('visitor', '访客'),
|
||||
('driver', '司机')
|
||||
)
|
||||
type = models.CharField('人员类型', default='employee', max_length=10, choices=PEOPLE_TYPE_CHOICES)
|
||||
user = models.OneToOneField(User,
|
||||
|
|
|
@ -15,7 +15,8 @@ class Visit(CommonBModel):
|
|||
(10, '参观'),
|
||||
(20, '拜访'),
|
||||
(30, '面试'),
|
||||
(40, '开会')
|
||||
(40, '开会'),
|
||||
(50, '拉送货')
|
||||
)
|
||||
V_CREATE = 10
|
||||
V_AUDIT = 20
|
||||
|
@ -44,7 +45,7 @@ class Visit(CommonBModel):
|
|||
visit_time = models.DateTimeField('来访时间')
|
||||
leave_time = models.DateTimeField('离开时间')
|
||||
count_people = models.PositiveSmallIntegerField('来访人数', null=True, blank=True)
|
||||
receptionist = models.ForeignKey(User, verbose_name='接待人', on_delete=models.CASCADE)
|
||||
receptionist = models.ForeignKey(User, verbose_name='接待人', on_delete=models.CASCADE, null=True, blank=True)
|
||||
visitors = models.ManyToManyField('vm.visitor', through='vm.vpeople', related_name='v_visitors')
|
||||
ticket = models.ForeignKey(Ticket, verbose_name='关联工单',
|
||||
on_delete=models.SET_NULL, null=True, blank=True)
|
||||
|
|
|
@ -86,6 +86,7 @@ class VpeopleSerializer(CustomModelSerializer):
|
|||
|
||||
|
||||
class VisitorRegisterSerializer(serializers.Serializer):
|
||||
type = serializers.CharField(label="人员类型")
|
||||
name = serializers.CharField(label="姓名")
|
||||
phone = serializers.CharField(label="手机号")
|
||||
code = serializers.CharField(label='手机号验证码')
|
||||
|
|
|
@ -64,3 +64,28 @@ def visit_audit_end(ticket):
|
|||
send_sms(phone=phone, template_code=1004, template_param={'name': '访客项目'})
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
|
||||
def visit_driver_end(visit: Visit):
|
||||
# 更新企业司机人员库
|
||||
for i in Vpeople.objects.filter(visit=visit):
|
||||
visitor = i.visitor
|
||||
ep = Employee.objects.filter(id_number=visitor.id_number).first()
|
||||
if ep:
|
||||
pass
|
||||
else:
|
||||
ep = Employee()
|
||||
ep.id_number = visitor.id_number
|
||||
ep.name = visitor.name
|
||||
ep.phone = visitor.phone
|
||||
ep.photo = visitor.photo
|
||||
ep.type = 'driver'
|
||||
ep.belong_dept = visit.belong_dept
|
||||
ep.save()
|
||||
visitor.employee = ep
|
||||
visitor.visit = visit # 更新当前所属访客项目
|
||||
visitor.save()
|
||||
# 同步至大华人员库并下发人脸
|
||||
HrmService.sync_dahua_employee(ep, '', visit.visit_time, visit.leave_time)
|
||||
visit.state = Visit.V_ENTER
|
||||
visit.save()
|
|
@ -14,6 +14,9 @@ from rest_framework.exceptions import ParseError
|
|||
from rest_framework.mixins import ListModelMixin, RetrieveModelMixin, CreateModelMixin, DestroyModelMixin
|
||||
from django.contrib.auth.hashers import make_password
|
||||
from django.db import transaction
|
||||
from rest_framework.serializers import Serializer
|
||||
|
||||
from apps.vm.services import visit_driver_end
|
||||
# Create your views here.
|
||||
|
||||
|
||||
|
@ -52,6 +55,18 @@ class VisitViewSet(CustomModelViewSet):
|
|||
raise ParseError('项目非创建状态不可删除')
|
||||
return super().destroy(request, *args, **kwargs)
|
||||
|
||||
@action(methods=['post'], detail=True, permission_classes=[],
|
||||
serializer_class=Serializer)
|
||||
@transaction.atomic
|
||||
def submit(self, request, *args, **kwargs):
|
||||
"""司机直接提交不走工单
|
||||
|
||||
司机直接提交不走工单
|
||||
"""
|
||||
obj = self.get_object()
|
||||
visit_driver_end(obj)
|
||||
return Response()
|
||||
|
||||
|
||||
class VisitorViewSet(CustomModelViewSet):
|
||||
queryset = Visitor.objects.all()
|
||||
|
@ -72,9 +87,9 @@ class VisitorViewSet(CustomModelViewSet):
|
|||
serializer_class=VisitorRegisterSerializer)
|
||||
@transaction.atomic
|
||||
def register(self, request, *args, **kwargs):
|
||||
"""访客账户注册
|
||||
"""访客/司机账户注册
|
||||
|
||||
访客账户注册
|
||||
访客/司机账户注册
|
||||
"""
|
||||
serializer = self.get_serializer(data=request.data)
|
||||
serializer.is_valid(raise_exception=True)
|
||||
|
@ -88,9 +103,11 @@ class VisitorViewSet(CustomModelViewSet):
|
|||
user = User.objects.filter(phone=phone).first()
|
||||
if user:
|
||||
raise ParseError('该手机号已注册,请直接登录')
|
||||
# 访客账户创建
|
||||
# 访客/司机账户创建
|
||||
user = User()
|
||||
user.type = 'visitor'
|
||||
if vdata['type'] == 'driver':
|
||||
user.type = 'driver'
|
||||
user.name = name
|
||||
user.username = 'V_' + ranstr(10)
|
||||
user.phone = phone
|
||||
|
|
Loading…
Reference in New Issue