feat: 获取first_time, last_time独立出一个方法
This commit is contained in:
parent
e1eaa78b11
commit
a34514160d
|
@ -5,7 +5,7 @@ from apps.wpm.models import Mlogb, MlogbDefect
|
|||
import decimal
|
||||
from django.db.models import Sum
|
||||
from datetime import datetime
|
||||
|
||||
from apps.wpm.services_2 import get_f_l_date
|
||||
myLogger = logging.getLogger("log")
|
||||
|
||||
def main(batch: str):
|
||||
|
@ -109,24 +109,10 @@ def main(batch: str):
|
|||
except decimal.InvalidOperation:
|
||||
data["外观检验_完全直通合格率"] = 0
|
||||
|
||||
first_time = None
|
||||
last_time = None
|
||||
for k, v in data.items():
|
||||
if k.endswith("_日期"):
|
||||
if v:
|
||||
v = v.split(";")
|
||||
if first_time is None:
|
||||
first_time = min(v)
|
||||
else:
|
||||
first_time = min(first_time, min(v))
|
||||
if last_time is None:
|
||||
last_time = max(v)
|
||||
else:
|
||||
last_time = max(last_time, max(v))
|
||||
res = get_f_l_date(data)
|
||||
|
||||
|
||||
return data, {"first_time": datetime.strptime(f"{first_time} 00:00:00", "%Y-%m-%d %H:%M:%S").replace(tzinfo=tz_shanghai) if first_time else None,
|
||||
"last_time": datetime.strptime(f"{last_time} 23:59:59", "%Y-%m-%d %H:%M:%S").replace(tzinfo=tz_shanghai) if last_time else None}
|
||||
return data, res
|
||||
|
||||
if __name__ == '__main__':
|
||||
pass
|
|
@ -3,7 +3,6 @@ from apps.mtm.models import Mgroup
|
|||
from apps.system.models import Dept
|
||||
from apps.inm.models import MIOItem
|
||||
from apps.qm.models import FtestWork
|
||||
from django.utils import timezone
|
||||
from datetime import datetime
|
||||
from django.conf import settings
|
||||
import json
|
||||
|
@ -12,7 +11,10 @@ import decimal
|
|||
from apps.utils.thread import MyThread
|
||||
import logging
|
||||
import time
|
||||
from zoneinfo import ZoneInfo
|
||||
|
||||
myLogger = logging.getLogger('log')
|
||||
tz_shanghai = ZoneInfo("Asia/Shanghai")
|
||||
|
||||
# 批次统计分析
|
||||
|
||||
|
@ -58,7 +60,6 @@ def get_alldata_with_batch(batch: str):
|
|||
"""
|
||||
获取某个批次的整体生产数据
|
||||
"""
|
||||
last_time = timezone.make_aware(datetime(1990, 4, 4, 0, 0, 0))
|
||||
data = {"产品批次编号": batch}
|
||||
dept7 = Dept.objects.get(name='7车间')
|
||||
dept6 = Dept.objects.get(name='6车间')
|
||||
|
@ -68,7 +69,6 @@ def get_alldata_with_batch(batch: str):
|
|||
|
||||
mlog_count_fields = Mlog.count_fields()
|
||||
|
||||
first_time = None
|
||||
material_start = None
|
||||
if mlogs_blcx_qs.exists():
|
||||
data["产品规格"] = []
|
||||
|
@ -76,9 +76,6 @@ def get_alldata_with_batch(batch: str):
|
|||
data["棒料成型_切料人"] = []
|
||||
data["棒料成型_备注"] = ""
|
||||
for item in mlogs_blcx_qs:
|
||||
utime = item.submit_time
|
||||
last_time = utime if utime > last_time else last_time
|
||||
first_time = utime if first_time is None else (utime if utime < first_time else first_time)
|
||||
if material_start is None:
|
||||
material_start = item.material_out
|
||||
data["产品规格"].append(item.material_out) # 对象
|
||||
|
@ -116,9 +113,6 @@ def get_alldata_with_batch(batch: str):
|
|||
data["产品规格"] = []
|
||||
data["管料成型_备注"] = ""
|
||||
for item in mlogs_glcx_qs:
|
||||
utime = item.submit_time
|
||||
last_time = utime if utime > last_time else last_time
|
||||
first_time = utime if first_time is None else (utime if utime < first_time else first_time)
|
||||
if material_start is None:
|
||||
material_start = item.material_out
|
||||
data["产品规格"].append(item.material_out) # 对象
|
||||
|
@ -143,9 +137,6 @@ def get_alldata_with_batch(batch: str):
|
|||
data["七车间入库_仓库执行人"] = []
|
||||
data["七车间入库_检验备注"] = ""
|
||||
for item in mioitem_qs:
|
||||
utime = item.mio.submit_time
|
||||
last_time = utime if utime > last_time else last_time
|
||||
first_time = utime if first_time is None else (utime if utime < first_time else first_time)
|
||||
if material_start is None:
|
||||
material_start = item.material
|
||||
data["七车间入库_日期"].append(item.mio.inout_date)
|
||||
|
@ -181,9 +172,6 @@ def get_alldata_with_batch(batch: str):
|
|||
data["十车间入库_日期"] = []
|
||||
data["十车间入库_检验备注"] = ""
|
||||
for item in mioitem10_qs:
|
||||
utime = item.mio.submit_time
|
||||
last_time = utime if utime > last_time else last_time
|
||||
first_time = utime if first_time is None else (utime if utime < first_time else first_time)
|
||||
if material_start is None:
|
||||
material_start = item.material
|
||||
if item.test_note:
|
||||
|
@ -220,13 +208,6 @@ def get_alldata_with_batch(batch: str):
|
|||
data["产品规格"] = []
|
||||
for item in mlogs_glth_qs:
|
||||
data["产品规格"].append(item.material_out)
|
||||
utime = item.submit_time
|
||||
last_time = utime if utime > last_time else last_time
|
||||
first_time = utime if first_time is None else (utime if utime < first_time else first_time)
|
||||
if first_time is None:
|
||||
first_time = item.update_time
|
||||
else:
|
||||
first_time = item.update_time if item.update_time < first_time else first_time
|
||||
if material_start is None:
|
||||
material_start = item.material_out
|
||||
if item.note:
|
||||
|
@ -260,9 +241,6 @@ def get_alldata_with_batch(batch: str):
|
|||
data["产品规格"] = []
|
||||
for item in mioitem6_qs:
|
||||
data["产品规格"].append(item.material)
|
||||
utime = item.mio.submit_time
|
||||
last_time = utime if utime > last_time else last_time
|
||||
first_time = utime if first_time is None else (utime if utime < first_time else first_time)
|
||||
if material_start is None:
|
||||
material_start = item.material
|
||||
data["六车间领料_日期"].append(item.mio.inout_date)
|
||||
|
@ -300,9 +278,6 @@ def get_alldata_with_batch(batch: str):
|
|||
data[f'六车间_{mgroup_name}_操作人'] = []
|
||||
data[f'六车间_{mgroup_name}_备注'] = ""
|
||||
for item in mlogs_qs:
|
||||
utime = item.submit_time
|
||||
last_time = utime if utime > last_time else last_time
|
||||
first_time = utime if first_time is None else (utime if utime < first_time else first_time)
|
||||
if material_start is None:
|
||||
material_start = item.material_out
|
||||
if item.note:
|
||||
|
@ -334,9 +309,6 @@ def get_alldata_with_batch(batch: str):
|
|||
data["六车间中检_日期"] = []
|
||||
data['六车间中检_检验人'] = []
|
||||
for item in ftestwork_qs:
|
||||
utime = item.update_time
|
||||
last_time = utime if utime > last_time else last_time
|
||||
first_time = utime if first_time is None else (utime if utime < first_time else first_time)
|
||||
if material_start is None:
|
||||
material_start = item.material
|
||||
if item.test_date:
|
||||
|
@ -370,9 +342,6 @@ def get_alldata_with_batch(batch: str):
|
|||
data["六车间生产入库_检验日期"] = []
|
||||
data["六车间生产入库_检验人"] = []
|
||||
for item in mioitem6_qs2:
|
||||
utime = item.mio.submit_time
|
||||
last_time = utime if utime > last_time else last_time
|
||||
first_time = utime if first_time is None else (utime if utime < first_time else first_time)
|
||||
if material_start is None:
|
||||
material_start = item.material
|
||||
data["六车间生产入库_日期"].append(item.mio.inout_date)
|
||||
|
@ -400,9 +369,6 @@ def get_alldata_with_batch(batch: str):
|
|||
data["成品检验_日期"] = []
|
||||
data['成品检验_检验人'] = []
|
||||
for item in ftestwork_qs:
|
||||
utime = item.update_time
|
||||
last_time = utime if utime > last_time else last_time
|
||||
first_time = utime if first_time is None else (utime if utime < first_time else first_time)
|
||||
if material_start is None:
|
||||
material_start = item.material
|
||||
if item.test_date:
|
||||
|
@ -439,9 +405,6 @@ def get_alldata_with_batch(batch: str):
|
|||
data['销售发货_仓库执行人'] = []
|
||||
data['销售发货_count'] = 0
|
||||
for item in mioitem_qs:
|
||||
utime = item.mio.submit_time
|
||||
last_time = utime if utime > last_time else last_time
|
||||
first_time = utime if first_time is None else (utime if utime < first_time else first_time)
|
||||
if material_start is None:
|
||||
material_start = item.material
|
||||
if item.mio.inout_date:
|
||||
|
@ -453,7 +416,31 @@ def get_alldata_with_batch(batch: str):
|
|||
data["七车间_批次发货合格率"] = round(data["销售发货_count"] * 100/ data["棒料成型_count_real"], 1)
|
||||
if getattr(data, "六车间领料_count", 0) > 0:
|
||||
data["六车间_批次发货合格率"] = round(data["销售发货_count"] * 100/ data["六车间领料_count"], 1)
|
||||
data['销售发货_仓库执行人'] = list(set(data['销售发货_仓库执行人']))
|
||||
data['销售发货_仓库执行人'] = ";".join([item.name for item in data['销售发货_仓库执行人']])
|
||||
data["销售发货_日期"] = list(set(data["销售发货_日期"]))
|
||||
data["销售发货_日期"] = ";".join([item.strftime("%Y-%m-%d") for item in data["销售发货_日期"]])
|
||||
|
||||
return data, {"material_start": material_start, "last_time": last_time, "first_time": first_time}
|
||||
|
||||
res = get_f_l_date(data)
|
||||
return data, {"material_start": material_start, **res}
|
||||
|
||||
|
||||
def get_f_l_date(data):
|
||||
first_date = None
|
||||
last_date = None
|
||||
for k, v in data.items():
|
||||
if k.endswith("_日期"):
|
||||
if v:
|
||||
v = v.split(";")
|
||||
if first_date is None:
|
||||
first_date = min(v)
|
||||
else:
|
||||
first_date = min(first_date, min(v))
|
||||
if last_date is None:
|
||||
last_date = max(v)
|
||||
else:
|
||||
last_date = max(last_date, max(v))
|
||||
return {"first_date": first_date,
|
||||
"last_date": last_date,
|
||||
"first_time": datetime.strptime(f"{first_date} 00:00:00", "%Y-%m-%d %H:%M:%S").replace(tzinfo=tz_shanghai) if first_date else None,
|
||||
"last_time": datetime.strptime(f"{last_date} 23:59:59", "%Y-%m-%d %H:%M:%S").replace(tzinfo=tz_shanghai) if last_date else None}
|
||||
|
|
Loading…
Reference in New Issue