Merge branch 'v2'
This commit is contained in:
commit
0766cba363
|
@ -249,9 +249,9 @@ class ClockRecordViewSet(ListModelMixin, CustomGenericViewSet):
|
||||||
i['employee_']['id_number'],
|
i['employee_']['id_number'],
|
||||||
i['employee_'].get('belong_dept_name', ''),
|
i['employee_'].get('belong_dept_name', ''),
|
||||||
i['detail'].get('deviceName', None),
|
i['detail'].get('deviceName', None),
|
||||||
i['create_time']],
|
i['create_time'],
|
||||||
crOptions[i['type']],
|
crOptions[i['type']],
|
||||||
crEoptions[i['exception_type']]
|
crEoptions[i['exception_type']] if i['exception_type'] else '']
|
||||||
)
|
)
|
||||||
return Response({'path': export_excel(field_data, data, '打卡记录')})
|
return Response({'path': export_excel(field_data, data, '打卡记录')})
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,7 @@ from apps.utils.tools import check_id_number_e, check_phone_e
|
||||||
from apps.wf.serializers import TicketSimpleSerializer
|
from apps.wf.serializers import TicketSimpleSerializer
|
||||||
from apps.rpm.services import rpj_member_come, rpj_certificate_in
|
from apps.rpm.services import rpj_member_come, rpj_certificate_in
|
||||||
from apps.rpm.models import RpjLog
|
from apps.rpm.models import RpjLog
|
||||||
|
from django.conf import settings
|
||||||
|
|
||||||
|
|
||||||
class RpartyCreateUpdateSerializer(CustomModelSerializer):
|
class RpartyCreateUpdateSerializer(CustomModelSerializer):
|
||||||
|
@ -145,7 +146,8 @@ class RemployeeCreateSerializer(CustomModelSerializer):
|
||||||
if Remployee.objects.filter(id_number=validated_data['id_number'], rparty=validated_data['rparty']).exists():
|
if Remployee.objects.filter(id_number=validated_data['id_number'], rparty=validated_data['rparty']).exists():
|
||||||
raise ValidationError('该成员已存在')
|
raise ValidationError('该成员已存在')
|
||||||
with transaction.atomic():
|
with transaction.atomic():
|
||||||
dhClient.request(**dhapis['person_img_upload'], file_path_rela=validated_data['photo'])
|
if settings.DAHUA_ENABLED:
|
||||||
|
dhClient.request(**dhapis['person_img_upload'], file_path_rela=validated_data['photo'])
|
||||||
return super().create(validated_data)
|
return super().create(validated_data)
|
||||||
|
|
||||||
|
|
||||||
|
@ -157,7 +159,8 @@ class RemployeeUpdateSerializer(CustomModelSerializer):
|
||||||
|
|
||||||
def update(self, instance, validated_data):
|
def update(self, instance, validated_data):
|
||||||
with transaction.atomic():
|
with transaction.atomic():
|
||||||
dhClient.request(**dhapis['person_img_upload'], file_path_rela=validated_data['photo'])
|
if settings.DAHUA_ENABLED:
|
||||||
|
dhClient.request(**dhapis['person_img_upload'], file_path_rela=validated_data['photo'])
|
||||||
return super().update(instance, validated_data)
|
return super().update(instance, validated_data)
|
||||||
|
|
||||||
class RemployeeSimpleSerializer(CustomModelSerializer):
|
class RemployeeSimpleSerializer(CustomModelSerializer):
|
||||||
|
@ -219,7 +222,7 @@ class RpjmemberCreateSerializer(CustomModelSerializer):
|
||||||
def create(self, validated_data):
|
def create(self, validated_data):
|
||||||
rpj = validated_data['rpj']
|
rpj = validated_data['rpj']
|
||||||
if rpj.state in [Rpj.RPJ_DONE, Rpj.RPJ_CLOSE]:
|
if rpj.state in [Rpj.RPJ_DONE, Rpj.RPJ_CLOSE]:
|
||||||
raise ParseError('成员该项目状态不可新增')
|
raise ParseError('该项目状态成员不可新增')
|
||||||
rcertificates = validated_data.pop('rcertificates')
|
rcertificates = validated_data.pop('rcertificates')
|
||||||
remployee = validated_data['remployee']
|
remployee = validated_data['remployee']
|
||||||
if remployee.phone and remployee.photo and remployee.id_number:
|
if remployee.phone and remployee.photo and remployee.id_number:
|
||||||
|
@ -265,7 +268,7 @@ class RpjmemberUpdateSerializer(CustomModelSerializer):
|
||||||
def update(self, instance, validated_data):
|
def update(self, instance, validated_data):
|
||||||
rpj = validated_data['rpj']
|
rpj = validated_data['rpj']
|
||||||
if rpj.state in [Rpj.RPJ_DONE, Rpj.RPJ_CLOSE]:
|
if rpj.state in [Rpj.RPJ_DONE, Rpj.RPJ_CLOSE]:
|
||||||
raise ParseError('成员该项目状态不可修改')
|
raise ParseError('该项目状态成员不可修改')
|
||||||
rcertificates = validated_data.pop('rcertificates')
|
rcertificates = validated_data.pop('rcertificates')
|
||||||
with transaction.atomic():
|
with transaction.atomic():
|
||||||
ins = super().update(instance, validated_data)
|
ins = super().update(instance, validated_data)
|
||||||
|
|
|
@ -112,7 +112,9 @@ def rpj_member_come(i: Rpjmember):
|
||||||
# 给相关方人员创建账户
|
# 给相关方人员创建账户
|
||||||
user_e = ep.user
|
user_e = ep.user
|
||||||
if user_e: # 如果该人员有账户
|
if user_e: # 如果该人员有账户
|
||||||
pass
|
user_e.is_active = True
|
||||||
|
user_e.is_deleted = False
|
||||||
|
user_e.save()
|
||||||
else:
|
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:
|
if user_e:
|
||||||
|
|
|
@ -205,7 +205,7 @@ class RpjViewSet(CustomModelViewSet):
|
||||||
if obj.state in [Rpj.RPJ_ENTER, Rpj.RPJ_DONE]:
|
if obj.state in [Rpj.RPJ_ENTER, Rpj.RPJ_DONE]:
|
||||||
raise ParseError('该项目不可删除')
|
raise ParseError('该项目不可删除')
|
||||||
elif obj.state == Rpj.RPJ_WORKING and Remployee.objects.filter(rpj=obj).exists():
|
elif obj.state == Rpj.RPJ_WORKING and Remployee.objects.filter(rpj=obj).exists():
|
||||||
raise ParseError('该项目人员在厂不可删除')
|
raise ParseError('该项目下有成员在厂不可删除')
|
||||||
if obj.ticket:
|
if obj.ticket:
|
||||||
obj.ticket.delete()
|
obj.ticket.delete()
|
||||||
obj.delete()
|
obj.delete()
|
||||||
|
@ -224,13 +224,11 @@ class RpjmemberViewSet(CustomModelViewSet):
|
||||||
|
|
||||||
def destroy(self, request, *args, **kwargs):
|
def destroy(self, request, *args, **kwargs):
|
||||||
obj = self.get_object()
|
obj = self.get_object()
|
||||||
if obj.rpj.state in [Rpj.RPJ_DONE, Rpj.RPJ_CLOSE]:
|
if obj.rpj.state != Rpj.RPJ_CREATE:
|
||||||
raise ParseError('成员在该状态不可删除')
|
raise ParseError('成员在该状态不可删除')
|
||||||
else:
|
|
||||||
pass
|
|
||||||
return super().destroy(request, *args, **kwargs)
|
return super().destroy(request, *args, **kwargs)
|
||||||
|
|
||||||
@action(methods=['post'], detail=True, perms_map={'post': 'rpj.update'})
|
@action(methods=['put'], detail=True, perms_map={'put': 'rpj.update'})
|
||||||
@transaction.atomic
|
@transaction.atomic
|
||||||
def leave(self, request, pk=None):
|
def leave(self, request, pk=None):
|
||||||
"""提前离厂
|
"""提前离厂
|
||||||
|
@ -238,6 +236,13 @@ class RpjmemberViewSet(CustomModelViewSet):
|
||||||
提前离厂
|
提前离厂
|
||||||
"""
|
"""
|
||||||
obj = self.get_object()
|
obj = self.get_object()
|
||||||
|
rpj = obj.rpj
|
||||||
|
if rpj.state not in [Rpj.RPJ_WORKING, Rpj.RPJ_ENTER]:
|
||||||
|
raise ParseError('该项目状态成员不可离厂')
|
||||||
|
if RpjLog.objects.filter(rpj=rpj, remployee=obj.remployee, operation='member_leave').exists():
|
||||||
|
raise ParseError('该项目成员已做离厂操作')
|
||||||
|
obj.note = '提前离厂'
|
||||||
|
obj.save()
|
||||||
rpj_member_leave(obj)
|
rpj_member_leave(obj)
|
||||||
RpjLog.objects.create(rpj=obj.rpj, operation='member_leave', remployee=obj.remployee, create_by=request.user, reason=request.data.get('reason', ''))
|
RpjLog.objects.create(rpj=obj.rpj, operation='member_leave', remployee=obj.remployee, create_by=request.user, reason=request.data.get('reason', ''))
|
||||||
return Response()
|
return Response()
|
||||||
|
|
|
@ -32,7 +32,7 @@ def idempotent(seconds=4):
|
||||||
def wrapper(*args, **kwargs):
|
def wrapper(*args, **kwargs):
|
||||||
rdata = args[1].data
|
rdata = args[1].data
|
||||||
rdata['request_userid'] = getattr(args[1], 'user').id
|
rdata['request_userid'] = getattr(args[1], 'user').id
|
||||||
print(getattr(args[1], 'user'), rdata)
|
rdata['request_path'] = getattr(args[1], 'path')
|
||||||
hash_k = hash(json.dumps(rdata))
|
hash_k = hash(json.dumps(rdata))
|
||||||
hash_v_e = cache.get(hash_k, None)
|
hash_v_e = cache.get(hash_k, None)
|
||||||
if hash_v_e is None:
|
if hash_v_e is None:
|
||||||
|
|
Loading…
Reference in New Issue