feat: 按需求修改光芯批次统计分析
This commit is contained in:
parent
afa3b8b9ad
commit
8f791ac8de
|
|
@ -1,6 +1,6 @@
|
|||
from apps.wpm.models import BatchSt
|
||||
import logging
|
||||
from apps.qm.models import Defect
|
||||
from apps.qm.models import Defect, FtestWork, FtestworkDefect
|
||||
from apps.wpm.models import Mlogb, MlogbDefect
|
||||
from apps.mtm.models import Mgroup
|
||||
import decimal
|
||||
|
|
@ -117,25 +117,54 @@ def main(batch: str, mgroup_obj):
|
|||
data[f"外观检验_返修_缺陷_{item['defect__name']}"] = item["total"]
|
||||
data[f"外观检验_返修_缺陷_{item['defect__name']}_比例"] = round((item["total"] / data["外观检验_返修_count_real"])*100, 2)
|
||||
|
||||
# 车间库存抽检
|
||||
ft_qs = FtestWork.objects.filter(type2=FtestWork.TYPE2_SOME, wm__mgroup__name="外观检验", batch=batch, submit_time__isnull=False)
|
||||
if ft_qs.exists():
|
||||
data["外观检验_车间库存抽检_日期"] = []
|
||||
data["外观检验_车间库存抽检_操作人"] = []
|
||||
data["外观检验_车间库存抽检_count_notok"] = 0
|
||||
for item in ft_qs:
|
||||
if item.test_user:
|
||||
data["外观检验_车间库存抽检_操作人"].append(item.test_user)
|
||||
if item.test_date:
|
||||
data["外观检验_车间库存抽检_日期"].append(item.test_date)
|
||||
data["外观检验_车间库存抽检_count_notok"] += item.count_notok if item.count_notok else 0
|
||||
|
||||
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["外观检验_车间库存抽检_操作人"]])
|
||||
|
||||
# 车间库存抽检缺陷
|
||||
ftd_qs = FtestworkDefect.objects.filter(ftestwork__in=ft_qs, count__gt=0).values("defect__name").annotate(total=Sum("count"))
|
||||
for item in ftd_qs:
|
||||
data[f"外观检验_车间库存抽检_缺陷_{item['defect__name']}"] = item["total"]
|
||||
|
||||
if "外观检验_count_ok" in data:
|
||||
data["外观检验_总合格数"] = data["外观检验_count_ok"] + data["外观检验_返修_count_ok"] if "外观检验_返修_count_ok" in data else 0
|
||||
data["外观检验_总合格数"] = data["外观检验_count_ok"] + data.get("外观检验_返修_count_ok", 0)
|
||||
try:
|
||||
data["外观检验_总合格率"] = round((data["外观检验_总合格数"] / data["外观检验_count_real"])*100, 2)
|
||||
except decimal.InvalidOperation:
|
||||
data["外观检验_总合格率"] = 0
|
||||
|
||||
data["外观检验_完全总合格数"] = data["外观检验_count_ok_full"] + data["外观检验_返修_count_ok_full"] if "外观检验_返修_count_ok_full" in data else 0
|
||||
data["外观检验_完全总合格数"] = data["外观检验_count_ok_full"] + data.get("外观检验_返修_count_ok_full", 0)
|
||||
try:
|
||||
data["外观检验_完全总合格率"] = round((data["外观检验_完全总合格数"] / data["外观检验_count_real"])*100, 2)
|
||||
except decimal.InvalidOperation:
|
||||
data["外观检验_完全总合格率"] = 0
|
||||
|
||||
data["外观检验_直通合格数"] = data["外观检验_总合格数"] - data.get("外观检验_车间库存抽检_count_notok", 0)
|
||||
if "尺寸检验_合格率" in data:
|
||||
try:
|
||||
data["外观检验_直通合格率"] = round((data["外观检验_总合格率"]* data["尺寸检验_合格率"])/100, 2)
|
||||
except decimal.InvalidOperation:
|
||||
data["外观检验_直通合格率"] = 0
|
||||
|
||||
try:
|
||||
data["外观检验_直通合格率2"] = round((data["外观检验_直通合格数"]/data["尺寸检验_count_use"])*100, 2)
|
||||
except decimal.InvalidOperation:
|
||||
data["外观检验_直通合格率2"] = 0
|
||||
|
||||
if "尺寸检验_完全合格率" in data:
|
||||
try:
|
||||
data["外观检验_完全直通合格率"] = round((data["外观检验_完全总合格率"]* data["尺寸检验_完全合格率"])/100, 2)
|
||||
|
|
|
|||
Loading…
Reference in New Issue