This commit is contained in:
2026-01-24 08:03:20 +03:30
parent e758530a0f
commit 8f38ff5f0e
2 changed files with 153 additions and 2 deletions

View File

@@ -5,12 +5,14 @@ import requests
from django.db.models import Sum, Q, F from django.db.models import Sum, Q, F
from django.http import HttpResponse from django.http import HttpResponse
from authentication.models import SystemUserProfile
from general_urls import base_url_for_sms_report from general_urls import base_url_for_sms_report
from helper_eata import token, chat_id, chat_id_mali from helper_eata import token, chat_id, chat_id_mali
from panel.ProvinceOperator.serializers import TotalWageInformationSerializer from panel.ProvinceOperator.serializers import TotalWageInformationSerializer
from panel.helper_excel import shamsi_date, to_locale_str from panel.helper_excel import shamsi_date, to_locale_str
from panel.models import PoultryHatching, ProvinceKillRequest, KillHousePercentage, TotalWageInformation, \ from panel.models import PoultryHatching, ProvinceKillRequest, KillHousePercentage, TotalWageInformation, \
InternalTransaction, TokenEitaaForEachVet, VetFarm, KillHouseRequest, PoultryRequest, Poultry InternalTransaction, TokenEitaaForEachVet, VetFarm, KillHouseRequest, PoultryRequest, Poultry
from ticket.models import TicketSupport, MessageSupport
def format_datetime_to_shamsi(input_date): def format_datetime_to_shamsi(input_date):
@@ -1852,4 +1854,152 @@ def send_single_bar_to_eitaa(kill_house_request):
response = requests.post(url, data=data, verify=False) response = requests.post(url, data=data, verify=False)
except Exception as e: except Exception as e:
pass pass
def send_all_bar_to_eitaa_ticket(request):
# url = f'https://eitaayar.ir/api/{token}/sendMessage'
date = datetime.now().date() - timedelta(days=1)
all_kill_house_requests = KillHouseRequest.objects.filter(
trash=False,
kill_request__recive_date__date__gte=date
).select_related(
'province_request__poultry_request__poultry__user__city',
'kill_request__kill_house__kill_house_operator__user',
'kill_request__kill_house__system_address__city',
'add_car__driver'
)
poultry_ids = all_kill_house_requests.values_list(
'province_request__poultry_request__poultry__id',
flat=True
).distinct()
vet_farms = VetFarm.objects.filter(
trash=False,
poultry__id__in=poultry_ids
).select_related('vet__user', 'poultry')
vet_to_poultries = {}
for vet_farm in vet_farms:
vet_mobile = vet_farm.vet.user.mobile
if vet_mobile not in vet_to_poultries:
vet_to_poultries[vet_mobile] = []
vet_to_poultries[vet_mobile].append(vet_farm.poultry.id)
if not vet_to_poultries:
return
for vet_mobile, poultry_list in vet_to_poultries.items():
chat_id_eitaa = TokenEitaaForEachVet.objects.filter(vet_mobile=vet_mobile).first()
if not chat_id_eitaa:
continue
vet_kill_requests = all_kill_house_requests.filter(
province_request__poultry_request__poultry__id__in=poultry_list
)
if not vet_kill_requests.exists():
continue
date_time_jalali = format_datetime_to_shamsi(date)
date_shamsi = shamsi_date(date).replace('-', '_')
base_message = '🗓📢❗ سامانه رصدیار، زنجیره تامین،تولید و توزیع مرغ گوشتی📢❗'
base_message += f'***'
base_message += f'{date_time_jalali}'
base_message += f'***'
base_message += f' #گزارش_بارها #{date_shamsi}'
base_message += f'***'
base_message += f'تعداد کل بارها: {vet_kill_requests.count()}'
base_message += f'***'
base_message += f''
base_message += '***'
messages = []
current_message = base_message
m = 1
for entry in vet_kill_requests:
try:
main_quantity = entry.accepted_real_quantity
real_weight = entry.accepted_real_weight
poultry_name = entry.province_request.poultry_request.poultry.unit_name
poultry_mobile = entry.province_request.poultry_request.poultry.user.mobile
city = entry.province_request.poultry_request.poultry.user.city.name
buyer = entry.kill_request.kill_house.name
buyer_city = entry.kill_request.kill_house.system_address.city.name
buyer_mobile = entry.kill_request.kill_house.kill_house_operator.user.mobile
weight = entry.province_request.poultry_request.Index_weight
order_code = entry.bar_code
recive_date = entry.kill_request.recive_date
recive_date_shamsi = shamsi_date(recive_date) if recive_date else ''
main_quantity = "{:,}".format(int(main_quantity))
real_weight = "{:,}".format(int(real_weight))
driver_name = '-'
driver_mobile = '-'
driver_pelak = '-'
driver_health_code = '-'
if entry.add_car and entry.add_car.driver:
driver_name = entry.add_car.driver.driver_name or '-'
driver_mobile = entry.add_car.driver.driver_mobile or '-'
driver_pelak = entry.add_car.driver.pelak or '-'
driver_health_code = entry.add_car.driver.health_code or '-'
if entry.province_request.poultry_request.direct_buying == True:
province_type = 'خرید مستقیم'
elif entry.province_request.poultry_request.export == True:
province_type = 'فروش به خارج استان'
else:
province_type = 'اتحادیه'
driver_info = f' - راننده: {driver_name} ({driver_mobile}) پلاک: {driver_pelak} کد حمل: {driver_health_code}'
new_message_part = f'{m}. کد بار: {order_code} - حجم بار: {main_quantity} قطعه - وزن بار: {real_weight} - میانگین وزن: {weight} - مرغدار: {poultry_name} ({poultry_mobile}) - شهر: {city} - نوع فروش: {province_type} - خریدار: {buyer} ({buyer_mobile}) - شهر خریدار: {buyer_city}{driver_info} - تاریخ بار: ({recive_date_shamsi}) *** ***'
m += 1
if len(current_message) + len(new_message_part) > 4000:
messages.append(current_message)
current_message = base_message
current_message += new_message_part
except Exception as e:
continue
if current_message and current_message != base_message:
messages.append(current_message)
chat_id_eitaa_token = chat_id_eitaa.token
# for message in messages:
# try:
user = SystemUserProfile.objects.filter(trash=False, mobile=chat_id_eitaa.vet_mobile).last()
new_ticket = TicketSupport(
user=user,
title="گزارش بارها",
status='open',
read_only=True,
type_ticket='single',
parent=None,
last_message='Admin',
)
new_ticket.save()
new_ticket.to_user.add(user)
msg = MessageSupport(
ticket=new_ticket,
message=messages,
created_by=user,
sender='Admin'
)
msg.save()
# data = {
# 'chat_id': chat_id_eitaa_token,
# 'text': message,
# }
# response = requests.post(url, data=data, verify=False)
return HttpResponse('پیام‌ها ارسال شد.')

View File

@@ -113,7 +113,7 @@ from .poultry.views import Cancel_Poultry_Exchange_request, Check_Poultry_Auctio
archive_poultry_hatching_with_archive_percent archive_poultry_hatching_with_archive_percent
from bot_eata import bot_eitaa_for_bar, bot_eitaa_free_bar, bot_eitaa_for_hatching_gt_50, \ from bot_eata import bot_eitaa_for_bar, bot_eitaa_free_bar, bot_eitaa_for_hatching_gt_50, \
bot_eitaa_for_province_kill_request, daily_manual_transaction_for_eata, transaction_for_eata_new, \ bot_eitaa_for_province_kill_request, daily_manual_transaction_for_eata, transaction_for_eata_new, \
daily_report_for_each_vet_farm_manual,send_all_bar_to_eitaa daily_report_for_each_vet_farm_manual, send_all_bar_to_eitaa, send_all_bar_to_eitaa_ticket
from django.conf import settings from django.conf import settings
from django.conf.urls.static import static from django.conf.urls.static import static
@@ -1391,5 +1391,6 @@ urlpatterns = [
path('get_dispenser_user_info/', get_dispenser_user_info), path('get_dispenser_user_info/', get_dispenser_user_info),
path('fetch_evacuation_details_for_unknown_hatchings/', fetch_evacuation_details_for_unknown_hatchings), path('fetch_evacuation_details_for_unknown_hatchings/', fetch_evacuation_details_for_unknown_hatchings),
path('kill_house_debt_report_pdf/', kill_house_debt_report_pdf), path('kill_house_debt_report_pdf/', kill_house_debt_report_pdf),
path('send_all_bar_to_eitaa_ticket/', send_all_bar_to_eitaa_ticket),
] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT) ] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)