visit belong_dept

This commit is contained in:
caoqianming 2022-10-27 15:59:39 +08:00
parent a973b62fe8
commit 55176e2cfe
3 changed files with 28 additions and 7 deletions

View File

@ -1,6 +1,5 @@
import importlib import importlib
from operator import is_
import os import os
import cv2 import cv2
from django.conf import settings from django.conf import settings

View File

@ -20,6 +20,22 @@ class VisitCreateUpdateSerializer(CustomModelSerializer):
fields = ['id', 'purpose', 'name', 'description', 'visit_time', fields = ['id', 'purpose', 'name', 'description', 'visit_time',
'leave_time', 'receptionist', 'company', 'level', 'count_people'] 'leave_time', 'receptionist', 'company', 'level', 'count_people']
def create(self, validated_data):
receptionist = validated_data.get('receptionist', None)
if receptionist:
if receptionist.type != 'employee':
raise ParseError('接待人需为正式员工')
validated_data['belong_dept'] = validated_data['receptionist'].belong_dept
return super().create(validated_data)
def update(self, instance, validated_data):
receptionist = validated_data.get('receptionist', None)
if receptionist:
if receptionist.type != 'employee':
raise ParseError('接待人需为正式员工')
validated_data['belong_dept'] = validated_data['receptionist'].belong_dept
return super().update(instance, validated_data)
class VisitSerializer(CustomModelSerializer): class VisitSerializer(CustomModelSerializer):
receptionist_ = UserSimpleSerializer(source='receptionist', read_only=True) receptionist_ = UserSimpleSerializer(source='receptionist', read_only=True)
@ -33,7 +49,8 @@ class VisitSerializer(CustomModelSerializer):
class VisitorCreateSerializer(CustomModelSerializer): class VisitorCreateSerializer(CustomModelSerializer):
phone = serializers.CharField(label="手机号", validators=[check_phone_e]) phone = serializers.CharField(label="手机号", validators=[check_phone_e])
photo = serializers.CharField(label='照片地址', required=True) photo = serializers.CharField(label='照片地址', required=True)
id_number = serializers.CharField(label="身份证号", validators=[check_id_number_e]) id_number = serializers.CharField(
label="身份证号", validators=[check_id_number_e])
class Meta: class Meta:
model = Visitor model = Visitor
@ -43,7 +60,8 @@ class VisitorCreateSerializer(CustomModelSerializer):
with transaction.atomic(): with transaction.atomic():
# 校验上传的证件照 # 校验上传的证件照
if validated_data.get('photo', None): if validated_data.get('photo', None):
dhClient.request(**dhapis['person_img_upload'], file_path_rela=validated_data['photo']) dhClient.request(
**dhapis['person_img_upload'], file_path_rela=validated_data['photo'])
return super().create(validated_data) return super().create(validated_data)
@ -81,7 +99,8 @@ class VpeopleCreateSerializer(CustomModelSerializer):
raise ParseError('该访客已选中') raise ParseError('该访客已选中')
ins = super().create(validated_data) ins = super().create(validated_data)
if ins.is_main: if ins.is_main:
Vpeople.objects.filter(visit=visit).exclude(id=ins.id).update(is_main=False) Vpeople.objects.filter(visit=visit).exclude(
id=ins.id).update(is_main=False)
if visit.level == 10: if visit.level == 10:
visit.count_people = Vpeople.objects.filter(visit=visit).count() visit.count_people = Vpeople.objects.filter(visit=visit).count()
visit.save() visit.save()
@ -107,7 +126,8 @@ class VisitorRegisterSerializer(serializers.Serializer):
class VisitDetailSerializer(CustomModelSerializer): class VisitDetailSerializer(CustomModelSerializer):
receptionist_ = UserSimpleSerializer(source='receptionist', read_only=True) receptionist_ = UserSimpleSerializer(source='receptionist', read_only=True)
receptionist_name = serializers.CharField(source='receptionist.name', read_only=True) receptionist_name = serializers.CharField(
source='receptionist.name', read_only=True)
visitors_ = serializers.SerializerMethodField() visitors_ = serializers.SerializerMethodField()
ticket_ = TicketSerializer(source='ticket', read_only=True) ticket_ = TicketSerializer(source='ticket', read_only=True)
@ -116,5 +136,6 @@ class VisitDetailSerializer(CustomModelSerializer):
fields = '__all__' fields = '__all__'
def get_visitors_(self, obj): def get_visitors_(self, obj):
objs = Vpeople.objects.filter(visit=obj).order_by('is_main', 'create_time') objs = Vpeople.objects.filter(
visit=obj).order_by('is_main', 'create_time')
return VpeopleSerializer(instance=objs, many=True).data return VpeopleSerializer(instance=objs, many=True).data

View File

@ -25,9 +25,10 @@ def bind_visit(ticket, transition, new_ticket_data: dict):
ticket_data = ticket.ticket_data ticket_data = ticket.ticket_data
ticket_data.update({ ticket_data.update({
'purpose': visit.purpose, 'purpose': visit.purpose,
'belong_dept': visit.belong_dept
}) })
ticket.ticket_data = ticket_data ticket.ticket_data = ticket_data
ticket.belong_dept = visit.receptionist.belong_dept if visit.receptionist else None ticket.belong_dept = visit.belong_dept
ticket.create_by = visit.create_by ticket.create_by = visit.create_by
ticket.save() ticket.save()