@senior-erp-service-tower/hst-upload-files
v2.1.1
Published
> **Fork:** Código fonte extraído de `@senior-hcm-service-tower/hst-upload-files` e mantido independentemente para o contexto ERP.
Downloads
271
Keywords
Readme
Fork: Código fonte extraído de
@senior-hcm-service-tower/hst-upload-filese mantido independentemente para o contexto ERP.
ERP Service Tower Senior - Upload Files
Componente desenvolvido para uso em telas customizadas e BPMs pelo time de serviços customizados ERP da Senior Sistemas.
Requisitos
- Angular: 18.0.1
Instalação
npm install @senior-erp-service-tower/hst-upload-filesVisão Geral
O componente hst-upload-files oferece upload de arquivos com suporte a múltiplos modos de armazenamento, integração com GED (Gestão Eletrônica de Documentos) e geração de relatórios XT. O componente implementa ControlValueAccessor, permitindo uso com formControlName.
Modo BPM (padrão)
Modo padrão para uso em workflows BPM. Os arquivos são enviados para o bucket de anexos do Workflow da plataforma Senior.
Endpoints utilizados
POST https://api.senior.com.br/platform/workflow/newAttachment— Solicita URL de uploadPUT <uploadUrl>— Envia o arquivo binárioPOST https://api.senior.com.br/platform/workflow/commitAttachment— Confirma o uploadPOST https://platform.senior.com.br/.../workflow/queries/requestAttachmentAccess— Solicita acesso a um anexoPOST https://platform.senior.com.br/.../workflow/queries/getAttachments— Lista anexos de uma instância
Exemplo de uso
<hst-upload-files formControlName="arquivo"></hst-upload-files>Com todos os parâmetros de controle:
<hst-upload-files
formControlName="arquivo"
label="Clique para anexar o contrato"
[maxFile]="1"
[maxFileSize]="15"
[allowedFileTypes]="['pdf', 'docx']"
disablePreview>
</hst-upload-files>Upload dos arquivos
Para enviar o arquivo ao bucket do tenant e gerar o ID, é necessário chamar manualmente a função syncFiles do componente. No BPM, esse processo será feito no submit do workflow.
@ViewChild(UploadFilesComponent) uploadFilesComponent: UploadFilesComponent;
async enviarArquivos(): Promise<void> {
await this.uploadFilesComponent.syncFiles();
}Modo Blob Service (noWorkflow = true)
Modo para uso em telas customizadas (fora do contexto de workflow). Utiliza o GED/Blob Service da plataforma Senior. Requer os inputs area e domainName.
Endpoints utilizados
POST https://api.senior.com.br/platform/blob_service/uploadFile— Solicita URL de uploadPUT <uploadUrl>— Envia o arquivo binárioPOST https://api.senior.com.br/platform/blob_service/commitFile— Confirma o uploadPOST https://api.senior.com.br/platform/blob_service/requestDownloads— Solicita URL de download
Exemplo de uso
<hst-upload-files
formControlName="arquivo"
area="projeto-contratos"
domainName="senior-devcom.br"
noWorkflow>
</hst-upload-files>Com todos os parâmetros de controle:
<hst-upload-files
formControlName="arquivo"
label="Clique para anexar todos os contratos"
[maxFile]="5"
[maxFileSize]="15"
[allowedFileTypes]="['pdf', 'docx']"
area="projeto-contratos"
domainName="senior-devcom.br"
noWorkflow
disablePreview>
</hst-upload-files>Importante: Quando
noWorkflow = true, os inputsareaedomainNamesão obrigatórios. Caso não informados, será exibida uma mensagem de erro.
Integração com GED (Gestão Eletrônica de Documentos)
O componente oferece integração com o GED da plataforma Senior para envio de documentos e assinatura digital via envelopes.
Enviar documentos ao GED
Envia todos os arquivos do componente para o GED. Aceita apenas PDF.
@ViewChild(UploadFilesComponent) uploadFiles: UploadFilesComponent;
async enviarParaGED(): Promise<void> {
await this.uploadFiles.enviarDocumentosGED('/pasta-destino');
}Fluxo interno:
syncFiles()— Envia arquivos para o bucket (BPM ou Blob Service)GET .../ecm_ged/queries/requestUpload?fileName=<nome>— Solicita URL de upload no GEDPUT <uploadUrl>— Envia arquivo ao storage S3POST .../ecm_ged/actions/newDocument— Cria documento no GEDGET .../ecm_ged/queries/newDocumentStatus?ticket=<ticket>— Aguarda processamento (polling)GET .../ecm_ged/queries/getDocumentVersions?documentId=<id>— Obtém versionamentoPOST .../ecm_ged/actions/approveDocumentVersion— Aprova a versão do documento
Enviar envelope para assinatura (GED + Sign)
Envia todos os documentos para o GED e cria um envelope de assinatura digital.
import { EnvelopConfigDTO } from '@senior-erp-service-tower/hst-upload-files';
const config: EnvelopConfigDTO = {
nomeDoEnvelope: 'Contrato de prestação de serviços',
caminhoArquivos: '/contratos/2024',
geolocalizacao: false,
diasExpirar: 120,
diasNotificar: 1,
diasReenviarNotificacao: 7,
assinantes: [
{
name: 'João Silva',
email: '[email protected]',
phoneNumber: '47999999999',
signerType: 'MANDATORY'
},
{
name: 'Maria Souza',
email: '[email protected]',
phoneNumber: '47988888888',
signerType: 'COPY'
}
]
};
const { envelopeId } = await this.uploadFiles.enviarEnvelopeGEDSign(config);Requisitos:
- Todos os arquivos devem ser PDF
- Deve existir ao menos 1 assinante com
signerType = 'MANDATORY' - Todos os assinantes devem ter name, email e signerType preenchidos
Validar assinaturas do envelope
Verifica se todas as assinaturas obrigatórias foram executadas.
const valido: Boolean = await this.uploadFiles.validarEnvelopeGed(envelopeId);
if (valido) {
// Todas assinaturas obrigatórias foram concluídas
}Gerador de Relatório XT
O componente permite gerar relatórios via integração com o conector G5/XT da plataforma Senior. Os relatórios gerados são automaticamente adicionados como arquivos no componente.
Endpoints utilizados
POST https://platform.senior.com.br/.../bpm_timeout/queries/invoke— Dispara geração do relatório (com timeout estendido)POST https://platform.senior.com.br/.../bpm_timeout/queries/getTicketResponse— Consulta resultado (polling)
Exemplo de uso
import { GerarRelatoriosXTConfig } from '@senior-erp-service-tower/hst-upload-files';
const config: GerarRelatoriosXTConfig = {
clientId: 'meu-client-id',
bearer: 'token-de-acesso',
baseURL: 'servidor-g5.empresa.com',
module: 'com.senior.g5.co.ger',
port: '1234',
service: 'sapiens_Synccom_senior_g5_co_ger',
user: 'usuario',
password: 'senha',
encryption: 0,
pluginId: 'id-do-plugin-conector',
relatorios: [
{
AModelo: 'modelo_contrato',
ANomeArquivo: 'Contrato_001',
LParametros: [
{ ANome: 'parametro1', AValor: 'valor1' }
]
}
]
};
await this.uploadFiles.gerarRelatoriosXT(config);Comportamento:
- Cada relatório é gerado sequencialmente
- O resultado (PDF) é automaticamente adicionado à lista de arquivos do componente
- O
maxFileé incrementado automaticamente para acomodar os relatórios gerados - Mensagens de progresso são exibidas durante a geração
Todos os @Input() disponíveis
| Input | Entrada | Valor Padrão | Descrição |
| --- | --- | --- | --- |
| label | String | 'Anexar arquivo' | Label do botão de anexo |
| hideLabel | boolean | false | Esconde a label |
| buttonLabel | String | 'Anexar' | Texto do botão |
| maxFile | Number | 1 | Número máximo de arquivos anexados |
| maxFileSize | Number | 10 | Tamanho máximo em MB de cada arquivo |
| allowedFileTypes | String[] | [] | Formatos aceitos (se vazio, aceita todos). Ex: ['pdf', 'docx'] |
| area | String | undefined | Nome do projeto/área de armazenamento. Obrigatório quando noWorkflow = true |
| domainName | String | '' | Tenant name. Obrigatório quando noWorkflow = true |
| allowMultipleFiles | boolean | false | Permite selecionar vários arquivos ao mesmo tempo (respeitando maxFile) |
| disablePreview | boolean | false | Desabilita a miniatura de arquivos (disponível apenas para imagens) |
| noWorkflow | boolean | false | Define o modo Blob Service para telas customizadas |
| noContentText | String | 'Não há nenhum anexo' | Texto exibido quando não há arquivos |
Métodos públicos
| Método | Retorno | Descrição |
| --- | --- | --- |
| syncFiles() | Promise<(AttachmentBPMData \| AttachmentDataBlobService)[]> | Envia os arquivos pendentes para o bucket configurado |
| enviarDocumentosGED(caminhoArquivos: string) | Promise<Boolean> | Envia todos os arquivos para o GED (apenas PDF) |
| enviarEnvelopeGEDSign(config: EnvelopConfigDTO) | Promise<{envelopeId: string}> | Envia documentos ao GED e cria envelope de assinatura |
| validarEnvelopeGed(envelopeId: string) | Promise<Boolean> | Valida se todas assinaturas obrigatórias foram executadas |
| gerarRelatoriosXT(config: GerarRelatoriosXTConfig) | Promise<void> | Gera relatórios XT e adiciona ao componente |
