feat: 光子get_alldata_with_batch优化

This commit is contained in:
caoqianming 2025-06-24 09:30:09 +08:00
parent cb09cee753
commit 53972fd22a
1 changed files with 59 additions and 7 deletions

View File

@ -1,4 +1,4 @@
from apps.wpm.models import Mlog, BatchSt from apps.wpm.models import Mlog, BatchSt, Handover
from apps.mtm.models import Mgroup 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
@ -72,6 +72,7 @@ def get_alldata_with_batch(batch: str):
material_start = None material_start = None
if mlogs_blcx_qs.exists(): if mlogs_blcx_qs.exists():
data["产品规格"] = [] data["产品规格"] = []
data["棒料成型_日期"] = []
data["棒料成型_出料人"] = [] data["棒料成型_出料人"] = []
data["棒料成型_切料人"] = [] data["棒料成型_切料人"] = []
data["棒料成型_备注"] = "" data["棒料成型_备注"] = ""
@ -85,6 +86,7 @@ def get_alldata_with_batch(batch: str):
data["棒料成型_切料人"].append(item.handle_user_2) # 对象 data["棒料成型_切料人"].append(item.handle_user_2) # 对象
if item.note: if item.note:
data["棒料成型_备注"] = ";".join([data["棒料成型_备注"], item.note]) data["棒料成型_备注"] = ";".join([data["棒料成型_备注"], item.note])
data["棒料成型_日期"].append(item.handle_date)
for field in mlog_count_fields: for field in mlog_count_fields:
if getattr(item, field) > 0 or field in ["count_real", "count_ok"]: if getattr(item, field) > 0 or field in ["count_real", "count_ok"]:
if f'棒料成型_{field}' not in data: if f'棒料成型_{field}' not in data:
@ -98,6 +100,8 @@ def get_alldata_with_batch(batch: str):
data["棒料成型_出料人"] = ";".join([item.name for item in data["棒料成型_出料人"]]) data["棒料成型_出料人"] = ";".join([item.name for item in data["棒料成型_出料人"]])
data["棒料成型_切料人"] = list(set(data["棒料成型_切料人"])) 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["棒料成型_日期"] = [item.strftime("%Y-%m-%d") for item in data["棒料成型_日期"]]
try: try:
data["棒料成型_合格率"] = round((data["棒料成型_count_ok"] * 100/ data["棒料成型_count_real"]), 1) data["棒料成型_合格率"] = round((data["棒料成型_count_ok"] * 100/ data["棒料成型_count_real"]), 1)
except ZeroDivisionError: except ZeroDivisionError:
@ -112,12 +116,14 @@ def get_alldata_with_batch(batch: str):
if mlogs_glcx_qs.exists(): if mlogs_glcx_qs.exists():
data["产品规格"] = [] data["产品规格"] = []
data["管料成型_备注"] = "" data["管料成型_备注"] = ""
data["管料成型_日期"] = []
for item in mlogs_glcx_qs: for item in mlogs_glcx_qs:
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) # 对象
if item.note: if item.note:
data["管料成型_备注"] = ";".join([data["管料成型_备注"], item.note]) data["管料成型_备注"] = ";".join([data["管料成型_备注"], item.note])
data["管料成型_日期"].append(item.handle_date)
for field in mlog_count_fields: for field in mlog_count_fields:
if getattr(item, field) > 0 or field in ["count_real", "count_ok"]: if getattr(item, field) > 0 or field in ["count_real", "count_ok"]:
if f'管料成型_{field}' not in data: if f'管料成型_{field}' not in data:
@ -127,6 +133,8 @@ def get_alldata_with_batch(batch: str):
data["产品规格"] = list(set(data["产品规格"])) data["产品规格"] = list(set(data["产品规格"]))
data["产品规格"] = ";".join([item.specification for item in data["产品规格"]]) data["产品规格"] = ";".join([item.specification for item in data["产品规格"]])
data["管料成型_合格率"] = round((data["管料成型_count_ok"] * 100 / data["管料成型_count_real"]), 1) data["管料成型_合格率"] = round((data["管料成型_count_ok"] * 100 / data["管料成型_count_real"]), 1)
data["管料成型_日期"] = list(set(data["管料成型_日期"]))
data["管料成型_日期"] = [item.strftime("%Y-%m-%d") for item in data["管料成型_日期"]]
# 7车间生产入库数据/ 8车间中检数据 # 7车间生产入库数据/ 8车间中检数据
mioitem_count_fields = MIOItem.count_fields() mioitem_count_fields = MIOItem.count_fields()
@ -177,9 +185,10 @@ def get_alldata_with_batch(batch: str):
if item.test_note: if item.test_note:
data["十车间入库_检验备注"] = ";".join([data["十车间入库_检验备注"], item.test_note]) data["十车间入库_检验备注"] = ";".join([data["十车间入库_检验备注"], item.test_note])
if item.mio.do_user: if item.mio.do_user:
data["十车间入库_仓库执行人"].append(item.mio.do_user) data["十车间入库_仓库执行人"].append(item.mio.mio_user)
if item.test_user: if item.test_user:
data["十车间入库_抽检人"].append(item.test_user) data["十车间入库_抽检人"].append(item.test_user)
data["十车间入库_日期"].append(item.mio.inout_date)
for field in mioitem_count_fields: for field in mioitem_count_fields:
if getattr(item, field) is not None and (getattr(item, field) > 0 or field in ["count", "count_notok", "count_sampling"]): if getattr(item, field) is not None and (getattr(item, field) > 0 or field in ["count", "count_notok", "count_sampling"]):
if f'十车间入库_{field}' not in data: if f'十车间入库_{field}' not in data:
@ -198,6 +207,28 @@ def get_alldata_with_batch(batch: str):
data["十车间入库_合格数"] = data["十车间入库_count"] - data["十车间入库_count_notok"] data["十车间入库_合格数"] = data["十车间入库_count"] - data["十车间入库_count_notok"]
data["十车间入库_合格率"] = round((data["十车间入库_count"] - data["十车间入库_count_notok"]) * 100/ data["十车间入库_count"], 1) data["十车间入库_合格率"] = round((data["十车间入库_count"] - data["十车间入库_count_notok"]) * 100/ data["十车间入库_count"], 1)
# 其他入库数据
mioitem_qt_qs = MIOItem.objects.filter(mio__type="other_in", batch=batch, mio__submit_time__isnull=False)
if mioitem_qt_qs.exists():
data["其他入库_仓库执行人"] = []
data["其他入库_日期"] = []
for item in mioitem_qt_qs:
if material_start is None:
material_start = item.material
data["其他入库_日期"].append(item.mio.inout_date)
if item.mio.do_user:
data["其他入库_仓库执行人"].append(item.mio.mio_user)
for field in mioitem_count_fields:
if getattr(item, field) is not None and (getattr(item, field) > 0 or field in ["count", "count_notok", "count_sampling"]):
if f'其他入库_{field}' not in data:
data[f'其他入库_{field}'] = getattr(item, field)
else:
data[f'十车间入库_{field}'] += getattr(item, field)
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["其他入库_日期"]])
# 管料退火生产数据 # 管料退火生产数据
mgroup_gltx = Mgroup.objects.get(name="管料退火") mgroup_gltx = Mgroup.objects.get(name="管料退火")
mlogs_glth_qs = Mlog.objects.filter(submit_time__isnull=False, mgroup=mgroup_gltx, batch=batch) mlogs_glth_qs = Mlog.objects.filter(submit_time__isnull=False, mgroup=mgroup_gltx, batch=batch)
@ -245,9 +276,9 @@ def get_alldata_with_batch(batch: str):
material_start = item.material material_start = item.material
data["六车间领料_日期"].append(item.mio.inout_date) data["六车间领料_日期"].append(item.mio.inout_date)
if item.mio.do_user: if item.mio.do_user:
data["六车间领料_仓库执行人"].append(item.mio.do_user) data["六车间领料_仓库执行人"].append(item.mio.mio_user)
if item.mio.mio_user: if item.mio.mio_user:
data["六车间领料_车间执行人"].append(item.mio.mio_user) data["六车间领料_车间执行人"].append(item.mio.do_user)
for field in mioitem_count_fields: for field in mioitem_count_fields:
if getattr(item, field) is not None and getattr(item, field) > 0: if getattr(item, field) is not None and getattr(item, field) > 0:
if f'六车间领料_{field}' not in data: if f'六车间领料_{field}' not in data:
@ -263,7 +294,26 @@ def get_alldata_with_batch(batch: str):
data["产品规格"] = list(set(data["产品规格"])) data["产品规格"] = list(set(data["产品规格"]))
data["产品规格"] = ";".join([item.specification for item in data["产品规格"]]) data["产品规格"] = ";".join([item.specification for item in data["产品规格"]])
# 六车间工段生产数据 # 六车间通过交接记录的领料数据
handover6_qs = Handover.objects.filter(recive_dept=dept6, submit_time__isnull=False, batch=batch)
if handover6_qs.exists():
data["六车间交接领料_日期"] = []
data["六车间交接领料_送料人"] = []
data["六车间交接领料_接料人"] = []
data["六车间交接领料_count"] = 0
for item in handover6_qs:
data["六车间交接领料_count"] += item.count
data["六车间交接领料_日期"].append(item.send_date)
if item.send_user:
data["六车间交接领料_送料人"].append(item.send_user)
if item.recive_user:
data["六车间交接领料_接料人"].append(item.recive_user)
data["六车间交接领料_日期"] = list(set(data["六车间交接领料_日期"]))
data["六车间交接领料_日期"] = ";".join([item.strftime("%Y-%m-%d") for item in data["六车间交接领料_日期"]])
data["六车间交接领料_送料人"] = list(set(data["六车间交接领料_送料人"]))
data["六车间交接领料_送料人"] = ";".join([item.name for item in data["六车间交接领料_送料人"]])
data["六车间交接领料_接料人"] = list(set(data["六车间交接领料_接料人"]))
data["六车间交接领料_接料人"] = ";".join([item.name for item in data["六车间交接领料_接料人"]])
# 六车间工段生产数据 # 六车间工段生产数据
mgroup_list = ["平头", "粘铁头", "粗中细磨", "平磨", "掏管", "抛光", "开槽", "倒角"] mgroup_list = ["平头", "粘铁头", "粗中细磨", "平磨", "掏管", "抛光", "开槽", "倒角"]
@ -348,7 +398,7 @@ def get_alldata_with_batch(batch: str):
if item.test_date: if item.test_date:
data["六车间生产入库_检验日期"].append(item.test_date) data["六车间生产入库_检验日期"].append(item.test_date)
for field in mioitem_count_fields: for field in mioitem_count_fields:
if getattr(item, field) is not None and (getattr(item, field) > 0 or field in ["count", "count_notok"]): if getattr(item, field) is not None and (getattr(item, field) > 0 or field in ["count", "count_notok", "count_sampling"]):
if f'六车间生产入库_{field}' not in data: if f'六车间生产入库_{field}' not in data:
data[f'六车间生产入库_{field}'] = getattr(item, field) data[f'六车间生产入库_{field}'] = getattr(item, field)
else: else:
@ -357,6 +407,8 @@ def get_alldata_with_batch(batch: str):
data["六车间生产入库_日期"] = ";".join([item.strftime("%Y-%m-%d") for item in data["六车间生产入库_日期"]]) data["六车间生产入库_日期"] = ";".join([item.strftime("%Y-%m-%d") for item in data["六车间生产入库_日期"]])
data["六车间生产入库_检验日期"] = list(set(data["六车间生产入库_检验日期"])) data["六车间生产入库_检验日期"] = list(set(data["六车间生产入库_检验日期"]))
data["六车间生产入库_检验日期"] = ";".join([item.strftime("%Y-%m-%d") for item in data["六车间生产入库_检验日期"]]) data["六车间生产入库_检验日期"] = ";".join([item.strftime("%Y-%m-%d") for item in data["六车间生产入库_检验日期"]])
data['六车间生产入库_检验人'] = list(set(data['六车间生产入库_检验人']))
data['六车间生产入库_检验人'] = ";".join([item.name for item in data['六车间生产入库_检验人']])
try: try:
data['六车间生产入库_合格率'] = round((data['六车间生产入库_count'] - data['六车间生产入库_count_notok']) * 100/ data['六车间生产入库_count'], 1) data['六车间生产入库_合格率'] = round((data['六车间生产入库_count'] - data['六车间生产入库_count_notok']) * 100/ data['六车间生产入库_count'], 1)
except decimal.InvalidOperation: except decimal.InvalidOperation:
@ -410,7 +462,7 @@ def get_alldata_with_batch(batch: str):
if item.mio.inout_date: if item.mio.inout_date:
data["销售发货_日期"].append(item.mio.inout_date) data["销售发货_日期"].append(item.mio.inout_date)
if item.mio.do_user: if item.mio.do_user:
data['销售发货_仓库执行人'].append(item.mio.do_user) data['销售发货_仓库执行人'].append(item.mio.mio_user)
data['销售发货_count']+= item.count data['销售发货_count']+= item.count
if getattr(data, "棒料成型_count_real", 0) > 0: if getattr(data, "棒料成型_count_real", 0) > 0:
data["七车间_批次发货合格率"] = round(data["销售发货_count"] * 100/ data["棒料成型_count_real"], 1) data["七车间_批次发货合格率"] = round(data["销售发货_count"] * 100/ data["棒料成型_count_real"], 1)