diff --git a/apps/rpm/services.py b/apps/rpm/services.py index a5e38684..eb5c9037 100644 --- a/apps/rpm/services.py +++ b/apps/rpm/services.py @@ -12,11 +12,13 @@ from dateutil import tz from django.utils import timezone from datetime import datetime, timedelta from django.db.models import Max, Min +from apps.utils.constants import DEFAULT_PWD def sync_to_rep(ep: Employee): # 个人信息完善时同步到rep表 - Remployee.objects.filter(employee=ep).update(name=ep.name, phone=ep.phone, id_number=ep.id_number, photo=ep.photo) + Remployee.objects.filter(employee=ep).update( + name=ep.name, phone=ep.phone, id_number=ep.id_number, photo=ep.photo) if ep.user: rps = Rparty.objects.filter(admin=ep.user) # 如果是管理员账户 @@ -33,12 +35,13 @@ 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 rpj.ticket and rpj.ticket.id!=ticket.id: + if rpj.ticket and rpj.ticket.id != ticket.id: raise ParseError('重复创建工单') if not Rpjmember.objects.filter(rpj=rpj).exists(): raise ParseError('请至少选择一位入厂人员') ticket_data = ticket.ticket_data - ticket_data.update({'belong_dept': rpj.belong_dept.id if rpj.belong_dept else '0'}) + ticket_data.update( + {'belong_dept': rpj.belong_dept.id if rpj.belong_dept else '0'}) ticket.ticket_data = ticket_data ticket.belong_dept = rpj.belong_dept ticket.create_by = rpj.create_by @@ -47,7 +50,7 @@ def bind_rpj(ticket: Ticket, transition: Transition, new_ticket_data: dict): rpj.ticket = ticket rpj.state = Rpj.RPJ_AUDIT rpj.save() - + def rpj_member_leave(i: Rpjmember): """人员离开项目 @@ -57,9 +60,11 @@ def rpj_member_leave(i: Rpjmember): ep = rep.employee # 查找本人除此之外还在的项目 - rpj_qs = Rpj.objects.filter(remployees=rep, state__in = [Rpj.RPJ_WORKING, Rpj.RPJ_ENTER]).exclude(id=rpj.id) + rpj_qs = Rpj.objects.filter(remployees=rep, state__in=[ + Rpj.RPJ_WORKING, Rpj.RPJ_ENTER]).exclude(id=rpj.id) if rpj_qs.exists(): - leave_time__max = rpj_qs.aggregate(Max('leave_time'))['leave_time__max'] + leave_time__max = rpj_qs.aggregate(Max('leave_time'))[ + 'leave_time__max'] come_time_min = rpj_qs.aggregate(Min('come_time'))['come_time__min'] rpj_ = rpj_qs.order_by('-create_time').first() rep.rpj = rpj_ # 更新当前入厂项目 @@ -72,16 +77,19 @@ def rpj_member_leave(i: Rpjmember): ep.user.belong_dept = rpj_dept ep.user.save() # 同步至大华人员库并下发人脸 - HrmService.sync_dahua_employee(ep, ep.photo, come_time_min, leave_time__max) + HrmService.sync_dahua_employee( + ep, ep.photo, come_time_min, leave_time__max) else: if ep: ep.job_state = Employee.JOB_OFF ep.save() - HrmService.sync_dahua_employee(ep, ep.photo, rpj.come_time, timezone.now() + timedelta(hours=8)) + HrmService.sync_dahua_employee( + ep, ep.photo, rpj.come_time, timezone.now() + timedelta(hours=8)) if ep.user: ep.user.is_deleted = True ep.user.save() + def rpj_member_come(i: Rpjmember): """人员入厂 """ @@ -91,8 +99,10 @@ def rpj_member_come(i: Rpjmember): rpj_dept = rpj.rparty.dept post = Post.objects.get(code='remployee') # 尝试找到人员 - ep = Employee.objects.get_queryset(all=True).filter(id_number=rep.id_number).first() - ep2 = Employee.objects.get_queryset(all=True).filter(phone=rep.phone).first() + ep = Employee.objects.get_queryset(all=True).filter( + id_number=rep.id_number).first() + ep2 = Employee.objects.get_queryset( + all=True).filter(phone=rep.phone).first() if ep: pass elif ep2: @@ -100,7 +110,7 @@ def rpj_member_come(i: Rpjmember): else: ep = Employee() ep.id_number = rep.id_number - + ep.name = rep.name ep.id_number = rep.id_number ep.gender = get_info_from_id(rep.id_number).get('gender', '男') @@ -120,13 +130,14 @@ def rpj_member_come(i: Rpjmember): user_e.is_deleted = False user_e.save() else: - user_e = User.objects.get_queryset(all=True).filter(phone=rep.phone).first() # 看看有没有存在的账户 + user_e = User.objects.get_queryset(all=True).filter( + phone=rep.phone).first() # 看看有没有存在的账户 if user_e: user_e.is_deleted = False else: user_e = User() user_e.username = 'RE_' + ranstr(6) - user_e.password = make_password('0000') + user_e.password = make_password(DEFAULT_PWD) user_e.name = rep.name user_e.phone = rep.phone user_e.type = 'remployee' @@ -135,18 +146,18 @@ def rpj_member_come(i: Rpjmember): user_e.save() # 账号划给部门 UserPost.objects.get_or_create(user=user_e, dept=rpj_dept, - defaults={ - 'user': user_e, - 'dept': rpj_dept, - 'post': post - }) + defaults={ + 'user': user_e, + 'dept': rpj_dept, + 'post': post + }) ep.user = user_e ep.save() # 回写 rep.employee = ep rep.rpj = rpj # 更新当前入厂项目 rep.save() - + # come_time = rpj.come_time # leave_time = rpj.leave_time # dh_face_card_start = ep.third_info.get('dh_face_card_start', None) @@ -159,12 +170,14 @@ def rpj_member_come(i: Rpjmember): # dh_face_card_end = datetime.strptime(dh_face_card_end, "%Y-%m-%d %H:%M:%S").replace(tzinfo=tzinfo) # if dh_face_card_end > leave_time: # leave_time = dh_face_card_end - rpj_qs = Rpj.objects.filter(remployees=rep, state__in = [Rpj.RPJ_WORKING, Rpj.RPJ_ENTER])|Rpj.objects.filter(id=rpj.id) + rpj_qs = Rpj.objects.filter(remployees=rep, state__in=[ + Rpj.RPJ_WORKING, Rpj.RPJ_ENTER]) | Rpj.objects.filter(id=rpj.id) leave_time__max = rpj_qs.aggregate(Max('leave_time'))['leave_time__max'] come_time__min = rpj_qs.aggregate(Min('come_time'))['come_time__min'] # 同步至大华人员库并下发人脸 - HrmService.sync_dahua_employee(ep, old_photo, come_time__min, leave_time__max) - + HrmService.sync_dahua_employee( + ep, old_photo, come_time__min, leave_time__max) + def rpj_certificate_in(rpjm: Rpjmember): for i in Rpjcertificate.objects.filter(rpj_member=rpjm): @@ -185,6 +198,7 @@ def rpj_certificate_in(rpjm: Rpjmember): ct.file = i.file ct.save() + def rpj_audit_end(ticket): rpj = Rpj.objects.get(ticket=ticket) # 更新入厂项目人员库 @@ -208,7 +222,8 @@ def rpj_audit_end(ticket): ct.save() # 更新相关方资料库后续可从资料库里选择 for i in Rpjfile.objects.filter(rpj=rpj): - rf = Rfile.objects.filter(file_cate=i.file_cate, rparty=i.rpj.rparty).first() + rf = Rfile.objects.filter( + file_cate=i.file_cate, rparty=i.rpj.rparty).first() if rf: pass else: @@ -224,4 +239,5 @@ def rpj_audit_end(ticket): # 发送通知? phone = rpj.create_by.phone if rpj.create_by else None if phone: - send_sms(phone=phone, template_code=1004, template_param={'name': '相关方项目'}) + send_sms(phone=phone, template_code=1004, + template_param={'name': '相关方项目'}) diff --git a/apps/rpm/views.py b/apps/rpm/views.py index ac45c6f1..6deef2e5 100644 --- a/apps/rpm/views.py +++ b/apps/rpm/views.py @@ -18,6 +18,7 @@ from django.contrib.auth.hashers import make_password from django.db import transaction from rest_framework.exceptions import ParseError from django.db.models import Q +from apps.utils.constants import DEFAULT_PWD # Create your views here. @@ -69,7 +70,7 @@ class RpartyViewSet(CustomModelViewSet): serializer = UserCreateSerializer(data=request.data) serializer.is_valid(raise_exception=True) ins = serializer.save( - type='remployee', password=make_password('0000')) + type='remployee', password=make_password(DEFAULT_PWD)) obj.admin = ins obj.save() # 岗位设置为相关方岗位 diff --git a/apps/vm/views.py b/apps/vm/views.py index ab399d80..6460163a 100644 --- a/apps/vm/views.py +++ b/apps/vm/views.py @@ -16,6 +16,7 @@ from rest_framework.mixins import ListModelMixin, RetrieveModelMixin, CreateMode from django.contrib.auth.hashers import make_password from django.db import transaction from rest_framework.serializers import Serializer +from apps.utils.constants import DEFAULT_PWD from apps.vm.services import sync_to_visitor, visit_driver_end # Create your views here. @@ -30,7 +31,7 @@ class VisitViewSet(CustomModelViewSet): retrieve_serializer_class = VisitDetailSerializer filterset_fields = ['state', 'create_by', 'purpose'] select_related_fields = ['ticket', 'receptionist', - 'ticket__workflow', 'ticket__state'] + 'ticket__workflow', 'ticket__state'] def get_queryset(self): user = self.request.user @@ -102,7 +103,8 @@ class VisitorViewSet(CustomModelViewSet): check_phone_code(phone, code) # 查询是否已注册 user = User.objects.filter(phone=phone).first() - ep = Employee.objects.get_queryset(all=True).filter(phone=phone, user__isnull=False).first() + ep = Employee.objects.get_queryset(all=True).filter( + phone=phone, user__isnull=False).first() if user or ep: raise ParseError('该手机号已注册,请直接登录') # 访客/司机账户创建 @@ -113,11 +115,12 @@ class VisitorViewSet(CustomModelViewSet): user.name = name user.username = 'V_' + ranstr(10) user.phone = phone - user.password = make_password('0000') + user.password = make_password(DEFAULT_PWD) user.wx_openid = vdata.get('wx_openid', None) user.wxmp_openid = vdata.get('wxmp_openid', None) user.save() - ep2 = Employee.objects.get_queryset(all=True).filter(phone=phone, user__isnull=True).first() + ep2 = Employee.objects.get_queryset(all=True).filter( + phone=phone, user__isnull=True).first() if ep2: ep2.user = user ep2.is_deleted = False