fix: cal_material_count 挪到单独文件里

This commit is contained in:
caoqianming 2025-02-18 11:03:22 +08:00
parent 56d49b4d26
commit b062d7ef6b
4 changed files with 29 additions and 26 deletions

View File

@ -5,7 +5,7 @@ from rest_framework.exceptions import ParseError
from apps.mtm.models import Material, Process
from apps.utils.tools import ranstr
from apps.utils.thread import MyThread
from apps.mtm.services import cal_material_count
from apps.mtm.services_2 import cal_material_count
from apps.wpm.models import WMaterial
from apps.wpm.services_2 import get_alldata_with_batch_and_store
from apps.wpmw.models import Wpr

View File

@ -11,30 +11,6 @@ from typing import List
from apps.utils.snowflake import idWorker
from django.utils import timezone
def cal_material_count(materialId_list: List[str]=None):
"""
计算物料总数量
"""
from apps.inm.models import MaterialBatch
from apps.wpm.models import WMaterial
if materialId_list is None:
materialId_list = []
if materialId_list:
objs = Material.objects.filter(id__in=set(materialId_list))
else:
objs = Material.objects.all()
for material in objs:
mb_count = MaterialBatch.objects.filter(material=material, state=10).aggregate(total=Sum("count"))["total"] or 0
wm_count = WMaterial.objects.filter(material=material, state=10).aggregate(total=Sum("count"))["total"] or 0
if mb_count is None:
mb_count = 0
if wm_count is None:
wm_count = 0
Material.objects.filter(id=material.id).update(
count_wm=wm_count,
count_mb=mb_count,
count=mb_count + wm_count)
def get_mgroup_goals(mgroupId, year, reload=False):
"""
获取工段某年的全部目标值, 以字典形式返回, 带缓存

27
apps/mtm/services_2.py Normal file
View File

@ -0,0 +1,27 @@
from apps.mtm.models import Material
from typing import List
from django.db.models import Sum
from apps.inm.models import MaterialBatch
from apps.wpm.models import WMaterial
def cal_material_count(materialId_list: List[str]=None):
"""
计算物料总数量
"""
if materialId_list is None:
materialId_list = []
if materialId_list:
objs = Material.objects.filter(id__in=set(materialId_list))
else:
objs = Material.objects.all()
for material in objs:
mb_count = MaterialBatch.objects.filter(material=material, state=10).aggregate(total=Sum("count"))["total"] or 0
wm_count = WMaterial.objects.filter(material=material, state=10).aggregate(total=Sum("count"))["total"] or 0
if mb_count is None:
mb_count = 0
if wm_count is None:
wm_count = 0
Material.objects.filter(id=material.id).update(
count_wm=wm_count,
count_mb=mb_count,
count=mb_count + wm_count)

View File

@ -12,7 +12,7 @@ from apps.pm.models import Mtask
from apps.mtm.models import Mgroup, Shift, Material, Route, RoutePack, Team, Srule
from .models import SfLog, WMaterial, Mlog, Mlogb, Mlogbw, Handover, Handoverb, Handoverbw
from apps.mtm.services import cal_material_count
from apps.mtm.services_2 import cal_material_count
from apps.wf.models import Ticket
from apps.utils.thread import MyThread
import logging