feat: 工段计算公式校正
This commit is contained in:
parent
f5fd9558ba
commit
841ece1d4f
|
@ -619,13 +619,27 @@ def cal_enstat(type, sflogId, mgroupId, year, month, day, hour, year_s, month_s,
|
||||||
item['consume_unit'] = None
|
item['consume_unit'] = None
|
||||||
enstat.equip_elec_data = res
|
enstat.equip_elec_data = res
|
||||||
enstat.save()
|
enstat.save()
|
||||||
|
# 开始计算互相影响的数据
|
||||||
|
if mgroup.name == "原料磨":
|
||||||
|
if enstat.type in ["hour_s", "day_s", "year_s", "month_s"]:
|
||||||
|
hzy_enstat = EnStat.objects.filter(type=enstat.type, year_s=enstat.year_s, month_s=enstat.month_s, day_s=enstat.day_s, hour=enstat.hour, mgroup__name="回转窑").first()
|
||||||
|
if hzy_enstat:
|
||||||
|
try:
|
||||||
|
hzy_enstat.celec_consume_unit = (hzy_enstat.elec_consume + enstat.elec_consume) / hzy_enstat.total_production
|
||||||
|
except ZeroDivisionError:
|
||||||
|
hzy_enstat.celec_consume_unit = 0
|
||||||
|
hzy_enstat.save()
|
||||||
if enstat.mgroup.name == "回转窑": # 算单位产品(综合电耗/标煤耗/综合能耗)
|
if enstat.mgroup.name == "回转窑": # 算单位产品(综合电耗/标煤耗/综合能耗)
|
||||||
# 综合电耗
|
# 综合电耗
|
||||||
if enstat.type in ["hour_s", "day_s", "year_s", "month_s"]:
|
if enstat.type in ["hour_s", "day_s", "year_s", "month_s"]:
|
||||||
pre_enstat = EnStat.objects.filter(type=enstat.type, year_s=enstat.year_s, month_s=enstat.month_s, day_s=enstat.day_s, hour=enstat.hour, mgroup__name="原料磨").first()
|
ylm_enstat = EnStat.objects.filter(type=enstat.type, year_s=enstat.year_s, month_s=enstat.month_s, day_s=enstat.day_s, hour=enstat.hour, mgroup__name="原料磨").first()
|
||||||
|
if ylm_enstat:
|
||||||
|
try:
|
||||||
|
enstat.celec_consume_unit = (enstat.elec_consume + ylm_enstat.elec_consume)/enstat.total_production
|
||||||
|
except ZeroDivisionError:
|
||||||
|
enstat.celec_consume_unit = 0
|
||||||
|
enstat.save()
|
||||||
# pre_enstat2 = EnStat.objects.filter(type=enstat.type, year_s=enstat.year_s, month_s=enstat.month_s, day_s=enstat.day_s, hour=enstat.hour, mgroup__name="煤磨").first()
|
# pre_enstat2 = EnStat.objects.filter(type=enstat.type, year_s=enstat.year_s, month_s=enstat.month_s, day_s=enstat.day_s, hour=enstat.hour, mgroup__name="煤磨").first()
|
||||||
if pre_enstat:
|
|
||||||
enstat.celec_consume_unit = (enstat.elec_consume + pre_enstat.elec_consume)/enstat.total_production
|
|
||||||
# if pre_enstat2:
|
# if pre_enstat2:
|
||||||
# try:
|
# try:
|
||||||
# pre_enstat2.production_elec_consume_unit = pre_enstat2.elec_consume / enstat.total_production
|
# pre_enstat2.production_elec_consume_unit = pre_enstat2.elec_consume / enstat.total_production
|
||||||
|
@ -633,8 +647,7 @@ def cal_enstat(type, sflogId, mgroupId, year, month, day, hour, year_s, month_s,
|
||||||
# pre_enstat2.production_elec_consume_unit = 0
|
# pre_enstat2.production_elec_consume_unit = 0
|
||||||
# pre_enstat2.save(update_fields=["production_elec_consume_unit"])
|
# pre_enstat2.save(update_fields=["production_elec_consume_unit"])
|
||||||
# enstat.celec_consume_unit += pre_enstat2.production_elec_consume_unit
|
# enstat.celec_consume_unit += pre_enstat2.production_elec_consume_unit
|
||||||
enstat.save()
|
# 算标煤耗
|
||||||
# 算总煤耗
|
|
||||||
if "pcoal" in this_cal_attrs:
|
if "pcoal" in this_cal_attrs:
|
||||||
if type in ["hour_s", "sflog", "day_s"]:
|
if type in ["hour_s", "sflog", "day_s"]:
|
||||||
enstat.pcoal_heat = get_pcoal_heat(enstat.year_s, enstat.month_s, enstat.day_s)
|
enstat.pcoal_heat = get_pcoal_heat(enstat.year_s, enstat.month_s, enstat.day_s)
|
||||||
|
@ -651,38 +664,69 @@ def cal_enstat(type, sflogId, mgroupId, year, month, day, hour, year_s, month_s,
|
||||||
if enstat.pcoal_coal_consume is None:
|
if enstat.pcoal_coal_consume is None:
|
||||||
enstat.pcoal_coal_consume = 0
|
enstat.pcoal_coal_consume = 0
|
||||||
|
|
||||||
# 加柴油消耗量 todo
|
oil_consume = enstat.imaterial_data_dict.get("柴油", {}).get("amount_consume", 0)
|
||||||
|
|
||||||
# 算单位产品标煤耗
|
# 算单位产品标煤耗
|
||||||
try:
|
try:
|
||||||
enstat.coal_consume_unit = enstat.pcoal_coal_consume * 1000 / enstat.total_production
|
enstat.coal_consume_unit = (enstat.pcoal_coal_consume + oil_consume*1.46) * 1000 / enstat.total_production
|
||||||
except ZeroDivisionError:
|
except ZeroDivisionError:
|
||||||
enstat.coal_consume_unit = 0
|
enstat.coal_consume_unit = 0
|
||||||
|
|
||||||
# 综合能耗
|
# 综合能耗
|
||||||
enstat.cen_consume_unit = enstat.coal_consume_unit + 0.1229 * enstat.elec_consume_unit
|
enstat.cen_consume_unit = enstat.coal_consume_unit + 0.1229 * enstat.elec_consume_unit
|
||||||
enstat.save()
|
enstat.save()
|
||||||
elif enstat.mgroup.name == "水泥包装" and enstat.type not in ["month_st", "sflog"] and "pcoal" in this_cal_attrs:
|
|
||||||
|
# 触发水泥磨综合能耗
|
||||||
|
snm_enstat = EnStat.objects.filter(type=enstat.type, year_s=enstat.year_s, month_s=enstat.month_s, day_s=enstat.day_s, hour=enstat.hour, mgroup__name="水泥磨").first()
|
||||||
|
if snm_enstat:
|
||||||
|
hzy_enstat = enstat
|
||||||
|
snbz_enstat = EnStat.objects.filter(type=enstat.type, year_s=enstat.year_s, month_s=enstat.month_s, day_s=enstat.day_s, hour=enstat.hour, mgroup__name="水泥包装").first()
|
||||||
|
snbz_enstat_elec_consume = snbz_enstat.elec_consume if snbz_enstat else 0
|
||||||
|
hzy_enstat_cen_consume_unit = hzy_enstat.cen_consume_unit if hzy_enstat else 0
|
||||||
|
if snm_enstat.total_production == 0:
|
||||||
|
snm_enstat_cen_consume_unit = 0
|
||||||
|
else:
|
||||||
|
slpb = snm_enstat.imaterial_data_dict.get("入磨熟料", {}).get("amount_consume", 0) / snm_enstat.total_production
|
||||||
|
snm_enstat_cen_consume_unit = ((snm_enstat.elec_consume + snbz_enstat_elec_consume)/snm_enstat.total_production) * 0.1229 + slpb * hzy_enstat_cen_consume_unit
|
||||||
|
snm_enstat.cen_consume_unit = snm_enstat_cen_consume_unit
|
||||||
|
snm_enstat.save()
|
||||||
|
|
||||||
|
elif enstat.mgroup.name == "水泥磨" and enstat.type not in ["month_st", "sflog"] and "pcoal" in this_cal_attrs:
|
||||||
hzy_enstat = EnStat.objects.filter(type=enstat.type, year_s=enstat.year_s, month_s=enstat.month_s, day_s=enstat.day_s, hour=enstat.hour, mgroup__name="回转窑").first()
|
hzy_enstat = EnStat.objects.filter(type=enstat.type, year_s=enstat.year_s, month_s=enstat.month_s, day_s=enstat.day_s, hour=enstat.hour, mgroup__name="回转窑").first()
|
||||||
|
snm_enstat = enstat
|
||||||
|
snbz_enstat = EnStat.objects.filter(type=enstat.type, year_s=enstat.year_s, month_s=enstat.month_s, day_s=enstat.day_s, hour=enstat.hour, mgroup__name="水泥包装").first()
|
||||||
|
snbz_enstat_elec_consume = snbz_enstat.elec_consume if snbz_enstat else 0
|
||||||
|
hzy_enstat_cen_consume_unit = hzy_enstat.cen_consume_unit if hzy_enstat else 0
|
||||||
|
if snm_enstat.total_production == 0:
|
||||||
|
snm_enstat_cen_consume_unit = 0
|
||||||
|
else:
|
||||||
|
slpb = snm_enstat.imaterial_data_dict.get("入磨熟料", {}).get("amount_consume", 0) / snm_enstat.total_production
|
||||||
|
snm_enstat_cen_consume_unit = ((snm_enstat.elec_consume + snbz_enstat_elec_consume)/snm_enstat.total_production) * 0.1229 + slpb * hzy_enstat_cen_consume_unit
|
||||||
|
snm_enstat.cen_consume_unit = snm_enstat_cen_consume_unit
|
||||||
|
snm_enstat.save()
|
||||||
|
elif enstat.mgroup.name == "水泥包装" and enstat.type not in ["month_st", "sflog"] and "pcoal" in this_cal_attrs:
|
||||||
snm_enstat = EnStat.objects.filter(type=enstat.type, year_s=enstat.year_s, month_s=enstat.month_s, day_s=enstat.day_s, hour=enstat.hour, mgroup__name="水泥磨").first()
|
snm_enstat = EnStat.objects.filter(type=enstat.type, year_s=enstat.year_s, month_s=enstat.month_s, day_s=enstat.day_s, hour=enstat.hour, mgroup__name="水泥磨").first()
|
||||||
if snm_enstat:
|
if snm_enstat:
|
||||||
# 综合能耗
|
hzy_enstat = EnStat.objects.filter(type=enstat.type, year_s=enstat.year_s, month_s=enstat.month_s, day_s=enstat.day_s, hour=enstat.hour, mgroup__name="回转窑").first()
|
||||||
|
snbz_enstat = enstat
|
||||||
# 熟料配比 用 入磨熟料/水泥磨产量 todo
|
snbz_enstat_elec_consume = snbz_enstat.elec_consume if snbz_enstat else 0
|
||||||
|
hzy_enstat_cen_consume_unit = hzy_enstat.cen_consume_unit if hzy_enstat else 0
|
||||||
snm_enstat.cen_consume_unit = ((snm_enstat.elec_consume + enstat.elec_consume)/snm_enstat.total_production) * 0.1229 + 0.7 * hzy_enstat.cen_consume_unit
|
if snm_enstat.total_production == 0:
|
||||||
|
snm_enstat_cen_consume_unit = 0
|
||||||
|
else:
|
||||||
|
slpb = snm_enstat.imaterial_data_dict.get("入磨熟料", {}).get("amount_consume", 0) / snm_enstat.total_production
|
||||||
|
snm_enstat_cen_consume_unit = ((snm_enstat.elec_consume + snbz_enstat_elec_consume)/snm_enstat.total_production) * 0.1229 + slpb * hzy_enstat_cen_consume_unit
|
||||||
|
snm_enstat.cen_consume_unit = snm_enstat_cen_consume_unit
|
||||||
snm_enstat.save()
|
snm_enstat.save()
|
||||||
|
|
||||||
elif enstat.mgroup.name == '余热发电':
|
elif enstat.mgroup.name == '余热发电':
|
||||||
pre_enstat = EnStat.objects.filter(type=enstat.type, year_s=enstat.year_s, month_s=enstat.month_s, day_s=enstat.day_s, hour=enstat.hour, mgroup__name="回转窑").first()
|
hzy_enstat = EnStat.objects.filter(type=enstat.type, year_s=enstat.year_s, month_s=enstat.month_s, day_s=enstat.day_s, hour=enstat.hour, mgroup__name="回转窑").first()
|
||||||
if pre_enstat:
|
if hzy_enstat:
|
||||||
# 吨熟料发电量
|
# 吨熟料发电量
|
||||||
try:
|
try:
|
||||||
enstat.production_elec_unit = enstat.total_production / pre_enstat.total_production
|
enstat.production_elec_unit = enstat.total_production / hzy_enstat.total_production
|
||||||
enstat.save()
|
|
||||||
except ZeroDivisionError:
|
except ZeroDivisionError:
|
||||||
enstat.production_elec_unit = 0
|
enstat.production_elec_unit = 0
|
||||||
enstat.save()
|
enstat.save()
|
||||||
# 运转时长相关
|
# 运转时长相关
|
||||||
if type != "hour_s" and "run_hour" in this_cal_attrs:
|
if type != "hour_s" and "run_hour" in this_cal_attrs:
|
||||||
enstat.total_sec_now, enstat.shut_sec = get_total_sec_now_and_shut_sec(enstat)
|
enstat.total_sec_now, enstat.shut_sec = get_total_sec_now_and_shut_sec(enstat)
|
||||||
|
@ -696,7 +740,6 @@ def cal_enstat(type, sflogId, mgroupId, year, month, day, hour, year_s, month_s,
|
||||||
except ZeroDivisionError:
|
except ZeroDivisionError:
|
||||||
enstat.production_hour = 0
|
enstat.production_hour = 0
|
||||||
enstat.save()
|
enstat.save()
|
||||||
enstat.save()
|
|
||||||
return year_s, month_s, day_s # 返回这个值主要为了全厂数据计算而用
|
return year_s, month_s, day_s # 返回这个值主要为了全厂数据计算而用
|
||||||
|
|
||||||
|
|
||||||
|
@ -888,23 +931,35 @@ def cal_enstat_pcoal_change(enstat: EnStat, new_pcoal_heat):
|
||||||
|
|
||||||
if enstat.pcoal_coal_consume is None:
|
if enstat.pcoal_coal_consume is None:
|
||||||
enstat.pcoal_coal_consume = 0
|
enstat.pcoal_coal_consume = 0
|
||||||
|
|
||||||
|
oil_consume = enstat.imaterial_data_dict.get("柴油", {}).get("amount_consume", 0)
|
||||||
|
|
||||||
# 算单位产品标煤耗
|
# 算单位产品标煤耗
|
||||||
try:
|
try:
|
||||||
enstat.coal_consume_unit = enstat.pcoal_coal_consume * 1000 / enstat.total_production
|
enstat.coal_consume_unit = (enstat.pcoal_coal_consume + oil_consume*1.46) * 1000 / enstat.total_production
|
||||||
except ZeroDivisionError:
|
except ZeroDivisionError:
|
||||||
enstat.coal_consume_unit = 0
|
enstat.coal_consume_unit = 0
|
||||||
|
|
||||||
# 综合能耗
|
# 综合能耗
|
||||||
enstat.cen_consume_unit = enstat.coal_consume_unit + 0.1229 * enstat.elec_consume_unit
|
enstat.cen_consume_unit = enstat.coal_consume_unit + 0.1229 * enstat.elec_consume_unit
|
||||||
|
# enstat.save()
|
||||||
enstat.save(update_fields=["pcoal_heat", "pcoal_coal_consume", "coal_consume_unit", "cen_consume_unit"])
|
enstat.save(update_fields=["pcoal_heat", "pcoal_coal_consume", "coal_consume_unit", "cen_consume_unit"])
|
||||||
|
|
||||||
# 同步更新水泥磨的综合能耗,这步有可能不成功,因为水泥磨是后算的, 但是当pcoal_change时这个就有用了
|
# 同步更新水泥磨的综合能耗,这步有可能不成功,因为水泥磨是后算的, 但是当pcoal_change时这个就有用了
|
||||||
if type not in ["month_st", "sflog"]:
|
if type not in ["month_st", "sflog"]:
|
||||||
next_enstat = EnStat.objects.filter(type=enstat.type, year_s=enstat.year_s, month_s=enstat.month_s, day_s=enstat.day_s, hour=enstat.hour, mgroup__name="水泥磨").first()
|
snm_enstat = EnStat.objects.filter(type=enstat.type, year_s=enstat.year_s, month_s=enstat.month_s, day_s=enstat.day_s, hour=enstat.hour, mgroup__name="水泥磨").first()
|
||||||
if next_enstat:
|
if snm_enstat:
|
||||||
next_enstat.cen_consume_unit = next_enstat.elec_consume_unit * 0.1229 + 0.7 * enstat.cen_consume_unit
|
hzy_enstat = enstat
|
||||||
next_enstat.save(update_fields=["cen_consume_unit"])
|
snbz_enstat = EnStat.objects.filter(type=enstat.type, year_s=enstat.year_s, month_s=enstat.month_s, day_s=enstat.day_s, hour=enstat.hour, mgroup__name="水泥包装").first()
|
||||||
|
snbz_enstat_elec_consume = snbz_enstat.elec_consume if snbz_enstat else 0
|
||||||
|
hzy_enstat_cen_consume_unit = hzy_enstat.cen_consume_unit if hzy_enstat else 0
|
||||||
|
if snm_enstat.total_production == 0:
|
||||||
|
snm_enstat_cen_consume_unit = 0
|
||||||
|
else:
|
||||||
|
slpb = snm_enstat.imaterial_data_dict.get("入磨熟料", {}).get("amount_consume", 0) / snm_enstat.total_production
|
||||||
|
snm_enstat_cen_consume_unit = ((snm_enstat.elec_consume + snbz_enstat_elec_consume)/snm_enstat.total_production) * 0.1229 + slpb * hzy_enstat_cen_consume_unit
|
||||||
|
snm_enstat.cen_consume_unit = snm_enstat_cen_consume_unit
|
||||||
|
snm_enstat.save()
|
||||||
|
|
||||||
enm_alarms_list = [
|
enm_alarms_list = [
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue