feat: get_alldata_with_batch添加内容

This commit is contained in:
caoqianming 2025-04-29 14:42:29 +08:00
parent dd0d6751c1
commit 5857b77aea
1 changed files with 51 additions and 20 deletions

View File

@ -12,7 +12,7 @@ import decimal
import logging import logging
myLogger = logging.getLogger('log') myLogger = logging.getLogger('log')
def get_alldata_with_batch_and_store(batch: str): def get_alldata_with_batch_and_store(batch: str, need_update_time=True):
""" """
获取某个批次的整体生产数据并保存 获取某个批次的整体生产数据并保存
""" """
@ -29,7 +29,8 @@ def get_alldata_with_batch_and_store(batch: str):
bobj, _ = BatchSt.objects.get_or_create(batch=batch, defaults={ bobj, _ = BatchSt.objects.get_or_create(batch=batch, defaults={
"last_time": last_time "last_time": last_time
}) })
bobj.last_time = last_time if need_update_time:
bobj.last_time = last_time
bobj.data = json.loads(json.dumps(data, cls=MyJSONEncoder)) bobj.data = json.loads(json.dumps(data, cls=MyJSONEncoder))
bobj.save() bobj.save()
@ -278,23 +279,6 @@ def get_alldata_with_batch(batch: str):
myLogger.error(f"六车间_{mgroup_name}_合格率decimal.InvalidOperation-{data}") myLogger.error(f"六车间_{mgroup_name}_合格率decimal.InvalidOperation-{data}")
data[f'六车间_{mgroup_name}_合格率'] = 0 data[f'六车间_{mgroup_name}_合格率'] = 0
# 六车间入库/检验数据
# mioitem6_qs2 = MIOItem.objects.filter(mio__belong_dept=dept6, mio__type="do_in",
# batch=batch,
# mio__submit_time__isnull=False)
# if mioitem6_qs2.exists():
# data["六车间生产入库_日期"] = []
# for item in mioitem6_qs:
# data["六车间生产入库_日期"].append(item.mio.inout_date)
# for field in mioitem_count_fields:
# if getattr(item, field) > 0:
# 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.strftime("%Y-%m-%d") for item in data["六车间生产入库_日期"]])
ftestwork_count_fields = FtestWork.count_fields() ftestwork_count_fields = FtestWork.count_fields()
# 六车间中检数据 # 六车间中检数据
ftestwork_qs = FtestWork.objects.filter(batch=batch, type="process") ftestwork_qs = FtestWork.objects.filter(batch=batch, type="process")
@ -325,6 +309,35 @@ def get_alldata_with_batch(batch: str):
data['六车间中检_检验人'] = list(set(data['六车间中检_检验人'])) data['六车间中检_检验人'] = list(set(data['六车间中检_检验人']))
data['六车间中检_检验人'] = ";".join([item.name for item in data['六车间中检_检验人']]) data['六车间中检_检验人'] = ";".join([item.name for item in data['六车间中检_检验人']])
# 六车间入库/检验数据
mioitem6_qs2 = MIOItem.objects.filter(mio__belong_dept=dept6, mio__type="do_in",
batch=batch,
mio__submit_time__isnull=False)
if mioitem6_qs2.exists():
data["六车间生产入库_日期"] = []
data["六车间生产入库_检验日期"] = []
data["六车间生产入库_检验人"] = []
for item in mioitem6_qs:
data["六车间生产入库_日期"].append(item.mio.inout_date)
if item.test_date:
data["六车间生产入库_检验日期"].append(item.test_date)
for field in mioitem_count_fields:
if getattr(item, field) > 0:
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.strftime("%Y-%m-%d") for item in data["六车间生产入库_日期"]])
data["六车间生产入库_检验日期"] = list(set(data["六车间生产入库_检验日期"]))
data["六车间生产入库_检验日期"] = ";".join([item.strftime("%Y-%m-%d") for item in data["六车间生产入库_检验日期"]])
try:
data['六车间生产入库_合格率'] = round((data['六车间生产入库_count']-data['六车间生产入库_count_notok ']) * 100/ data['六车间生产入库_count'], 1)
except decimal.InvalidOperation:
myLogger.error("六车间生产入库_合格率decimal.InvalidOperation-{data}")
data['六车间生产入库_合格率'] = 0
# 成品检验数据 # 成品检验数据
ftestwork_qs = FtestWork.objects.filter(batch=batch, type="prod") ftestwork_qs = FtestWork.objects.filter(batch=batch, type="prod")
if ftestwork_qs.exists(): if ftestwork_qs.exists():
@ -354,9 +367,27 @@ def get_alldata_with_batch(batch: str):
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['成品检验_合格率'] = round(data['成品检验_count_ok'] * 100/ data['成品检验_count'], 1) data['成品检验_合格率'] = round(data['成品检验_count_ok'] * 100/ data['成品检验_count'], 1)
data["六车间_批次生产合格率"] = round(data["成品检验_count_ok"] * 100/ data["六车间领料_count"], 1) if data["六车间领料_count"]:
data["六车间_批次生产合格率"] = round(data["成品检验_count_ok"] * 100/ data["六车间领料_count"], 1)
if data["棒料成型_count_real"]: if data["棒料成型_count_real"]:
data["七车间_批次应出合格率"] = round(data["成品检验_count_ok"] * 100/ data["棒料成型_count_real"], 1) data["七车间_批次应出合格率"] = round(data["成品检验_count_ok"] * 100/ data["棒料成型_count_real"], 1)
# 销售发货数据
mioitem_qs = MIOItem.objects.filter(batch=batch, mio__type="sale_out", mio__submit_time__isnull=False)
if mioitem_qs.exists():
data["销售发货_日期"] = []
data['销售发货_执行人'] = []
data['销售发货_count'] = 0
for item in mioitem_qs:
last_time = item.mio.update_time if item.mio.update_time > last_time else last_time
if item.mio.inout_date:
data["销售发货_日期"].append(item.mio.inout_date)
data['销售发货_执行人'].append(item.mio.user)
data['销售发货_count']+= item.count
if data["棒料成型_count_real"]:
data["七车间_批次发货合格率"] = round(data["销售发货_count"] * 100/ data["棒料成型_count_real"], 1)
if data["六车间领料_count"]:
data["六车间_批次发货合格率"] = round(data["销售发货_count"] * 100/ data["六车间领料_count"], 1)
return last_time, data return last_time, data