更新计划按工序字段统计
This commit is contained in:
parent
c8c9cd4554
commit
15812bf048
|
@ -29,7 +29,7 @@ class ProductionPlan(CommonAModel):
|
||||||
count_ok = models.PositiveIntegerField('合格数', default=0)
|
count_ok = models.PositiveIntegerField('合格数', default=0)
|
||||||
start_date = models.DateField('计划开工日期')
|
start_date = models.DateField('计划开工日期')
|
||||||
end_date = models.DateField('计划完工日期')
|
end_date = models.DateField('计划完工日期')
|
||||||
process_json = models.JSONField('按工序的统计数', default=list, null=True, blank=True)
|
process_json = models.JSONField('按工序的统计数', default=dict, null=True, blank=True)
|
||||||
is_planed = models.BooleanField('是否已排产', default=False)
|
is_planed = models.BooleanField('是否已排产', default=False)
|
||||||
class Meta:
|
class Meta:
|
||||||
verbose_name = '生产计划'
|
verbose_name = '生产计划'
|
||||||
|
|
|
@ -1,10 +1,27 @@
|
||||||
|
from django.db.models.aggregates import Sum
|
||||||
from apps.pm.models import ProductionPlan, SubProductionPlan
|
from apps.pm.models import ProductionPlan, SubProductionPlan
|
||||||
|
import math
|
||||||
class PmService:
|
class PmService:
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def update_plan_process_json(cls, plan:ProductionPlan):
|
def update_plan_process_json(cls, plan:ProductionPlan):
|
||||||
"""
|
"""
|
||||||
更新计划统计字段
|
更新计划按工序统计字段
|
||||||
"""
|
"""
|
||||||
ret = {}
|
ret = {}
|
||||||
subplans = SubProductionPlan.objects.filter()
|
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()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -2,6 +2,7 @@ from django.db.models.signals import post_save
|
||||||
from django.dispatch import receiver
|
from django.dispatch import receiver
|
||||||
from apps.mtm.models import Material
|
from apps.mtm.models import Material
|
||||||
from apps.pm.models import SubProductionPlan, SubProductionProgress
|
from apps.pm.models import SubProductionPlan, SubProductionProgress
|
||||||
|
from apps.pm.services import PmService
|
||||||
|
|
||||||
@receiver(post_save, sender=SubProductionProgress)
|
@receiver(post_save, sender=SubProductionProgress)
|
||||||
def update_subplan_main(sender, instance, created, **kwargs):
|
def update_subplan_main(sender, instance, created, **kwargs):
|
||||||
|
@ -26,6 +27,8 @@ def update_subplan_main(sender, instance, created, **kwargs):
|
||||||
plan.count_real = subplan.main_count_real
|
plan.count_real = subplan.main_count_real
|
||||||
plan.count_ok = subplan.main_count_ok
|
plan.count_ok = subplan.main_count_ok
|
||||||
plan.save()
|
plan.save()
|
||||||
|
# 更新子计划工序统计字段
|
||||||
|
PmService.update_plan_process_json(subplan.production_plan)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue