Este software foi desenvolvido para modernizar e facilitar o monitoramento das esteiras de uma transportadora. Antes, o processo utilizava planilhas manuais em papel, o que demandava tempo, esforço e gerava desperdício de recursos. Com a nova interface, é possível:
- 👀 Visualizar em tempo real o que está sendo transportado em cada esteira.
- ⚙️ Identificar rapidamente os clientes e possíveis problemas, como falta de caixas.
- 📋 Melhorar a organização e a tomada de decisões.
- 🌱 Reduzir o uso de papel, contribuindo para práticas mais sustentáveis.
Observação: Este software foi projetado para operar com 8 esteiras de um sorter. A interface é a mesma, mas as consultas de dados são específicas para cada esteira, permitindo uma visualização personalizada.
O sistema é totalmente dependente dos dados provenientes do Sorter, que está integrado ao banco de dados. Todas as informações exibidas, como:
- 📦 Caixas processadas
- 🚫 Caixas rejeitadas
- ❌ Caixas faltantes
São registradas automaticamente no banco de dados assim que passam pelo Sorter.
A lógica do script utiliza essas informações em tempo real para exibir os dados atualizados nas telas. Portanto, é fundamental que o banco de dados esteja configurado corretamente e sincronizado com o Sorter para o sistema funcionar adequadamente.
-
Exibição do Manifesto:
- Número do manifesto.
- Esteira em operação.
- Frota associada ao manifesto.
- Hora atual do processamento.
- Duração da execução.
- Totais: quantidade de produtos, caixas que passaram, rejeitadas e faltantes.
- Informações sobre caixas lidas fora do contexto.
-
Atualização do Manifesto:
- Permite trocar e atualizar os dados para refletir o manifesto mais recente.
-
Gerenciamento de Exibição:
- Controle eficiente de janelas de exibição para várias esteiras em computadores conectados.
-
Visibilidade do Fluxo:
- Informações claras e em tempo real para gestão logística eficiente.
- Python: Automação e backend do sistema.
- Streamlit: Criação de interface web para exibição em tempo real.
- Tkinter: Interface gráfica para atualização do manifesto.
- MySQL Connector: Conexão com o banco de dados.
- ODBC: Integração com SQL Server.
- Pandas: Manipulação de dados.
- PyODBC: Consultas ao banco de dados SQL.
- Instale o Python 3.8 ou superior (Clique aqui para baixar).
- Configure o banco de dados com as tabelas e informações necessárias.
Abra o terminal e execute os comandos abaixo:
mkdir ExibicaoManifesto
cd ExibicaoManifesto
git clone https://github.com/seu-usuario/seu-repositorio.gitAinda no terminal, navegue até a pasta do repositório clonado e instale as bibliotecas necessárias:
pip install streamlit mysql-connector-python pandas pyodbcNo arquivo controle_esteira.py, edite a variável DB_CONFIG com as credenciais do seu banco de dados SQL Server:
DB_CONFIG = {
"server": "seu-servidor",
"database": "sua-base-de-dados",
"username": "seu-usuario",
"password": "sua-senha",
"driver": "{ODBC Driver 17 for SQL Server}",
}Certifique-se de que as tabelas e colunas no banco de dados estejam conforme as consultas SQL definidas no código.
Execute o script atualizar_manifesto.py para alterar o manifesto atual. No terminal, digite:
python atualizar_manifesto.py- Uma janela será exibida solicitando o código do novo manifesto (8 caracteres).
- Após inserir o código e confirmar, o manifesto será atualizado no sistema e refletirá nos monitores em tempo real.
Importante:
- Existe uma versão
.exedoatualizar_manifesto.py, utilizada pela equipe de logística. Essa versão permite a atualização fácil do manifesto por meio de um arquivo compartilhado (ultimo_manifesto.txt), garantindo sincronização imediata com os monitores.
Para abrir as janelas de exibição e monitorar os dados das esteiras, execute:
streamlit run abrir_janelas_esteira.py- As janelas serão exibidas automaticamente em portas diferentes para cada esteira configurada.
- Utilize múltiplos monitores, se disponíveis, para melhorar a visualização dos dados.
- Deixe este script rodando continuamente para manter o sistema ativo, idealmente operando 24 horas por dia.
O script controle_esteira.py é o núcleo do sistema e não deve ser alterado diretamente. Ele é responsável por gerenciar toda a lógica de exibição e conexão com o banco de dados.
O sistema utiliza o SQL Server para armazenar e processar as informações das esteiras e dos manifestos. A seguir, explicamos como configurar o banco de dados para utilizar o sistema com os seus próprios dados.
controle_esteira.py: Script principal para exibição de dados. Não deve ser modificado diretamente.abrir_janelas_esteira.py: Abre janelas para diferentes esteiras e deve ser mantido rodando continuamente.atualizar_manifesto.py: Atualiza o manifesto exibido no sistema, com versão.exepara uso pela logística.ultimo_manifesto.txt: Armazena o último manifesto processado e é atualizado automaticamente..gitignore: Ignora arquivos desnecessários no repositório.
- Certifique-se de que os drivers do ODBC para SQL Server estão instalados no sistema.
- Caso encontre erros ao executar os scripts, reinstale as bibliotecas necessárias:
pip install --force-reinstall nome-da-biblioteca
- Para melhor desempenho, utilize um computador com múltiplos monitores e boa conectividade de rede.
- A atualização do manifesto por meio do
.exeé essencial para operações em tempo real e sincronização com os monitores.
Armazena informações sobre as frotas e as esteiras.
CREATE TABLE DT6010 (
DT6_FROTA VARCHAR(50), -- Identificador da frota
DT6_PEDCLI VARCHAR(50), -- Código do pedido ou manifesto
DT6_SORTER INT -- Número da esteira
);Registra detalhes sobre o fluxo de caixas processadas e seus respectivos status.
CREATE TABLE Tcubagem (
data DATETIME, -- Data e hora do processamento
saida_prog INT, -- Esteira programada para a saída
saida_env INT, -- Esteira que realmente processou a caixa
STATUS INT, -- Status da caixa (ex.: 2 = sucesso, 888 = lido fora de contexto)
pedcli VARCHAR(50) -- Código do pedido ou manifesto
);Contém informações detalhadas de cada caixa, incluindo status de processamento.
CREATE TABLE DTC010 (
DTC_ETIQUE VARCHAR(50), -- Etiqueta única identificadora da caixa
DTC_QTDVOL INT, -- Quantidade de volumes associados à etiqueta
DTC_DESTINATARIO VARCHAR(50),-- Nome do cliente ou destinatário
Caixas_Esteira INT, -- Quantidade de caixas que passaram pela esteira
Caixas_Rejeito INT, -- Quantidade de caixas rejeitadas
Caixas_Bipada INT -- Quantidade de caixas bipadas (escaneadas)
);Após criar as tabelas, insira alguns dados iniciais para testar o sistema. Aqui estão exemplos de inserção:
INSERT INTO DT6010 (DT6_FROTA, DT6_PEDCLI, DT6_SORTER)
VALUES
('Frota01', '001CAB87', 1),
('Frota02', '001CAB88', 2);INSERT INTO Tcubagem (data, saida_prog, saida_env, STATUS, pedcli)
VALUES
(GETDATE(), 1, 1, 2, '001CAB87'),
(GETDATE(), 2, 2, 888, '001CAB88');INSERT INTO DTC010 (DTC_ETIQUE, DTC_QTDVOL, DTC_DESTINATARIO, Caixas_Esteira, Caixas_Rejeito, Caixas_Bipada)
VALUES
('ETQ001', 10, 'Cliente A', 8, 1, 1),
('ETQ002', 15, 'Cliente B', 10, 2, 3);Edite o arquivo controle_esteira.py para configurar as credenciais do banco de dados na variável DB_CONFIG:
DB_CONFIG = {
"server": "SEU_SERVIDOR", # Exemplo: "localhost" ou "192.168.1.100"
"database": "NOME_DO_BANCO_DE_DADOS", # Exemplo: "ExibicaoManifesto"
"username": "SEU_USUARIO", # Exemplo: "sa"
"password": "SUA_SENHA", # Exemplo: "senha123"
"driver": "{ODBC Driver 17 for SQL Server}" # Driver ODBC instalado no sistema
}Certifique-se de que o servidor de banco de dados esteja acessível e que o usuário tenha permissões para acessar as tabelas.
Se você utilizar nomes diferentes para tabelas ou colunas, ajuste as consultas SQL no código para refletir essas alterações.
Na função run_queryf, o código utiliza a seguinte consulta:
SELECT DISTINCT DT6_FROTA
FROM DT6010
WHERE DT6_PEDCLI = '001CAB87' AND DT6_SORTER = ?Se o identificador '001CAB87' variar, configure-o como uma variável:
PEDCLI = os.getenv("PEDCLI", "001CAB87") # Configurável por ambienteE altere a consulta para:
SELECT DISTINCT DT6_FROTA
FROM DT6010
WHERE DT6_PEDCLI = ? AND DT6_SORTER = ?Passe os parâmetros dinamicamente no código:
params=(PEDCLI, esteira)Certifique-se de instalar os drivers e bibliotecas necessárias:
- Drivers ODBC: Baixe o ODBC Driver 17 para SQL Server.
- Bibliotecas Python:
pip install streamlit mysql-connector-python pandas pyodbc
Para garantir que o sistema consegue se conectar ao banco de dados, execute este script no Python:
import pyodbc
conn = pyodbc.connect(
"DRIVER={ODBC Driver 17 for SQL Server};"
"SERVER=SEU_SERVIDOR;"
"DATABASE=NOME_DO_BANCO_DE_DADOS;"
"UID=SEU_USUARIO;"
"PWD=SUA_SENHA;"
)
print("Conexão bem-sucedida!")
conn.close()Se a mensagem "Conexão bem-sucedida!" aparecer, o banco está configurado corretamente.
-
Banco de Dados Configurado:
- As tabelas
DT6010,TcubagemeDTC010foram criadas. - Dados de teste foram inseridos nas tabelas.
- O servidor de banco de dados está acessível.
- As tabelas
-
Dependências Instaladas:
- Python 3.8 ou superior instalado.
- Bibliotecas necessárias (
streamlit,mysql-connector-python,pandas,pyodbc) instaladas viapip. - Driver ODBC para SQL Server configurado no sistema operacional.
-
Credenciais Configuradas:
- O arquivo
controle_esteira.pyfoi editado para incluir as credenciais corretas do banco de dados na variávelDB_CONFIG.
- O arquivo
-
Configuração do Código SQL:
- Todas as consultas SQL foram ajustadas para refletir as tabelas e colunas usadas no banco de dados do sistema.
-
Testes de Conexão Realizados:
- Testou a conexão com o banco de dados usando o script de exemplo fornecido.
-
Scripts Operacionais:
controle_esteira.pyestá pronto e configurado corretamente.atualizar_manifesto.pyfoi testado e está funcionando para atualizar o manifesto.abrir_janelas_esteira.pyestá rodando continuamente para exibição nas telas.
-
Ambiente Configurado:
- Servidor com boa conectividade de rede para manter o sistema estável.
- Computadores com múltiplos monitores para visualização eficiente.
Com essas etapas, qualquer pessoa conseguirá configurar o banco de dados e usar o sistema sem dificuldades. 🚀
