feat: 增加统计字段

This commit is contained in:
caoqianming 2023-05-31 16:31:43 +08:00
parent 46e9607942
commit 1d31f80c92
3 changed files with 46 additions and 6 deletions

View File

@ -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='满意能力验证数'),
),
]

View File

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

View File

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