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.mtm.services_2 import cal_material_count
|
||||||
from apps.wf.models import Ticket
|
from apps.wf.models import Ticket
|
||||||
import logging
|
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 datetime import timedelta
|
||||||
from apps.wpmw.models import Wpr, WprDefect
|
from apps.wpmw.models import Wpr, WprDefect
|
||||||
from ..qm.models import Defect, Ftest
|
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))
|
xbatches = list(Mlogb.objects.filter(mlog=mlog).values_list('batch', flat=True))
|
||||||
ana_batch_thread(xbatches)
|
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]):
|
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))
|
xbatches = list(Mlogb.objects.filter(mlog=mlog).values_list('batch', flat=True))
|
||||||
ana_batch_thread(xbatches)
|
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):
|
def cal_mtask_progress_from_mlog(mlog:Mlog):
|
||||||
"""
|
"""
|
||||||
更新mlog关联的任务进度(可线程中执行)
|
更新mlog关联的任务进度(可线程中执行)
|
||||||
|
|
|
@ -12,6 +12,7 @@ from apps.utils.thread import MyThread
|
||||||
import logging
|
import logging
|
||||||
import time
|
import time
|
||||||
from zoneinfo import ZoneInfo
|
from zoneinfo import ZoneInfo
|
||||||
|
import importlib
|
||||||
|
|
||||||
myLogger = logging.getLogger('log')
|
myLogger = logging.getLogger('log')
|
||||||
tz_shanghai = ZoneInfo("Asia/Shanghai")
|
tz_shanghai = ZoneInfo("Asia/Shanghai")
|
||||||
|
@ -21,6 +22,9 @@ tz_shanghai = ZoneInfo("Asia/Shanghai")
|
||||||
def ana_batch_thread(xbatchs: list):
|
def ana_batch_thread(xbatchs: list):
|
||||||
MyThread(target=ana_batch, args=(xbatchs,)).start()
|
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):
|
def ana_batch(xbatchs: list):
|
||||||
"""
|
"""
|
||||||
批次统计分析
|
批次统计分析
|
||||||
|
@ -30,6 +34,19 @@ def ana_batch(xbatchs: list):
|
||||||
for xbatch in xbatchs:
|
for xbatch in xbatchs:
|
||||||
get_alldata_with_batch_and_store(xbatch)
|
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):
|
def get_alldata_with_batch_and_store(batch: str):
|
||||||
"""
|
"""
|
||||||
获取某个批次的整体生产数据并保存
|
获取某个批次的整体生产数据并保存
|
||||||
|
|
Loading…
Reference in New Issue