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))
# 发送通知
phone = opl.create_by.phone
phone = opl.create_by.phone if opl.create_by else None
if phone:
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']
class RpartyAssignSerializer(serializers.Serializer):
class RpartyAssignSerializer(serializers.ModelSerializer):
name = serializers.CharField(label="姓名")
phone = serializers.CharField(label="手机号")
username = serializers.CharField(label="账号")
class Meta:
model = Rparty
fields = ['admin', 'name', 'phone', 'username']
class RfileListSerializer(CustomModelSerializer):
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.rpm.models import Remployee, Rfile, Rparty, Rpj, Rpjcertificate, Rpjfile, Rpjmember
from django.contrib.auth.hashers import make_password
from rest_framework.exceptions import ParseError
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):
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.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
rpj.ticket = ticket
rpj.state = Rpj.RPJ_AUDIT
@ -130,6 +133,6 @@ def rpj_audit_end(ticket):
rpj.state = Rpj.RPJ_ENTER
rpj.save()
# 发送通知?
phone = rpj.create_by.phone
phone = rpj.create_by.phone if rpj.create_by else None
if phone:
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.is_valid(raise_exception=True)
vdata = serializer.validated_data
if obj.admin:
ins = obj.admin
if vdata['admin']:
ins = vdata['admin']
elif User.objects.get_queryset(all=True).filter(Q(phone=vdata['phone']) | Q(username=vdata['username'])).exists():
raise ParseError('该账号已存在,请直接选择')
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.is_valid(raise_exception=True)
ins = serializer.save(type='remployee', password=make_password('0000'))
obj.admin = ins
obj.save()
obj.admin = ins
obj.save()
# 岗位设置为相关方岗位
UserPost.objects.get_or_create(user=ins, dept=obj.dept,
defaults={
'user': ins,
'dept': obj.dept,
'post': post
'post': post,
'sort': 99
})
up = UserPost.objects.filter(user=ins).order_by('sort', 'create_time').first()
if up:

View File

@ -8,7 +8,7 @@ import logging
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')
request = CommonRequest()
# 固定json

View File

@ -3,6 +3,7 @@ from apps.hrm.models import Employee
from apps.hrm.services import HrmService
from apps.utils.sms import send_sms
from apps.vm.models import Visit, Visitor, Vpeople
from rest_framework.exceptions import ParseError
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):
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.state = Visit.V_AUDIT
visit.save()
@ -66,7 +69,7 @@ def visit_audit_end(ticket):
visit.state = Visit.V_ENTER
visit.save()
# 发送通知?
phone = visit.create_by.phone
phone = visit.create_by.phone if visit.create_by else None
if phone:
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.save()
# 发送通知?
phone = visit.create_by.phone
phone = visit.create_by.phone if visit.create_by else None
if phone:
send_sms(phone=phone, template_code=1004, template_param={'name': '拉送货入厂'})