fix --> tag distribution dashboard by species

This commit is contained in:
2026-01-24 16:35:54 +03:30
parent b93d9148f8
commit c0e62541c3

View File

@@ -6,6 +6,7 @@ from django.db.models.aggregates import Count
from django.db.models.functions import Coalesce
from apps.authentication.models import Organization
from apps.livestock.models import LiveStockSpecies
from apps.tag.exceptions import TagException
from apps.tag.models import Tag, TagBatch, TagDistribution, TagDistributionBatch
from common.generics import generate_unique_code
@@ -159,16 +160,18 @@ class TagDistributionService:
is_closed = False if is_closed == 'false' else True
if org.type.key == 'ADM':
distributions_batch = TagDistributionBatch.objects.prefetch_related(
'distributions'
).filter(is_closed=is_closed)
distribution_query = (Q(is_closed=is_closed))
else:
distributions_batch = TagDistributionBatch.objects.filter(
distribution_query = (
Q(assigner_org=org) |
Q(assigned_org=org),
is_closed=is_closed,
Q(is_closed=is_closed)
)
distributions_batch = TagDistributionBatch.objects.prefetch_related(
'distributions'
).filter(distribution_query)
data = distributions_batch.aggregate(
count=Count('id'),
total_sent_tag_count=Coalesce(Sum('total_tag_count', filter=Q(assigner_org=org)), 0),
@@ -179,11 +182,22 @@ class TagDistributionService:
remaining_tag_count=Sum('remaining_tag_count'),
)
# distributions item list detail
items_list = []
distributions = TagDistribution.objects.filter(
Q(assigner_org=org) |
Q(assigned_org=org),
is_closed=is_closed,
distribution_query
)
print(distributions)
species = LiveStockSpecies.objects.values('value')
for spec in species:
items_list.append({
spec.get('value'): distributions.aggregate(
dist_count=Count('id', filter=Q(species_code=spec.get('value'))),
tag_count=Sum('distributed_number', filter=Q(species_code=spec.get('value')))
),
})
data.update({'items': items_list})
return data