Merge branch 'v2'
This commit is contained in:
commit
0766cba363
|
@ -249,9 +249,9 @@ class ClockRecordViewSet(ListModelMixin, CustomGenericViewSet):
|
|||
i['employee_']['id_number'],
|
||||
i['employee_'].get('belong_dept_name', ''),
|
||||
i['detail'].get('deviceName', None),
|
||||
i['create_time']],
|
||||
i['create_time'],
|
||||
crOptions[i['type']],
|
||||
crEoptions[i['exception_type']]
|
||||
crEoptions[i['exception_type']] if i['exception_type'] else '']
|
||||
)
|
||||
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.rpm.services import rpj_member_come, rpj_certificate_in
|
||||
from apps.rpm.models import RpjLog
|
||||
from django.conf import settings
|
||||
|
||||
|
||||
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():
|
||||
raise ValidationError('该成员已存在')
|
||||
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)
|
||||
|
||||
|
||||
|
@ -157,7 +159,8 @@ class RemployeeUpdateSerializer(CustomModelSerializer):
|
|||
|
||||
def update(self, instance, validated_data):
|
||||
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)
|
||||
|
||||
class RemployeeSimpleSerializer(CustomModelSerializer):
|
||||
|
@ -219,7 +222,7 @@ class RpjmemberCreateSerializer(CustomModelSerializer):
|
|||
def create(self, validated_data):
|
||||
rpj = validated_data['rpj']
|
||||
if rpj.state in [Rpj.RPJ_DONE, Rpj.RPJ_CLOSE]:
|
||||
raise ParseError('成员该项目状态不可新增')
|
||||
raise ParseError('该项目状态成员不可新增')
|
||||
rcertificates = validated_data.pop('rcertificates')
|
||||
remployee = validated_data['remployee']
|
||||
if remployee.phone and remployee.photo and remployee.id_number:
|
||||
|
@ -265,7 +268,7 @@ class RpjmemberUpdateSerializer(CustomModelSerializer):
|
|||
def update(self, instance, validated_data):
|
||||
rpj = validated_data['rpj']
|
||||
if rpj.state in [Rpj.RPJ_DONE, Rpj.RPJ_CLOSE]:
|
||||
raise ParseError('成员该项目状态不可修改')
|
||||
raise ParseError('该项目状态成员不可修改')
|
||||
rcertificates = validated_data.pop('rcertificates')
|
||||
with transaction.atomic():
|
||||
ins = super().update(instance, validated_data)
|
||||
|
|
|
@ -112,7 +112,9 @@ def rpj_member_come(i: Rpjmember):
|
|||
# 给相关方人员创建账户
|
||||
user_e = ep.user
|
||||
if user_e: # 如果该人员有账户
|
||||
pass
|
||||
user_e.is_active = True
|
||||
user_e.is_deleted = False
|
||||
user_e.save()
|
||||
else:
|
||||
user_e = User.objects.get_queryset(all=True).filter(phone=rep.phone).first() # 看看有没有存在的账户
|
||||
if user_e:
|
||||
|
|
|
@ -205,7 +205,7 @@ class RpjViewSet(CustomModelViewSet):
|
|||
if obj.state in [Rpj.RPJ_ENTER, Rpj.RPJ_DONE]:
|
||||
raise ParseError('该项目不可删除')
|
||||
elif obj.state == Rpj.RPJ_WORKING and Remployee.objects.filter(rpj=obj).exists():
|
||||
raise ParseError('该项目人员在厂不可删除')
|
||||
raise ParseError('该项目下有成员在厂不可删除')
|
||||
if obj.ticket:
|
||||
obj.ticket.delete()
|
||||
obj.delete()
|
||||
|
@ -224,13 +224,11 @@ class RpjmemberViewSet(CustomModelViewSet):
|
|||
|
||||
def destroy(self, request, *args, **kwargs):
|
||||
obj = self.get_object()
|
||||
if obj.rpj.state in [Rpj.RPJ_DONE, Rpj.RPJ_CLOSE]:
|
||||
if obj.rpj.state != Rpj.RPJ_CREATE:
|
||||
raise ParseError('成员在该状态不可删除')
|
||||
else:
|
||||
pass
|
||||
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
|
||||
def leave(self, request, pk=None):
|
||||
"""提前离厂
|
||||
|
@ -238,6 +236,13 @@ class RpjmemberViewSet(CustomModelViewSet):
|
|||
提前离厂
|
||||
"""
|
||||
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)
|
||||
RpjLog.objects.create(rpj=obj.rpj, operation='member_leave', remployee=obj.remployee, create_by=request.user, reason=request.data.get('reason', ''))
|
||||
return Response()
|
||||
|
|
|
@ -32,7 +32,7 @@ def idempotent(seconds=4):
|
|||
def wrapper(*args, **kwargs):
|
||||
rdata = args[1].data
|
||||
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_v_e = cache.get(hash_k, None)
|
||||
if hash_v_e is None:
|
||||
|
|
Loading…
Reference in New Issue