factory/apps/mtm/services_2.py

27 lines
1.0 KiB
Python

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)