docApi + attachments

Bom dia pessoal, tudo certo?

Estou com dificuldades ao utilizar a docApi com Attachments, basicamente eu anexo no meu Processo o documento, e invés dele salvar na pasta com código, ele salva sempre na do ECM Raiz, e também quando vai para raiz não é possível visualizar o documento que fiz upload:

function beforeStateEntry(sequenceId) {
    log.info("Iniciando beforeStateEntry com sequenceId: " + sequenceId);

    if (sequenceId == 8) {
        log.info("SequenceId é 8, iniciando processamento de anexos.");

        // ID da pasta "Gestores - assinatura" previamente criada no GED
        var folderId = 32792; // Substitua pelo ID real da pasta

        // Verifica se a pasta existe
        try {
            var folderDto = docAPI.getDocument(folderId);
            if (!folderDto || folderDto.getDocumentType() != "1") {
                log.error("A pasta com ID " + folderId + " não existe ou não é uma pasta.");
                return;
            }
        } catch (e) {
            log.error("Erro ao verificar a existência da pasta: " + e);
            return;
        }

        // Obtém a lista de anexos do processo
        var attachments = hAPI.listAttachments();
        log.info("Número de anexos encontrados: " + attachments.size());

        for (var i = 0; i < attachments.size(); i++) {
            var docDto = attachments.get(i);
            log.info("Processando anexo ID: " + docDto.getDocumentId() + ", Versão: " + docDto.getVersion());

            if (docDto.getDocumentType() == "7") { // Verifica se é um anexo
                log.info("Anexo identificado. Iniciando cópia para a área de upload.");

                // Copia o documento para a área de upload do usuário
                var copiedFiles = docAPI.copyDocumentToUploadArea(docDto.getDocumentId(), docDto.getVersion());
                log.info("Arquivos copiados para a área de upload: " + copiedFiles);

                // Configurações para o novo documento
                var newDocDto = docAPI.newDocumentDto();
                newDocDto.setDocumentDescription(docDto.getDocumentDescription());
                newDocDto.setDocumentType("2"); // Tipo 2 indica documento
                newDocDto.setParentDocumentId(folderId); // Define a pasta de destino
                newDocDto.setActiveVersion(true);
                newDocDto.setColleagueId(getValue("WKUser")); // Usuário atual
                newDocDto.setPublisherId(getValue("WKUser")); // Publicador

                // Cria o anexo principal
                var attachArray = new java.util.ArrayList();
                for (var j = 0; j < copiedFiles.length; j++) {
                    var mainAttach = docAPI.newAttachment();
                    mainAttach.setFileName(copiedFiles[j]);
                    mainAttach.setPrincipal(j == 0); // Define o primeiro arquivo como principal
                    mainAttach.setAttach(false);
                    attachArray.add(mainAttach);
                }

                // Configurações de aprovador
                var aprovador = docAPI.newApproverDto();
                aprovador.setCompanyId(getValue("WKCompany"));
                aprovador.setColleagueId(getValue("WKUser")); // Aprovador
                aprovador.setDocumentId(0); // Será atualizado após a criação
                aprovador.setVersion(1); // Versão do documento
                aprovador.setLevelId(1); // Nível de aprovação
                aprovador.setApproverType(0); // Tipo de aprovador (0 = Colaborador)
                var aprovadoresArray = new java.util.ArrayList();
                aprovadoresArray.add(aprovador);

                try {
                    // Cria o novo documento no GED
                    var doc = docAPI.createDocument(newDocDto, attachArray, null, aprovadoresArray, null);
                    log.info("Documento criado com sucesso. ID: " + doc.getDocumentId());
                } catch (e) {
                    log.error("Erro ao criar o documento: " + e);
                }
            } else {
                log.info("Documento ID: " + docDto.getDocumentId() + " não é um anexo. Tipo: " + docDto.getDocumentType());
            }
        }
    } else {
        log.info("SequenceId não é 8. Nenhuma ação será executada.");
    }
}

tomei como base essas documentações:
https://tdn.totvs.com/display/public/fluig/docAPI
https://tdn.totvs.com/display/public/fluig/Guia+de+Propriedades+dos+Objetos

3 curtidas

Segue esse exemplo:

 // Upload de arquivos
    $('.btn.--upload').on("click", (e)=> {
        let ARR_DOCUMENTID = []
        const FOLDER_ID = $('#codigoPasta').val()
        let form = new FormData()
        let config = DatasetFactoryAuth.getOAuthConfig()
        let request_data_ = {
            url: WCMAPI.getServerURL() + '/ecm/upload',
            method: 'POST',
            "cache-control": "no-cache",
            ajaxData: JSON.stringify({ form }),
            data: {}
        }        

    $.ajax({
        url: '/ecm/upload',
        method: 'POST',
        data: form,
        processData: false,
        contentType: false,
        type: 'POST',
        headers: config.oauth.toHeader(config.oauth.authorize(request_data_, config.token)),
    }, 'json')

    let el = $(e.currentTarget)
    let inputId = el.children('input').attr("id") 
    $(`#${inputId}`).fileupload({
        dataType: 'json',
        done: (e, data) => {                
            $.each(data.result.files, (i, file) => {
                let dataFilename = el.find("input").attr("data-filename")
                let inputName = el.find("input").attr("data-inputname")
                let multiple = el.find("input").attr("multiple")
                let descricaoAnexo = `${dataFilename} - ${new moment().format('DD/MM/YYYY')}`
                let extensao = getFileExtension(file.name)
                const LOADING = FLUIGC.loading($('.form-box:visible'))
                LOADING.show()

                $.ajax({
                    async: true,
                    type: "POST",
                    contentType: "application/json",
                    url: '/api/public/ecm/document/createDocument',
                    headers: config.oauth.toHeader(config.oauth.authorize(request_data_, config.token)),
                    data: JSON.stringify({
                        "description": descricaoAnexo + extensao,
                        "parentId": FOLDER_ID,
                        "attachments": [{ "fileName": file.name }],
                    }),        
                    error: function () {
                        FLUIGC.toast({
                            title: '',
                            message: "Falha ao enviar",
                            type: 'danger'
                        });
                        LOADING.hide()
                    },            
                    success: function (data) {
                        let attachmentId = data.content.id 
                        let attachmentDoc = DatasetFactoryAuth.getDownloadURL(attachmentId)
                        if(multiple == 'multiple'){
                            ARR_DOCUMENTID.push(attachmentId)
                            $(`#${inputName}`).val(ARR_DOCUMENTID.join(';'))
                                                        
                            el.find(".js-anexo-texto").html(`<i class="fa fa-check-circle"></i>`)
                            el.addClass('--success').removeClass('--danger')
                            
                            let filenameText = (file.name.length > 50) ? `${file.name.substr(0,40)}...${file.name.substr(-10)}` : file.name
                            el.closest(".js-anexo-box").find('p').append(`
                                ${dataFilename}: <a href="${attachmentDoc.fileURL}" target="_blank">
                                    <i class="fa fa-paperclip"></i> ${filenameText}
                                </a>
                            `)
                        }
1 curtida