diff --git a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/AtendimentoRequisicaoConsumoItem.java b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/AtendimentoRequisicaoConsumoItem.java index 48dda4f..58e13d1 100644 --- a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/AtendimentoRequisicaoConsumoItem.java +++ b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/AtendimentoRequisicaoConsumoItem.java @@ -52,7 +52,7 @@ import com.fasterxml.jackson.annotation.JsonView; */ @Entity @Table(name="alm_rc_atendimentoitem") -@JsonIgnoreProperties({"$info", "$verInfo", "$quantidade", "$locaisEstoque"}) +@JsonIgnoreProperties({"$info", "$verInfo", "$quantidade", "$locaisEstoque", "$hasError"}) public class AtendimentoRequisicaoConsumoItem extends PersistentObjectAuditOrganizacao { /** Atributo serialVersionUID. */ diff --git a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/MaterialLocalEstoque.java b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/MaterialLocalEstoque.java index 16e3be2..e7176b8 100644 --- a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/MaterialLocalEstoque.java +++ b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/model/MaterialLocalEstoque.java @@ -255,4 +255,28 @@ public class MaterialLocalEstoque extends PersistentObjectAuditOrganizacao { this.capacidade = capacidade; } + @Override + public int hashCode() { + final int prime = 31; + int result = super.hashCode(); + result = prime * result + ((id == null) ? 0 : id.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (!super.equals(obj)) + return false; + if (getClass() != obj.getClass()) + return false; + MaterialLocalEstoque other = (MaterialLocalEstoque) obj; + if (id == null) { + if (other.id != null) + return false; + } else if (!id.equals(other.id)) + return false; + return true; + } } diff --git a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/AtendimentoRequisicaoConsumoService.java b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/AtendimentoRequisicaoConsumoService.java index 26cb102..94074ee 100644 --- a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/AtendimentoRequisicaoConsumoService.java +++ b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/AtendimentoRequisicaoConsumoService.java @@ -3,6 +3,7 @@ package br.com.centralit.api.service; import java.util.List; import br.com.centralit.api.model.AtendimentoRequisicaoConsumo; +import br.com.centralit.api.model.MaterialLocalEstoque; import br.com.centralit.api.viewHelper.InformacoesAtendimentoVH; import br.com.centralit.framework.service.arquitetura.GenericService; @@ -69,4 +70,6 @@ public interface AtendimentoRequisicaoConsumoService extends GenericService idsRequisicao, Long idOrganizacao); + List validarQuantidadesAtendidas(AtendimentoRequisicaoConsumo entity); + } diff --git a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/AtendimentoRequisicaoConsumoServiceImpl.java b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/AtendimentoRequisicaoConsumoServiceImpl.java index 8823732..abba479 100644 --- a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/AtendimentoRequisicaoConsumoServiceImpl.java +++ b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/AtendimentoRequisicaoConsumoServiceImpl.java @@ -5,6 +5,7 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Map.Entry; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -16,6 +17,7 @@ import br.com.centralit.api.dao.AtendimentoRequisicaoConsumoDao; import br.com.centralit.api.model.AtendimentoRequisicaoConsumo; import br.com.centralit.api.model.AtendimentoRequisicaoConsumoItem; import br.com.centralit.api.model.DominioAlmoxarifado; +import br.com.centralit.api.model.MaterialLocalEstoque; import br.com.centralit.api.service.AtendimentoRequisicaoConsumoItemService; import br.com.centralit.api.service.AtendimentoRequisicaoConsumoService; import br.com.centralit.api.service.ConfiguracaoParametroSistemaService; @@ -134,12 +136,12 @@ public class AtendimentoRequisicaoConsumoServiceImpl extends GenericServiceImpl< @Override public AtendimentoRequisicaoConsumo save(AtendimentoRequisicaoConsumo entity) { -// this.validarEntidade(entity, this.validator); - + this.validarEntidade(entity, this.validator); + if (!UtilColecao.isVazio(entity.getAtendimentos())) { for (AtendimentoRequisicaoConsumo atendimento : entity.getAtendimentos()) { - + if(atendimento.getId() == null && atendimento.getDataAtendimento() == null){ atendimento.setDataAtendimento(entity.getDataAtendimento()); } @@ -165,6 +167,37 @@ public class AtendimentoRequisicaoConsumoServiceImpl extends GenericServiceImpl< return new AtendimentoRequisicaoConsumo(); } + @Override + public List validarQuantidadesAtendidas(AtendimentoRequisicaoConsumo entity) { + Map somatorioQuantidadesAtentidasPorMaterial = new HashMap(); + + for(AtendimentoRequisicaoConsumo atendimento : entity.getAtendimentos()){ + for(AtendimentoRequisicaoConsumoItem atendimentoItem : atendimento.getAtendimentoRequisicaoConsumoItems()){ + + if(somatorioQuantidadesAtentidasPorMaterial.containsKey(atendimentoItem.getMaterialLocalEstoque())){ + + somatorioQuantidadesAtentidasPorMaterial.put(atendimentoItem.getMaterialLocalEstoque(), + somatorioQuantidadesAtentidasPorMaterial.get(atendimentoItem.getMaterialLocalEstoque()).add(atendimentoItem.getQuantidade())); + + }else{ + somatorioQuantidadesAtentidasPorMaterial.put(atendimentoItem.getMaterialLocalEstoque(), atendimentoItem.getQuantidade()); + } + } + } + + List materiaisRejeitados = new ArrayList(); + + for(Entry somaItem : somatorioQuantidadesAtentidasPorMaterial.entrySet()){ + + if(somaItem.getValue().compareTo(somaItem.getKey().getQuantidade()) > 0){ + materiaisRejeitados.add(somaItem.getKey()); + } + } + + return materiaisRejeitados; + + } + /** * * Método responsável por diff --git a/cit-almoxarifado-web/src/main/java/br/com/centralit/controller/AtendimentoRequisicaoConsumoController.java b/cit-almoxarifado-web/src/main/java/br/com/centralit/controller/AtendimentoRequisicaoConsumoController.java index a14bc78..7d5e565 100644 --- a/cit-almoxarifado-web/src/main/java/br/com/centralit/controller/AtendimentoRequisicaoConsumoController.java +++ b/cit-almoxarifado-web/src/main/java/br/com/centralit/controller/AtendimentoRequisicaoConsumoController.java @@ -212,5 +212,13 @@ public class AtendimentoRequisicaoConsumoController extends GenericController 0){ + result.forEach(function(localEstoque){ + $scope.atendimentos.forEach(function(atendimento){ + atendimento.atendimentoRequisicaoConsumoItems.forEach(function(atendimentoItem){ + if(atendimentoItem.materialLocalEstoque.id === localEstoque.id){ + atendimentoItem.$hasError = true; + } + }); + }); + }); + $scope.setLoading(false); + }else{ + AtendimentoRequisicaoConsumoRepository.save($scope.atendimentoRequisicaoConsumo).then(function(result) { + $scope.resetForm(); + $scope.listaSelecionados = []; + $scope.showAlert("success", $translate.instant('MSG.REGISTRO_SALVO')); + $scope.atendimentoRequisicaoConsumoForm.$submitted = false; + $scope.$modalInstance.dismiss('cancel'); + angular.element('#searchAtendimentoRequisicaoConsumo').scope().fetchResult(); + $scope.resetForm(); + $scope.setLoading(false); + }); + } }); } } else { diff --git a/cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/repository/AtendimentoRequisicaoConsumoRepository.js b/cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/repository/AtendimentoRequisicaoConsumoRepository.js index f94cc88..fdda4ac 100644 --- a/cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/repository/AtendimentoRequisicaoConsumoRepository.js +++ b/cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/repository/AtendimentoRequisicaoConsumoRepository.js @@ -30,6 +30,10 @@ citApp.factory('AtendimentoRequisicaoConsumoRepository', ['RestangularAlmoxarifa return restangularAlmoxarifado.all(this.route + '/excluirAtendimentos').post(atendimentoVH).then(); }; + this.validaQuantidadesAtendidas = function(atendimentoRequisicaoConsumo){ + return restangularAlmoxarifado.all(this.route + "/validaQuantidadesAtendidas").post(atendimentoRequisicaoConsumo).then(); + }; + } AbstractRepository.extend(AtendimentoRequisicaoConsumoRepository); diff --git a/cit-almoxarifado-web/src/main/webapp/html/atendimentoRequisicaoConsumo/atendimentoRequisicaoConsumoEdit.html b/cit-almoxarifado-web/src/main/webapp/html/atendimentoRequisicaoConsumo/atendimentoRequisicaoConsumoEdit.html index 2718063..d7a28d3 100644 --- a/cit-almoxarifado-web/src/main/webapp/html/atendimentoRequisicaoConsumo/atendimentoRequisicaoConsumoEdit.html +++ b/cit-almoxarifado-web/src/main/webapp/html/atendimentoRequisicaoConsumo/atendimentoRequisicaoConsumoEdit.html @@ -9,21 +9,13 @@ - - - - -