att
This commit is contained in:
parent
a00fedd78f
commit
736016ea99
121
draft_mar.py
121
draft_mar.py
@ -353,31 +353,122 @@ def fetch_and_insert_data(store_code, index, total, cursor, retry_count=1):
|
|||||||
print(f"{index}/{total}: Falha ao processar a loja {store_code} após {retry_count} tentativas.")
|
print(f"{index}/{total}: Falha ao processar a loja {store_code} após {retry_count} tentativas.")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
def finalize_tables(cursor):
|
||||||
|
"""
|
||||||
|
Finaliza o processo:
|
||||||
|
1. Exclui a tabela dbo.draft
|
||||||
|
2. Renomeia dbo.draft_temp para dbo.draft
|
||||||
|
3. Atualiza dbo.draft_historico com os dados do dia
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
print("\n=== Iniciando finalização das tabelas ===")
|
||||||
|
|
||||||
|
# Passo 1: Excluir a tabela draft se existir
|
||||||
|
print("Passo 1: Excluindo tabela dbo.draft...")
|
||||||
|
cursor.execute("""
|
||||||
|
IF EXISTS (SELECT * FROM sys.tables WHERE name = 'draft' AND schema_id = SCHEMA_ID('dbo'))
|
||||||
|
BEGIN
|
||||||
|
DROP TABLE dbo.draft
|
||||||
|
END
|
||||||
|
""")
|
||||||
|
conn.commit()
|
||||||
|
print("Tabela dbo.draft excluída com sucesso.")
|
||||||
|
|
||||||
|
# Passo 2: Renomear draft_temp para draft
|
||||||
|
print("Passo 2: Renomeando dbo.draft_temp para dbo.draft...")
|
||||||
|
cursor.execute("EXEC sp_rename 'dbo.draft_temp', 'draft'")
|
||||||
|
conn.commit()
|
||||||
|
print("Tabela renomeada com sucesso: dbo.draft_temp -> dbo.draft")
|
||||||
|
|
||||||
|
# Passo 3: Atualizar draft_historico
|
||||||
|
print("Passo 3: Atualizando dbo.draft_historico...")
|
||||||
|
|
||||||
|
# Obter a data de hoje
|
||||||
|
today = datetime.now().strftime("%Y-%m-%d")
|
||||||
|
print(f"Data de hoje: {today}")
|
||||||
|
|
||||||
|
# Verificar se já existem dados para hoje
|
||||||
|
cursor.execute("SELECT COUNT(*) FROM dbo.draft_historico WHERE CAST(data AS DATE) = ?", (today,))
|
||||||
|
count = cursor.fetchone()[0]
|
||||||
|
|
||||||
|
if count > 0:
|
||||||
|
print(f"Encontrados {count} registros para a data {today}. Excluindo...")
|
||||||
|
cursor.execute("DELETE FROM dbo.draft_historico WHERE CAST(data AS DATE) = ?", (today,))
|
||||||
|
conn.commit()
|
||||||
|
print(f"Registros da data {today} excluídos com sucesso.")
|
||||||
|
else:
|
||||||
|
print(f"Nenhum registro encontrado para a data {today}.")
|
||||||
|
|
||||||
|
# Inserir dados da tabela draft na draft_historico
|
||||||
|
print("Inserindo dados da dbo.draft na dbo.draft_historico...")
|
||||||
|
cursor.execute("""
|
||||||
|
INSERT INTO dbo.draft_historico (
|
||||||
|
loja_id, code, description, launch, deactivation,
|
||||||
|
thirdtolastcyclesales, secondtolastcyclesales, lastcyclesales,
|
||||||
|
currentcyclesales, nextcycleprojection, secondtonextcycleprojection,
|
||||||
|
stock_actual, stock_intransit, purchasesuggestion,
|
||||||
|
smartpurchase_purchasesuggestioncycle, smartpurchase_nextcyclepurchasesuggestion,
|
||||||
|
pendingorder, salescurve,
|
||||||
|
promotions_description, promotions_discountpercent,
|
||||||
|
pricesellin, businessunit, codcategory,
|
||||||
|
criticalitem_dtprovidedregularization, criticalitem_blockedwallet, criticalitem_iscritical,
|
||||||
|
codsubcategory, isproductdeactivated, brandgroupcode,
|
||||||
|
dayswithoutsales, coveragedays, hascoverage, data
|
||||||
|
)
|
||||||
|
SELECT
|
||||||
|
loja_id, code, description, launch, deactivation,
|
||||||
|
thirdToLastCycleSales, secondToLastCycleSales, lastCycleSales,
|
||||||
|
currentCycleSales, nextCycleProjection, secondToNextCycleProjection,
|
||||||
|
stock_actual, stock_inTransit, purchaseSuggestion,
|
||||||
|
smartPurchase_purchaseSuggestionCycle, smartPurchase_nextCyclePurchaseSuggestion,
|
||||||
|
pendingOrder, salesCurve,
|
||||||
|
promotions_description, promotions_discountPercent,
|
||||||
|
priceSellin, businessUnit, codCategory,
|
||||||
|
criticalItem_dtProvidedRegularization, criticalItem_blockedWallet, criticalItem_isCritical,
|
||||||
|
codSubCategory, isProductDeactivated, brandGroupCode,
|
||||||
|
daysWithoutSales, coverageDays, hasCoverage, date
|
||||||
|
FROM dbo.draft
|
||||||
|
""")
|
||||||
|
conn.commit()
|
||||||
|
|
||||||
|
# Verificar quantos registros foram inseridos
|
||||||
|
cursor.execute("SELECT @@ROWCOUNT")
|
||||||
|
inserted_count = cursor.fetchone()[0]
|
||||||
|
print(f"{inserted_count} registros inseridos na dbo.draft_historico com sucesso.")
|
||||||
|
|
||||||
|
print("=== Finalização das tabelas concluída com sucesso ===\n")
|
||||||
|
return True
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Erro ao finalizar tabelas: {e}")
|
||||||
|
conn.rollback()
|
||||||
|
return False
|
||||||
|
|
||||||
def update_api_status(status):
|
def update_api_status(status):
|
||||||
"""Atualiza o status da API"""
|
"""Atualiza o status da API"""
|
||||||
try:
|
try:
|
||||||
url_status = "https://api.grupoginseng.com.br/api/status/1"
|
url_status = "https://api.grupoginseng.com.br/api/status/1"
|
||||||
|
|
||||||
# Definir fuso horário de São Paulo (UTC-3)
|
# Definir fuso horário de São Paulo (UTC-3)
|
||||||
sao_paulo_offset = timedelta(hours=-3)
|
sao_paulo_offset = timedelta(hours=-3)
|
||||||
|
|
||||||
# Gerar data/hora atual no formato YYYY-MM-DD HH:MM:SS com UTC-3
|
# Gerar data/hora atual no formato YYYY-MM-DD HH:MM:SS com UTC-3
|
||||||
current_datetime = datetime.now(timezone(sao_paulo_offset)).strftime("%Y-%m-%d %H:%M:%S")
|
current_datetime = datetime.now(timezone(sao_paulo_offset)).strftime("%Y-%m-%d %H:%M:%S")
|
||||||
|
|
||||||
# Montar o payload
|
# Montar o payload
|
||||||
payload = {
|
payload = {
|
||||||
"STATUS": status,
|
"STATUS": status,
|
||||||
"DATA": current_datetime
|
"DATA": current_datetime
|
||||||
}
|
}
|
||||||
|
|
||||||
# Cabeçalhos
|
# Cabeçalhos
|
||||||
headers_status = {
|
headers_status = {
|
||||||
"Content-Type": "application/json"
|
"Content-Type": "application/json"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Enviar PUT request
|
# Enviar PUT request
|
||||||
response = requests.put(url_status, json=payload, headers=headers_status)
|
response = requests.put(url_status, json=payload, headers=headers_status)
|
||||||
|
|
||||||
print("Hora enviada:", current_datetime)
|
print("Hora enviada:", current_datetime)
|
||||||
print("Status Code:", response.status_code)
|
print("Status Code:", response.status_code)
|
||||||
print("Response Body:", response.text)
|
print("Response Body:", response.text)
|
||||||
@ -417,24 +508,32 @@ def main():
|
|||||||
success = fetch_and_insert_data(store_code, index, total, cursor)
|
success = fetch_and_insert_data(store_code, index, total, cursor)
|
||||||
if not success:
|
if not success:
|
||||||
retry_failed_stores.append(store_code)
|
retry_failed_stores.append(store_code)
|
||||||
|
|
||||||
failed_stores = retry_failed_stores
|
failed_stores = retry_failed_stores
|
||||||
if not failed_stores:
|
if not failed_stores:
|
||||||
print("\nTodos os arquivos foram processados com sucesso.")
|
print("\nTodos os arquivos foram processados com sucesso.")
|
||||||
update_api_status("OK")
|
# Finalizar tabelas antes de atualizar status
|
||||||
|
if finalize_tables(cursor):
|
||||||
|
update_api_status("OK")
|
||||||
|
else:
|
||||||
|
update_api_status("FAIL")
|
||||||
break
|
break
|
||||||
|
|
||||||
if failed_stores:
|
if failed_stores:
|
||||||
print(f"Tentativa {attempt} de {retry_count} para as lojas que falharam.")
|
print(f"Tentativa {attempt} de {retry_count} para as lojas que falharam.")
|
||||||
time.sleep(10)
|
time.sleep(10)
|
||||||
|
|
||||||
# Se ainda houver lojas com falha após todas as tentativas
|
# Se ainda houver lojas com falha após todas as tentativas
|
||||||
if failed_stores:
|
if failed_stores:
|
||||||
print(f"\nNão foi possível processar algumas lojas: {failed_stores}")
|
print(f"\nNão foi possível processar algumas lojas: {failed_stores}")
|
||||||
update_api_status("FAIL")
|
update_api_status("FAIL")
|
||||||
else:
|
else:
|
||||||
print("\nTodos os arquivos foram processados com sucesso.")
|
print("\nTodos os arquivos foram processados com sucesso.")
|
||||||
update_api_status("OK")
|
# Finalizar tabelas antes de atualizar status
|
||||||
|
if finalize_tables(cursor):
|
||||||
|
update_api_status("OK")
|
||||||
|
else:
|
||||||
|
update_api_status("FAIL")
|
||||||
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f"Erro durante a execução: {e}")
|
print(f"Erro durante a execução: {e}")
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user