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}