feat: 优化enstat2

This commit is contained in:
caoqianming 2024-08-29 09:28:39 +08:00
parent cf10f02829
commit e94996471f
1 changed files with 22 additions and 13 deletions

View File

@ -27,6 +27,7 @@ from apps.wpm.tasks import get_total_sec_now, cal_exp_duration_sec
from apps.utils.sql import DbConnection
from apps.enm.services import db_insert_mplogx_batch
from apps.enm.xscript import main
from django.core.exceptions import ObjectDoesNotExist
myLogger = logging.getLogger("log")
@ -685,34 +686,42 @@ def cal_enstat2(type: str, year_s: int, month_s: int, day_s: int, cascade=True):
elif type == "day_s":
enstat2, _ = EnStat2.objects.get_or_create(type="day_s", year_s=year_s, month_s=month_s, day_s=day_s, defaults={"year_s": year_s, "month_s": month_s, "day_s": day_s, "type": "day_s"})
# enstat2 = EnStat2.objects.select_for_update().get(id=enstat2.id) # 加锁
material_bulk_clinker = Material.objects.get(code="bulk_clinker") # 散装熟料
material_bulk_cement = Material.objects.get(code="bulk_cement") # 散装水泥
material_bag_cement = Material.objects.get(code="bag_cement") # 袋装水泥
try:
material_bulk_clinker = Material.objects.get(code="bulk_clinker") # 散装熟料
enstat2.bulk_clinker_price = get_price_unit(material_bulk_clinker, year_s, month_s)
except ObjectDoesNotExist:
enstat2.bulk_clinker_price = 0
try:
material_bulk_cement = Material.objects.get(code="bulk_cement") # 散装水泥
enstat2.bulk_cement_price = get_price_unit(material_bulk_cement, year_s, month_s)
except ObjectDoesNotExist:
enstat2.bulk_cement_price = 0
try:
material_bag_cement = Material.objects.get(code="bag_cement") # 袋装水泥
enstat2.bag_cement_price = get_price_unit(material_bag_cement, year_s, month_s)
except ObjectDoesNotExist:
enstat2.bag_cement_price = 0
enstat2.bulk_cement_price = get_price_unit(material_bulk_cement, year_s, month_s)
enstat2.bulk_clinker_price = get_price_unit(material_bulk_clinker, year_s, month_s)
enstat2.bag_cement_price = get_price_unit(material_bag_cement, year_s, month_s)
if type == "month_s":
enstat2.bulk_cement_val = MpointStat.objects.filter(type="month_s", mpoint__material=material_bulk_cement, year_s=year_s, month_s=month_s).aggregate(sum=Sum("val"))["sum"]
enstat2.bulk_cement_val = MpointStat.objects.filter(type="month_s", mpoint__material__code="bulk_cement", year_s=year_s, month_s=month_s).aggregate(sum=Sum("val"))["sum"]
elif type == "day_s":
enstat2.bulk_cement_val = MpointStat.objects.filter(type="day_s", mpoint__material=material_bulk_cement, year_s=year_s, month_s=month_s, day_s=day_s).aggregate(sum=Sum("val"))["sum"]
enstat2.bulk_cement_val = MpointStat.objects.filter(type="day_s", mpoint__material__code="bulk_cement", year_s=year_s, month_s=month_s, day_s=day_s).aggregate(sum=Sum("val"))["sum"]
if enstat2.bulk_cement_val is None:
enstat2.bulk_cement_val = 0
if type == "month_s":
enstat2.bag_cement_val = MpointStat.objects.filter(type="month_s", mpoint__material=material_bag_cement, year_s=year_s, month_s=month_s).aggregate(sum=Sum("val"))["sum"]
enstat2.bag_cement_val = MpointStat.objects.filter(type="month_s", mpoint__material__code='bag_cement', year_s=year_s, month_s=month_s).aggregate(sum=Sum("val"))["sum"]
elif type == "day_s":
enstat2.bag_cement_val = MpointStat.objects.filter(type="day_s", mpoint__material=material_bag_cement, year_s=year_s, month_s=month_s, day_s=day_s).aggregate(sum=Sum("val"))["sum"]
enstat2.bag_cement_val = MpointStat.objects.filter(type="day_s", mpoint__material__code='bag_cement', year_s=year_s, month_s=month_s, day_s=day_s).aggregate(sum=Sum("val"))["sum"]
if enstat2.bag_cement_val is None:
enstat2.bag_cement_val = 0
if type == "month_s":
enstat2.bulk_clinker_val = MpointStat.objects.filter(type="month_s", mpoint__material=material_bulk_clinker, year_s=year_s, month_s=month_s).aggregate(sum=Sum("val"))["sum"]
enstat2.bulk_clinker_val = MpointStat.objects.filter(type="month_s", mpoint__material__code='bulk_clinker', year_s=year_s, month_s=month_s).aggregate(sum=Sum("val"))["sum"]
elif type == "day_s":
enstat2.bulk_clinker_val = MpointStat.objects.filter(type="day_s", mpoint__material=material_bulk_clinker, year_s=year_s, month_s=month_s, day_s=day_s).aggregate(sum=Sum("val"))["sum"]
enstat2.bulk_clinker_val = MpointStat.objects.filter(type="day_s", mpoint__material__code='bulk_clinker', year_s=year_s, month_s=month_s, day_s=day_s).aggregate(sum=Sum("val"))["sum"]
if enstat2.bulk_clinker_val is None:
enstat2.bulk_clinker_val = 0