diff --git a/apps/wpm/scripts/wpr_bxerp.py b/apps/wpm/scripts/wpr_bxerp.py index c9bc594e..b14b4f5a 100644 --- a/apps/wpm/scripts/wpr_bxerp.py +++ b/apps/wpm/scripts/wpr_bxerp.py @@ -2,23 +2,31 @@ 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): - if not Wpr.objects.filter(number=number).exists(): +def main(number, mgroup:Mgroup): + wpr = Wpr.objects.filter(number=number).first() + if not wpr: raise ParseError(f"未找到该单个产品_{number}") data = {} - mgroup_name = "毛坯检测" - data[f"{mgroup_name}_批次号"] = Mlogbw.objects.filter(number=number).first().mlogb.batch + 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__name=mgroup_name, + 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__name=mgroup_name, + 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 - Wpr.objects.filter(number=number).update(data=data) \ No newline at end of file + old_data:dict = wpr.data + if old_data: + for item in 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) \ No newline at end of file diff --git a/apps/wpm/services_2.py b/apps/wpm/services_2.py index 68907782..b8c3827d 100644 --- a/apps/wpm/services_2.py +++ b/apps/wpm/services_2.py @@ -22,8 +22,8 @@ tz_shanghai = ZoneInfo("Asia/Shanghai") def ana_batch_thread(xbatchs: list): MyThread(target=ana_batch, args=(xbatchs,)).start() -def ana_wpr_thread(numbers: list): - MyThread(target=ana_wpr, args=(numbers,)).start() +def ana_wpr_thread(numbers: list, mgroup): + MyThread(target=ana_wpr, args=(numbers, mgroup)).start() def ana_batch(xbatchs: list): """ @@ -34,7 +34,7 @@ def ana_batch(xbatchs: list): for xbatch in xbatchs: get_alldata_with_batch_and_store(xbatch) -def ana_wpr(numbers: list): +def ana_wpr(numbers: list, mgroup): """ 单个统计分析 """ @@ -47,7 +47,7 @@ def ana_wpr(numbers: list): return f = getattr(m, "main") for number in numbers: - f(number) + f(number, mgroup) def get_alldata_with_batch_and_store(batch: str):