diff --git a/server/apps/supervision/migrations/0047_auto_20230531_1629.py b/server/apps/supervision/migrations/0047_auto_20230531_1629.py new file mode 100644 index 0000000..c6cbef7 --- /dev/null +++ b/server/apps/supervision/migrations/0047_auto_20230531_1629.py @@ -0,0 +1,28 @@ +# Generated by Django 3.2.12 on 2023-05-31 08:29 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('supervision', '0046_auto_20230529_1206'), + ] + + operations = [ + migrations.AddField( + model_name='task2do', + name='num_acc', + field=models.PositiveSmallIntegerField(blank=True, null=True, verbose_name='重大质量事故'), + ), + migrations.AddField( + model_name='task2do', + name='num_complaint_10', + field=models.PositiveSmallIntegerField(blank=True, null=True, verbose_name='满意客户投诉数'), + ), + migrations.AddField( + model_name='task2do', + name='num_pt_10', + field=models.PositiveSmallIntegerField(blank=True, null=True, verbose_name='满意能力验证数'), + ), + ] diff --git a/server/apps/supervision/models.py b/server/apps/supervision/models.py index 11dc6d9..6ce7664 100644 --- a/server/apps/supervision/models.py +++ b/server/apps/supervision/models.py @@ -168,15 +168,18 @@ class Task2Do(CommonBDModel): """ task2 = models.ForeignKey(Task2, verbose_name='关联任务', on_delete=models.CASCADE, related_name='task2dept_task2') count_up = models.PositiveSmallIntegerField('完成上报内容数', default=0) - count_all = models.PositiveSmallIntegerField('需上报内容数', default=8) + count_all = models.PositiveSmallIntegerField('需上报内容数', default=9) num_issue = models.PositiveSmallIntegerField('已发放报告数量', null=True, blank=True) num_expect = models.PositiveSmallIntegerField('应发报告数', null=True, blank=True) + num_acc = models.PositiveSmallIntegerField('重大质量事故', null=True, blank=True) num_error = models.PositiveSmallIntegerField('不准确报告数', null=True, blank=True) num_overdue = models.PositiveSmallIntegerField('超期报告数', null=True, blank=True) num_complaint = models.PositiveSmallIntegerField('客户投诉数', null=True, blank=True) + num_complaint_10 = models.PositiveSmallIntegerField('满意客户投诉数', null=True, blank=True) num_pt = models.PositiveSmallIntegerField('能力验证数', null=True, blank=True) + num_pt_10 = models.PositiveSmallIntegerField('满意能力验证数', null=True, blank=True) num_risk = models.PositiveSmallIntegerField('风险识别数', null=True, blank=True) num_oinspect = models.PositiveSmallIntegerField('外部检查数', null=True, blank=True) diff --git a/server/apps/supervision/views.py b/server/apps/supervision/views.py index dc3a491..bbff424 100644 --- a/server/apps/supervision/views.py +++ b/server/apps/supervision/views.py @@ -473,7 +473,7 @@ class Task2ViewSet(CreateUpdateCustomMixin, ModelViewSet): sr = Task2DeptsSerializer(data=request.data) sr.is_valid(raise_exception=True) vdata = sr.validated_data - count_all = 8 + count_all = 9 if task2.type == Task2.TASK2_F: count_all = 5 for i in vdata['ids']: @@ -486,7 +486,7 @@ class Task2DoViewSet(ListModelMixin, GenericViewSet): queryset = Task2Do.objects.select_related('belong_dept', 'task2').all() serializer_class = Task2DoSerializer ordering = ['belong_dept__sort'] - filterset_fields = ['task2', 'belong_dept'] + filterset_fields = ['task2', 'belong_dept', 'task2__year', 'task2__cycle'] cfields = ['num_issue', 'num_expect', 'num_error', 'num_overdue', 'num_complaint', 'num_pt', 'num_risk', 'num_oinspect'] @classmethod @@ -509,6 +509,7 @@ class Task2DoViewSet(ListModelMixin, GenericViewSet): obj = self.get_object() obj.num_issue = request.data.get('num_issue', 0) obj.num_expect = request.data.get('num_expect', 0) + obj.num_acc = request.data.get('num_acc', 0) obj.update_by = request.user obj.save() self.countup_task2do(obj) @@ -521,7 +522,11 @@ class Task2DoViewSet(ListModelMixin, GenericViewSet): 没有记录 """ obj = self.get_object() - setattr(obj, request.data.get('key'), 0) + theattr = getattr(obj, request.data.get('key'), None) + if theattr is None: + theattr = 0 + else: + raise ParseError('已有记录') obj.save() self.countup_task2do(obj) return Response() @@ -602,6 +607,8 @@ class ImpMixin: sr.is_valid(raise_exception=True) vdata = sr.validated_data path = vdata['path'] + if not path.endswith('.xlsx'): + raise ParseError('请提供xlsx格式文件') task2do = vdata['task2do'] fullpath = settings.BASE_DIR + path wb = load_workbook(fullpath,data_only=True) @@ -677,7 +684,8 @@ class ComplaintViewSet(ImpMixin, Domixin, CreateUpdateCustomMixin, ModelViewSet) queryset = Complaint.objects.all() serializer_class = ComplaintSerializer count_dict = { - "num_complaint": {} + "num_complaint": {}, + "num_complaint_10": {'is_satisfied': True} } filterset_fields = ['task2do', 'task2do__belong_dept', 'task2do__task2__year'] @@ -703,7 +711,8 @@ class PtViewSet(ImpMixin, Domixin, CreateUpdateCustomMixin, ModelViewSet): queryset = Pt.objects.all() serializer_class = PtSerializer count_dict = { - "num_pt": {} + "num_pt": {}, + "num_pt_10": {'result': 10} } filterset_fields = ['task2do', 'task2do__belong_dept', 'task2do__task2__year']