rpm分配账号可选已有的/至少选择一位访客/成员
This commit is contained in:
parent
99f84f48cd
commit
90a4e46cc8
|
@ -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})
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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': '相关方项目'})
|
||||||
|
|
|
@ -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:
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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': '拉送货入厂'})
|
||||||
|
|
Loading…
Reference in New Issue