+ * Iniciativa(s): NUMERO_INICIATIVA + *
+ * + *+ * Regra(s) de negócio: NUMERO_REGRA_DE_NEGOCIO + *
+ * + * Método responsável por indexar processo + * + * @author rogerio.costa + * + * @param processo + */ + private void saveSolr(Processo processo) { + + try { + + if (!UtilObjeto.isReferencia(processo.getSigilo())) { + + this.solrService.addProcesso(processo); + } + + } catch (final Exception e) { + + e.printStackTrace(); + } + } + + /** * ** Iniciativa(s): NUMERO_INICIATIVA diff --git a/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/SolrServiceImpl.java b/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/SolrServiceImpl.java index 2f9e2be..d6cadde 100644 --- a/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/SolrServiceImpl.java +++ b/cit-ecm-api/src/main/java/br/com/centralit/api/service/impl/SolrServiceImpl.java @@ -7,12 +7,14 @@ import org.apache.solr.client.solrj.SolrClient; import org.apache.solr.client.solrj.SolrServerException; import org.apache.solr.client.solrj.impl.HttpSolrClient; import org.apache.solr.common.SolrInputDocument; +import org.jsoup.Jsoup; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import br.com.centralit.api.model.DocumentoGed; import br.com.centralit.api.model.Processo; import br.com.centralit.api.service.SolrService; +import br.com.centralit.framework.util.UtilObjeto; /** *
@@ -87,7 +89,6 @@ public class SolrServiceImpl implements SolrService { processoDoc.setField("unidadeGeradora", processo.getUnidade().getNome()); processoDoc.setField("dataCriacao", out.format(processo.getDataCriacao().getTime())); processoDoc.setField("situacao", ""); - processoDoc.setField("nivelAcesso", processo.getNivelAcesso().getNivelAcesso().getDescricao()); processoDoc.setField("formatoDocumento", ""); @@ -108,31 +109,33 @@ public class SolrServiceImpl implements SolrService { SolrClient solrClient = new HttpSolrClient(solrServer); // Add some example docs - SolrInputDocument processoDoc = new SolrInputDocument(); + SolrInputDocument documentoDoc = new SolrInputDocument(); StringBuilder sb = new StringBuilder(); sb.append("doc_").append(documentoGed.getIdRaiz() != null ? documentoGed.getIdRaiz() : documentoGed.getId()); - processoDoc.setField("id", "doc_" + sb.toString()); - processoDoc.setField("nup", documentoGed.getNumero()); - processoDoc.setField("objeto", "Documento"); - processoDoc.setField("tipoProcesso", ""); - processoDoc.setField("tipoDocumento", documentoGed.getTipoDocumento().getNome()); - processoDoc.setField("assunto", documentoGed.getPlanoClassificacao().getNome()); - processoDoc.setField("assuntoComplementar", documentoGed.getAssuntoComplementar()); - processoDoc.setField("autor", documentoGed.getAutor().getUsername()); - processoDoc.setField("destinatario", ""); - processoDoc.setField("atribuidoA", ""); - processoDoc.setField("unidadeGeradora", documentoGed.getUnidade().getNome()); - processoDoc.setField("dataCriacao", out.format(documentoGed.getDataCriacao().getTime())); - processoDoc.setField("situacao", ""); - - // processoDoc.setField("nivelAcesso", documentoGed.getNivelAcesso().getNivelAcessoDescricao()); - processoDoc.setField("formatoDocumento", ""); - processoDoc.setField("conteudo", documentoGed.getConteudo()); - - solrClient.add(processoDoc); + documentoDoc.setField("id", "doc_" + sb.toString()); + documentoDoc.setField("nup", documentoGed.getNumero()); + documentoDoc.setField("objeto", "Documento"); + documentoDoc.setField("tipoDocumento", documentoGed.getTipoDocumento().getNome()); + documentoDoc.setField("assunto", documentoGed.getPlanoClassificacao().getNome()); + documentoDoc.setField("assuntoComplementar", documentoGed.getAssuntoComplementar()); + documentoDoc.setField("autor", documentoGed.getAutor().getUsername()); + documentoDoc.setField("destinatario", UtilObjeto.isReferencia(documentoGed.getDestinatario()) ? documentoGed.getDestinatario().getNome() : ""); + documentoDoc.setField("atribuidoA", ""); + documentoDoc.setField("unidadeGeradora", documentoGed.getUnidade().getNome()); + documentoDoc.setField("dataCriacao", out.format(documentoGed.getDataCriacao().getTime())); + documentoDoc.setField("situacao", ""); + documentoDoc.setField("nivelAcesso", documentoGed.getNivelAcesso().getNivelAcesso().getDescricao()); + documentoDoc.setField("formatoDocumento", documentoGed.getFormaCriacao().getDescricao()); + //verifica se o nivel de acesso é restrito + if(!documentoGed.getNivelAcesso().getNivelAcesso().getCodigo().equals(1L)){ + + documentoDoc.setField("conteudo", documentoGed.getFormaCriacao().getCodigo().equals(1L) ? Jsoup.parse(documentoGed.getConteudo()).text() : documentoGed.getConteudo()); + } + + solrClient.add(documentoDoc); // Make the docs we just added searchable using a "hard" commit solrClient.commit(true, true); diff --git a/cit-ecm-web/src/main/java/br/com/centralit/listener/StartupListenerEcm.java b/cit-ecm-web/src/main/java/br/com/centralit/listener/StartupListenerEcm.java index f70d044..6a60af5 100644 --- a/cit-ecm-web/src/main/java/br/com/centralit/listener/StartupListenerEcm.java +++ b/cit-ecm-web/src/main/java/br/com/centralit/listener/StartupListenerEcm.java @@ -402,6 +402,8 @@ public class StartupListenerEcm extends UtilStartup implements ApplicationListen internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.NOME_NOVO_SUPORTE ", "Nome do suporte", dominio, modulo)); internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.NOVO_TIPO_SUPORTE ", "Novo tipo suporte de documento", dominio, modulo)); internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.TIPO_SUPORTE_DOCUMENTO ", "Tipo suporte de documento", dominio, modulo)); + internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.UNIDADE_GESTORA ", "Unidade gestora", dominio, modulo)); + internacionalizacaoList.add(new Internacionalizacao("ECM.LABEL.DATA_CRIACAO ", "Data criação", dominio, modulo)); } diff --git a/cit-ecm-web/src/main/webapp/assets/css/gerenciarProcesso.css b/cit-ecm-web/src/main/webapp/assets/css/gerenciarProcesso.css index 5f6f9a9..36bcca7 100644 --- a/cit-ecm-web/src/main/webapp/assets/css/gerenciarProcesso.css +++ b/cit-ecm-web/src/main/webapp/assets/css/gerenciarProcesso.css @@ -93,6 +93,13 @@ vertical-align: middle; } +.profile-info-label { + + font-weight: 400; + color: #667E99; + background-color: transparent; +} + .profile-info-row:first-child .profile-info-name,.profile-info-row:first-child .profile-info-value { border-top: none; @@ -143,3 +150,47 @@ margin-top: 10px; } +.filters{ + border-radius: .3em; + background-clip: padding-box; + background: #fff; + left: 0; + top: -0.1em; + display: block; + content: ""; +} + +.itens{ + color: #757575; + padding: 0 +} + +.qtd{ + + background: #fff; + border-radius: 5px; + background-clip: padding-box; + float: right; + font-size: 1em; + font-weight: normal; + color: #ccc; + text-align: right; +} + +.filters_list { + color: #757575; + margin: 0; + list-style: none; + padding: 0 0 1em 0; +} + +.result_pesquisa{ + + color: #545454; + padding-bottom: 20px; + padding-top: 20px; +} + +.result_metadado{ + font-weight: bold; +} \ No newline at end of file diff --git a/cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/SolrSearchController.js b/cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/SolrSearchController.js index d898e89..1b1c70c 100644 --- a/cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/SolrSearchController.js +++ b/cit-ecm-web/src/main/webapp/assets/js/angular/custom/controller/SolrSearchController.js @@ -26,8 +26,8 @@ * @param Utils */ -citApp.controller('SolrSearchController', ['$scope','$attrs','$location','$route','$routeParams','$window','$timeout','SolrSearchService','Utils', - function SolrSearchController($scope, $attrs, $location, $route, $routeParams, $window, $timeout, SolrSearchService, Utils) { +citApp.controller('SolrSearchController', ['$scope','$attrs','$location','$route','$routeParams','$window','$timeout','SolrSearchService','Utils', "$compile", + function SolrSearchController($scope, $attrs, $location, $route, $routeParams, $window, $timeout, SolrSearchService, Utils, $compile) { $scope.searchHintsField = 'tipoProcesso,tipoDocumento,objeto,assunto,autor,atribuidoA,destinatario,unidadeGeradora,situacao,nivelAcesso,dataCriacao'; @@ -152,6 +152,7 @@ citApp.controller('SolrSearchController', ['$scope','$attrs','$location','$route // get new results var results = SolrSearchService.getResponse($scope.queryName); if (results && results.docs) { + $scope.totalResults = results.numFound; // calculate the total number of pages and sets $scope.totalPages = Math.ceil($scope.totalResults / $scope.documentsPerPage); @@ -161,6 +162,24 @@ citApp.controller('SolrSearchController', ['$scope','$attrs','$location','$route // clean up document fields results.docs[i].fromDate = Utils.formatDate(results.docs[i].fromDate); results.docs[i].toDate = Utils.formatDate(results.docs[i].toDate); + + if(results.docs[i].objeto == 'Documento' && SolrSearchService.queries.defaultQuery.highlighting){ + + var object = results.docs[i].id; + + if(SolrSearchService.queries.defaultQuery.highlighting[object]){ + + var highlightings = SolrSearchService.queries.defaultQuery.highlighting[object]; + + results.docs[i].conteudo = ""; + + angular.forEach(highlightings, function (item) { + results.docs[i].conteudo = results.docs[i].conteudo + item; + }); + + } + } + // add to result list $scope.documents.push(results.docs[i]); } @@ -187,23 +206,37 @@ citApp.controller('SolrSearchController', ['$scope','$attrs','$location','$route if (result) { var myArray = new Array(); for (var i = 0; i < result.length; i += 2) { - var hint = { + //Verifica se o filtro está vazio + if(result[i] != "" && result[i + 1] > 0){ + var hint = { name: Object.keys(results.facet_fields)[j], title: result[i], quantidade: result[i + 1], selected: false - }; - myArray.push(hint); + }; + myArray.push(hint); + } } $scope.hints[$scope.hintFields[j]] = myArray; } } } + }else{ $scope.apresentarMsgSemResultado = true; } + $timeout(function(){ + angular.forEach($scope.documents, function (item) { + + if(item.objeto == 'Documento'){ + + document.getElementById(item.id).innerHTML = item.conteudo ; + } + + }); + }); // update the page index $scope.updatePageIndex(); @@ -404,12 +437,36 @@ citApp.controller('SolrSearchController', ['$scope','$attrs','$location','$route SolrSearchService.updateQuery($scope.queryName); }, 350); - console.log("ally "+ query) }; $scope.selectHint = function (nameIndex, index) { var hint = $scope.hints[nameIndex][index]; - $scope.userQuery = hint.title; + var userQuery = hint.title; + $scope.aplicarFilter(userQuery); + }; + + $scope.aplicarFilter = function(valueFilter){ + // clean up the user query + var trimmed = Utils.trim(valueFilter); + if (trimmed === '') { + valueFilter = "*:*"; + } + $scope.timeout = $timeout(function () { + var query = SolrSearchService.createQuery("https://localhost:8983/solr/jcg"); + query.setOption("rows", "10"); + query.setOption("facet", "true"); + query.setOption("facet.limit", $scope.maxHints); + + var hints = $scope.searchHintsField.split(','); + for(var i = 0; i < hints.length; i++){ + query.setOption("facet.field#" + i, hints[i]); + } + + query.setNearMatch($scope.nearMatch); + query.setUserQuery(valueFilter); + SolrSearchService.setQuery($scope.queryName, query); + SolrSearchService.updateQuery($scope.queryName); + }, 350); }; $scope.init(); diff --git a/cit-ecm-web/src/main/webapp/assets/js/angular/custom/service/solr.js b/cit-ecm-web/src/main/webapp/assets/js/angular/custom/service/solr.js index d8e8685..70b3da9 100644 --- a/cit-ecm-web/src/main/webapp/assets/js/angular/custom/service/solr.js +++ b/cit-ecm-web/src/main/webapp/assets/js/angular/custom/service/solr.js @@ -611,6 +611,7 @@ citApp.provider('SolrSearchService', function solrSearchServiceProvider() { // get the named query, reset error state, get the query url var query = svc.queries[QueryName]; var url = query.getSolrQueryUrl(); + url = url + "&hl=true&hl.fl=conteudo&hl.fragsize=300" $log.debug("GET " + QueryName + ": " + url); // execute the query return $http.jsonp(url).then( diff --git a/cit-ecm-web/src/main/webapp/html/gerenciarProcesso/gerenciarProcessoList.html b/cit-ecm-web/src/main/webapp/html/gerenciarProcesso/gerenciarProcessoList.html index 1586cee..d796e94 100644 --- a/cit-ecm-web/src/main/webapp/html/gerenciarProcesso/gerenciarProcessoList.html +++ b/cit-ecm-web/src/main/webapp/html/gerenciarProcesso/gerenciarProcessoList.html @@ -4,8 +4,8 @@
diff --git a/cit-ecm-web/src/main/webapp/html/pesquisa/pesquisa.html b/cit-ecm-web/src/main/webapp/html/pesquisa/pesquisa.html index 0999901..a6b1021 100644 --- a/cit-ecm-web/src/main/webapp/html/pesquisa/pesquisa.html +++ b/cit-ecm-web/src/main/webapp/html/pesquisa/pesquisa.html @@ -1,51 +1,57 @@ +