factory/apps/wpm/services_2.py

81 lines
2.5 KiB
Python

from apps.wpm.models import Mlog, BatchSt, Handover
from apps.mtm.models import Mgroup
from apps.system.models import Dept
from apps.inm.models import MIOItem
from apps.qm.models import FtestWork
from datetime import datetime
from django.conf import settings
import json
from apps.utils.tools import MyJSONEncoder
import decimal
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")
# 批次统计分析
def ana_batch_thread(xbatchs: list, mgroup=None):
MyThread(target=ana_batch, args=(xbatchs, mgroup)).start()
def ana_wpr_thread(wprIds: list, mgroup):
MyThread(target=ana_wpr, args=(wprIds, mgroup)).start()
def ana_batch(xbatchs: list, mgroup):
"""
批次统计分析
"""
time.sleep(10)
xbatchs = list(set(xbatchs))
BASE_PROJECT_CODE = getattr(settings, "BASE_PROJECT_CODE", None)
try:
m = importlib.import_module(f"apps.wpm.scripts.batch_{BASE_PROJECT_CODE}")
except ModuleNotFoundError:
# myLogger.error(f"ana_batch {BASE_PROJECT_CODE} not found")
return
f = getattr(m, "main")
for xbatch in xbatchs:
f(xbatch, mgroup)
def ana_wpr(wprIds: list, mgroup):
"""
单个统计分析
"""
time.sleep(10)
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 wprId in wprIds:
f(wprId, mgroup)
def get_f_l_date(data):
first_date = None
last_date = None
for k, v in data.items():
if k.endswith("_日期"):
if v:
if isinstance(v, list):
myLogger.error(f"get_f_l_date {k} {v}")
v = v.split(";")
if first_date is None:
first_date = min(v)
else:
first_date = min(first_date, min(v))
if last_date is None:
last_date = max(v)
else:
last_date = max(last_date, max(v))
return {"first_date": first_date,
"last_date": last_date,
"first_time": datetime.strptime(f"{first_date} 00:00:00", "%Y-%m-%d %H:%M:%S").replace(tzinfo=tz_shanghai) if first_date else None,
"last_time": datetime.strptime(f"{last_date} 23:59:59", "%Y-%m-%d %H:%M:%S").replace(tzinfo=tz_shanghai) if last_date else None}