factory/apps/wpm/scripts/wpr_bxerp.py

32 lines
1.6 KiB
Python

from apps.wpmw.models import Wpr
from apps.wpm.models import Mlogbw
from apps.qm.models import Ftest, FtestDefect, FtestItem
from rest_framework.exceptions import ParseError
from apps.mtm.models import Mgroup
def main(number, mgroup:Mgroup):
wpr = Wpr.objects.filter(number=number).first()
if not wpr:
raise ParseError(f"未找到该单个产品_{number}")
data = {}
mgroup_name = mgroup.name
data[f"{mgroup_name}_批次号"] = Mlogbw.objects.filter(number=number).order_by("-update_time").first().mlogb.batch
ftestitems = FtestItem.objects.filter(ftest__mlogbw_ftest__number=number,
ftest__mlogbw_ftest__mlogb__mlog__mgroup=mgroup,
ftest__mlogbw_ftest__mlogb__mlog__submit_time__isnull=False)
for ftestitem in ftestitems:
data[f"{mgroup_name}_检测项_{ftestitem.testitem.name}"] = ftestitem.test_val_json
ftestdefects = FtestDefect.objects.filter(ftest__mlogbw_ftest__number=number,
ftest__mlogbw_ftest__mlogb__mlog__mgroup=mgroup,
ftest__mlogbw_ftest__mlogb__mlog__submit_time__isnull=False)
for ftestdefect in ftestdefects:
data[f"{mgroup_name}_缺陷项_{ftestdefect.defect.name}"] = 0 if ftestdefect.has is True else 1
old_data:dict = wpr.data
if old_data:
for item in list(old_data.keys()):
if f'{mgroup_name}_' in item:
del old_data[item]
old_data.update(data)
Wpr.objects.filter(number=number).update(data=old_data)