diff --git a/apps/wpm/scripts/batch_bxerp.py b/apps/wpm/scripts/batch_bxerp.py index 50637707..c06f7b4f 100644 --- a/apps/wpm/scripts/batch_bxerp.py +++ b/apps/wpm/scripts/batch_bxerp.py @@ -82,10 +82,10 @@ def main(batch: str, mgroup_obj:Mgroup=None): res = get_f_l_date(data) - old_data = batchst.data + old_data:dict = batchst.data if old_data: if mgroup_obj is not None: - for item in old_data.keys(): + for item in list(old_data.keys()): if f'{mgroup_obj.name}_' in item: del old_data[item] else: diff --git a/apps/wpm/scripts/wpr_bxerp.py b/apps/wpm/scripts/wpr_bxerp.py index 7fb8994c..c241477c 100644 --- a/apps/wpm/scripts/wpr_bxerp.py +++ b/apps/wpm/scripts/wpr_bxerp.py @@ -4,20 +4,20 @@ 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}") +def main(wprId, mgroup:Mgroup): + wpr = Wpr.objects.get(id=wprId) 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, + mlogbw = Mlogbw.objects.filter(wpr=wpr).order_by("-update_time").first() + data[f"{mgroup_name}_批次号"] = mlogbw.mlogb.batch + data[f"{mgroup_name}_日期"] = mlogbw.mlogb.mlog.handle_date.strftime("%Y-%m-%d") + ftestitems = FtestItem.objects.filter(ftest__mlogbw_ftest__wpr=wpr, 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, + ftestdefects = FtestDefect.objects.filter(ftest__mlogbw_ftest__wpr=wpr, ftest__mlogbw_ftest__mlogb__mlog__mgroup=mgroup, ftest__mlogbw_ftest__mlogb__mlog__submit_time__isnull=False) for ftestdefect in ftestdefects: @@ -29,4 +29,5 @@ def main(number, mgroup:Mgroup): 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 + wpr.data = old_data + wpr.save(update_fields=["data"]) \ No newline at end of file diff --git a/apps/wpm/services.py b/apps/wpm/services.py index dca7533a..68b04ba4 100644 --- a/apps/wpm/services.py +++ b/apps/wpm/services.py @@ -392,9 +392,9 @@ def mlog_submit(mlog: Mlog, user: User, now: Union[datetime.datetime, None]): ana_batch_thread(xbatches) # 触发单个统计 - xnumbers = list(Mlogbw.objects.filter(mlogb__mlog=mlog, ftest__isnull=False, number__isnull=False).values_list('number', flat=True)) - if xnumbers: - ana_wpr_thread(xnumbers, mlog.mgroup) + wprIds = list(Mlogbw.objects.filter(mlogb__mlog=mlog, ftest__isnull=False, wpr__isnull=False).values_list('wpr__id', flat=True)) + if wprIds: + ana_wpr_thread(wprIds, mlog.mgroup) def mlog_revert(mlog: Mlog, user: User, now: Union[datetime.datetime, None]): @@ -610,9 +610,9 @@ def mlog_revert(mlog: Mlog, user: User, now: Union[datetime.datetime, None]): ana_batch_thread(xbatches) # 触发单个统计 - xnumbers = list(Mlogbw.objects.filter(mlogb__mlog=mlog, ftest__isnull=False, number__isnull=False).values_list('number', flat=True)) - if xnumbers: - ana_wpr_thread(xnumbers, mlog.mgroup) + wprIds = list(Mlogbw.objects.filter(mlogb__mlog=mlog, ftest__isnull=False, wpr__isnull=False).values_list('wpr__id', flat=True)) + if wprIds: + ana_wpr_thread(wprIds, mlog.mgroup) def cal_mtask_progress_from_mlog(mlog:Mlog): """ diff --git a/apps/wpm/services_2.py b/apps/wpm/services_2.py index 74c19cde..8e7b9d45 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, mgroup=None): MyThread(target=ana_batch, args=(xbatchs, mgroup)).start() -def ana_wpr_thread(numbers: list, mgroup): - MyThread(target=ana_wpr, args=(numbers, mgroup)).start() +def ana_wpr_thread(wprIds: list, mgroup): + MyThread(target=ana_wpr, args=(wprIds, mgroup)).start() def ana_batch(xbatchs: list, mgroup): """ @@ -41,20 +41,20 @@ def ana_batch(xbatchs: list, mgroup): for xbatch in xbatchs: f(xbatch, mgroup) -def ana_wpr(numbers: list, mgroup): +def ana_wpr(wprIds: list, mgroup): """ 单个统计分析 """ time.sleep(10) - numbers = list(set(numbers)) + wprIds = list(set(wprIds)) BASE_PROJECT_CODE = getattr(settings, "BASE_PROJECT_CODE", None) try: m = importlib.import_module(f"apps.wpm.scripts.wpr_{BASE_PROJECT_CODE}") except ModuleNotFoundError: return f = getattr(m, "main") - for number in numbers: - f(number, mgroup) + for wprId in wprIds: + f(wprId, mgroup) def get_f_l_date(data):