From 1b09d39b8ff25fa5366f7c7b66f24c7e37e930fb Mon Sep 17 00:00:00 2001 From: caoqianming Date: Fri, 18 Feb 2022 13:01:57 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=A1=AB=E5=86=99=E7=A6=BB=E5=B2=97?= =?UTF-8?q?=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hb_server/apps/hrm/serializers.py | 4 ++++ hb_server/apps/hrm/views.py | 38 +++++++++++++++++++++++++++++-- 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/hb_server/apps/hrm/serializers.py b/hb_server/apps/hrm/serializers.py index 9371ff4..1aaf018 100644 --- a/hb_server/apps/hrm/serializers.py +++ b/hb_server/apps/hrm/serializers.py @@ -14,6 +14,10 @@ class EmployeeSerializer(DynamicFieldsSerializerMixin, ModelSerializer): model = Employee exclude = ['face_data'] +class EmployeeNotWorkRemarkSerializer(ModelSerializer): + class Meta: + model = Employee + fields = ['not_work_remark'] class FaceLoginSerializer(serializers.Serializer): base64 = serializers.CharField() diff --git a/hb_server/apps/hrm/views.py b/hb_server/apps/hrm/views.py index c19c308..d877923 100644 --- a/hb_server/apps/hrm/views.py +++ b/hb_server/apps/hrm/views.py @@ -1,4 +1,5 @@ from functools import update_wrapper +from venv import create from django.shortcuts import render from django.utils import timezone from rest_framework.response import Response @@ -8,8 +9,8 @@ from apps.hrm.filters import ClockRecordFilterSet, EmployeeFilterSet from apps.hrm.services import HRMService from apps.hrm.tasks import update_all_user_facedata_cache from apps.system.mixins import CreateUpdateModelAMixin, OptimizationMixin -from apps.hrm.models import ClockRecord, Employee -from apps.hrm.serializers import ClockRecordListSerializer, EmployeeSerializer, FaceClockCreateSerializer, FaceLoginSerializer +from apps.hrm.models import ClockRecord, Employee, NotWorkRemark +from apps.hrm.serializers import ClockRecordListSerializer, EmployeeNotWorkRemarkSerializer, EmployeeSerializer, FaceClockCreateSerializer, FaceLoginSerializer @@ -53,6 +54,39 @@ class EmployeeViewSet(CreateUpdateModelAMixin, OptimizationMixin, UpdateModelMix serializer.save(update_by=request.user) return Response() + @action(methods=['post'], detail=True, perms_map={'post': 'employee_notworkremark'} + , serializer_class=EmployeeNotWorkRemarkSerializer) + def not_work_remark(self, request, pk=None): + """ + 填写离岗说明 + """ + obj = self.get_object() + if not obj.is_atwork: + remark = request.data.get('not_work_remark', '') + obj.not_work_remark = remark + obj.save() + now_local = timezone.localtime() + instance, created = NotWorkRemark.objects.get_or_create( + year = now_local.year, + month = now_local.month, + day = now_local.day, + user = obj.user, + defaults={ + "year":now_local.year, + "month":now_local.month, + "day":now_local.day, + "user":obj.user, + "remark":remark, + "create_by":request.user, + } + ) + if not created: + instance.remark = remark + instance.update_by = request.user + instance.save() + return Response() + return Response('无需填写离岗说明', status=status.HTTP_400_BAD_REQUEST) + class ClockRecordViewSet(CreateModelMixin, ListModelMixin, GenericViewSet): """ From fcad2a0675ee772f3e5119d0cc6e7bb12137cae5 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Fri, 18 Feb 2022 13:20:54 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E5=A4=8D=E5=88=B6=E8=A1=A8ID=E9=9D=9E?= =?UTF-8?q?=E5=BF=85=E5=A1=AB=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hb_server/apps/mtm/serializers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hb_server/apps/mtm/serializers.py b/hb_server/apps/mtm/serializers.py index ae243d9..7d97aa4 100644 --- a/hb_server/apps/mtm/serializers.py +++ b/hb_server/apps/mtm/serializers.py @@ -187,7 +187,7 @@ class RecordFormSerializer(serializers.ModelSerializer): class RecordFormCreateSerializer(serializers.ModelSerializer): form = serializers.PrimaryKeyRelatedField( - queryset=RecordForm.objects.all(), label="复制表ID") + queryset=RecordForm.objects.all(), label="复制表ID", required=False) class Meta: model = RecordForm fields = ['name', 'type', 'step', 'material', 'number', 'enabled', 'form'] From 82ada27c91f5f7dbe1b681a0c155e1a5fedb4219 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Fri, 18 Feb 2022 14:09:08 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E5=A4=8D=E5=88=B6=E6=A3=80=E6=9F=A5?= =?UTF-8?q?=E8=A1=A8bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hb_server/apps/hrm/views.py | 2 ++ hb_server/apps/mtm/views.py | 33 +++++++++++++++++---------------- 2 files changed, 19 insertions(+), 16 deletions(-) diff --git a/hb_server/apps/hrm/views.py b/hb_server/apps/hrm/views.py index d877923..8313ad4 100644 --- a/hb_server/apps/hrm/views.py +++ b/hb_server/apps/hrm/views.py @@ -60,6 +60,8 @@ class EmployeeViewSet(CreateUpdateModelAMixin, OptimizationMixin, UpdateModelMix """ 填写离岗说明 """ + serializer = self.get_serializer(data=request.data) + serializer.is_valid(raise_exception=True) obj = self.get_object() if not obj.is_atwork: remark = request.data.get('not_work_remark', '') diff --git a/hb_server/apps/mtm/views.py b/hb_server/apps/mtm/views.py index 7aaf203..5a89d8b 100644 --- a/hb_server/apps/mtm/views.py +++ b/hb_server/apps/mtm/views.py @@ -185,6 +185,23 @@ class RecordFormViewSet(OptimizationMixin, CreateUpdateModelAMixin, ModelViewSet instance = self.get_object() serializer = self.serializer_class(instance=RecordFormField.objects.filter(form=instance, is_deleted=False), many=True) return Response(serializer.data) + + @transaction.atomic + def create(self, request, *args, **kwargs): + serializer = self.get_serializer(data=request.data) + serializer.is_valid(raise_exception=True) + vdata = serializer.validated_data + form = vdata.pop('form', None) + instance = RecordForm(**vdata) + instance.create_by = request.user + instance.save() + if form: + for i in RecordFormField.objects.filter(form=form, is_deleted=False): + i.pk = None + i.form = instance + i.parent = None + i.save() + return Response() @@ -208,22 +225,6 @@ class RecordFormFieldViewSet(OptimizationMixin, CreateUpdateModelAMixin, ModelVi return RecordFormFieldUpdateSerializer return RecordFormFieldSerializer - @transaction.atomic - def create(self, request, *args, **kwargs): - serializer = self.get_serializer(data=request.data) - serializer.is_valid(raise_exception=True) - vdata = serializer.validated_data - form = vdata.pop('form', None) - instance = RecordForm(**vdata) - instance.save(create_by=request.user) - if form: - for i in RecordFormField.objects.filter(form=form, is_deleted=False): - i.pk = None - i.form = instance - i.parent = None - i.save() - return super().create(request, *args, **kwargs) - class TechDocViewSet(OptimizationMixin, CreateUpdateModelAMixin, ModelViewSet): """ 技术文件增删改查