feat: 光子批次统计增加组合件信息

This commit is contained in:
caoqianming 2025-08-04 15:33:22 +08:00
parent 763c64d5d0
commit 1c24e9948b
1 changed files with 44 additions and 6 deletions

View File

@ -4,7 +4,7 @@ from apps.wpm.models import Mlog, Handover
from apps.mtm.models import Mgroup
import decimal
from apps.system.models import Dept
from apps.inm.models import MIOItem
from apps.inm.models import MIOItem, MIOItemA, MaterialBatchA
from apps.qm.models import FtestWork
from apps.wpm.services_2 import get_f_l_date
import json
@ -384,11 +384,6 @@ def main(batch: str, mgroup_obj):
data[f'六车间生产入库_{field}'] = getattr(item, field)
else:
data[f'六车间生产入库_{field}'] += getattr(item, field)
data["六车间生产入库_日期"] = list(set(data["六车间生产入库_日期"]))
data["六车间生产入库_日期"].sort()
data["六车间生产入库_小日期"] = max(data["六车间生产入库_日期"]).strftime("%Y-%m-%d")
data["六车间生产入库_大日期"] = min(data["六车间生产入库_日期"]).strftime("%Y-%m-%d")
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["六车间生产入库_检验日期"]])
data['六车间生产入库_检验人'] = list(set(data['六车间生产入库_检验人']))
@ -399,6 +394,30 @@ def main(batch: str, mgroup_obj):
# myLogger.error("六车间生产入库_合格率decimal.InvalidOperation-{data}")
data['六车间生产入库_合格率'] = 0
# 六车间入库时会有组合件
mioitema6_qs = MIOItemA.objects.filter(mioitem__mio__belong_dept=dept6, mioitem__mio__type="do_in",
batch=batch,
mioitem__mio__submit_time__isnull=False)
if mioitema6_qs.exists():
data["六车间生产入库_组合件_批次号"] = []
if "六车间生产入库_日期" not in data:
data["六车间生产入库_日期"] = []
if "六车间生产入库_count" not in data:
data["六车间生产入库_count"] = 0
for item in mioitema6_qs:
data["六车间生产入库_日期"].append(item.mioitem.mio.inout_date)
data["六车间生产入库_count"] += item.rate * item.mioitem.count
data["六车间生产入库_组合件_批次号"].append(item.mioitem.batch)
data["六车间生产入库_组合件_批次号"] = list(set(data["六车间生产入库_组合件_批次号"]))
data["六车间生产入库_组合件_批次号"] = ";".join(data["六车间生产入库_组合件_批次号"])
if "六车间生产入库_日期" in data:
data["六车间生产入库_日期"] = list(set(data["六车间生产入库_日期"]))
data["六车间生产入库_日期"].sort()
data["六车间生产入库_小日期"] = max(data["六车间生产入库_日期"]).strftime("%Y-%m-%d")
data["六车间生产入库_大日期"] = min(data["六车间生产入库_日期"]).strftime("%Y-%m-%d")
data["六车间生产入库_日期"] = ";".join([item.strftime("%Y-%m-%d") for item in data["六车间生产入库_日期"]])
# 成品检验数据
ftestwork_qs = FtestWork.objects.filter(batch=batch, type="prod")
if ftestwork_qs.exists():
@ -451,10 +470,29 @@ def main(batch: str, mgroup_obj):
if item.mio.mio_user:
data['销售发货_仓库执行人'].append(item.mio.mio_user)
data['销售发货_count']+= item.count
# 销售发货的组合件信息
mioitem_qs_assemb = MIOItem.objects.filter(mio__type="sale_out", mb__a_mb__batch=batch, mio__submit_time__isnull=False)
if mioitem_qs.exists():
if "销售发货_日期" not in data:
data["销售发货_日期"] = []
data['销售发货_仓库执行人'] = []
data['销售发货_count'] = 0
for item in mioitem_qs_assemb:
data["销售发货_日期"].append(item.mio.inout_date)
if item.mio.mio_user:
data['销售发货_仓库执行人'].append(item.mio.mio_user)
mba = MaterialBatchA.objects.get(batch=batch, mb=item.mb)
data['销售发货_count']+= item.count * mba.rate
if "销售发货_日期" in data:
if getattr(data, "棒料成型_count_real", 0) > 0:
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["销售发货_日期"]))