From c482c15425d1b06af48f213f27ef295649484ff4 Mon Sep 17 00:00:00 2001 From: zty Date: Thu, 28 Mar 2024 15:19:45 +0800 Subject: [PATCH] =?UTF-8?q?feature:=20feat:=E5=90=8E=E7=AB=AF?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E8=B4=A8=E9=87=8F=E6=B4=BB=E5=8A=A8=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../migrations/0006_auto_20240328_1421.py | 27 ++++++++++++++++++ .../0007_qualityactivities_department.py | 20 +++++++++++++ .../migrations/0008_auto_20240328_1439.py | 28 +++++++++++++++++++ .../0009_alter_qualityactivities_earnings.py | 18 ++++++++++++ ...me_time_qualityactivities_activate_time.py | 18 ++++++++++++ server/apps/information/models.py | 21 +++++++------- server/apps/information/serializers.py | 7 ++--- server/apps/information/views.py | 28 +++++++++++++++---- 8 files changed, 148 insertions(+), 19 deletions(-) create mode 100644 server/apps/information/migrations/0006_auto_20240328_1421.py create mode 100644 server/apps/information/migrations/0007_qualityactivities_department.py create mode 100644 server/apps/information/migrations/0008_auto_20240328_1439.py create mode 100644 server/apps/information/migrations/0009_alter_qualityactivities_earnings.py create mode 100644 server/apps/information/migrations/0010_rename_time_qualityactivities_activate_time.py diff --git a/server/apps/information/migrations/0006_auto_20240328_1421.py b/server/apps/information/migrations/0006_auto_20240328_1421.py new file mode 100644 index 0000000..eb030d7 --- /dev/null +++ b/server/apps/information/migrations/0006_auto_20240328_1421.py @@ -0,0 +1,27 @@ +# Generated by Django 3.2.12 on 2024-03-28 06:21 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('information', '0005_qualitycommendation_department'), + ] + + operations = [ + migrations.RemoveField( + model_name='externalauditors', + name='review_type', + ), + migrations.AddField( + model_name='externalauditors', + name='review_types', + field=models.PositiveSmallIntegerField(choices=[(0, 'CNAS'), (1, 'CMA'), (2, 'DICA')], default=0, max_length=20, verbose_name='评审类型'), + ), + migrations.AlterField( + model_name='qualityactivities', + name='roles', + field=models.PositiveSmallIntegerField(choices=[(0, '组织方'), (1, '活动方')], max_length=20, verbose_name='参与角色'), + ), + ] diff --git a/server/apps/information/migrations/0007_qualityactivities_department.py b/server/apps/information/migrations/0007_qualityactivities_department.py new file mode 100644 index 0000000..fa52f3d --- /dev/null +++ b/server/apps/information/migrations/0007_qualityactivities_department.py @@ -0,0 +1,20 @@ +# Generated by Django 3.2.12 on 2024-03-28 06:24 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('system', '0023_alter_user_first_name'), + ('information', '0006_auto_20240328_1421'), + ] + + operations = [ + migrations.AddField( + model_name='qualityactivities', + name='department', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='system.organization', verbose_name='组织单位'), + ), + ] diff --git a/server/apps/information/migrations/0008_auto_20240328_1439.py b/server/apps/information/migrations/0008_auto_20240328_1439.py new file mode 100644 index 0000000..b5829d8 --- /dev/null +++ b/server/apps/information/migrations/0008_auto_20240328_1439.py @@ -0,0 +1,28 @@ +# Generated by Django 3.2.12 on 2024-03-28 06:39 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('information', '0007_qualityactivities_department'), + ] + + operations = [ + migrations.AlterField( + model_name='qualityactivities', + name='earnings', + field=models.IntegerField(null=True, verbose_name='活动收益'), + ), + migrations.AlterField( + model_name='qualityactivities', + name='function', + field=models.CharField(max_length=100, null=True, verbose_name='活动中发挥的作用'), + ), + migrations.AlterField( + model_name='qualityactivities', + name='participations', + field=models.IntegerField(blank=True, null=True, verbose_name='活动参与单位数量'), + ), + ] diff --git a/server/apps/information/migrations/0009_alter_qualityactivities_earnings.py b/server/apps/information/migrations/0009_alter_qualityactivities_earnings.py new file mode 100644 index 0000000..2308a9c --- /dev/null +++ b/server/apps/information/migrations/0009_alter_qualityactivities_earnings.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.12 on 2024-03-28 06:41 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('information', '0008_auto_20240328_1439'), + ] + + operations = [ + migrations.AlterField( + model_name='qualityactivities', + name='earnings', + field=models.FloatField(null=True, verbose_name='活动收益'), + ), + ] diff --git a/server/apps/information/migrations/0010_rename_time_qualityactivities_activate_time.py b/server/apps/information/migrations/0010_rename_time_qualityactivities_activate_time.py new file mode 100644 index 0000000..bb2c697 --- /dev/null +++ b/server/apps/information/migrations/0010_rename_time_qualityactivities_activate_time.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.12 on 2024-03-28 06:54 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('information', '0009_alter_qualityactivities_earnings'), + ] + + operations = [ + migrations.RenameField( + model_name='qualityactivities', + old_name='time', + new_name='activate_time', + ), + ] diff --git a/server/apps/information/models.py b/server/apps/information/models.py index 1bab567..3ad079a 100644 --- a/server/apps/information/models.py +++ b/server/apps/information/models.py @@ -39,16 +39,17 @@ class QualityCommendation(models.Model): db_table = 'quality_commendation' class QualityActivities(models.Model): - role = (('组织方','组织方'),('活动方','活动方')) + role = ((0,'组织方'),(1,'活动方')) name = models.CharField(max_length=20, unique=True, verbose_name='活动名称') - roles = models.CharField(max_length=20, choices=role, verbose_name='参与角色') + roles = models.PositiveSmallIntegerField(max_length=20, choices=role, verbose_name='参与角色') collaborators = models.CharField(max_length=20, verbose_name='合作方') organizational_units = models.CharField(max_length=20, verbose_name='组织单位') place = models.CharField(max_length=50, verbose_name='活动地点') - time = models.DateField(verbose_name='活动时间', null=True) - participations = models.IntegerField(verbose_name='活动参与单位数量') - function = models.CharField(max_length=100, verbose_name='活动中发挥的作用') - earnings = models.IntegerField(verbose_name='活动收益') + activate_time = models.DateField(verbose_name='活动时间', null=True) + participations = models.IntegerField(verbose_name='活动参与单位数量', null=True, blank=True) + function = models.CharField(max_length=100, verbose_name='活动中发挥的作用', null=True) + earnings = models.FloatField(verbose_name='活动收益', null=True) + department = models.ForeignKey(Organization, on_delete=models.CASCADE, null=True, verbose_name='组织单位') class Meta: verbose_name = '质量活动' @@ -73,12 +74,12 @@ class Contact(models.Model): db_table = 'contact' class ExternalAuditors(models.Model): - review_type = ( ('CNAS', 'CNAS'), - ('CMA', 'CMA'), - ('DICA', 'DICA')) + review_type = ( (0, 'CNAS'), + (1, 'CMA'), + (2, 'DICA')) name_company = models.CharField(max_length=20, unique=True, verbose_name='公司名称') name = models.CharField(max_length=20, verbose_name='姓名') - review_type = models.CharField(max_length=20, verbose_name='评审类型') + review_types = models.PositiveSmallIntegerField(max_length=20, choices=review_type,verbose_name='评审类型', default=0) certificate_expiration = models.DateField(verbose_name='证书有效期') contact = models.CharField(max_length=20, verbose_name='联系方式') judging_areas = models.CharField(max_length=20, verbose_name='评审领域') diff --git a/server/apps/information/serializers.py b/server/apps/information/serializers.py index 6ceffec..68b72f7 100644 --- a/server/apps/information/serializers.py +++ b/server/apps/information/serializers.py @@ -19,8 +19,8 @@ class QualityActivitiesSerializer(serializers.ModelSerializer): class Meta: model = QualityActivities - fields = '__all __' - + fields = '__all__' + read_only_fields = ['id'] class ContactSerializer(serializers.ModelSerializer): @@ -34,5 +34,4 @@ class ExternalAuditorsSerializer(serializers.ModelSerializer): model = ExternalAuditors fields = '__all__' -class ImpSerializer(serializers.Serializer): - path = serializers.FileField(label='文件地址') + diff --git a/server/apps/information/views.py b/server/apps/information/views.py index 7581969..761ee5f 100644 --- a/server/apps/information/views.py +++ b/server/apps/information/views.py @@ -152,14 +152,32 @@ class QualityCommendationViewSet(ImpMixin, ModelViewSet): serializer = QualityCommendationSerializer(query, many=True) return Response(serializer.data) -class QualityActivitiesViewSet(mixins.CreateModelMixin, - mixins.ListModelMixin, - mixins.DestroyModelMixin, - mixins.UpdateModelMixin, - viewsets.GenericViewSet): + +# 质量活动 +class QualityActivitiesViewSet(ModelViewSet): queryset = QualityActivities.objects.all() serializer_class = QualityActivitiesSerializer + def create(self, request): + if Organization.objects.filter(name=self.request.data['organizational_units']).exists(): + department_id = Organization.objects.filter(name=self.request.data['organizational_units']).first().id + self.request.data['department'] = department_id + print("-----------,",self.request.data) + serializer = self.get_serializer(data=self.request.data) + if serializer.is_valid(raise_exception=True): + serializer.save() + return Response(serializer.data, status = status.HTTP_201_CREATED) + else: + raise ParseError("部门不存在") + + # 查询子以及已经本公司的质量活动 + @action(detail=False, methods=['get']) + def activate_info(self, *args, **kwargs): + father_dept = self.request.user.dept + child_dept = get_child_queryset2(father_dept) + query = QualityActivities.objects.filter(department__in=child_dept) + serializer = QualityActivitiesSerializer(query, many=True) + return Response(serializer.data) class ContactViewSet(mixins.CreateModelMixin, mixins.ListModelMixin,