fix: implemented solution to not found dadafor report
parent
07e897cd47
commit
3cc53ad3ee
|
@ -1,8 +1,7 @@
|
||||||
import traceback
|
import traceback
|
||||||
from flask import jsonify
|
from flask import jsonify
|
||||||
from werkzeug.exceptions import HTTPException
|
from werkzeug.exceptions import HTTPException
|
||||||
from pydantic import ValidationError
|
from pydantic import ValidationError
|
||||||
import traceback
|
|
||||||
from bson.errors import InvalidId
|
from bson.errors import InvalidId
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -62,9 +62,12 @@ class TranscriptionExport(Resource):
|
||||||
generated_path = service.reportDataXLSX(hit_report=True)
|
generated_path = service.reportDataXLSX(hit_report=True)
|
||||||
else:
|
else:
|
||||||
generated_path = service.reportDataXLSX()
|
generated_path = service.reportDataXLSX()
|
||||||
|
|
||||||
|
if not generated_path:
|
||||||
|
return {"success": False, "message": "No data found"}, 404
|
||||||
|
|
||||||
if not os.path.exists(generated_path):
|
if not os.path.exists(generated_path):
|
||||||
return {"error": "File generation failed"}, 500
|
return {"success": False, "message": "File generation failed"}, 500
|
||||||
|
|
||||||
# Move o arquivo gerado para o TMP
|
# Move o arquivo gerado para o TMP
|
||||||
os.rename(generated_path, filepath)
|
os.rename(generated_path, filepath)
|
||||||
|
|
|
@ -128,10 +128,7 @@ class TranscriptionReportService:
|
||||||
|
|
||||||
# Executa agregação principal
|
# Executa agregação principal
|
||||||
self.mongo_results = list(collection.aggregate(pipeline))
|
self.mongo_results = list(collection.aggregate(pipeline))
|
||||||
self.unique_ids = [doc["_id"] for doc in self.mongo_results]
|
self.unique_ids = [doc["_id"] for doc in self.mongo_results]
|
||||||
|
|
||||||
# print("=====> self.mongo_results: ", self.mongo_results)
|
|
||||||
# exit(1)
|
|
||||||
|
|
||||||
# Pipeline para contagem total
|
# Pipeline para contagem total
|
||||||
count_pipeline = [
|
count_pipeline = [
|
||||||
|
@ -143,7 +140,7 @@ class TranscriptionReportService:
|
||||||
{"$count": "total"}
|
{"$count": "total"}
|
||||||
]
|
]
|
||||||
count_result = list(collection.aggregate(count_pipeline))
|
count_result = list(collection.aggregate(count_pipeline))
|
||||||
total = count_result[0]["total"] if count_result else 0
|
total = count_result[0]["total"] if count_result else 0
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"total": total,
|
"total": total,
|
||||||
|
@ -155,9 +152,9 @@ class TranscriptionReportService:
|
||||||
|
|
||||||
def _fetch_mysql_data(self, hit_report: Optional[bool] = False)-> List[Dict[str, Any]]:
|
def _fetch_mysql_data(self, hit_report: Optional[bool] = False)-> List[Dict[str, Any]]:
|
||||||
|
|
||||||
collection = self.mongo_client["billing-api"]["api_products"]
|
collection = self.mongo_client["billing-api"]["api_products"]
|
||||||
|
|
||||||
products = list(collection.find({}))
|
products = list(collection.find({}))
|
||||||
|
|
||||||
sql = f"""SELECT
|
sql = f"""SELECT
|
||||||
uniqueid,
|
uniqueid,
|
||||||
|
@ -176,7 +173,7 @@ class TranscriptionReportService:
|
||||||
uniqueid IN {tuple(self.unique_ids)}
|
uniqueid IN {tuple(self.unique_ids)}
|
||||||
GROUP BY
|
GROUP BY
|
||||||
uniqueid, src, dst;"""
|
uniqueid, src, dst;"""
|
||||||
rows = execute_query(self.company_id, sql)
|
rows = execute_query(self.company_id, sql)
|
||||||
|
|
||||||
if hit_report:
|
if hit_report:
|
||||||
for row in rows:
|
for row in rows:
|
||||||
|
@ -355,7 +352,10 @@ class TranscriptionReportService:
|
||||||
|
|
||||||
|
|
||||||
def reportDataXLSX(self, hit_report: Optional[bool] = False) -> str:
|
def reportDataXLSX(self, hit_report: Optional[bool] = False) -> str:
|
||||||
self._fetch_mongo_data(all_data=True)
|
mongo_data = self._fetch_mongo_data(all_data=True)
|
||||||
|
|
||||||
|
if mongo_data["total"] == 0:
|
||||||
|
return
|
||||||
|
|
||||||
if hit_report:
|
if hit_report:
|
||||||
mysql_data = self._fetch_mysql_data(hit_report=True)
|
mysql_data = self._fetch_mysql_data(hit_report=True)
|
||||||
|
@ -367,6 +367,15 @@ class TranscriptionReportService:
|
||||||
|
|
||||||
def reportData(self, page: int = 1, page_size: int = 20, hit_report: Optional[bool] = False) -> Dict[str, Any]:
|
def reportData(self, page: int = 1, page_size: int = 20, hit_report: Optional[bool] = False) -> Dict[str, Any]:
|
||||||
mongo_data = self._fetch_mongo_data(page=page, page_size=page_size)
|
mongo_data = self._fetch_mongo_data(page=page, page_size=page_size)
|
||||||
|
|
||||||
|
if mongo_data["total"] == 0:
|
||||||
|
return {
|
||||||
|
"pagination": mongo_data,
|
||||||
|
"data": [],
|
||||||
|
"cost": {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if hit_report:
|
if hit_report:
|
||||||
mysql_data = self._fetch_mysql_data(hit_report=True)
|
mysql_data = self._fetch_mysql_data(hit_report=True)
|
||||||
|
|
Loading…
Reference in New Issue