fix: qm task 计算bug

This commit is contained in:
caoqianming 2023-07-06 12:13:12 +08:00
parent b672581c11
commit e399e8fa4b
1 changed files with 6 additions and 8 deletions

View File

@ -8,10 +8,14 @@ def cal_quastat_type(qs, params_o: dict, type: str):
params = params_o.copy() params = params_o.copy()
v_list = ['belong_dept', 'material', 'testitem', 'year_s', 'month_s', 'day_s'] v_list = ['belong_dept', 'material', 'testitem', 'year_s', 'month_s', 'day_s']
if type == 'month_s': if type == 'month_s':
params.pop('day_s')
v_list = ['belong_dept', 'material', 'testitem', 'year_s', 'month_s'] v_list = ['belong_dept', 'material', 'testitem', 'year_s', 'month_s']
elif type == 'year_s': elif type == 'year_s':
params.pop('month_s')
params.pop('day_s')
v_list = ['belong_dept', 'material', 'testitem', 'year_s'] v_list = ['belong_dept', 'material', 'testitem', 'year_s']
results = qs.filter(**params).values(*v_list).annotate( qs_ = qs.filter(**params).values(*v_list)
results = qs_.annotate(
avg_val_total=Sum(F('val_avg')*F('num_test')), avg_val_total=Sum(F('val_avg')*F('num_test')),
num_test_1=Sum('num_test'), num_test_1=Sum('num_test'),
num_ok_1=Sum('num_ok')).annotate( num_ok_1=Sum('num_ok')).annotate(
@ -25,11 +29,6 @@ def cal_quastat_type(qs, params_o: dict, type: str):
GROUP BY belong_dept_id, material_id, testitem_id GROUP BY belong_dept_id, material_id, testitem_id
""" """
params['type'] = type params['type'] = type
if type == 'month_s':
params.pop('day_s')
elif type == 'year_s':
params.pop('month_s')
params.pop('day_s')
for r1 in results: for r1 in results:
stat_params = { stat_params = {
'val_avg': r1['avg_val_1'], 'val_avg': r1['avg_val_1'],
@ -47,12 +46,11 @@ def cal_quastat_type(qs, params_o: dict, type: str):
@shared_task(base=CustomTask) @shared_task(base=CustomTask)
def cal_quastat(quastatId: str): def cal_quastat(quastatId: str):
ins = QuaStat.objects.get(id=quastatId) ins = QuaStat.objects.get(id=quastatId)
qs = QuaStat.objects.exclude(Q(val_avg__isnull=True)|Q(num_test__isnull=True)|Q(num_ok__isnull=True)) qs = QuaStat.objects.filter(type='sflog').exclude(Q(val_avg__isnull=True)|Q(num_test__isnull=True)|Q(num_ok__isnull=True))
params = { params = {
'testitem': ins.testitem, 'testitem': ins.testitem,
'material': ins.material, 'material': ins.material,
'belong_dept': ins.belong_dept, 'belong_dept': ins.belong_dept,
'type': 'sflog',
'year_s': ins.year_s, 'year_s': ins.year_s,
'month_s': ins.month_s, 'month_s': ins.month_s,
'day_s': ins.day_s 'day_s': ins.day_s