feat: 获取first_time, last_time独立出一个方法

This commit is contained in:
caoqianming 2025-06-04 10:05:06 +08:00
parent e1eaa78b11
commit a34514160d
2 changed files with 32 additions and 59 deletions

View File

@ -5,7 +5,7 @@ from apps.wpm.models import Mlogb, MlogbDefect
import decimal import decimal
from django.db.models import Sum from django.db.models import Sum
from datetime import datetime from datetime import datetime
from apps.wpm.services_2 import get_f_l_date
myLogger = logging.getLogger("log") myLogger = logging.getLogger("log")
def main(batch: str): def main(batch: str):
@ -109,24 +109,10 @@ def main(batch: str):
except decimal.InvalidOperation: except decimal.InvalidOperation:
data["外观检验_完全直通合格率"] = 0 data["外观检验_完全直通合格率"] = 0
first_time = None res = get_f_l_date(data)
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))
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, return data, res
"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}
if __name__ == '__main__': if __name__ == '__main__':
pass pass

View File

@ -3,7 +3,6 @@ from apps.mtm.models import Mgroup
from apps.system.models import Dept from apps.system.models import Dept
from apps.inm.models import MIOItem from apps.inm.models import MIOItem
from apps.qm.models import FtestWork from apps.qm.models import FtestWork
from django.utils import timezone
from datetime import datetime from datetime import datetime
from django.conf import settings from django.conf import settings
import json import json
@ -12,7 +11,10 @@ import decimal
from apps.utils.thread import MyThread from apps.utils.thread import MyThread
import logging import logging
import time import time
from zoneinfo import ZoneInfo
myLogger = logging.getLogger('log') 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} data = {"产品批次编号": batch}
dept7 = Dept.objects.get(name='7车间') dept7 = Dept.objects.get(name='7车间')
dept6 = Dept.objects.get(name='6车间') dept6 = Dept.objects.get(name='6车间')
@ -68,7 +69,6 @@ def get_alldata_with_batch(batch: str):
mlog_count_fields = Mlog.count_fields() mlog_count_fields = Mlog.count_fields()
first_time = None
material_start = None material_start = None
if mlogs_blcx_qs.exists(): if mlogs_blcx_qs.exists():
data["产品规格"] = [] data["产品规格"] = []
@ -76,9 +76,6 @@ def get_alldata_with_batch(batch: str):
data["棒料成型_切料人"] = [] data["棒料成型_切料人"] = []
data["棒料成型_备注"] = "" data["棒料成型_备注"] = ""
for item in mlogs_blcx_qs: 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: if material_start is None:
material_start = item.material_out material_start = item.material_out
data["产品规格"].append(item.material_out) # 对象 data["产品规格"].append(item.material_out) # 对象
@ -116,9 +113,6 @@ def get_alldata_with_batch(batch: str):
data["产品规格"] = [] data["产品规格"] = []
data["管料成型_备注"] = "" data["管料成型_备注"] = ""
for item in mlogs_glcx_qs: 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: if material_start is None:
material_start = item.material_out material_start = item.material_out
data["产品规格"].append(item.material_out) # 对象 data["产品规格"].append(item.material_out) # 对象
@ -143,9 +137,6 @@ def get_alldata_with_batch(batch: str):
data["七车间入库_仓库执行人"] = [] data["七车间入库_仓库执行人"] = []
data["七车间入库_检验备注"] = "" data["七车间入库_检验备注"] = ""
for item in mioitem_qs: 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: if material_start is None:
material_start = item.material material_start = item.material
data["七车间入库_日期"].append(item.mio.inout_date) data["七车间入库_日期"].append(item.mio.inout_date)
@ -181,9 +172,6 @@ def get_alldata_with_batch(batch: str):
data["十车间入库_日期"] = [] data["十车间入库_日期"] = []
data["十车间入库_检验备注"] = "" data["十车间入库_检验备注"] = ""
for item in mioitem10_qs: 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: if material_start is None:
material_start = item.material material_start = item.material
if item.test_note: if item.test_note:
@ -220,13 +208,6 @@ def get_alldata_with_batch(batch: str):
data["产品规格"] = [] data["产品规格"] = []
for item in mlogs_glth_qs: for item in mlogs_glth_qs:
data["产品规格"].append(item.material_out) 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: if material_start is None:
material_start = item.material_out material_start = item.material_out
if item.note: if item.note:
@ -260,9 +241,6 @@ def get_alldata_with_batch(batch: str):
data["产品规格"] = [] data["产品规格"] = []
for item in mioitem6_qs: for item in mioitem6_qs:
data["产品规格"].append(item.material) 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: if material_start is None:
material_start = item.material material_start = item.material
data["六车间领料_日期"].append(item.mio.inout_date) 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}_操作人'] = []
data[f'六车间_{mgroup_name}_备注'] = "" data[f'六车间_{mgroup_name}_备注'] = ""
for item in mlogs_qs: 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: if material_start is None:
material_start = item.material_out material_start = item.material_out
if item.note: if item.note:
@ -334,9 +309,6 @@ def get_alldata_with_batch(batch: str):
data["六车间中检_日期"] = [] data["六车间中检_日期"] = []
data['六车间中检_检验人'] = [] data['六车间中检_检验人'] = []
for item in ftestwork_qs: 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: if material_start is None:
material_start = item.material material_start = item.material
if item.test_date: if item.test_date:
@ -370,9 +342,6 @@ def get_alldata_with_batch(batch: str):
data["六车间生产入库_检验日期"] = [] data["六车间生产入库_检验日期"] = []
data["六车间生产入库_检验人"] = [] data["六车间生产入库_检验人"] = []
for item in mioitem6_qs2: 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: if material_start is None:
material_start = item.material material_start = item.material
data["六车间生产入库_日期"].append(item.mio.inout_date) data["六车间生产入库_日期"].append(item.mio.inout_date)
@ -400,9 +369,6 @@ def get_alldata_with_batch(batch: str):
data["成品检验_日期"] = [] data["成品检验_日期"] = []
data['成品检验_检验人'] = [] data['成品检验_检验人'] = []
for item in ftestwork_qs: 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: if material_start is None:
material_start = item.material material_start = item.material
if item.test_date: if item.test_date:
@ -439,9 +405,6 @@ def get_alldata_with_batch(batch: str):
data['销售发货_仓库执行人'] = [] data['销售发货_仓库执行人'] = []
data['销售发货_count'] = 0 data['销售发货_count'] = 0
for item in mioitem_qs: 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: if material_start is None:
material_start = item.material material_start = item.material
if item.mio.inout_date: 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) data["七车间_批次发货合格率"] = round(data["销售发货_count"] * 100/ data["棒料成型_count_real"], 1)
if getattr(data, "六车间领料_count", 0) > 0: if getattr(data, "六车间领料_count", 0) > 0:
data["六车间_批次发货合格率"] = round(data["销售发货_count"] * 100/ data["六车间领料_count"], 1) data["六车间_批次发货合格率"] = round(data["销售发货_count"] * 100/ data["六车间领料_count"], 1)
data['销售发货_仓库执行人'] = list(set(data['销售发货_仓库执行人']))
data['销售发货_仓库执行人'] = ";".join([item.name for item in 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}