feature:<master> feat:后端新增质量活动功能

This commit is contained in:
zty 2024-03-28 15:19:45 +08:00
parent a216e17904
commit c482c15425
8 changed files with 148 additions and 19 deletions

View File

@ -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='参与角色'),
),
]

View File

@ -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='组织单位'),
),
]

View File

@ -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='活动参与单位数量'),
),
]

View File

@ -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='活动收益'),
),
]

View File

@ -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',
),
]

View File

@ -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='评审领域')

View File

@ -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='文件地址')

View File

@ -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,