rpm分配账号可选已有的/至少选择一位访客/成员

This commit is contained in:
曹前明 2022-10-24 19:02:19 +08:00
parent 99f84f48cd
commit 90a4e46cc8
6 changed files with 25 additions and 14 deletions

View File

@ -81,7 +81,7 @@ def opl_audit_end(ticket: Ticket):
# 授予相关工作人员区域进入权限 # 授予相关工作人员区域进入权限
# worker_ep_ids = list(OplWorker.objects.filter(opl=opl).values_list('worker__id', flat=True)) # worker_ep_ids = list(OplWorker.objects.filter(opl=opl).values_list('worker__id', flat=True))
# 发送通知 # 发送通知
phone = opl.create_by.phone phone = opl.create_by.phone if opl.create_by else None
if phone: if phone:
send_sms(phone=phone, template_code=1005, template_param={'name': ticket.workflow.name}) send_sms(phone=phone, template_code=1005, template_param={'name': ticket.workflow.name})

View File

@ -65,11 +65,15 @@ class RpartySimpleSerializer(CustomModelSerializer):
fields = ['id', 'name'] fields = ['id', 'name']
class RpartyAssignSerializer(serializers.Serializer): class RpartyAssignSerializer(serializers.ModelSerializer):
name = serializers.CharField(label="姓名") name = serializers.CharField(label="姓名")
phone = serializers.CharField(label="手机号") phone = serializers.CharField(label="手机号")
username = serializers.CharField(label="账号") username = serializers.CharField(label="账号")
class Meta:
model = Rparty
fields = ['admin', 'name', 'phone', 'username']
class RfileListSerializer(CustomModelSerializer): class RfileListSerializer(CustomModelSerializer):
rparty_ = RpartySimpleSerializer(source='rparty', read_only=True) rparty_ = RpartySimpleSerializer(source='rparty', read_only=True)

View File

@ -7,6 +7,7 @@ from apps.utils.tools import ranstr
from apps.wf.models import Ticket, Transition from apps.wf.models import Ticket, Transition
from apps.rpm.models import Remployee, Rfile, Rparty, Rpj, Rpjcertificate, Rpjfile, Rpjmember from apps.rpm.models import Remployee, Rfile, Rparty, Rpj, Rpjcertificate, Rpjfile, Rpjmember
from django.contrib.auth.hashers import make_password from django.contrib.auth.hashers import make_password
from rest_framework.exceptions import ParseError
def sync_to_rep(ep: Employee): def sync_to_rep(ep: Employee):
@ -28,8 +29,10 @@ def sync_to_rep(ep: Employee):
def bind_rpj(ticket: Ticket, transition: Transition, new_ticket_data: dict): def bind_rpj(ticket: Ticket, transition: Transition, new_ticket_data: dict):
rpj = Rpj.objects.get(id=new_ticket_data['rpj']) rpj = Rpj.objects.get(id=new_ticket_data['rpj'])
if not Rpjmember.objects.filter(rpj=rpj).exists():
raise ParseError('请至少选择一位入厂人员')
ticket_data = ticket.ticket_data ticket_data = ticket.ticket_data
ticket_data.update({'belong_dept': rpj.belong_dept.id}) ticket_data.update({'belong_dept': rpj.belong_dept.id if rpj.belong_dept else '0'})
ticket.ticket_data = ticket_data ticket.ticket_data = ticket_data
rpj.ticket = ticket rpj.ticket = ticket
rpj.state = Rpj.RPJ_AUDIT rpj.state = Rpj.RPJ_AUDIT
@ -130,6 +133,6 @@ def rpj_audit_end(ticket):
rpj.state = Rpj.RPJ_ENTER rpj.state = Rpj.RPJ_ENTER
rpj.save() rpj.save()
# 发送通知? # 发送通知?
phone = rpj.create_by.phone phone = rpj.create_by.phone if rpj.create_by else None
if phone: if phone:
send_sms(phone=phone, template_code=1004, template_param={'name': '相关方项目'}) send_sms(phone=phone, template_code=1004, template_param={'name': '相关方项目'})

View File

@ -47,22 +47,23 @@ class RpartyViewSet(CustomModelViewSet):
serializer = RpartyAssignSerializer(data=request.data) serializer = RpartyAssignSerializer(data=request.data)
serializer.is_valid(raise_exception=True) serializer.is_valid(raise_exception=True)
vdata = serializer.validated_data vdata = serializer.validated_data
if obj.admin: if vdata['admin']:
ins = obj.admin ins = vdata['admin']
elif User.objects.get_queryset(all=True).filter(Q(phone=vdata['phone']) | Q(username=vdata['username'])).exists():
raise ParseError('该账号已存在,请直接选择')
else: else:
if User.objects.get_queryset(all=True).filter(Q(phone=vdata['phone']) | Q(username=vdata['username'])).exists():
raise ParseError('该账号已存在,请选择绑定')
serializer = UserCreateSerializer(data=request.data) serializer = UserCreateSerializer(data=request.data)
serializer.is_valid(raise_exception=True) serializer.is_valid(raise_exception=True)
ins = serializer.save(type='remployee', password=make_password('0000')) ins = serializer.save(type='remployee', password=make_password('0000'))
obj.admin = ins obj.admin = ins
obj.save() obj.save()
# 岗位设置为相关方岗位 # 岗位设置为相关方岗位
UserPost.objects.get_or_create(user=ins, dept=obj.dept, UserPost.objects.get_or_create(user=ins, dept=obj.dept,
defaults={ defaults={
'user': ins, 'user': ins,
'dept': obj.dept, 'dept': obj.dept,
'post': post 'post': post,
'sort': 99
}) })
up = UserPost.objects.filter(user=ins).order_by('sort', 'create_time').first() up = UserPost.objects.filter(user=ins).order_by('sort', 'create_time').first()
if up: if up:

View File

@ -8,7 +8,7 @@ import logging
myLogger = logging.getLogger('log') myLogger = logging.getLogger('log')
def send_sms(phone: str, template_code: str, template_param: dict): def send_sms(phone: str, template_code: int, template_param: dict):
client = AcsClient(settings.XNIU_SMS_KEY, settings.XNIU_SMS_SECRET, 'default') client = AcsClient(settings.XNIU_SMS_KEY, settings.XNIU_SMS_SECRET, 'default')
request = CommonRequest() request = CommonRequest()
# 固定json # 固定json

View File

@ -3,6 +3,7 @@ from apps.hrm.models import Employee
from apps.hrm.services import HrmService from apps.hrm.services import HrmService
from apps.utils.sms import send_sms from apps.utils.sms import send_sms
from apps.vm.models import Visit, Visitor, Vpeople from apps.vm.models import Visit, Visitor, Vpeople
from rest_framework.exceptions import ParseError
def sync_to_visitor(ep: Employee): def sync_to_visitor(ep: Employee):
@ -15,6 +16,8 @@ def sync_to_visitor(ep: Employee):
def bind_visit(ticket, transition, new_ticket_data: dict): def bind_visit(ticket, transition, new_ticket_data: dict):
visit = Visit.objects.get(id=new_ticket_data['visit']) visit = Visit.objects.get(id=new_ticket_data['visit'])
if visit.level == 10 and (not Vpeople.objects.filter(visit=visit).exists()):
raise ParseError('请至少选择一位访客')
visit.ticket = ticket visit.ticket = ticket
visit.state = Visit.V_AUDIT visit.state = Visit.V_AUDIT
visit.save() visit.save()
@ -66,7 +69,7 @@ def visit_audit_end(ticket):
visit.state = Visit.V_ENTER visit.state = Visit.V_ENTER
visit.save() visit.save()
# 发送通知? # 发送通知?
phone = visit.create_by.phone phone = visit.create_by.phone if visit.create_by else None
if phone: if phone:
send_sms(phone=phone, template_code=1004, template_param={'name': '访客项目'}) send_sms(phone=phone, template_code=1004, template_param={'name': '访客项目'})
@ -100,6 +103,6 @@ def visit_driver_end(ticket):
visit.state = Visit.V_ENTER visit.state = Visit.V_ENTER
visit.save() visit.save()
# 发送通知? # 发送通知?
phone = visit.create_by.phone phone = visit.create_by.phone if visit.create_by else None
if phone: if phone:
send_sms(phone=phone, template_code=1004, template_param={'name': '拉送货入厂'}) send_sms(phone=phone, template_code=1004, template_param={'name': '拉送货入厂'})