feat: 单个统计优化
This commit is contained in:
parent
69c7da883f
commit
17996a0b86
|
@ -82,10 +82,10 @@ def main(batch: str, mgroup_obj:Mgroup=None):
|
||||||
|
|
||||||
res = get_f_l_date(data)
|
res = get_f_l_date(data)
|
||||||
|
|
||||||
old_data = batchst.data
|
old_data:dict = batchst.data
|
||||||
if old_data:
|
if old_data:
|
||||||
if mgroup_obj is not None:
|
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:
|
if f'{mgroup_obj.name}_' in item:
|
||||||
del old_data[item]
|
del old_data[item]
|
||||||
else:
|
else:
|
||||||
|
|
|
@ -4,20 +4,20 @@ from apps.qm.models import Ftest, FtestDefect, FtestItem
|
||||||
from rest_framework.exceptions import ParseError
|
from rest_framework.exceptions import ParseError
|
||||||
from apps.mtm.models import Mgroup
|
from apps.mtm.models import Mgroup
|
||||||
|
|
||||||
def main(number, mgroup:Mgroup):
|
def main(wprId, mgroup:Mgroup):
|
||||||
wpr = Wpr.objects.filter(number=number).first()
|
wpr = Wpr.objects.get(id=wprId)
|
||||||
if not wpr:
|
|
||||||
raise ParseError(f"未找到该单个产品_{number}")
|
|
||||||
data = {}
|
data = {}
|
||||||
mgroup_name = mgroup.name
|
mgroup_name = mgroup.name
|
||||||
data[f"{mgroup_name}_批次号"] = Mlogbw.objects.filter(number=number).order_by("-update_time").first().mlogb.batch
|
mlogbw = Mlogbw.objects.filter(wpr=wpr).order_by("-update_time").first()
|
||||||
ftestitems = FtestItem.objects.filter(ftest__mlogbw_ftest__number=number,
|
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__mgroup=mgroup,
|
||||||
ftest__mlogbw_ftest__mlogb__mlog__submit_time__isnull=False)
|
ftest__mlogbw_ftest__mlogb__mlog__submit_time__isnull=False)
|
||||||
for ftestitem in ftestitems:
|
for ftestitem in ftestitems:
|
||||||
data[f"{mgroup_name}_检测项_{ftestitem.testitem.name}"] = ftestitem.test_val_json
|
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__mgroup=mgroup,
|
||||||
ftest__mlogbw_ftest__mlogb__mlog__submit_time__isnull=False)
|
ftest__mlogbw_ftest__mlogb__mlog__submit_time__isnull=False)
|
||||||
for ftestdefect in ftestdefects:
|
for ftestdefect in ftestdefects:
|
||||||
|
@ -29,4 +29,5 @@ def main(number, mgroup:Mgroup):
|
||||||
if f'{mgroup_name}_' in item:
|
if f'{mgroup_name}_' in item:
|
||||||
del old_data[item]
|
del old_data[item]
|
||||||
old_data.update(data)
|
old_data.update(data)
|
||||||
Wpr.objects.filter(number=number).update(data=old_data)
|
wpr.data = old_data
|
||||||
|
wpr.save(update_fields=["data"])
|
|
@ -392,9 +392,9 @@ def mlog_submit(mlog: Mlog, user: User, now: Union[datetime.datetime, None]):
|
||||||
ana_batch_thread(xbatches)
|
ana_batch_thread(xbatches)
|
||||||
|
|
||||||
# 触发单个统计
|
# 触发单个统计
|
||||||
xnumbers = list(Mlogbw.objects.filter(mlogb__mlog=mlog, ftest__isnull=False, number__isnull=False).values_list('number', flat=True))
|
wprIds = list(Mlogbw.objects.filter(mlogb__mlog=mlog, ftest__isnull=False, wpr__isnull=False).values_list('wpr__id', flat=True))
|
||||||
if xnumbers:
|
if wprIds:
|
||||||
ana_wpr_thread(xnumbers, mlog.mgroup)
|
ana_wpr_thread(wprIds, mlog.mgroup)
|
||||||
|
|
||||||
|
|
||||||
def mlog_revert(mlog: Mlog, user: User, now: Union[datetime.datetime, None]):
|
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)
|
ana_batch_thread(xbatches)
|
||||||
|
|
||||||
# 触发单个统计
|
# 触发单个统计
|
||||||
xnumbers = list(Mlogbw.objects.filter(mlogb__mlog=mlog, ftest__isnull=False, number__isnull=False).values_list('number', flat=True))
|
wprIds = list(Mlogbw.objects.filter(mlogb__mlog=mlog, ftest__isnull=False, wpr__isnull=False).values_list('wpr__id', flat=True))
|
||||||
if xnumbers:
|
if wprIds:
|
||||||
ana_wpr_thread(xnumbers, mlog.mgroup)
|
ana_wpr_thread(wprIds, mlog.mgroup)
|
||||||
|
|
||||||
def cal_mtask_progress_from_mlog(mlog:Mlog):
|
def cal_mtask_progress_from_mlog(mlog:Mlog):
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -22,8 +22,8 @@ tz_shanghai = ZoneInfo("Asia/Shanghai")
|
||||||
def ana_batch_thread(xbatchs: list, mgroup=None):
|
def ana_batch_thread(xbatchs: list, mgroup=None):
|
||||||
MyThread(target=ana_batch, args=(xbatchs, mgroup)).start()
|
MyThread(target=ana_batch, args=(xbatchs, mgroup)).start()
|
||||||
|
|
||||||
def ana_wpr_thread(numbers: list, mgroup):
|
def ana_wpr_thread(wprIds: list, mgroup):
|
||||||
MyThread(target=ana_wpr, args=(numbers, mgroup)).start()
|
MyThread(target=ana_wpr, args=(wprIds, mgroup)).start()
|
||||||
|
|
||||||
def ana_batch(xbatchs: list, mgroup):
|
def ana_batch(xbatchs: list, mgroup):
|
||||||
"""
|
"""
|
||||||
|
@ -41,20 +41,20 @@ def ana_batch(xbatchs: list, mgroup):
|
||||||
for xbatch in xbatchs:
|
for xbatch in xbatchs:
|
||||||
f(xbatch, mgroup)
|
f(xbatch, mgroup)
|
||||||
|
|
||||||
def ana_wpr(numbers: list, mgroup):
|
def ana_wpr(wprIds: list, mgroup):
|
||||||
"""
|
"""
|
||||||
单个统计分析
|
单个统计分析
|
||||||
"""
|
"""
|
||||||
time.sleep(10)
|
time.sleep(10)
|
||||||
numbers = list(set(numbers))
|
wprIds = list(set(wprIds))
|
||||||
BASE_PROJECT_CODE = getattr(settings, "BASE_PROJECT_CODE", None)
|
BASE_PROJECT_CODE = getattr(settings, "BASE_PROJECT_CODE", None)
|
||||||
try:
|
try:
|
||||||
m = importlib.import_module(f"apps.wpm.scripts.wpr_{BASE_PROJECT_CODE}")
|
m = importlib.import_module(f"apps.wpm.scripts.wpr_{BASE_PROJECT_CODE}")
|
||||||
except ModuleNotFoundError:
|
except ModuleNotFoundError:
|
||||||
return
|
return
|
||||||
f = getattr(m, "main")
|
f = getattr(m, "main")
|
||||||
for number in numbers:
|
for wprId in wprIds:
|
||||||
f(number, mgroup)
|
f(wprId, mgroup)
|
||||||
|
|
||||||
|
|
||||||
def get_f_l_date(data):
|
def get_f_l_date(data):
|
||||||
|
|
Loading…
Reference in New Issue