feat: 单个统计的触发
This commit is contained in:
parent
fdf717aecb
commit
a3b0455fb4
|
@ -0,0 +1,23 @@
|
|||
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
|
||||
|
||||
def main(number):
|
||||
if not Wpr.objects.filter(number=number).exists():
|
||||
raise ParseError(f"未找到该单个产品_{number}")
|
||||
data = {}
|
||||
mgroup_name = "毛坯检测"
|
||||
ftestitems = FtestItem.objects.filter(ftest__mlogbw_ftest__number=number,
|
||||
ftest__mlogbw_ftest__mlogb__mlog__mgroup__name=mgroup_name,
|
||||
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__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)
|
|
@ -15,7 +15,7 @@ from .models import SfLog, WMaterial, Mlog, Mlogb, Mlogbw, Handover, Handoverb,
|
|||
from apps.mtm.services_2 import cal_material_count
|
||||
from apps.wf.models import Ticket
|
||||
import logging
|
||||
from apps.wpm.services_2 import ana_batch_thread
|
||||
from apps.wpm.services_2 import ana_batch_thread, ana_wpr_thread
|
||||
from datetime import timedelta
|
||||
from apps.wpmw.models import Wpr, WprDefect
|
||||
from ..qm.models import Defect, Ftest
|
||||
|
@ -386,6 +386,10 @@ def mlog_submit(mlog: Mlog, user: User, now: Union[datetime.datetime, None]):
|
|||
xbatches = list(Mlogb.objects.filter(mlog=mlog).values_list('batch', flat=True))
|
||||
ana_batch_thread(xbatches)
|
||||
|
||||
# 触发单个统计
|
||||
xnumbers = list(Mlogbw.objects.filter(mlogb__mlog=mlog, ftest__isnull=False).values_list('number', flat=True))
|
||||
ana_wpr_thread(xnumbers)
|
||||
|
||||
|
||||
def mlog_revert(mlog: Mlog, user: User, now: Union[datetime.datetime, None]):
|
||||
"""日志撤回
|
||||
|
@ -597,6 +601,10 @@ def mlog_revert(mlog: Mlog, user: User, now: Union[datetime.datetime, None]):
|
|||
xbatches = list(Mlogb.objects.filter(mlog=mlog).values_list('batch', flat=True))
|
||||
ana_batch_thread(xbatches)
|
||||
|
||||
# 触发单个统计
|
||||
xnumbers = list(Mlogbw.objects.filter(mlogb__mlog=mlog, ftest__isnull=False).values_list('number', flat=True))
|
||||
ana_wpr_thread(xnumbers)
|
||||
|
||||
def cal_mtask_progress_from_mlog(mlog:Mlog):
|
||||
"""
|
||||
更新mlog关联的任务进度(可线程中执行)
|
||||
|
|
|
@ -12,6 +12,7 @@ from apps.utils.thread import MyThread
|
|||
import logging
|
||||
import time
|
||||
from zoneinfo import ZoneInfo
|
||||
import importlib
|
||||
|
||||
myLogger = logging.getLogger('log')
|
||||
tz_shanghai = ZoneInfo("Asia/Shanghai")
|
||||
|
@ -21,6 +22,9 @@ 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_batch(xbatchs: list):
|
||||
"""
|
||||
批次统计分析
|
||||
|
@ -30,6 +34,19 @@ def ana_batch(xbatchs: list):
|
|||
for xbatch in xbatchs:
|
||||
get_alldata_with_batch_and_store(xbatch)
|
||||
|
||||
def ana_wpr(numbers: list):
|
||||
"""
|
||||
单个统计分析
|
||||
"""
|
||||
time.sleep(10)
|
||||
numbers = list(set(numbers))
|
||||
BASE_PROJECT_CODE = getattr(settings, "BASE_PROJECT_CODE", None)
|
||||
m = importlib.import_module(f"apps.wpm.scripts.wpr_{BASE_PROJECT_CODE}")
|
||||
f = getattr(m, "main")
|
||||
for number in numbers:
|
||||
f(number)
|
||||
|
||||
|
||||
def get_alldata_with_batch_and_store(batch: str):
|
||||
"""
|
||||
获取某个批次的整体生产数据并保存
|
||||
|
|
Loading…
Reference in New Issue