28 lines
962 B
Python
28 lines
962 B
Python
from django.db.models.aggregates import Sum
|
|
from apps.pm.models import ProductionPlan, SubProductionPlan
|
|
|
|
class PmService:
|
|
|
|
@classmethod
|
|
def update_plan_process_json(cls, plan:ProductionPlan):
|
|
"""
|
|
更新计划按工序统计字段
|
|
"""
|
|
ret = {}
|
|
subplans = SubProductionPlan.objects.filter(production_plan=plan, is_deleted=False)
|
|
qs = subplans.values('process', 'process__name', 'process_number').annotate(count=Sum('main_count'),
|
|
count_real=Sum('main_count_real'), count_ok=Sum('main_count_ok'))
|
|
qs_list = list(qs)
|
|
for i in qs_list:
|
|
ret[i['process_number']] = {
|
|
'count':i['count'],
|
|
'count_real':i['count_real'],
|
|
'count_ok':i['count_ok'],
|
|
'rate': round((i['count_ok']/i['count_real'])*100,2) if i['count_real'] > 0 else 0
|
|
}
|
|
plan.process_json = ret
|
|
plan.save()
|
|
|
|
|
|
|