75 lines
2.9 KiB
Python
75 lines
2.9 KiB
Python
import datetime
|
|
|
|
from django.core.cache import cache
|
|
from django.db.models import Sum
|
|
from django.utils.timezone import localtime
|
|
|
|
from apps.inm.models import MIO, MIOItem
|
|
from apps.mtm.models import Mgroup, Shift
|
|
|
|
from .models import SfLog, SfLogExp, WMaterial
|
|
|
|
|
|
def make_sflogs(mgroup: Mgroup, start_date: datetime.date, end_date: datetime.date):
|
|
for shift in Shift.objects.all():
|
|
start_time_o = shift.start_time_o
|
|
end_time_o = shift.end_time_o
|
|
current_date = start_date
|
|
while current_date <= end_date:
|
|
start_time = datetime.datetime.combine(current_date, start_time_o)
|
|
end_time = datetime.datetime.combine(current_date, end_time_o)
|
|
if start_time > end_time:
|
|
start_time -= datetime.timedelta(days=1)
|
|
SfLog.objects.get_or_create(mgroup=mgroup, shift=shift, start_time=start_time, defaults={
|
|
"mgroup": mgroup,
|
|
"shift": shift,
|
|
"start_time": start_time,
|
|
"end_time": end_time,
|
|
"total_hour_now": 12
|
|
})
|
|
current_date = current_date + datetime.timedelta(days=1)
|
|
|
|
|
|
def get_pcoal_heat(year_s: int, month_s: int, day_s: int):
|
|
"""
|
|
获取煤粉热值
|
|
只有回转窑需要录入煤粉热值
|
|
"""
|
|
key = f'pgoal_val_{year_s}_{month_s}_{day_s}'
|
|
pcoal_heat = cache.get(key, None)
|
|
if pcoal_heat is not None:
|
|
return pcoal_heat
|
|
else:
|
|
try:
|
|
qs = SfLog.objects.get(end_time__year=year_s, end_time__month=month_s, end_time__day=day_s,
|
|
mgroup__name='回转窑', shift__name='白班')
|
|
if qs.pcoal_heat is None:
|
|
qs.pcoal_heat = 0
|
|
qs.save()
|
|
cache.set(f'pgoal_val_{year_s}_{month_s}_{day_s}', qs.pcoal_heat)
|
|
return qs.pcoal_heat
|
|
except Exception:
|
|
return 0
|
|
|
|
|
|
def pick(mio: MIO):
|
|
"""
|
|
生产领料到车间
|
|
"""
|
|
belong_dept = mio.belong_dept
|
|
pick_user = mio.pick_user
|
|
mioitems = MIOItem.objects.filter(mio=mio)
|
|
for item in mioitems:
|
|
wm, new_create = WMaterial.objects.get_or_create(batch=item.batch, material=item.material,
|
|
belong_dept=belong_dept, defaults={
|
|
"batch": item.batch,
|
|
"material": item.material,
|
|
"count": item.count,
|
|
"create_by": pick_user,
|
|
"belong_dept": belong_dept
|
|
})
|
|
if not new_create:
|
|
wm.count = wm.count + item.count
|
|
wm.update_by = pick_user
|
|
wm.save()
|