style: 格式调整
This commit is contained in:
parent
7ba27142e8
commit
611aa28eee
|
@ -25,6 +25,7 @@ import traceback
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
myLogger = logging.getLogger('log')
|
myLogger = logging.getLogger('log')
|
||||||
|
|
||||||
|
|
||||||
def get_current_and_previous_time():
|
def get_current_and_previous_time():
|
||||||
now = datetime.datetime.now()
|
now = datetime.datetime.now()
|
||||||
pre = now - datetime.timedelta(hours=1)
|
pre = now - datetime.timedelta(hours=1)
|
||||||
|
@ -43,13 +44,15 @@ def get_tag_val():
|
||||||
else:
|
else:
|
||||||
last_tag_id = mr.tag_id
|
last_tag_id = mr.tag_id
|
||||||
update_sysconfig({'enm': {'last_tag_id': last_tag_id}})
|
update_sysconfig({'enm': {'last_tag_id': last_tag_id}})
|
||||||
cursor.execute("select id, val, tag_code, update_time from tag_value where id > %s order by update_time, id", (last_tag_id))
|
cursor.execute(
|
||||||
|
"select id, val, tag_code, update_time from tag_value where id > %s order by update_time, id", (last_tag_id))
|
||||||
results = cursor.fetchall() # 获取数据后保存至本地
|
results = cursor.fetchall() # 获取数据后保存至本地
|
||||||
need_func = {} # 需要执行测点函数的字典, 此种情况只执行一次
|
need_func = {} # 需要执行测点函数的字典, 此种情况只执行一次
|
||||||
for row in results:
|
for row in results:
|
||||||
mr_one = MpLog()
|
mr_one = MpLog()
|
||||||
mr_one.tag_id, mr_one.tag_val, mr_one.tag_code, mr_one.tag_update = row
|
mr_one.tag_id, mr_one.tag_val, mr_one.tag_code, mr_one.tag_update = row
|
||||||
mpoint, _ = Mpoint.objects.get_or_create(code=mr_one.tag_code, defaults={'name': mr_one.tag_code, 'code': mr_one.tag_code, 'unit': 'unknown'})
|
mpoint, _ = Mpoint.objects.get_or_create(code=mr_one.tag_code, defaults={
|
||||||
|
'name': mr_one.tag_code, 'code': mr_one.tag_code, 'unit': 'unknown'})
|
||||||
mr_one.mpoint = mpoint
|
mr_one.mpoint = mpoint
|
||||||
mr_one.save()
|
mr_one.save()
|
||||||
last_tag_id = mr_one.tag_id
|
last_tag_id = mr_one.tag_id
|
||||||
|
@ -60,6 +63,7 @@ def get_tag_val():
|
||||||
mpoint_val_on_change.delay(need_func[key])
|
mpoint_val_on_change.delay(need_func[key])
|
||||||
update_sysconfig({'enm': {'last_tag_id': last_tag_id}})
|
update_sysconfig({'enm': {'last_tag_id': last_tag_id}})
|
||||||
|
|
||||||
|
|
||||||
@shared_task(base=CustomTask)
|
@shared_task(base=CustomTask)
|
||||||
def mpoint_val_on_change(mpLogId: str):
|
def mpoint_val_on_change(mpLogId: str):
|
||||||
"""测点值变化的时候执行任务
|
"""测点值变化的时候执行任务
|
||||||
|
@ -71,6 +75,7 @@ def mpoint_val_on_change(mpLogId: str):
|
||||||
f = getattr(m, func)
|
f = getattr(m, func)
|
||||||
f(mplog) # 同步执行
|
f(mplog) # 同步执行
|
||||||
|
|
||||||
|
|
||||||
@shared_task(base=CustomTask)
|
@shared_task(base=CustomTask)
|
||||||
def cal_mpointstats_duration(start_time: str, end_time: str):
|
def cal_mpointstats_duration(start_time: str, end_time: str):
|
||||||
"""
|
"""
|
||||||
|
@ -92,7 +97,8 @@ def cal_mpointstat_hour(mpointId: str, year: int, month: int, day: int, hour: in
|
||||||
"""
|
"""
|
||||||
mpoint = Mpoint.objects.get(id=mpointId)
|
mpoint = Mpoint.objects.get(id=mpointId)
|
||||||
mytz = tz.gettz(settings.TIME_ZONE)
|
mytz = tz.gettz(settings.TIME_ZONE)
|
||||||
dt = datetime.datetime(year=year, month=month, day=day, hour=hour, tzinfo=mytz)
|
dt = datetime.datetime(year=year, month=month,
|
||||||
|
day=day, hour=hour, tzinfo=mytz)
|
||||||
if mpoint.material: # 如果计量的是物料
|
if mpoint.material: # 如果计量的是物料
|
||||||
params = {'mpoint': mpoint, 'type': 'hour'}
|
params = {'mpoint': mpoint, 'type': 'hour'}
|
||||||
params['year'], params['month'], params['day'], params['hour'] = year, month, day, hour
|
params['year'], params['month'], params['day'], params['hour'] = year, month, day, hour
|
||||||
|
@ -102,7 +108,8 @@ def cal_mpointstat_hour(mpointId: str, year: int, month: int, day: int, hour: in
|
||||||
try:
|
try:
|
||||||
val = translate_eval_formula(formula, year, month, day, hour)
|
val = translate_eval_formula(formula, year, month, day, hour)
|
||||||
except:
|
except:
|
||||||
myLogger.error('公式执行错误:{}-{}'.format(mpoint.id, formula), exc_info=True)
|
myLogger.error(
|
||||||
|
'公式执行错误:{}-{}'.format(mpoint.id, formula), exc_info=True)
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
mrs = MpLog.objects.filter(
|
mrs = MpLog.objects.filter(
|
||||||
|
@ -118,21 +125,29 @@ def cal_mpointstat_hour(mpointId: str, year: int, month: int, day: int, hour: in
|
||||||
ms.save()
|
ms.save()
|
||||||
|
|
||||||
# 更新更高级别的值
|
# 更新更高级别的值
|
||||||
sum_dict_day = MpointStat.objects.filter(type='hour', mpoint=mpoint, year=year, month=month, day=day).aggregate(sum=Sum('val'))
|
sum_dict_day = MpointStat.objects.filter(
|
||||||
params_day = {'type':'day', 'mpoint': mpoint, 'year': year, 'month': month, 'day': day}
|
type='hour', mpoint=mpoint, year=year, month=month, day=day).aggregate(sum=Sum('val'))
|
||||||
ms_day, _ = MpointStat.objects.get_or_create(**params_day, defaults=params_day)
|
params_day = {'type': 'day', 'mpoint': mpoint,
|
||||||
|
'year': year, 'month': month, 'day': day}
|
||||||
|
ms_day, _ = MpointStat.objects.get_or_create(
|
||||||
|
**params_day, defaults=params_day)
|
||||||
ms_day.val = sum_dict_day['sum']
|
ms_day.val = sum_dict_day['sum']
|
||||||
ms_day.save()
|
ms_day.save()
|
||||||
|
|
||||||
sum_dict_month = MpointStat.objects.filter(type='day', mpoint=mpoint, year=year, month=month).aggregate(sum=Sum('val'))
|
sum_dict_month = MpointStat.objects.filter(
|
||||||
params_month = {'type':'month', 'mpoint': mpoint, 'year': year, 'month': month}
|
type='day', mpoint=mpoint, year=year, month=month).aggregate(sum=Sum('val'))
|
||||||
ms_month, _ = MpointStat.objects.get_or_create(**params_month, defaults=params_month)
|
params_month = {'type': 'month', 'mpoint': mpoint,
|
||||||
|
'year': year, 'month': month}
|
||||||
|
ms_month, _ = MpointStat.objects.get_or_create(
|
||||||
|
**params_month, defaults=params_month)
|
||||||
ms_month.val = sum_dict_month['sum']
|
ms_month.val = sum_dict_month['sum']
|
||||||
ms_month.save()
|
ms_month.save()
|
||||||
|
|
||||||
sum_dict_year = MpointStat.objects.filter(type='month', mpoint=mpoint, year=year).aggregate(sum=Sum('val'))
|
sum_dict_year = MpointStat.objects.filter(
|
||||||
|
type='month', mpoint=mpoint, year=year).aggregate(sum=Sum('val'))
|
||||||
params_year = {'type': 'year', 'mpoint': mpoint, 'year': year}
|
params_year = {'type': 'year', 'mpoint': mpoint, 'year': year}
|
||||||
ms_year, _ = MpointStat.objects.get_or_create(**params_year, defaults=params_year)
|
ms_year, _ = MpointStat.objects.get_or_create(
|
||||||
|
**params_year, defaults=params_year)
|
||||||
ms_year.val = sum_dict_year['sum']
|
ms_year.val = sum_dict_year['sum']
|
||||||
ms_year.save()
|
ms_year.save()
|
||||||
|
|
||||||
|
@ -141,22 +156,29 @@ def cal_mpointstat_hour(mpointId: str, year: int, month: int, day: int, hour: in
|
||||||
mgroup = Mgroup.objects.get(id=allocate['mgroup'])
|
mgroup = Mgroup.objects.get(id=allocate['mgroup'])
|
||||||
ratio = allocate['ratio']
|
ratio = allocate['ratio']
|
||||||
# 查找并绑定值班记录
|
# 查找并绑定值班记录
|
||||||
sflog = SfLog.objects.filter(start_time__lt=dt, end_time__gte=dt, mgroup=mgroup).first()
|
sflog = SfLog.objects.filter(
|
||||||
|
start_time__lt=dt, end_time__gte=dt, mgroup=mgroup).first()
|
||||||
if sflog is None: # 需要创建值班记录
|
if sflog is None: # 需要创建值班记录
|
||||||
make_sflogs(mgroup=mgroup, start_date=(dt-datetime.timedelta(days=1)).date(), end_date=dt.date())
|
make_sflogs(mgroup=mgroup, start_date=(
|
||||||
sflog = SfLog.objects.filter(start_time__lt=dt, end_time__gte=dt, mgroup=mgroup).first()
|
dt-datetime.timedelta(days=1)).date(), end_date=dt.date())
|
||||||
|
sflog = SfLog.objects.filter(
|
||||||
|
start_time__lt=dt, end_time__gte=dt, mgroup=mgroup).first()
|
||||||
year_s, month_s, day_s = sflog.get_ymd
|
year_s, month_s, day_s = sflog.get_ymd
|
||||||
|
|
||||||
params_hour_s = {'type': 'hour_s', 'mpoint': mpoint, 'sflog': sflog, 'mgroup': mgroup, 'year': year, 'month': month, 'day': day, 'year_s': year_s, 'month_s': month_s, 'day_s': day_s, 'hour': hour}
|
params_hour_s = {'type': 'hour_s', 'mpoint': mpoint, 'sflog': sflog, 'mgroup': mgroup, 'year': year,
|
||||||
ms_hour_s, _ = MpointStat.objects.get_or_create(**params_hour_s, defaults=params_hour_s)
|
'month': month, 'day': day, 'year_s': year_s, 'month_s': month_s, 'day_s': day_s, 'hour': hour}
|
||||||
|
ms_hour_s, _ = MpointStat.objects.get_or_create(
|
||||||
|
**params_hour_s, defaults=params_hour_s)
|
||||||
ms_hour_s.val = ms.val*ratio
|
ms_hour_s.val = ms.val*ratio
|
||||||
ms_hour_s.save()
|
ms_hour_s.save()
|
||||||
|
|
||||||
|
|
||||||
# 开始往上计算
|
# 开始往上计算
|
||||||
sum_dict_sflog_s = MpointStat.objects.filter(type='hour_s', mpoint=mpoint, year_s=year_s, month_s=month_s, day_s=day_s).aggregate(sum=Sum('val'))
|
sum_dict_sflog_s = MpointStat.objects.filter(
|
||||||
params_sflog_s = {'type':'sflog', 'mpoint': mpoint, 'sflog': sflog, 'year_s': year_s, 'month_s': month_s, 'day_s': day_s, 'mgroup': mgroup}
|
type='hour_s', mpoint=mpoint, year_s=year_s, month_s=month_s, day_s=day_s).aggregate(sum=Sum('val'))
|
||||||
ms_sflog_s, _ = MpointStat.objects.get_or_create(**params_sflog_s, defaults=params_sflog_s)
|
params_sflog_s = {'type': 'sflog', 'mpoint': mpoint, 'sflog': sflog,
|
||||||
|
'year_s': year_s, 'month_s': month_s, 'day_s': day_s, 'mgroup': mgroup}
|
||||||
|
ms_sflog_s, _ = MpointStat.objects.get_or_create(
|
||||||
|
**params_sflog_s, defaults=params_sflog_s)
|
||||||
ms_sflog_s.val = sum_dict_sflog_s['sum']
|
ms_sflog_s.val = sum_dict_sflog_s['sum']
|
||||||
ms_sflog_s.save()
|
ms_sflog_s.save()
|
||||||
|
|
||||||
|
@ -166,8 +188,8 @@ def cal_mpointstat_hour(mpointId: str, year: int, month: int, day: int, hour: in
|
||||||
# else:
|
# else:
|
||||||
# next_cal = 1
|
# next_cal = 1
|
||||||
# cache.set('enm_cal_dict', next_cal_dict, 60)
|
# cache.set('enm_cal_dict', next_cal_dict, 60)
|
||||||
cal_mpointstat_manual(mpoint.id, sflog.id, mgroup.id, year, month, day, hour, year_s, month_s, day_s, 0)
|
cal_mpointstat_manual(
|
||||||
|
mpoint.id, sflog.id, mgroup.id, year, month, day, hour, year_s, month_s, day_s, 0)
|
||||||
|
|
||||||
|
|
||||||
@shared_task(base=CustomTask)
|
@shared_task(base=CustomTask)
|
||||||
|
@ -185,14 +207,16 @@ def cal_mpointstats(is_now=1, year=None, month=None, day=None, hour=None):
|
||||||
year, month, day, hour = pre.year, pre.month, pre.day, pre.hour
|
year, month, day, hour = pre.year, pre.month, pre.day, pre.hour
|
||||||
|
|
||||||
# 先统计不带公式的测点
|
# 先统计不带公式的测点
|
||||||
mpoints_without_formula = Mpoint.objects.filter(is_auto=True, formula='', func_on_change='')
|
mpoints_without_formula = Mpoint.objects.filter(
|
||||||
|
is_auto=True, formula='', func_on_change='')
|
||||||
# mpoints_without_formula_group = []
|
# mpoints_without_formula_group = []
|
||||||
for item in mpoints_without_formula:
|
for item in mpoints_without_formula:
|
||||||
# mpoints_without_formula_group.append(cal_mpointstat_hour.s(item.id, year, month, day, hour))
|
# mpoints_without_formula_group.append(cal_mpointstat_hour.s(item.id, year, month, day, hour))
|
||||||
cal_mpointstat_hour(item.id, year, month, day, hour)
|
cal_mpointstat_hour(item.id, year, month, day, hour)
|
||||||
|
|
||||||
# 再统计其他测点
|
# 再统计其他测点
|
||||||
mpoints_other = Mpoint.objects.filter(is_auto=True, func_on_change='').exclude(formula='')
|
mpoints_other = Mpoint.objects.filter(
|
||||||
|
is_auto=True, func_on_change='').exclude(formula='')
|
||||||
# mpoints_other_group = []
|
# mpoints_other_group = []
|
||||||
for item in mpoints_other:
|
for item in mpoints_other:
|
||||||
# mpoints_other_group.append(cal_mpointstat_hour.s(item.id, year, month, day, hour))
|
# mpoints_other_group.append(cal_mpointstat_hour.s(item.id, year, month, day, hour))
|
||||||
|
@ -204,14 +228,14 @@ def cal_mpointstats(is_now=1, year=None, month=None, day=None, hour=None):
|
||||||
year_s, month_s, day_s = 0, 0, 0
|
year_s, month_s, day_s = 0, 0, 0
|
||||||
for mgroup in mgroups:
|
for mgroup in mgroups:
|
||||||
# mgroups_group.append(cal_enstat.s('hour_s', None, mgroup.id, year, month, day, hour, None, None, None, True, ['material', 'run_hour']))
|
# mgroups_group.append(cal_enstat.s('hour_s', None, mgroup.id, year, month, day, hour, None, None, None, True, ['material', 'run_hour']))
|
||||||
year_s, month_s, day_s = cal_enstat('hour_s', None, mgroup.id, year, month, day, hour, None, None, None, True)
|
year_s, month_s, day_s = cal_enstat(
|
||||||
|
'hour_s', None, mgroup.id, year, month, day, hour, None, None, None, True)
|
||||||
|
|
||||||
# mgroups_t = mgroups.filter(name__in=['回转窑', '水泥磨'])
|
# mgroups_t = mgroups.filter(name__in=['回转窑', '水泥磨'])
|
||||||
# mgroups_t_group = []
|
# mgroups_t_group = []
|
||||||
# for mgroup in mgroups_t:
|
# for mgroup in mgroups_t:
|
||||||
# mgroups_t_group.append(cal_enstat.s('hour_s', None, mgroup.id, year, month, day, hour, None, None, None, True, ['pcoal']))
|
# mgroups_t_group.append(cal_enstat.s('hour_s', None, mgroup.id, year, month, day, hour, None, None, None, True, ['pcoal']))
|
||||||
|
|
||||||
|
|
||||||
# 最后计算enstat2
|
# 最后计算enstat2
|
||||||
cal_enstat2(type="day_s", year_s=year_s, month_s=month_s, day_s=day_s)
|
cal_enstat2(type="day_s", year_s=year_s, month_s=month_s, day_s=day_s)
|
||||||
# task_chain = chain(group(mpoints_without_formula_group), group(mpoints_other_group), group(mgroups_group), group(mgroups_t_group), group([cal_enstat2.s(year_s=year, month_s=month)]))
|
# task_chain = chain(group(mpoints_without_formula_group), group(mpoints_other_group), group(mgroups_group), group(mgroups_t_group), group([cal_enstat2.s(year_s=year, month_s=month)]))
|
||||||
|
@ -227,34 +251,45 @@ def cal_mpointstat_manual(mpointId: str, sflogId: str, mgroupId: str, year: int,
|
||||||
"""
|
"""
|
||||||
mpoint = Mpoint.objects.get(id=mpointId)
|
mpoint = Mpoint.objects.get(id=mpointId)
|
||||||
mgroup = Mgroup.objects.get(id=mgroupId)
|
mgroup = Mgroup.objects.get(id=mgroupId)
|
||||||
sum_dict_day_s = MpointStat.objects.filter(type='sflog', mpoint=mpoint, year_s=year_s, month_s=month_s, day_s=day_s, mgroup=mgroup).aggregate(sum=Sum('val'))
|
sum_dict_day_s = MpointStat.objects.filter(
|
||||||
params_day_s = {'type':'day_s', 'mpoint': mpoint, 'year_s': year_s, 'month_s': month_s, 'day_s': day_s, 'mgroup': mgroup}
|
type='sflog', mpoint=mpoint, year_s=year_s, month_s=month_s, day_s=day_s, mgroup=mgroup).aggregate(sum=Sum('val'))
|
||||||
ms_day_s, _ = MpointStat.objects.get_or_create(**params_day_s, defaults=params_day_s)
|
params_day_s = {'type': 'day_s', 'mpoint': mpoint, 'year_s': year_s,
|
||||||
|
'month_s': month_s, 'day_s': day_s, 'mgroup': mgroup}
|
||||||
|
ms_day_s, _ = MpointStat.objects.get_or_create(
|
||||||
|
**params_day_s, defaults=params_day_s)
|
||||||
ms_day_s.val = sum_dict_day_s['sum']
|
ms_day_s.val = sum_dict_day_s['sum']
|
||||||
ms_day_s.save()
|
ms_day_s.save()
|
||||||
|
|
||||||
sum_dict_month_s = MpointStat.objects.filter(type='day_s', mpoint=mpoint, year_s=year_s, month_s=month_s, mgroup=mgroup).aggregate(sum=Sum('val'))
|
sum_dict_month_s = MpointStat.objects.filter(
|
||||||
params_month_s = {'type':'month_s', 'mpoint': mpoint, 'year_s': year_s, 'month_s': month_s, 'mgroup': mgroup}
|
type='day_s', mpoint=mpoint, year_s=year_s, month_s=month_s, mgroup=mgroup).aggregate(sum=Sum('val'))
|
||||||
ms_month_s, _ = MpointStat.objects.get_or_create(**params_month_s, defaults=params_month_s)
|
params_month_s = {'type': 'month_s', 'mpoint': mpoint,
|
||||||
|
'year_s': year_s, 'month_s': month_s, 'mgroup': mgroup}
|
||||||
|
ms_month_s, _ = MpointStat.objects.get_or_create(
|
||||||
|
**params_month_s, defaults=params_month_s)
|
||||||
ms_month_s.val = sum_dict_month_s['sum']
|
ms_month_s.val = sum_dict_month_s['sum']
|
||||||
ms_month_s.save()
|
ms_month_s.save()
|
||||||
|
|
||||||
sum_dict_year_s = MpointStat.objects.filter(type='month_s', mpoint=mpoint, year_s=year_s, mgroup=mgroup).aggregate(sum=Sum('val'))
|
sum_dict_year_s = MpointStat.objects.filter(
|
||||||
params_year_s = {'type':'year_s', 'mpoint': mpoint, 'year_s': year_s, 'mgroup': mgroup}
|
type='month_s', mpoint=mpoint, year_s=year_s, mgroup=mgroup).aggregate(sum=Sum('val'))
|
||||||
ms_year_s, _ = MpointStat.objects.get_or_create(**params_year_s, defaults=params_year_s)
|
params_year_s = {'type': 'year_s', 'mpoint': mpoint,
|
||||||
|
'year_s': year_s, 'mgroup': mgroup}
|
||||||
|
ms_year_s, _ = MpointStat.objects.get_or_create(
|
||||||
|
**params_year_s, defaults=params_year_s)
|
||||||
ms_year_s.val = sum_dict_year_s['sum']
|
ms_year_s.val = sum_dict_year_s['sum']
|
||||||
ms_year_s.save()
|
ms_year_s.save()
|
||||||
|
|
||||||
if next_cal: # 二次计算
|
if next_cal: # 二次计算
|
||||||
if hour:
|
if hour:
|
||||||
cal_enstat('hour_s', sflogId, mgroupId, year, month, day, hour, year_s, month_s, day_s)
|
cal_enstat('hour_s', sflogId, mgroupId, year,
|
||||||
|
month, day, hour, year_s, month_s, day_s)
|
||||||
else:
|
else:
|
||||||
cal_enstat('sflog', sflogId, mgroupId, year, month, day, hour, year_s, month_s, day_s)
|
cal_enstat('sflog', sflogId, mgroupId, year, month,
|
||||||
|
day, hour, year_s, month_s, day_s)
|
||||||
|
|
||||||
|
|
||||||
types_list = ['hour_s', 'sflog', 'day_s', 'month_st', 'month_s', 'year_s']
|
types_list = ['hour_s', 'sflog', 'day_s', 'month_st', 'month_s', 'year_s']
|
||||||
|
|
||||||
|
|
||||||
@shared_task(base=CustomTask)
|
@shared_task(base=CustomTask)
|
||||||
def cal_enstat(type, sflogId, mgroupId, year, month, day, hour, year_s, month_s, day_s, cascade=True, cal_attrs=[]):
|
def cal_enstat(type, sflogId, mgroupId, year, month, day, hour, year_s, month_s, day_s, cascade=True, cal_attrs=[]):
|
||||||
"""
|
"""
|
||||||
|
@ -265,7 +300,8 @@ def cal_enstat(type, sflogId, mgroupId, year, month, day, hour, year_s, month_s,
|
||||||
start_index = types_list.index(type)
|
start_index = types_list.index(type)
|
||||||
new_types_list = types_list[start_index:]
|
new_types_list = types_list[start_index:]
|
||||||
for type in new_types_list:
|
for type in new_types_list:
|
||||||
year_s, month_s, day_s = cal_enstat(type, sflogId, mgroupId, year, month, day, hour, year_s, month_s, day_s, False)
|
year_s, month_s, day_s = cal_enstat(
|
||||||
|
type, sflogId, mgroupId, year, month, day, hour, year_s, month_s, day_s, False)
|
||||||
return year_s, month_s, day_s
|
return year_s, month_s, day_s
|
||||||
if not cal_attrs:
|
if not cal_attrs:
|
||||||
this_cal_attrs = ['material', 'pcoal', 'run_hour']
|
this_cal_attrs = ['material', 'pcoal', 'run_hour']
|
||||||
|
@ -277,8 +313,10 @@ def cal_enstat(type, sflogId, mgroupId, year, month, day, hour, year_s, month_s,
|
||||||
sflog = SfLog.objects.get(id=sflogId)
|
sflog = SfLog.objects.get(id=sflogId)
|
||||||
elif year and month and day and hour is not None:
|
elif year and month and day and hour is not None:
|
||||||
mytz = tz.gettz(settings.TIME_ZONE)
|
mytz = tz.gettz(settings.TIME_ZONE)
|
||||||
dt = datetime.datetime(year=year, month=month, day=day, hour=hour, tzinfo=mytz)
|
dt = datetime.datetime(year=year, month=month,
|
||||||
sflog = SfLog.objects.get(start_time__lt=dt, end_time__gte=dt, mgroup=mgroup)
|
day=day, hour=hour, tzinfo=mytz)
|
||||||
|
sflog = SfLog.objects.get(
|
||||||
|
start_time__lt=dt, end_time__gte=dt, mgroup=mgroup)
|
||||||
if sflog:
|
if sflog:
|
||||||
year_s, month_s, day_s = sflog.get_ymd
|
year_s, month_s, day_s = sflog.get_ymd
|
||||||
team = sflog.team
|
team = sflog.team
|
||||||
|
@ -317,17 +355,23 @@ def cal_enstat(type, sflogId, mgroupId, year, month, day, hour, year_s, month_s,
|
||||||
for ind, mid in enumerate(input_materials):
|
for ind, mid in enumerate(input_materials):
|
||||||
material = Material.objects.get(id=mid)
|
material = Material.objects.get(id=mid)
|
||||||
if type == 'hour_s':
|
if type == 'hour_s':
|
||||||
mps = MpointStat.objects.filter(type='hour_s', mgroup=mgroup, year_s=year_s, month_s=month_s, day_s=day_s, hour=hour, mpoint__material=material)
|
mps = MpointStat.objects.filter(
|
||||||
|
type='hour_s', mgroup=mgroup, year_s=year_s, month_s=month_s, day_s=day_s, hour=hour, mpoint__material=material)
|
||||||
elif type == 'sflog':
|
elif type == 'sflog':
|
||||||
mps = MpointStat.objects.filter(type='sflog', sflog=sflog, mpoint__material=material)
|
mps = MpointStat.objects.filter(
|
||||||
|
type='sflog', sflog=sflog, mpoint__material=material)
|
||||||
elif type == 'day_s':
|
elif type == 'day_s':
|
||||||
mps = MpointStat.objects.filter(type='day_s', mgroup=mgroup, year_s=year_s, month_s=month_s, day_s=day_s, mpoint__material=material)
|
mps = MpointStat.objects.filter(
|
||||||
|
type='day_s', mgroup=mgroup, year_s=year_s, month_s=month_s, day_s=day_s, mpoint__material=material)
|
||||||
elif type == 'month_st':
|
elif type == 'month_st':
|
||||||
mps = MpointStat.objects.filter(type='sflog', mgroup=mgroup, sflog__team=team, year_s=year_s, month_s=month_s, mpoint__material=material)
|
mps = MpointStat.objects.filter(
|
||||||
|
type='sflog', mgroup=mgroup, sflog__team=team, year_s=year_s, month_s=month_s, mpoint__material=material)
|
||||||
elif type == 'month_s':
|
elif type == 'month_s':
|
||||||
mps = MpointStat.objects.filter(type='month_s', mgroup=mgroup, year_s=year_s, month_s=month_s, mpoint__material=material)
|
mps = MpointStat.objects.filter(
|
||||||
|
type='month_s', mgroup=mgroup, year_s=year_s, month_s=month_s, mpoint__material=material)
|
||||||
elif type == 'year_s':
|
elif type == 'year_s':
|
||||||
mps = MpointStat.objects.filter(type='year_s', mgroup=mgroup, year_s=year_s, mpoint__material=material)
|
mps = MpointStat.objects.filter(
|
||||||
|
type='year_s', mgroup=mgroup, year_s=year_s, mpoint__material=material)
|
||||||
if mps.filter(mpoint__is_all=True).exists():
|
if mps.filter(mpoint__is_all=True).exists():
|
||||||
mps = mps.filter(mpoint__is_all=True)
|
mps = mps.filter(mpoint__is_all=True)
|
||||||
amount_consume = mps.aggregate(sum=Sum('val'))['sum']
|
amount_consume = mps.aggregate(sum=Sum('val'))['sum']
|
||||||
|
@ -366,7 +410,8 @@ def cal_enstat(type, sflogId, mgroupId, year, month, day, hour, year_s, month_s,
|
||||||
enstat.ccr_consume = amount_consume
|
enstat.ccr_consume = amount_consume
|
||||||
enstat.kiln_end_heat = enstat.total_production - enstat.ccr_consume
|
enstat.kiln_end_heat = enstat.total_production - enstat.ccr_consume
|
||||||
|
|
||||||
imaterial_item = {'material': mid, 'material_name': material.name, 'material_code': material.code, 'material_type': material.type, 'price_unit': price_unit, 'amount_consume': amount_consume, 'cost': cost, 'cost_unit': cost_unit}
|
imaterial_item = {'material': mid, 'material_name': material.name, 'material_code': material.code,
|
||||||
|
'material_type': material.type, 'price_unit': price_unit, 'amount_consume': amount_consume, 'cost': cost, 'cost_unit': cost_unit}
|
||||||
imaterial_data.append(imaterial_item)
|
imaterial_data.append(imaterial_item)
|
||||||
enstat.imaterial_data = imaterial_data
|
enstat.imaterial_data = imaterial_data
|
||||||
# 其他成本数据
|
# 其他成本数据
|
||||||
|
@ -374,7 +419,8 @@ def cal_enstat(type, sflogId, mgroupId, year, month, day, hour, year_s, month_s,
|
||||||
other_cost_unit = 0
|
other_cost_unit = 0
|
||||||
fee_qs = Fee.objects.order_by('sort')
|
fee_qs = Fee.objects.order_by('sort')
|
||||||
for fee in fee_qs:
|
for fee in fee_qs:
|
||||||
item = {'element': fee.element, 'cate': fee.cate, 'name': fee.name, 'id': fee.id}
|
item = {'element': fee.element, 'cate': fee.cate,
|
||||||
|
'name': fee.name, 'id': fee.id}
|
||||||
item['cost_unit'] = get_cost_unit(mgroup, fee, year_s, month_s)
|
item['cost_unit'] = get_cost_unit(mgroup, fee, year_s, month_s)
|
||||||
other_cost_unit = other_cost_unit + item['cost_unit']
|
other_cost_unit = other_cost_unit + item['cost_unit']
|
||||||
other_cost_data.append(item)
|
other_cost_data.append(item)
|
||||||
|
@ -410,10 +456,12 @@ def cal_enstat(type, sflogId, mgroupId, year, month, day, hour, year_s, month_s,
|
||||||
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()
|
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()
|
||||||
if pre_enstat:
|
if pre_enstat:
|
||||||
try:
|
try:
|
||||||
enstat.celec_consume_unit = enstat.elec_consume_unit + 1.45*pre_enstat.elec_consume_unit
|
enstat.celec_consume_unit = enstat.elec_consume_unit + \
|
||||||
|
1.45*pre_enstat.elec_consume_unit
|
||||||
enstat.save()
|
enstat.save()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
pass
|
pass
|
||||||
|
@ -421,14 +469,18 @@ def cal_enstat(type, sflogId, mgroupId, year, month, day, hour, year_s, month_s,
|
||||||
# 算总煤耗
|
# 算总煤耗
|
||||||
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)
|
||||||
enstat.pcoal_coal_consume = enstat.pcoal_consume * enstat.pcoal_heat/7000
|
enstat.pcoal_coal_consume = enstat.pcoal_consume * enstat.pcoal_heat/7000
|
||||||
elif type == 'month_st':
|
elif type == 'month_st':
|
||||||
enstat.pcoal_coal_consume = EnStat.objects.filter(type='sflog', mgroup=enstat.mgroup, year_s=year_s, month_s=month_s, sflog__team=enstat.team).aggregate(sum=Sum('pcoal_coal_consume'))['sum']
|
enstat.pcoal_coal_consume = EnStat.objects.filter(
|
||||||
|
type='sflog', mgroup=enstat.mgroup, year_s=year_s, month_s=month_s, sflog__team=enstat.team).aggregate(sum=Sum('pcoal_coal_consume'))['sum']
|
||||||
elif type == 'month_s':
|
elif type == 'month_s':
|
||||||
enstat.pcoal_coal_consume = EnStat.objects.filter(type='sflog', mgroup=enstat.mgroup, year_s=year_s, month_s=month_s).aggregate(sum=Sum('pcoal_coal_consume'))['sum']
|
enstat.pcoal_coal_consume = EnStat.objects.filter(
|
||||||
|
type='sflog', mgroup=enstat.mgroup, year_s=year_s, month_s=month_s).aggregate(sum=Sum('pcoal_coal_consume'))['sum']
|
||||||
elif type == 'year_s':
|
elif type == 'year_s':
|
||||||
enstat.pcoal_coal_consume = EnStat.objects.filter(type='sflog', mgroup=enstat.mgroup, year_s=year_s).aggregate(sum=Sum('pcoal_coal_consume'))['sum']
|
enstat.pcoal_coal_consume = EnStat.objects.filter(
|
||||||
|
type='sflog', mgroup=enstat.mgroup, year_s=year_s).aggregate(sum=Sum('pcoal_coal_consume'))['sum']
|
||||||
|
|
||||||
if enstat.pcoal_coal_consume is None:
|
if enstat.pcoal_coal_consume is None:
|
||||||
enstat.pcoal_coal_consume = 0
|
enstat.pcoal_coal_consume = 0
|
||||||
|
@ -440,17 +492,21 @@ def cal_enstat(type, sflogId, mgroupId, year, month, day, hour, year_s, month_s,
|
||||||
pass
|
pass
|
||||||
|
|
||||||
# 综合能耗
|
# 综合能耗
|
||||||
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()
|
||||||
if enstat.mgroup.name == '水泥磨' and enstat.type not in ['month_st', 'sflog'] and 'pcoal' in this_cal_attrs:
|
if enstat.mgroup.name == '水泥磨' and enstat.type not in ['month_st', 'sflog'] and 'pcoal' in this_cal_attrs:
|
||||||
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()
|
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()
|
||||||
if pre_enstat:
|
if pre_enstat:
|
||||||
# 综合能耗
|
# 综合能耗
|
||||||
enstat.cen_consume_unit = enstat.elec_consume_unit*0.1229 + 0.7*pre_enstat.cen_consume_unit
|
enstat.cen_consume_unit = enstat.elec_consume_unit * \
|
||||||
|
0.1229 + 0.7*pre_enstat.cen_consume_unit
|
||||||
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_hour_now, enstat.shut_hour = get_total_hour_now_and_shut_hour(enstat)
|
enstat.total_hour_now, enstat.shut_hour = get_total_hour_now_and_shut_hour(
|
||||||
|
enstat)
|
||||||
enstat.run_hour = enstat.total_hour_now - enstat.shut_hour
|
enstat.run_hour = enstat.total_hour_now - enstat.shut_hour
|
||||||
try:
|
try:
|
||||||
enstat.run_rate = (enstat.run_hour / enstat.total_hour_now)*100
|
enstat.run_rate = (enstat.run_hour / enstat.total_hour_now)*100
|
||||||
|
@ -509,6 +565,7 @@ def get_total_hour_now_and_shut_hour(enstat: EnStat):
|
||||||
)
|
)
|
||||||
return res['sum1'] if res['sum1'] else 0, res['sum2'] if res['sum2'] else 0
|
return res['sum1'] if res['sum1'] else 0, res['sum2'] if res['sum2'] else 0
|
||||||
|
|
||||||
|
|
||||||
@shared_task(base=CustomTask)
|
@shared_task(base=CustomTask)
|
||||||
def cal_enstat2(type: str, year_s: int, month_s: int, day_s: int, cascade=True):
|
def cal_enstat2(type: str, year_s: int, month_s: int, day_s: int, cascade=True):
|
||||||
if cascade:
|
if cascade:
|
||||||
|
@ -520,53 +577,69 @@ def cal_enstat2(type: str, year_s: int, month_s: int, day_s: int, cascade=True):
|
||||||
else:
|
else:
|
||||||
return
|
return
|
||||||
if type == 'month_s':
|
if type == 'month_s':
|
||||||
enstat2, _ = EnStat2.objects.get_or_create(type="month_s", year_s=year_s, month_s=month_s, defaults={'year_s': year_s, 'month_s': month_s, 'type': 'month_s'})
|
enstat2, _ = EnStat2.objects.get_or_create(type="month_s", year_s=year_s, month_s=month_s, defaults={
|
||||||
|
'year_s': year_s, 'month_s': month_s, 'type': 'month_s'})
|
||||||
elif type == 'day_s':
|
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.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) # 加锁
|
# enstat2 = EnStat2.objects.select_for_update().get(id=enstat2.id) # 加锁
|
||||||
material_cement = Material.objects.get(code='cement')
|
material_cement = Material.objects.get(code='cement')
|
||||||
material_clinker = Material.objects.get(code='clinker')
|
material_clinker = Material.objects.get(code='clinker')
|
||||||
material_bulk_cement = Material.objects.get(code='bulk_cement')
|
material_bulk_cement = Material.objects.get(code='bulk_cement')
|
||||||
material_bag_cement = Material.objects.get(code='bag_cement')
|
material_bag_cement = Material.objects.get(code='bag_cement')
|
||||||
|
|
||||||
enstat2.bulk_cement_price = get_price_unit(material_bulk_cement, year_s, month_s)
|
enstat2.bulk_cement_price = get_price_unit(
|
||||||
|
material_bulk_cement, year_s, month_s)
|
||||||
enstat2.clinker_price = get_price_unit(material_clinker, year_s, month_s)
|
enstat2.clinker_price = get_price_unit(material_clinker, year_s, month_s)
|
||||||
enstat2.bag_cement_price = get_price_unit(material_bag_cement, year_s, month_s)
|
enstat2.bag_cement_price = get_price_unit(
|
||||||
|
material_bag_cement, year_s, month_s)
|
||||||
if type == '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=material_bulk_cement, year_s=year_s, month_s=month_s).aggregate(sum=Sum('val'))['sum']
|
||||||
elif type == 'day_s':
|
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=material_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:
|
if enstat2.bulk_cement_val is None:
|
||||||
enstat2.bulk_cement_val = 0
|
enstat2.bulk_cement_val = 0
|
||||||
if type == 'month_s':
|
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=material_bag_cement, year_s=year_s, month_s=month_s).aggregate(sum=Sum('val'))['sum']
|
||||||
elif type == 'day_s':
|
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=material_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:
|
if enstat2.bag_cement_val is None:
|
||||||
enstat2.bag_cement_val = 0
|
enstat2.bag_cement_val = 0
|
||||||
if type == 'month_s':
|
if type == 'month_s':
|
||||||
enstat2.clinker_val = MpointStat.objects.filter(type='month_s', mpoint__material=material_cement, year_s=year_s, month_s=month_s).aggregate(sum=Sum('val'))['sum']
|
enstat2.clinker_val = MpointStat.objects.filter(
|
||||||
|
type='month_s', mpoint__material=material_cement, year_s=year_s, month_s=month_s).aggregate(sum=Sum('val'))['sum']
|
||||||
elif type == 'day_s':
|
elif type == 'day_s':
|
||||||
enstat2.clinker_val = MpointStat.objects.filter(type='day_s', mpoint__material=material_cement, year_s=year_s, month_s=month_s, day_s=day_s).aggregate(sum=Sum('val'))['sum']
|
enstat2.clinker_val = MpointStat.objects.filter(
|
||||||
|
type='day_s', mpoint__material=material_cement, year_s=year_s, month_s=month_s, day_s=day_s).aggregate(sum=Sum('val'))['sum']
|
||||||
if enstat2.clinker_val is None:
|
if enstat2.clinker_val is None:
|
||||||
enstat2.clinker_val = 0
|
enstat2.clinker_val = 0
|
||||||
|
|
||||||
enstat2.industry_total_val = (enstat2.bulk_cement_val*enstat2.bulk_cement_price+enstat2.bag_cement_val*enstat2.bag_cement_price+enstat2.clinker_val*enstat2.clinker_price)/10000
|
enstat2.industry_total_val = (enstat2.bulk_cement_val*enstat2.bulk_cement_price+enstat2.bag_cement_val *
|
||||||
|
enstat2.bag_cement_price+enstat2.clinker_val*enstat2.clinker_price)/10000
|
||||||
|
|
||||||
if type == 'month_s':
|
if type == 'month_s':
|
||||||
res = EnStat.objects.filter(mgroup__product__code='cement', type='month_s', year_s=year_s, month_s=month_s).aggregate(sum=Sum('total_production'), avg=Avg('production_cost_unit'))
|
res = EnStat.objects.filter(mgroup__product__code='cement', type='month_s', year_s=year_s, month_s=month_s).aggregate(
|
||||||
|
sum=Sum('total_production'), avg=Avg('production_cost_unit'))
|
||||||
elif type == 'day_s':
|
elif type == 'day_s':
|
||||||
res = EnStat.objects.filter(mgroup__product__code='cement', type='day_s', year_s=year_s, month_s=month_s, day_s=day_s).aggregate(sum=Sum('total_production'), avg=Avg('production_cost_unit'))
|
res = EnStat.objects.filter(mgroup__product__code='cement', type='day_s', year_s=year_s, month_s=month_s, day_s=day_s).aggregate(
|
||||||
|
sum=Sum('total_production'), avg=Avg('production_cost_unit'))
|
||||||
|
|
||||||
enstat2.cement_val = res['sum'] if res['sum'] else 0
|
enstat2.cement_val = res['sum'] if res['sum'] else 0
|
||||||
enstat2.cement_cost_unit = res['avg'] if res['avg'] else 0
|
enstat2.cement_cost_unit = res['avg'] if res['avg'] else 0
|
||||||
enstat2.industry_add_val = enstat2.industry_total_val - enstat2.cement_val * enstat2.cement_cost_unit /10000
|
enstat2.industry_add_val = enstat2.industry_total_val - \
|
||||||
|
enstat2.cement_val * enstat2.cement_cost_unit / 10000
|
||||||
|
|
||||||
# 全厂电量
|
# 全厂电量
|
||||||
if type == 'month_s':
|
if type == 'month_s':
|
||||||
enstat_qs = EnStat.objects.filter(type='month_s', year_s=year_s, month_s=month_s)
|
enstat_qs = EnStat.objects.filter(
|
||||||
|
type='month_s', year_s=year_s, month_s=month_s)
|
||||||
elif type == 'day_s':
|
elif type == 'day_s':
|
||||||
enstat_qs = EnStat.objects.filter(type='day_s', year_s=year_s, month_s=month_s, day_s=day_s)
|
enstat_qs = EnStat.objects.filter(
|
||||||
|
type='day_s', year_s=year_s, month_s=month_s, day_s=day_s)
|
||||||
res_elec_pcoal = enstat_qs.aggregate(sum1=Sum('elec_consume'), sum2=Sum('elec_coal_consume'), sum3=Sum('pcoal_consume'), sum4=Sum('pcoal_coal_consume'),
|
res_elec_pcoal = enstat_qs.aggregate(sum1=Sum('elec_consume'), sum2=Sum('elec_coal_consume'), sum3=Sum('pcoal_consume'), sum4=Sum('pcoal_coal_consume'),
|
||||||
sum5=Sum('water_consume'), sum6=Sum('cair_consume'))
|
sum5=Sum('water_consume'), sum6=Sum('cair_consume'))
|
||||||
enstat2.elec_consume = res_elec_pcoal['sum1'] if res_elec_pcoal['sum1'] else 0
|
enstat2.elec_consume = res_elec_pcoal['sum1'] if res_elec_pcoal['sum1'] else 0
|
||||||
|
@ -593,11 +666,14 @@ def cal_enstat_pcoal_change(enstat, new_pcoal_heat):
|
||||||
enstat.pcoal_heat = new_pcoal_heat
|
enstat.pcoal_heat = new_pcoal_heat
|
||||||
enstat.pcoal_coal_consume = enstat.pcoal_consume * enstat.pcoal_heat/7000
|
enstat.pcoal_coal_consume = enstat.pcoal_consume * enstat.pcoal_heat/7000
|
||||||
elif type == 'month_st':
|
elif type == 'month_st':
|
||||||
enstat.pcoal_coal_consume = EnStat.objects.filter(type='sflog', mgroup=enstat.mgroup, year_s=enstat.year_s, month_s=enstat.month_s, sflog__team=enstat.team).aggregate(sum=Sum('pcoal_coal_consume'))['sum']
|
enstat.pcoal_coal_consume = EnStat.objects.filter(type='sflog', mgroup=enstat.mgroup, year_s=enstat.year_s,
|
||||||
|
month_s=enstat.month_s, sflog__team=enstat.team).aggregate(sum=Sum('pcoal_coal_consume'))['sum']
|
||||||
elif type == 'month_s':
|
elif type == 'month_s':
|
||||||
enstat.pcoal_coal_consume = EnStat.objects.filter(type='sflog', mgroup=enstat.mgroup, year_s=enstat.year_s, month_s=enstat.month_s).aggregate(sum=Sum('pcoal_coal_consume'))['sum']
|
enstat.pcoal_coal_consume = EnStat.objects.filter(
|
||||||
|
type='sflog', mgroup=enstat.mgroup, year_s=enstat.year_s, month_s=enstat.month_s).aggregate(sum=Sum('pcoal_coal_consume'))['sum']
|
||||||
elif type == 'year_s':
|
elif type == 'year_s':
|
||||||
enstat.pcoal_coal_consume = EnStat.objects.filter(type='sflog', mgroup=enstat.mgroup, year_s=enstat.year_s).aggregate(sum=Sum('pcoal_coal_consume'))['sum']
|
enstat.pcoal_coal_consume = EnStat.objects.filter(
|
||||||
|
type='sflog', mgroup=enstat.mgroup, year_s=enstat.year_s).aggregate(sum=Sum('pcoal_coal_consume'))['sum']
|
||||||
|
|
||||||
if enstat.pcoal_coal_consume is None:
|
if enstat.pcoal_coal_consume is None:
|
||||||
enstat.pcoal_coal_consume = 0
|
enstat.pcoal_coal_consume = 0
|
||||||
|
@ -608,14 +684,18 @@ def cal_enstat_pcoal_change(enstat, new_pcoal_heat):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
# 综合能耗
|
# 综合能耗
|
||||||
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(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()
|
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()
|
||||||
if next_enstat:
|
if next_enstat:
|
||||||
next_enstat.cen_consume_unit = next_enstat.elec_consume_unit*0.1229 + 0.7*enstat.cen_consume_unit
|
next_enstat.cen_consume_unit = next_enstat.elec_consume_unit * \
|
||||||
|
0.1229 + 0.7*enstat.cen_consume_unit
|
||||||
next_enstat.save(update_fields=['cen_consume_unit'])
|
next_enstat.save(update_fields=['cen_consume_unit'])
|
||||||
|
|
||||||
|
|
||||||
|
@ -625,6 +705,7 @@ enm_alarms_list = [
|
||||||
['水泥磨', 'elec_consume_unit', '单位产品分布电耗']
|
['水泥磨', 'elec_consume_unit', '单位产品分布电耗']
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
@shared_task(base=CustomTask)
|
@shared_task(base=CustomTask)
|
||||||
def enm_alarm(year_s: int, month_s: int, day_s: int):
|
def enm_alarm(year_s: int, month_s: int, day_s: int):
|
||||||
"""
|
"""
|
||||||
|
@ -634,16 +715,19 @@ def enm_alarm(year_s: int, month_s: int, day_s: int):
|
||||||
from apps.mtm.models import Goal
|
from apps.mtm.models import Goal
|
||||||
from apps.ecm.service import notify_event
|
from apps.ecm.service import notify_event
|
||||||
now = timezone.now()
|
now = timezone.now()
|
||||||
event_cate, _ = EventCate.objects.get_or_create(code='consume_exceed', defaults={'name': '能耗超过目标值', 'code': 'consume_exceed', 'trigger': 30})
|
event_cate, _ = EventCate.objects.get_or_create(code='consume_exceed', defaults={
|
||||||
|
'name': '能耗超过目标值', 'code': 'consume_exceed', 'trigger': 30})
|
||||||
for item in enm_alarms_list:
|
for item in enm_alarms_list:
|
||||||
mgroups = Mgroup.objects.filter(name=item[0])
|
mgroups = Mgroup.objects.filter(name=item[0])
|
||||||
for mgroup in mgroups:
|
for mgroup in mgroups:
|
||||||
enstat = EnStat.objects.filter(mgroup=mgroup, type='day_s', year_s=year_s, month_s=month_s, day_s=day_s).first()
|
enstat = EnStat.objects.filter(
|
||||||
|
mgroup=mgroup, type='day_s', year_s=year_s, month_s=month_s, day_s=day_s).first()
|
||||||
if enstat:
|
if enstat:
|
||||||
mgroup_name = item[0]
|
mgroup_name = item[0]
|
||||||
goal_cate_str = item[1]
|
goal_cate_str = item[1]
|
||||||
real_val = getattr(enstat, goal_cate_str, None)
|
real_val = getattr(enstat, goal_cate_str, None)
|
||||||
goal = Goal.objects.filter(goal_cate__code=goal_cate_str, year=year_s, mgroup=mgroup).first()
|
goal = Goal.objects.filter(
|
||||||
|
goal_cate__code=goal_cate_str, year=year_s, mgroup=mgroup).first()
|
||||||
if goal:
|
if goal:
|
||||||
goal_val = getattr(goal, f'goal_val_{month_s}', None)
|
goal_val = getattr(goal, f'goal_val_{month_s}', None)
|
||||||
if goal_val and real_val and real_val > goal_val: # 触发事件
|
if goal_val and real_val and real_val > goal_val: # 触发事件
|
||||||
|
@ -651,12 +735,11 @@ def enm_alarm(year_s: int, month_s: int, day_s: int):
|
||||||
event.obj_cate = 'enm'
|
event.obj_cate = 'enm'
|
||||||
event.happen_time = now
|
event.happen_time = now
|
||||||
event.voice_msg = f'{mgroup_name}{item[2]}超过设定目标值'
|
event.voice_msg = f'{mgroup_name}{item[2]}超过设定目标值'
|
||||||
event.enm_data = {'mgroup': mgroup.id, 'mgroup_name': mgroup.name, 'type': f'{goal_cate_str}.exceed', 'year_s': year_s, 'month_s': month_s, 'day_s': day_s, 'val': real_val, 'goal_val': goal_val, 'enstat': enstat.id}
|
event.enm_data = {'mgroup': mgroup.id, 'mgroup_name': mgroup.name, 'type': f'{goal_cate_str}.exceed',
|
||||||
|
'year_s': year_s, 'month_s': month_s, 'day_s': day_s, 'val': real_val, 'goal_val': goal_val, 'enstat': enstat.id}
|
||||||
event.save()
|
event.save()
|
||||||
Eventdo.objects.get_or_create(cate=event_cate, event=event, defaults={
|
Eventdo.objects.get_or_create(cate=event_cate, event=event, defaults={
|
||||||
'cate': event_cate,
|
'cate': event_cate,
|
||||||
'event': event
|
'event': event
|
||||||
})
|
})
|
||||||
notify_event(event)
|
notify_event(event)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue