feature:<master> feat:后端新增质量活动功能
This commit is contained in:
parent
a216e17904
commit
c482c15425
|
@ -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='参与角色'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -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='组织单位'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -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='活动参与单位数量'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -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='活动收益'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -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',
|
||||||
|
),
|
||||||
|
]
|
|
@ -39,16 +39,17 @@ class QualityCommendation(models.Model):
|
||||||
db_table = 'quality_commendation'
|
db_table = 'quality_commendation'
|
||||||
|
|
||||||
class QualityActivities(models.Model):
|
class QualityActivities(models.Model):
|
||||||
role = (('组织方','组织方'),('活动方','活动方'))
|
role = ((0,'组织方'),(1,'活动方'))
|
||||||
name = models.CharField(max_length=20, unique=True, verbose_name='活动名称')
|
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='合作方')
|
collaborators = models.CharField(max_length=20, verbose_name='合作方')
|
||||||
organizational_units = models.CharField(max_length=20, verbose_name='组织单位')
|
organizational_units = models.CharField(max_length=20, verbose_name='组织单位')
|
||||||
place = models.CharField(max_length=50, verbose_name='活动地点')
|
place = models.CharField(max_length=50, verbose_name='活动地点')
|
||||||
time = models.DateField(verbose_name='活动时间', null=True)
|
activate_time = models.DateField(verbose_name='活动时间', null=True)
|
||||||
participations = models.IntegerField(verbose_name='活动参与单位数量')
|
participations = models.IntegerField(verbose_name='活动参与单位数量', null=True, blank=True)
|
||||||
function = models.CharField(max_length=100, verbose_name='活动中发挥的作用')
|
function = models.CharField(max_length=100, verbose_name='活动中发挥的作用', null=True)
|
||||||
earnings = models.IntegerField(verbose_name='活动收益')
|
earnings = models.FloatField(verbose_name='活动收益', null=True)
|
||||||
|
department = models.ForeignKey(Organization, on_delete=models.CASCADE, null=True, verbose_name='组织单位')
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = '质量活动'
|
verbose_name = '质量活动'
|
||||||
|
@ -73,12 +74,12 @@ class Contact(models.Model):
|
||||||
db_table = 'contact'
|
db_table = 'contact'
|
||||||
|
|
||||||
class ExternalAuditors(models.Model):
|
class ExternalAuditors(models.Model):
|
||||||
review_type = ( ('CNAS', 'CNAS'),
|
review_type = ( (0, 'CNAS'),
|
||||||
('CMA', 'CMA'),
|
(1, 'CMA'),
|
||||||
('DICA', 'DICA'))
|
(2, 'DICA'))
|
||||||
name_company = models.CharField(max_length=20, unique=True, verbose_name='公司名称')
|
name_company = models.CharField(max_length=20, unique=True, verbose_name='公司名称')
|
||||||
name = models.CharField(max_length=20, 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='证书有效期')
|
certificate_expiration = models.DateField(verbose_name='证书有效期')
|
||||||
contact = models.CharField(max_length=20, verbose_name='联系方式')
|
contact = models.CharField(max_length=20, verbose_name='联系方式')
|
||||||
judging_areas = models.CharField(max_length=20, verbose_name='评审领域')
|
judging_areas = models.CharField(max_length=20, verbose_name='评审领域')
|
||||||
|
|
|
@ -19,8 +19,8 @@ class QualityActivitiesSerializer(serializers.ModelSerializer):
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = QualityActivities
|
model = QualityActivities
|
||||||
fields = '__all __'
|
fields = '__all__'
|
||||||
|
read_only_fields = ['id']
|
||||||
|
|
||||||
class ContactSerializer(serializers.ModelSerializer):
|
class ContactSerializer(serializers.ModelSerializer):
|
||||||
|
|
||||||
|
@ -34,5 +34,4 @@ class ExternalAuditorsSerializer(serializers.ModelSerializer):
|
||||||
model = ExternalAuditors
|
model = ExternalAuditors
|
||||||
fields = '__all__'
|
fields = '__all__'
|
||||||
|
|
||||||
class ImpSerializer(serializers.Serializer):
|
|
||||||
path = serializers.FileField(label='文件地址')
|
|
||||||
|
|
|
@ -152,14 +152,32 @@ class QualityCommendationViewSet(ImpMixin, ModelViewSet):
|
||||||
serializer = QualityCommendationSerializer(query, many=True)
|
serializer = QualityCommendationSerializer(query, many=True)
|
||||||
return Response(serializer.data)
|
return Response(serializer.data)
|
||||||
|
|
||||||
class QualityActivitiesViewSet(mixins.CreateModelMixin,
|
|
||||||
mixins.ListModelMixin,
|
# 质量活动
|
||||||
mixins.DestroyModelMixin,
|
class QualityActivitiesViewSet(ModelViewSet):
|
||||||
mixins.UpdateModelMixin,
|
|
||||||
viewsets.GenericViewSet):
|
|
||||||
queryset = QualityActivities.objects.all()
|
queryset = QualityActivities.objects.all()
|
||||||
serializer_class = QualityActivitiesSerializer
|
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,
|
class ContactViewSet(mixins.CreateModelMixin,
|
||||||
mixins.ListModelMixin,
|
mixins.ListModelMixin,
|
||||||
|
|
Loading…
Reference in New Issue