Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Descrição:

QIEIntAPI - Eventos de Integração do SIGAQIE com as APIs do APP Minha Produção

Versões:

Microsiga Protheus 12

Idioma:

Português (Brasil)

Sistemas Operacionais Suportados:

Todos

Compatível com as Bases de Dados:

Todos

Parâmetro:

ParamIXB[1] - Objeto Json com dados correspondentes ao Evento (ParamIXB[4]), por exemplo:

  1. Evento "laboratoriosRelacionadosAoUsuario" - Filtra os dados do aplicativo relacionados aos laboratórios retornados no array:
    1. oDados['loginUsuario'] -> Login do usuário logado

  2. Evento "complementoAmostra" - Gravação complementar após inclusão da amostra de resultados:
    1. oDados['QPR_' + ...]  -> Campos da QPR relacionados a gravação

  3. Evento "complementoResultados" - Gravação complementar após inclusão de todas as amostras de resultados;:
    1. oDados['items']  -> Array de amostras destinadas pelo aplicativo para inclusão conforme documentação POST Postman processinspectiontestresults/api/qip/v1/save;

  4. Evento "complementoLaudo" - Gravação complementar após a inclusão de laudos:
    1. oDados['login']  -> Login do usuário logado
    2. oDados['laudo']  -> geral / laboratorio / operacao
    3. oDados['insert']  -> Indicador de operação de inclusão
    4. oDados['update']  -> Indicador de operação de atualização

    5. Laudo Geral / Laudo de Laboratório:
      1. oDados['recnoQPLrecnoQEL']  -> RECNO do registro relacionado na tabela QPL - Laudo da Ordem de Produção
      Laudo Operação
  5. Evento "bloqueioDataInspecao" - Bloqueia o campo de data de inspeção da amostra de resultados:
    1. oDados['login']  -> Login do usuário logado
    2. oDados['recnoQEK']  -> RECNO do registro relacionado na tabela QEK - Insp.Entradas - Avaliacoes
    3. oDados['recnoQERrecnoQPM']  -> RECNO do registro relacionado na tabela QPM - Laudo da Operação
      QER - Medições - Dados Genericos
    4. oDados['operationID']  -> Código da operação relacionada
    5. oDados['insert']  -> Indicador de operação de inclusão
    6. oDados['update']  -> Indicador de operação de atualização

  6. Evento "bloqueioHoraInspecaoEvento "bloqueioDataInspecao" - Bloqueia o campo de data hora de inspeção da amostra de resultados:
    1. oDados['login']  -> Login do usuário logado
    2. oDados['recnoQPKrecnoQEK']  -> RECNO do registro relacionado na tabela QPK QEK - Insp.Processos Entradas - Avaliacoes
    3. oDados['recnoQPRrecnoQER']  -> RECNO do registro relacionado na tabela QPR QER - Medições - Dados Genericos
    4. oDados['operationID']  -> Código da operação relacionada
    5. oDados['insert']  -> Indicador de operação de inclusão
    6. oDados['update']  -> Indicador de operação de atualização


ParamIXB[2] - Endpoint de execução do ponto de entrada;
ParamIXB[3] - Classe da API relacionada;
ParamIXB[4] - Evento, exemplo:

  1. "laboratoriosRelacionadosAoUsuario" - Filtra os dados do aplicativo relacionados aos laboratórios retornados no array;
  2. "complementoAmostra" - Gravação complementar após inclusão da amostra de resultados; 
  3. "complementoResultados" - Gravação complementar após inclusão de todas as amostras de resultados;
  4. "complementoLaudo" - Gravação complementar após a inclusão de laudos;
  5. "bloqueiaDataInspecao" - Bloqueia o campo de data de inspeção da amostra de resultados;
  6. "bloqueiaHoraInspecao "bloqueioHoraInspecao" - Bloqueia o campo de hora de inspeção da amostra de resultados;


7. Evento "validaResultadoUnico" - Valida a confirmação de resultado único:

    • oDados['login']  -> Login do usuário logado
    • oDados['
recnoQPK
    • recnoQEK']  -> RECNO do registro relacionado na tabela
QPK
    • QEK - Insp.
Processos
    • Entradas- Avaliacoes
    • oDados['
recnoQPR
    • recnoQER']  -> RECNO do registro relacionado na tabela
QPR
    • QER - Medições - Dados Genericos
    • oDados['operationID']  -> Código da operação relacionada
    • oDados['insert']  -> Indicador de operação de inclusão
    • oDados['update']  -> Indicador de operação de atualização
    • oDados['form']  -> String JSON com dados de formulário da tela do APP
      oDados['form']['processInspectionTest'] -> Informações do ensaio relacionado 
      oDados['form']['processInspectionTestResult'] -> Informações da amostra de resultados relacionada; 


8. Evento "validaResultadosMultiplos" - Valida a confirmação de resultados de múltiplos ensaios simultâneos:

    • oDados['login']  -> Login do usuário logado
    • oDados['recnoQEK']  -> RECNO do registro relacionado na tabela QEK - Insp.Entradas- Avaliacoes
    • oDados['operationID']  -> Código da operação relacionada
    • oDados['form']  -> String JSON com dados de formulário da tela do APP
      oDados['form']['processInspectionTests'] -> Informações dos ensaios relacionados
      oDados['form']['processInspectionTestResults'] -> Informações das amostras de resultados relacionadas; 
      oDados['form']['postItems'] -> Informações dos dados preparados para envio a operação de inclusão no backend do Protheus

Retorno:

xReturn, varia de acordo com o Evento (ParamIXB[4]), por exemplo:

  1. Evento "laboratoriosRelacionadosAoUsuario":
    1. aLabsFil - Array com relação de laboratórios que o usuário faz parte;

  2. Evento "complementoAmostra":
    1. Nil - não usado.

  3. Evento "complementoResultados":
    1. Nil - não usado.

  4. Evento "complementoLaudo":
    1. Nil - não usado,

  5. Evento "bloqueioDataInspecao":
    1. lBloqueio - Lógico indicando se deve bloquear o campo data de inspeção da amostra;

  6. Evento "bloqueioHoraInspecao":
    1. lBloqueio - Lógico indicando se deve bloquear o campo Hora de inspeção da amostra;

  7. Evento "validaResultadoUnico":
    1. Objeto JsonObject com propriedades:
      1. oReturn['permite']  - Lógico indicando se permite prosseguir (.T.) ou bloqueia (.F.) o processo;
      2. oReturn['mensagem'] - Mensagem que será exibida durante o bloqueio do processo;

  8. Evento "validaResultadosMultiplos":
    1. Objeto JsonObject com propriedades:
      1. oReturn['permite']  - Lógico indicando se permite prosseguir (.T.) ou bloqueia (.F.) o processo;
      2. oReturn['mensagem'] - Mensagem que será exibida durante o bloqueio do processo;
Eventos de chamada de Ponto de Entrada:

Varia de acordo com o Evento (ParamIXB[4]):

  1. Evento "laboratoriosRelacionadosAoUsuario", endpoints:
    1. incominginspectiontestreports/api/qie/v1/list

    2. incominginspectiontestreports/api/qie/v1/test
    3. incominginspectiontestreports/api/qie/v1/pendinglist
    4. incominginspectiontestreports/api/qie/v1/search
    5. incominginspectiontestreports/api/qie/v1/inspection

  2. Evento "complementoAmostra", endpoints:
    1. incominginspectiontestreports/api/qie/v1/save

  3. Evento "complementoResultados", endpoints:
    1. incominginspectiontestreports/api/qie/v1/save

  4. Evento "complementoLaudo", endpoints:
    1. incominginspectiontestreports/api/qie/v1/savegeneralreport
    2. incominginspectiontestreports/api/qie/v1/savelaboratoryreport
    3. incominginspectiontestreports/api/qie/v1/saveoperationreport

  5. Evento "bloqueiaDataInspecao", endpoints:
    1. incominginspectiontestreports/api/qie/v1/dateeditpermission

  6. Evento "bloqueiaHoraInspecao", endpoints:
    1. incominginspectiontestreports/api/qie/v1/timeeditpermission

  7. Evento "validaResultadoUnico":
      1. incominginspectiontestresults/api/qie/v1/vldsingleresult

  8. Evento "validaResultadosMultiplos":
      1. incominginspectiontestresults/api/qie/v1/vldmultipleresult
Programa Fonte:

QualityAPIManager.prw

QIELaudosEnsaios.prw

InspecoesDeEntradasAPI.prw

ResultadosEnsaiosInspecaoDeEntradasAPI.prw

EnsaiosInspecaoDeEntradasAPI.prw

...

Bloco de código
languagedelphi
themeMidnight
firstline1
titleExemplo
linenumberstrue
#DEFINE X5_CHAVE      3  

User Function QIEINTAPI()

    Local xReturn    := Nil
    Local aSX5       := Nil
    Local cClasseAPI := Nil
    Local cEndPoint  := Nil
    Local cEvento    := Nil
    Local oDados     := Nil
      
    If ParamIXB != Nil
        oDados     := ParamIXB[1]
        cEndPoint  := ParamIXB[2]
        cClasseAPI := ParamIXB[3]
        cEvento    := ParamIXB[4]
    EndIf
  
    If  cEvento == "laboratoriosRelacionadosAoUsuario" 
        xReturn := {}
        If !Empty(oDados['loginUsuario']) .AND. oDados['loginUsuario'] == "USUARIO01"
            aAdd(xReturn, "LABQUI")
        Else
            aSX5 := FWGetSX5( "Q2" )
            aEval(aSX5, {|aItem| aAdd(xReturn, aItem[X5_CHAVE]) })
        EndIf

    ElseIf cEvento == "bloqueiaDataInspecao"
        xReturn := .T.

    ElseIf cEvento == "bloqueiaHoraInspecao"
        xReturn := .T.

    ElseIf cEvento == "complementoAmostra"
        //Meu complemento de amostra

    ElseIf cEvento == "complementoResultados"
        //Meu complemento de resultados

    ElseIf cEvento == "complementoLaudo"
        //Meu complemento de laudo

    ElseIf cEvento == "validaResultadoUnico"
        //Validação de amostra de resultados única

        oForm := JsonObject():New()
        oForm:fromJson(oDados["form"])

        xReturn := JsonObject():New()
        xReturn['permite']  := .T.
        xReturn['mensagem'] := "Inclusão permitida pelo evento de validação."

        //xReturn['permite']  := .F.
        //xReturn['mensagem'] := "Inclusão bloqueada pelo evento de validação validaResultadoUnico."

    ElseIf cEvento == "validaResultadosMultiplos"
        //Validação de amostras de resultados múltiplas
 
        oForm := JsonObject():New()
        oForm:fromJson(oDados["form"])
        
        xReturn := JsonObject():New()
        xReturn['permite']  := .T.
        xReturn['mensagem'] := "Inclusão permitida pelo evento de validação."

        //xReturn['permite']  := EndIf
  
Return.F.
        //xReturn['mensagem'] := "Inclusão bloqueada pelo evento de validação validaResultadosMultiplos."

    EndIf    Return xReturn