diff --git a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/RequisicaoConsumoDao.java b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/RequisicaoConsumoDao.java index e9e7027..dedcd91 100644 --- a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/RequisicaoConsumoDao.java +++ b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/RequisicaoConsumoDao.java @@ -3,9 +3,12 @@ package br.com.centralit.api.dao; import java.util.Calendar; import java.util.Collection; +import com.googlecode.genericdao.search.SearchResult; + import br.com.centralit.api.model.EstruturaOrganizacional; import br.com.centralit.api.model.MaterialConsumo; import br.com.centralit.api.model.RequisicaoConsumo; +import br.com.centralit.api.viewHelper.AtendimentoVH; import br.com.centralit.api.viewHelper.RequisicaoVH; import br.com.centralit.framework.dao.arquitetura.CitGenericDAO; @@ -110,4 +113,6 @@ public interface RequisicaoConsumoDao extends CitGenericDAO { * @return */ RequisicaoConsumo findRequisicaoAnteriorPorMaterial(MaterialConsumo materialConsumo, EstruturaOrganizacional unidadeRequisitante); + + SearchResult filtrarRequisicoesAtendimento(AtendimentoVH atendimentoVH); } diff --git a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/impl/RequisicaoConsumoDaoHibernate.java b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/impl/RequisicaoConsumoDaoHibernate.java index a223cfb..daee0b3 100644 --- a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/impl/RequisicaoConsumoDaoHibernate.java +++ b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/impl/RequisicaoConsumoDaoHibernate.java @@ -1,6 +1,7 @@ package br.com.centralit.api.dao.impl; import java.math.BigDecimal; +import java.util.ArrayList; import java.util.Calendar; import java.util.Collection; import java.util.HashSet; @@ -9,6 +10,12 @@ import java.util.Set; import org.springframework.stereotype.Repository; +import com.googlecode.genericdao.search.Field; +import com.googlecode.genericdao.search.Filter; +import com.googlecode.genericdao.search.Search; +import com.googlecode.genericdao.search.SearchResult; +import com.googlecode.genericdao.search.Sort; + import br.com.centralit.api.dao.RequisicaoConsumoDao; import br.com.centralit.api.model.AtendimentoRequisicaoConsumo; import br.com.centralit.api.model.DominioAlmoxarifado; @@ -16,6 +23,7 @@ import br.com.centralit.api.model.EstruturaOrganizacional; import br.com.centralit.api.model.MaterialConsumo; import br.com.centralit.api.model.RequisicaoConsumo; import br.com.centralit.api.model.RequisicaoConsumoItem; +import br.com.centralit.api.viewHelper.AtendimentoVH; import br.com.centralit.api.viewHelper.RequisicaoVH; import br.com.centralit.framework.dao.arquitetura.CitGenericDAOImpl; import br.com.centralit.framework.dao.arquitetura.SearchSeven; @@ -23,9 +31,6 @@ import br.com.centralit.framework.util.UtilColecao; import br.com.centralit.framework.util.UtilObjeto; import br.com.centralit.framework.util.UtilString; -import com.googlecode.genericdao.search.Filter; -import com.googlecode.genericdao.search.Sort; - /** *

* @@ -281,4 +286,53 @@ public class RequisicaoConsumoDaoHibernate extends CitGenericDAOImpl implements return this.searchUnique(searchSeven); } + + @SuppressWarnings({ "unchecked", "rawtypes" }) + @Override + public SearchResult filtrarRequisicoesAtendimento(AtendimentoVH atendimentoVH) { + + SearchSeven searchSeven = new SearchSeven(atendimentoVH.getSearchParams()); + searchSeven.setResultMode(Search.RESULT_SINGLE); + + searchSeven.setDistinct(true); + + addFilterMaterialConsumo(atendimentoVH, searchSeven); + addFilterUnidadeRequisitante(atendimentoVH, searchSeven); + + List fields = new ArrayList(); + List sorts = new ArrayList(); + fields.add(new Field("id")); + sorts.add(new Sort("id")); + searchSeven.setFields(fields); + searchSeven.setSorts(sorts); + List ids = this.search(searchSeven); + + SearchResult result = new SearchResult(); + result.setTotalCount(this.count(searchSeven)); + + fields = new ArrayList(); + searchSeven = new SearchSeven(atendimentoVH.getSearchParams()); + searchSeven.setResultMode(Search.RESULT_MAP); + for (String field : atendimentoVH.getSearchParams().getFields()) { + fields.add(new Field(field)); + } + searchSeven.setFields(fields); + searchSeven.addFilterIn("id", ids); + searchSeven.setFirstResult(0); + result.setResult(this.search(searchSeven)); + + return result; + } + + private void addFilterUnidadeRequisitante(AtendimentoVH atendimentoVH, SearchSeven searchSeven) { + if(!UtilColecao.isVazio(atendimentoVH.getIdsUnidadesRequisitantes())){ + searchSeven.addFilterIn("unidadeRequisitante.id", atendimentoVH.getIdsUnidadesRequisitantes()); + } + } + + private void addFilterMaterialConsumo(AtendimentoVH atendimentoVH, SearchSeven searchSeven) { + if(!UtilColecao.isVazio(atendimentoVH.getIdsMaterais())){ + searchSeven.addFilterIn("requisicaoConsumoItens.materialConsumo.id", atendimentoVH.getIdsMaterais()); + } + } } diff --git a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/RequisicaoConsumoService.java b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/RequisicaoConsumoService.java index aee915c..e7f9c28 100644 --- a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/RequisicaoConsumoService.java +++ b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/RequisicaoConsumoService.java @@ -3,9 +3,12 @@ package br.com.centralit.api.service; import java.util.Calendar; import java.util.Collection; +import com.googlecode.genericdao.search.SearchResult; + import br.com.centralit.api.model.EstruturaOrganizacional; import br.com.centralit.api.model.MaterialConsumo; import br.com.centralit.api.model.RequisicaoConsumo; +import br.com.centralit.api.viewHelper.AtendimentoVH; import br.com.centralit.api.viewHelper.RequisicaoVH; import br.com.centralit.framework.service.arquitetura.GenericService; @@ -121,4 +124,6 @@ public interface RequisicaoConsumoService extends GenericService @@ -199,4 +204,21 @@ public class RequisicaoConsumoController extends GenericController internacionalizacaoList) { diff --git a/cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/controller/AtendimentoRequisicaoConsumoListController.js b/cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/controller/AtendimentoRequisicaoConsumoListController.js index 7876fa5..8783e6d 100644 --- a/cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/controller/AtendimentoRequisicaoConsumoListController.js +++ b/cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/controller/AtendimentoRequisicaoConsumoListController.js @@ -1,7 +1,10 @@ 'use strict'; -citApp.controller('AtendimentoRequisicaoConsumoListController', ['$scope', 'AtendimentoRequisicaoConsumoRepository', '$translate', '$timeout', 'DominioRepository', 'RequisicaoConsumoRepository', - function AtendimentoRequisicaoConsumoListController($scope, AtendimentoRequisicaoConsumoRepository, $translate, $timeout, DominioRepository, RequisicaoConsumoRepository) { +citApp.controller('AtendimentoRequisicaoConsumoListController', ['$scope', 'AtendimentoRequisicaoConsumoRepository', '$translate', + '$timeout', 'DominioRepository', 'RequisicaoConsumoRepository', + 'EstruturaOrganizacionalAlmoxarifadoRepository','MaterialConsumoRepository','$filter', + function AtendimentoRequisicaoConsumoListController($scope, AtendimentoRequisicaoConsumoRepository, $translate, + $timeout, DominioRepository, RequisicaoConsumoRepository, EstruturaOrganizacionalAlmoxarifadoRepository, MaterialConsumoRepository, $filter) { $scope.$showAdvancedFilters = false; $scope.listaSelecionados = []; $scope.resetForm = function() { @@ -10,6 +13,8 @@ citApp.controller('AtendimentoRequisicaoConsumoListController', ['$scope', 'Aten $scope.recarregar = function() { + $scope.filtrarCustomizado = false; + // DEFINE CABEƇALHOS DA LISTAGEM $scope.headers = [ {title : $translate.instant('ALMOXARIFADO.LABEL.NUMERO_REQUISICAO'), value : 'numeroRequisicao' } , {title : $translate.instant('ALMOXARIFADO.LABEL.STATUS_REQUISICAO'), value : 'tipoStatusRequisicao.descricao' } , @@ -175,4 +180,126 @@ citApp.controller('AtendimentoRequisicaoConsumoListController', ['$scope', 'Aten }; + $scope.findEstruturaOrganizacionalUR = function(value){ + return EstruturaOrganizacionalAlmoxarifadoRepository.findEstruturaOrganizacionalUR(value, + $scope.usuarioLogado.organizacao.id).then(function(result) { + return $filter('idNotEqual')(result, $scope.listaUnidadesRequisitantesSelecionadas, 'id'); + }); + }; + + $scope.findMateriaisConsumoByOrganizacao = function(value){ + return MaterialConsumoRepository.findMateriaisConsumoByOrganizacao(value, $scope.usuarioLogado.organizacao.id).then(function(result) { + return $filter('idNotEqual')(result, $scope.listaMateriaisConsumoSelecionados, "id"); + }); + }; + + $scope.setUnidadeRequisitante = function(item){ + $scope.listaUnidadesRequisitantesSelecionadas.push(item); + $timeout(function(){ + $scope.filtroAtendimento.unidadeRequisitanteSelecao = null; + }); + }; + + $scope.selectAllUnidadesRequisitantes = function(check){ + angular.forEach($scope.listaUnidadesRequisitantesSelecionadas, function (item) { + item.$checkedChBox = $scope.filtroAtendimento.unidadeRequisitanteSelectedAll; + }); + }; + + $scope.selectAllMaterialConsumo = function(check){ + angular.forEach($scope.listaMateriaisConsumoSelecionados, function (item) { + item.$checkedChBox = $scope.filtroAtendimento.materialConsumoSelectedAll; + }); + }; + + $scope.setMaterialConsumoItens = function(item){ + $scope.listaMateriaisConsumoSelecionados.push(item); + $timeout(function(){ + $scope.filtroAtendimento.materialConsumoItem = null; + }); + }; + + $scope.removerUnidadeRequisitanteSelecionada = function(){ + + if($scope.filtroAtendimento.unidadeRequisitanteSelectedAll){ + $scope.listaUnidadesRequisitantesSelecionadas = []; + $scope.filtroAtendimento.unidadeRequisitanteSelectedAll = false; + }else{ + $scope.listaUnidadesRequisitantesSelecionadas.forEach(function(item, key) { + if (item.$checkedChBox) { + $scope.listaUnidadesRequisitantesSelecionadas.splice($scope.listaUnidadesRequisitantesSelecionadas.indexOf(item), 1); + } + }); + } + + }; + + $scope.removerMaterialConsumoSelecionado = function(){ + + if($scope.filtroAtendimento.materialConsumoSelectedAll){ + $scope.listaMateriaisConsumoSelecionados = []; + $scope.filtroAtendimento.materialConsumoSelectedAll = false; + }else{ + angular.forEach($scope.listaMateriaisConsumoSelecionados, function (value) { + if(value.$checkedChBox){ + $scope.listaMateriaisConsumoSelecionados.splice($scope.listaMateriaisConsumoSelecionados.indexOf(value), 1); + } + }); + } + }; + + + $scope.atendimentoAvancado = function(){ + $scope.filtroAtendimento = {unidadeRequisitanteSelectedAll : false , materialConsumoSelectedAll : false}; + $scope.listaUnidadesRequisitantesSelecionadas = []; + $scope.listaMateriaisConsumoSelecionados = []; + $scope.$openModal('modal-busca-avancada-requisicao.html', 'md'); + }; + + $scope.filtrarRequisicoes = function(){ + $scope.setLoading(true); + var atendimentoVH = {searchParams : $scope.filterCriteria}; + var idsUnidadeRequisitante = []; + + if($scope.listaUnidadesRequisitantesSelecionadas && $scope.listaUnidadesRequisitantesSelecionadas.length > 0){ + angular.forEach($scope.listaUnidadesRequisitantesSelecionadas, function (value) { + idsUnidadeRequisitante.push(value.id); + }); + atendimentoVH.idsUnidadesRequisitantes = idsUnidadeRequisitante; + } + + var idsMateriaisConsumo = []; + + if($scope.listaMateriaisConsumoSelecionados && $scope.listaMateriaisConsumoSelecionados.length > 0){ + angular.forEach($scope.listaMateriaisConsumoSelecionados, function (value) { + idsMateriaisConsumo.push(value.id); + }); + atendimentoVH.idsMaterais = idsMateriaisConsumo; + } + + return RequisicaoConsumoRepository.filtrarRequisicoesAtendimento(atendimentoVH).then(function(result){ + if(result){ + + $scope.atendimentoRequisicaoConsumoList = result.originalElement.objects; + + $scope.setTotalPages = result.originalElement.totalPages; + $scope.setTotalItens = result.originalElement.totalItens; + + if(!$scope.filtersCopy){ + $scope.filtersCopy = angular.copy($scope.filterCriteria.filters); + } + $scope.filtrarCustomizado = true; + if($scope.setTotalItens == 0){ + $scope.showAlert('warning', $translate.instant('MSG.NENHUM_REGISTRO_ENCONTRADO'), " ", false); + } + + } else { + $scope.showAlert('warning', $translate.instant('MSG.NENHUM_REGISTRO_ENCONTRADO'), " ", false); + } + $scope.$modalInstance.dismiss('cancel'); + $scope.setLoading(false); + }); + + }; + }]); \ No newline at end of file diff --git a/cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/repository/RequisicaoConsumoRepository.js b/cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/repository/RequisicaoConsumoRepository.js index 0cc3fae..2c3c1b0 100644 --- a/cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/repository/RequisicaoConsumoRepository.js +++ b/cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/repository/RequisicaoConsumoRepository.js @@ -22,6 +22,10 @@ citApp.factory('RequisicaoConsumoRepository', ['RestangularAlmoxarifado', 'Abstr this.atenderRequisicoes = function(idsRequisicaoConsumo){ return restangularAlmoxarifado.all(this.route + "/atenderRequisicoes").post(idsRequisicaoConsumo).then(); }; + + this.filtrarRequisicoesAtendimento = function(atendimentoVH) { + return this.restangular.all(this.route+ "/filtrarRequisicoesAtendimento").post(atendimentoVH); + }; } AbstractRepository.extend(RequisicaoConsumoRepository); diff --git a/cit-almoxarifado-web/src/main/webapp/html/atendimentoRequisicaoConsumo/atendimentoRequisicaoConsumoList.html b/cit-almoxarifado-web/src/main/webapp/html/atendimentoRequisicaoConsumo/atendimentoRequisicaoConsumoList.html index 3cd1d87..9435fcb 100644 --- a/cit-almoxarifado-web/src/main/webapp/html/atendimentoRequisicaoConsumo/atendimentoRequisicaoConsumoList.html +++ b/cit-almoxarifado-web/src/main/webapp/html/atendimentoRequisicaoConsumo/atendimentoRequisicaoConsumoList.html @@ -40,9 +40,120 @@ + +

+
+ +
+
+ ng-lista-itens-selecionados="listaSelecionados" ng-check-on="true" + set-total-pages="setTotalPages" set-total-itens="setTotalItens" + use-custom-filter-temp="filtrarCustomizado" ng-custom-filter="filtrarRequisicoes()"> + + + -- libgit2 0.21.2