feat: 投产分析
This commit is contained in:
parent
9a26529e0a
commit
1490a35a32
|
@ -8,6 +8,7 @@ from django.db.models import Sum
|
|||
from datetime import datetime, timedelta
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.serializers import Serializer
|
||||
from apps.inm.models import MIOItem, MIO
|
||||
|
||||
def tran_time_to_mstate(mstate_json, reminder_interval_list, work_start_time: datetime, now: datetime):
|
||||
if len(reminder_interval_list) != len(mstate_json):
|
||||
|
@ -35,9 +36,8 @@ class AnaViewSet(GenericViewSet):
|
|||
equip_qs_v = equip_qs.values('id', 'name', 'number', 'state').order_by('number')
|
||||
equip_qs_l = list(equip_qs_v)
|
||||
# 设备最后生产日志
|
||||
mlog_qs = Mlog.objects.filter(equipment__in=equip_qs, mgroup=mgroup)
|
||||
mlog_qs = mlog_qs | Mlog.objects.filter(work_start_time__lte=now, work_end_time__isnull=True)
|
||||
mlog_qs = mlog_qs | Mlog.objects.filter(work_start_time__lte=now, work_end_time__gte=now)
|
||||
mlog_qs_0 = Mlog.objects.filter(equipment__in=equip_qs, mgroup=mgroup)
|
||||
mlog_qs = mlog_qs_0.exclude(work_end_time__lt=now)
|
||||
mlog_qs = mlog_qs.annotate(t_count_use=Sum('b_mlog__count_use'))
|
||||
mlog_qs = mlog_qs.order_by('work_start_time')
|
||||
mlog_qs_v = mlog_qs.values('id', 'equipment__id', 't_count_use', 'reminder_interval_list', 'work_start_time', 'work_end_time')
|
||||
|
@ -82,13 +82,40 @@ class AnaViewSet(GenericViewSet):
|
|||
"""
|
||||
投产分析
|
||||
"""
|
||||
tomorrow = datetime.now() + timedelta(days=1)
|
||||
for i in range(8):
|
||||
timex = tomorrow - timedelta(days=i)
|
||||
now = timezone.now()
|
||||
tomorrow = now + timedelta(days=1)
|
||||
now_2 = now.replace(hour=2, minute=0, second=0, microsecond=0)
|
||||
timex_2 = tomorrow.replace(hour=2, minute=0, second=0, microsecond=0)
|
||||
timex_8_ago = timex_2 - timedelta(days=8)
|
||||
mgroup: Mgroup = Mgroup.objects.get(name='退火')
|
||||
# 子状态
|
||||
mstate_json = mgroup.process.mstate_json
|
||||
# 生产记录
|
||||
handover_qs = Handover.objects.filter(material__process=mgroup.process, send_mgroup=mgroup, type=Handover.H_NORMAL)
|
||||
pass
|
||||
ret = {}
|
||||
ret['今日退火投产预测'] = 0
|
||||
ret['明日退火投产预测'] = 0
|
||||
ret['rows'] = {}
|
||||
# 生产记录/今日退火投产预测
|
||||
# 昨日2点
|
||||
now_2_yesterday = now_2 - timedelta(days=1)
|
||||
|
||||
mlog_qs_0 = Mlog.objects.filter(mgroup=mgroup)
|
||||
mlog_qs = mlog_qs_0.exclude(work_end_time__lt=now_2_yesterday).annotate(t_count_use=Sum('b_mlog__count_use')).order_by('work_start_time')
|
||||
mlog_qs_v = mlog_qs.values('id', 'equipment__id', 't_count_use', 'reminder_interval_list', 'work_start_time', 'work_end_time')
|
||||
mlog_qs_l = list(mlog_qs_v)
|
||||
|
||||
for item in mlog_qs_l:
|
||||
if tran_time_to_mstate(mstate_json, item['reminder_interval_list'], item['work_start_time'], now) == '冷却':
|
||||
if item['work_end_time'] is None or item['work_end_time'] > now_2:
|
||||
ret['明日退火投产预测'] += item['t_count_use']
|
||||
ret['今日退火投产预测'] += item['t_count_use']
|
||||
|
||||
return ret
|
||||
# # 交接记录
|
||||
# handover_qs = Handover.objects.filter(material__process=mgroup.process, send_mgroup=mgroup, type=Handover.H_NORMAL,
|
||||
# submit_time__range=[timex_8_ago, timex_2]).values('id', 'submit_time', 'count')
|
||||
# handover_qs_l = list(handover_qs)
|
||||
|
||||
# # 生产入库
|
||||
# mioitem_qs = MIOItem.objects.filter(mio__mgroup=mgroup, material__process=mgroup.process, mio__type=MIO.MIO_TYPE_DO_IN,
|
||||
# mio__submit_time__range=[timex_8_ago, timex_2]).values('id', 'mio__submit_time', 'count')
|
||||
|
||||
|
|
Loading…
Reference in New Issue