[[:treinamentos|{{treinamentos:api.png?90 |}}]]
====== Integração do GSAN com o sistema SIGO ======
Documentação sobre a integração do **GSAN** com o sistema **SIGO**, cujo objetivo é definir a estrutura de troca de informações entre o **GSAN** e o sistema **SIGO**. Aqui é definida a estrutura dos //payloads// que será utilizada nas //request// para o sistema **SIGO**.
\\
===== Estrutura dos Json de envio =====
Serão realizadas 2 (duas) requisições à API do sistema **SIGO**:
- A primeira, quando for informada a interrupção da rede na execução do serviço para um tipo de serviço no sistema **GSAN**.
- A segunda requisição se dá quando o serviço for encerrado em campo e as informações forem atualizadas no **GSAN**.
\\
===== Requisição para Inserir Ordem Serviço no SIGO =====
O **Json** será constituído pelos campos abaixo descritos:
- **id**: identificador da requisição enviada. Campo inteiro.
- **latitude**: coordenada geográfica referente ao eixo **x** do endereço informado no serviço. Campo decimal de tamanho **24** com precisão **12**.
- **longitude**: coordenada geográfica referente ao eixo **y** do endereço informado no serviço. Campo decimal de tamanho **24** com precisão **12**.
- **numeroRA**: código do Registro de Atendimento. Campo inteiro.
- **dataConhecimento**: data de conhecimento do serviço a ser executado. Campo //String// contendo a data no formato dd/mm/aaaa hh24:mm.
- **dataRegistro**: data de registro da Ordem de Serviço. Campo //String// contendo a data no formato dd/mm/aaaa hh24:mm.
- **numeroOrdemServico**: código da Ordem de Serviço. Campo inteiro.
- **codigoTipoServico**: código do serviço solicitado. Campo inteiro.
- **descricaoTipoServico**: descrição do serviço solicitado. Campo texto com no máximo 30 (trinta) caracteres.
- **haveraInterrupcaoOperacaoRede**: indicador se haverá interrupção ou não da rede. Campo //booleano//.
- **dataPrevistaExecucao**: data prevista para execução do serviço. Campo //String// contendo a data no formato dd/mm/aaaa hh24:mm.
- **previsaoExecucao**: tempo previsto para conclusão do serviço. Campo decimal de tamanho **13** e precisão **2**.
- **tipoPrevisao**: código do tipo de previsão, onde **1 = Dias** e **2 = Horas**. Campo inteiro.
\\
Ficando assim definido a estrutura do Json para inserir a Ordem de Serviço no sistema **SIGO**:
{ id: Integer,
latitude: decimal,
longitude: decimal,
numeroRA: Integer,
dataConhecimento: String,
dataRegistro: String,
numeroOrdemServico: Integer,
codigoTipoServico: Integer,
descricaoTipoServico: String,
haveraInterrupcaoOperacaoRede: Boolean,
dataPrevistaExecucao: String,
previsaoExecucao: decimal,
tipoPrevisao: Integer
}
\\
Exemplo:
{id: 1,
latitude: 2.12312312,
longitude: 2.112312,
numeroRA: 1234,
dataConhecimento: '12/07/2019 14:34',
dataRegistro: '13/07/2019 15:27',
numeroOrdemServico: 123443,
codigoTipoServico: 99999,
descricaoTipoServico: 'SERVICO MANUTENCAO REDE',
haveraInterrupcaoOperacaoRede: true,
dataPrevistaExecucao: '15/07/2019 15:00',
previsaoExecucao: 1.5,
tipoPrevisao: 1
}
\\
===== Requisição para Encerrar Ordem Serviço no SIGO =====
O **Json** será constituído pelos campos abaixo descritos:
- **id**: identificador da requisição de inserção enviada anteriormente. Campo inteiro.
- **numeroOrdemServico**: código da Ordem de Serviço. Campo inteiro.
- **dataSaidaEquipe**: data/hora de saída da equipe. Campo //String// contendo a data/hora no formato dd/mm/aaaa h24:mm.
- **dataInicioExecucao**: data/hora de início da execução do serviço. Campo //String// contendo a data/hora no formato dd/mm/aaaa h24:mm.
- **dataConclusaoExecucao**: data/hora de conclusão da execução do serviço. Campo //String// contendo a data/hora no formato dd/mm/aaaa h24:mm.
- **situacaoOrdemServico**: código da Situação da execução da Ordem de Serviço, onde **1 = Total**, **2 = Parcial** e **3 = Cancelada**. Campo inteiro.
- **equipe**: equipe que executou o serviço em campo, o qual será composto por:
- //código//: código da equipe. Campo inteiro.
- //nome//: descrição da equipe. Campo //String// com no máximo 30 caracteres.
- //componentes//: lista de funcionários que compõem a equipe, sendo definidos pelos campos abaixo:
- matricula: matrícula do funcionário. Campo inteiro.
- nome: nome do funcionário. Campo texto com no máximo 45 (quarenta e cinco) caracteres.
- **quantidadeHorasTrabalhadas**: quantidade de horas de execução do serviço. Campo decimal com tamanho **13** e precisão **2**.
- **insumos**: lista de materiais utilizados na execução do serviço, podendo ser uma lista vazia, onde:
- //código//: código do material. Campo inteiro.
- //descrição//: descrição do material. Campo texto com no máximo 30 (trinta) caracteres.
- //quantidade//: quantidade utilizada. Decimal com tamanho **13** e precisão **2**.
- **codigoTipoMaterialRede**: código do tipo de material de rede. Campo inteiro; nulo caso não informado.
- **descricaoTipoMaterialRede**: descrição do tipo de material de rede. Campo texto com no máximo 30 (trinta) caracteres; nulo caso não informado.
- **codigoDiametroRede**: código do diâmetro da rede. Campo inteiro; nulo caso não informado.
- **descricaoDiametroRede**: descrição do diâmetro da rede. Campo texto com no máximo 30 (trinta) caracteres; nulo caso não informado.
- **profundidadeRede**: profundidade da rede. Campo decimal com tamanho **13** e precisão **2**.
\\
Ficando assim definido a estrutura do **Json** para encerrar a Ordem de Serviço no sistema **SIGO**:
{id: Integer,
numeroOrdemServico: Integer,
dataSaidaEquipe: String,
dataInicioServico: String,
dataConclusaoServico: String,
situacaoExecucaoServico: Integer,
equipe:
{id: Integer,
nome: String(,
componentes: [{
matricula: Integer
nome: String(45)
},
...
]
},
quantidadeHorasTrabalhadas: Integer,
insumos: [{
codigo: Integer
descricao: String(45)
quantidade: decimal(13,2)
},
...
],
codigoTipoMaterialRede: Integer,
descricaoTipoMaterialRede: String,
codigoDiametroRede: Integer,
descricaoDiametroRede: String,
profundidadeRede: decimal(13,2)
}
\\
Exemplo:
{id: 1,
numeroOrdemServico: 123443,
dataSaidaEquipe: '15/07/2019 10:17',
dataInicioServico: '15/07/2019 15:22',
dataConclusaoServico: '15/07/2019 17:22',
situacaoExecucaoServico: 1,
equipe:
{
id: 1,
nome: 'EQUIPE 01',
componentes: [{
matricula: 1
nome: 'FUNCIONARIO 01'
},
{
matricula: 2
nome: 'FUNCIONARIO 02'
}
]
},
quantidadeHorasTrabalhadas: 2.0,
insumos: [{
codigo: 1
descricao: 'MATERIAL 01'
quantidade: 1.5
}
],
codigoTipoMaterialRede: 1,
descricaoTipoMaterialRede: 'MATERIAL REDE 01',
codigoDiametroRede: null,
descricaoDiametroRede: null,
profundidadeRede: 1.72,
}
\\
===== Requisição de Retorno do SIGO =====
Para toda requisição que for enviada ao **SIGO**, semelhante requisição deve retornar um **Json** informando que a //request// foi recebida com sucesso. Este retorno deve conter os campos abaixo descritos:
- **id**: identificador da requisição enviada para processamento no **SIGO**.
- **status**: situação da requisição, onde 1 = recebido com sucesso.
\\
A estrutura do **Json** do retorno das requisições, fica assim definida:
{id: Integer
status: Integer
}
\\
Exemplo:
{id: 1
status: 1
}
\\
Clique **[[=treinamentos:integracoes|AQUI]]** para acessar outros serviços com os detalhes técnicos das integrações.