diff --git a/apps/hrm/views.py b/apps/hrm/views.py index 358f8c61..91367442 100755 --- a/apps/hrm/views.py +++ b/apps/hrm/views.py @@ -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, '打卡记录')}) diff --git a/apps/rpm/serializers.py b/apps/rpm/serializers.py index da2251c0..31021732 100644 --- a/apps/rpm/serializers.py +++ b/apps/rpm/serializers.py @@ -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) diff --git a/apps/rpm/services.py b/apps/rpm/services.py index 54ee5156..a086a474 100644 --- a/apps/rpm/services.py +++ b/apps/rpm/services.py @@ -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: diff --git a/apps/rpm/views.py b/apps/rpm/views.py index 3b05e084..329155e0 100644 --- a/apps/rpm/views.py +++ b/apps/rpm/views.py @@ -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() diff --git a/apps/utils/decorators.py b/apps/utils/decorators.py index 49ab4e1f..4a01ab13 100644 --- a/apps/utils/decorators.py +++ b/apps/utils/decorators.py @@ -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: