diff --git a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/MovimentoEstoqueDao.java b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/MovimentoEstoqueDao.java index a20ff36..0ccc640 100644 --- a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/MovimentoEstoqueDao.java +++ b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/MovimentoEstoqueDao.java @@ -1,10 +1,10 @@ package br.com.centralit.api.dao; import java.math.BigDecimal; +import java.util.ArrayList; import java.util.Calendar; import java.util.Collection; import java.util.List; -import java.util.Map; import br.com.centralit.api.model.EstruturaOrganizacional; import br.com.centralit.api.model.MaterialConsumo; @@ -116,7 +116,7 @@ public interface MovimentoEstoqueDao extends CitGenericDAO { * @param dataFim * @return */ - List> getQuantidadeMaterialAtendido(MaterialConsumo materialConsumo, EstruturaOrganizacional almoxarifado, EstruturaOrganizacional unidadeRequisitante, Calendar dataInicio, Calendar dataFim, List idsDominiosTipoStatusRequisicao); + List> getQuantidadeMaterialAtendido(MaterialConsumo materialConsumo, EstruturaOrganizacional almoxarifado, EstruturaOrganizacional unidadeRequisitante, Calendar dataInicio, Calendar dataFim, List idsDominiosTipoStatusRequisicao); /** *

Iniciativa(s): NUMERO_INICIATIVA

diff --git a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/impl/MovimentoEstoqueDaoHibernate.java b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/impl/MovimentoEstoqueDaoHibernate.java index d504e46..5481c14 100644 --- a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/impl/MovimentoEstoqueDaoHibernate.java +++ b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/impl/MovimentoEstoqueDaoHibernate.java @@ -1,8 +1,10 @@ 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.HashMap; import java.util.List; import java.util.Map; @@ -13,6 +15,7 @@ import org.springframework.stereotype.Repository; import br.com.centralit.api.dao.MovimentoEstoqueDao; import br.com.centralit.api.model.DominioAlmoxarifado; +import br.com.centralit.api.model.DominioMaterial; import br.com.centralit.api.model.EstruturaOrganizacional; import br.com.centralit.api.model.MaterialConsumo; import br.com.centralit.api.model.MovimentoEstoque; @@ -25,8 +28,6 @@ import br.com.centralit.framework.util.UtilColecao; import br.com.centralit.framework.util.UtilObjeto; import com.googlecode.genericdao.search.Field; -import com.googlecode.genericdao.search.Filter; -import com.googlecode.genericdao.search.Search; /** *

@@ -173,38 +174,69 @@ public class MovimentoEstoqueDaoHibernate extends CitGenericDAOImpl implements M /** * {@inheritDoc} */ + @SuppressWarnings("unchecked") @Override - public List> getQuantidadeMaterialAtendido(MaterialConsumo materialConsumo, EstruturaOrganizacional almoxarifado, EstruturaOrganizacional unidadeRequisitante, Calendar dataInicio, Calendar dataFim, List idsDominiosTipoStatusRequisicao) { - - SearchSeven search = new SearchSeven(); + public List> getQuantidadeMaterialAtendido(MaterialConsumo materialConsumo, EstruturaOrganizacional almoxarifado, EstruturaOrganizacional unidadeRequisitante, Calendar dataInicio, Calendar dataFim, List idsDominiosTipoStatusRequisicao) { - search.setResultMode(Search.RESULT_MAP); + Map parametros = new HashMap(); + StringBuilder sql = new StringBuilder(); - search.addField("atendimentoRequisicaoConsumoItem.quantidade"); + sql.append("select atendimento.dataAtendimento, atendimentoItem.quantidade from alm_me_movimentoestoque me "); + sql.append(" inner join dominio dominio on dominio.id = me.dominioClasseReferencia_id "); + sql.append(" left join alm_rc_atendimentoitem atendimentoItem on atendimentoItem.id = me.idClasseReferencia "); + sql.append(" left join alm_rc_atendimento atendimento on atendimento.id = atendimentoItem.AtendimentoReqConsumo_Id "); + sql.append(" left join alm_rc_item rci on rci.id = atendimentoItem.requisicaoConsumoItem_id "); + sql.append(" left join alm_requisicaoconsumo rc on rc.id = rci.requisicaoConsumo_id "); - search.addField("atendimentoRequisicaoConsumoItem.atendimentoRequisicaoConsumo.dataAtendimento"); + sql.append(" where dominio.codigo = :codigoDominio and dominio.chave = :chaveDominio "); - search.addFilterEqual("material.id", materialConsumo.getId()); + parametros.put("codigoDominio", DominioMaterial.REFERENCIA_ATENDIMENTO_ALMOXARIFADO_ITEM); + parametros.put("chaveDominio", "classeReferencia"); - search.addFilterEqual("atendimentoRequisicaoConsumoItem.requisicaoConsumoItem.requisicaoConsumo.almoxarifado.id", almoxarifado.getId()); + sql.append(" and me.material_id = :materialConsumoId "); + parametros.put("materialConsumoId", materialConsumo.getId()); + + sql.append(" and rc.almoxarifado_id = :almoxarifadoId "); + parametros.put("almoxarifadoId", almoxarifado.getId()); if(UtilObjeto.isReferencia(unidadeRequisitante)){ - search.addFilterEqual("atendimentoRequisicaoConsumoItem.requisicaoConsumoItem.requisicaoConsumo.unidadeRequisitante.id", unidadeRequisitante.getId()); + sql.append(" and rc.unidadeRequisitante_id = :unidadeRequisitanteId "); + parametros.put("unidadeRequisitanteId", unidadeRequisitante.getId()); } if(!UtilColecao.isVazio(idsDominiosTipoStatusRequisicao)){ - search.addFilterIn("atendimentoRequisicaoConsumoItem.requisicaoConsumoItem.requisicaoConsumo.tipoStatusRequisicao.id", idsDominiosTipoStatusRequisicao); + + sql.append(" and rc.tipoStatusRequisicao_id in ").append(addFilterIn(idsDominiosTipoStatusRequisicao)); } if(UtilObjeto.isReferencia(dataInicio) && UtilObjeto.isReferencia(dataFim)){ - search.addFilterAnd( - Filter.greaterOrEqual("atendimentoRequisicaoConsumoItem.atendimentoRequisicaoConsumo.dataAtendimento", dataInicio), - Filter.lessOrEqual("atendimentoRequisicaoConsumoItem.atendimentoRequisicaoConsumo.dataAtendimento", dataFim)); + sql.append(" and (atendimento.dataAtendimento >= :dataInicio and atendimento.dataAtendimento <= :dataFim) "); + parametros.put("dataInicio", dataInicio); + parametros.put("dataFim", dataFim); + } + + Query query = em().createNativeQuery(sql.toString()); + + for(java.util.Map.Entry parametro : parametros.entrySet()){ + query.setParameter(parametro.getKey(), parametro.getValue()); } - return this.search(search); + return query.getResultList(); + } + + private String addFilterIn(List ids){ + String in = "("; + + for (Long id : ids) { + in += id + ","; + } + + in = in.substring(0, in.length() - 1); + + in += ")"; + return in; } @Override 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 ec70f7b..48dda4f 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 @@ -82,6 +82,10 @@ public class AtendimentoRequisicaoConsumoItem extends PersistentObjectAuditOrgan /** Atributo quantidade. */ @JsonView({ ViewsAlmoxarifado.AtendimentoRequisicaoConsumoItem.class, ViewsAlmoxarifado.AtendimentoRequisicaoConsumoEditView.class, Views.MaterialConsultaInfo.class }) private BigDecimal quantidade; + + @ManyToOne(fetch = FetchType.LAZY, optional = false) + @JsonView({ViewsAlmoxarifado.AtendimentoRequisicaoConsumoEditView.class}) + private MaterialLocalEstoque materialLocalEstoque; /** * Retorna o valor do atributo id @@ -183,4 +187,11 @@ public class AtendimentoRequisicaoConsumoItem extends PersistentObjectAuditOrgan this.requisicaoConsumoItem = requisicaoConsumoItem; } + public MaterialLocalEstoque getMaterialLocalEstoque() { + return materialLocalEstoque; + } + + public void setMaterialLocalEstoque(MaterialLocalEstoque materialLocalEstoque) { + this.materialLocalEstoque = materialLocalEstoque; + } } diff --git a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/AtendimentoRequisicaoConsumoItemServiceImpl.java b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/AtendimentoRequisicaoConsumoItemServiceImpl.java index 7727a21..6f559f4 100644 --- a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/AtendimentoRequisicaoConsumoItemServiceImpl.java +++ b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/AtendimentoRequisicaoConsumoItemServiceImpl.java @@ -179,31 +179,31 @@ public class AtendimentoRequisicaoConsumoItemServiceImpl extends GenericServiceI Calendar ultimoDiaAnoAtual = UtilDate.dateToCalendar(UtilDate.getUltimoDiaDoAno(Integer.parseInt(UtilDate.getAnoAtual()))); -// informacoesAtendimentoVH.setConsumoExercicioAtual(this.movimentoEstoqueService.getMediaQuantidadeMaterial(requisicaoConsumoItem.getMaterialConsumo(), -// requisicaoConsumoItem.getRequisicaoConsumo().getAlmoxarifado(), requisicaoConsumoItem.getRequisicaoConsumo().getUnidadeRequisitante(), -// primeiroDiaAnoAtual, ultimoDiaAnoAtual, Boolean.FALSE, idsDominiosTipoStatusRequisicao)); -// -// Calendar primeiroDiaAnoAnterior = UtilDate.dateToCalendar(UtilDate.getPrimeiroDiaDoAno(Integer.parseInt(UtilDate.getAnoAtual()) - 1)); -// -// Calendar ultimoDiaAnoAnterior = UtilDate.dateToCalendar(UtilDate.getUltimoDiaDoAno(Integer.parseInt(UtilDate.getAnoAtual()) - 1)); -// -// informacoesAtendimentoVH.setConsumoExercicioAnterior(this.movimentoEstoqueService.getMediaQuantidadeMaterial(requisicaoConsumoItem.getMaterialConsumo(), -// requisicaoConsumoItem.getRequisicaoConsumo().getAlmoxarifado(), requisicaoConsumoItem.getRequisicaoConsumo().getUnidadeRequisitante(), -// primeiroDiaAnoAnterior, ultimoDiaAnoAnterior, Boolean.FALSE, idsDominiosTipoStatusRequisicao)); -// -// Calendar data12MesesAtras = UtilDate.dateToCalendar(UtilDate.somaMeses(UtilDate.calendarUltimoDiaDoMes(Calendar.getInstance()).getTime(), -12)); -// -// Calendar dataMesAtual = UtilDate.calendarUltimoDiaDoMes(Calendar.getInstance()); -// -// informacoesAtendimentoVH.setConsumo12meses(this.movimentoEstoqueService.getMediaQuantidadeMaterial(requisicaoConsumoItem.getMaterialConsumo(), -// requisicaoConsumoItem.getRequisicaoConsumo().getAlmoxarifado(), requisicaoConsumoItem.getRequisicaoConsumo().getUnidadeRequisitante(), -// data12MesesAtras, dataMesAtual, Boolean.FALSE, idsDominiosTipoStatusRequisicao)); -// -// informacoesAtendimentoVH.setConsumoMedioMensalMaterial(this.movimentoEstoqueService.getMediaQuantidadeMaterial(requisicaoConsumoItem.getMaterialConsumo(), -// requisicaoConsumoItem.getRequisicaoConsumo().getAlmoxarifado(), null, null, null, Boolean.TRUE, idsDominiosTipoStatusRequisicao)); -// -// informacoesAtendimentoVH.setConsumoMedioMensalUR(this.movimentoEstoqueService.getMediaQuantidadeMaterial(requisicaoConsumoItem.getMaterialConsumo(), -// requisicaoConsumoItem.getRequisicaoConsumo().getAlmoxarifado(), requisicaoConsumoItem.getRequisicaoConsumo().getUnidadeRequisitante(), null, null, Boolean.TRUE, idsDominiosTipoStatusRequisicao)); + informacoesAtendimentoVH.setConsumoExercicioAtual(this.movimentoEstoqueService.getMediaQuantidadeMaterial(requisicaoConsumoItem.getMaterialConsumo(), + requisicaoConsumoItem.getRequisicaoConsumo().getAlmoxarifado(), requisicaoConsumoItem.getRequisicaoConsumo().getUnidadeRequisitante(), + primeiroDiaAnoAtual, ultimoDiaAnoAtual, Boolean.FALSE, idsDominiosTipoStatusRequisicao)); + + Calendar primeiroDiaAnoAnterior = UtilDate.dateToCalendar(UtilDate.getPrimeiroDiaDoAno(Integer.parseInt(UtilDate.getAnoAtual()) - 1)); + + Calendar ultimoDiaAnoAnterior = UtilDate.dateToCalendar(UtilDate.getUltimoDiaDoAno(Integer.parseInt(UtilDate.getAnoAtual()) - 1)); + + informacoesAtendimentoVH.setConsumoExercicioAnterior(this.movimentoEstoqueService.getMediaQuantidadeMaterial(requisicaoConsumoItem.getMaterialConsumo(), + requisicaoConsumoItem.getRequisicaoConsumo().getAlmoxarifado(), requisicaoConsumoItem.getRequisicaoConsumo().getUnidadeRequisitante(), + primeiroDiaAnoAnterior, ultimoDiaAnoAnterior, Boolean.FALSE, idsDominiosTipoStatusRequisicao)); + + Calendar data12MesesAtras = UtilDate.dateToCalendar(UtilDate.somaMeses(UtilDate.calendarUltimoDiaDoMes(Calendar.getInstance()).getTime(), -12)); + + Calendar dataMesAtual = UtilDate.calendarUltimoDiaDoMes(Calendar.getInstance()); + + informacoesAtendimentoVH.setConsumo12meses(this.movimentoEstoqueService.getMediaQuantidadeMaterial(requisicaoConsumoItem.getMaterialConsumo(), + requisicaoConsumoItem.getRequisicaoConsumo().getAlmoxarifado(), requisicaoConsumoItem.getRequisicaoConsumo().getUnidadeRequisitante(), + data12MesesAtras, dataMesAtual, Boolean.FALSE, idsDominiosTipoStatusRequisicao)); + + informacoesAtendimentoVH.setConsumoMedioMensalMaterial(this.movimentoEstoqueService.getMediaQuantidadeMaterial(requisicaoConsumoItem.getMaterialConsumo(), + requisicaoConsumoItem.getRequisicaoConsumo().getAlmoxarifado(), null, null, null, Boolean.TRUE, idsDominiosTipoStatusRequisicao)); + + informacoesAtendimentoVH.setConsumoMedioMensalUR(this.movimentoEstoqueService.getMediaQuantidadeMaterial(requisicaoConsumoItem.getMaterialConsumo(), + requisicaoConsumoItem.getRequisicaoConsumo().getAlmoxarifado(), requisicaoConsumoItem.getRequisicaoConsumo().getUnidadeRequisitante(), null, null, Boolean.TRUE, idsDominiosTipoStatusRequisicao)); return informacoesAtendimentoVH; } diff --git a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/MovimentoEstoqueServiceImpl.java b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/MovimentoEstoqueServiceImpl.java index bbb7bbd..803ea96 100644 --- a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/MovimentoEstoqueServiceImpl.java +++ b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/MovimentoEstoqueServiceImpl.java @@ -89,9 +89,9 @@ public class MovimentoEstoqueServiceImpl extends GenericServiceImpl> valoresAtendidos = this.movimentoEstoqueDao.getQuantidadeMaterialAtendido(materialConsumo, almoxarifado, unidadeRequisitante, dataInicio, dataFim, idsDominiosTipoStatusRequisicao); + List> valoresAtendidos = this.movimentoEstoqueDao.getQuantidadeMaterialAtendido(materialConsumo, almoxarifado, unidadeRequisitante, dataInicio, dataFim, idsDominiosTipoStatusRequisicao); if (!UtilColecao.isVazio(valoresAtendidos)) { Map> mapaDeMesesPorQuantidade = new HashMap>(); - for (Map mapaPropriedades : valoresAtendidos) { + for (ArrayList listaPropriedades : valoresAtendidos) { if (mensal) { - this.divideValoresPorMesEAno(mapaPropriedades, mapaDeMesesPorQuantidade); + this.divideValoresPorMesEAno(listaPropriedades, mapaDeMesesPorQuantidade); } else { + + result = result.add((BigDecimal) listaPropriedades.get(ATENDIMENTO_REQUISICAO_CONSUMO_ITEM_QUANTIDADE)); - for (String chave : mapaPropriedades.keySet()) { - - if (chave.equalsIgnoreCase(ATENDIMENTO_REQUISICAO_CONSUMO_ITEM_QUANTIDADE)) { - - result = result.add((BigDecimal) mapaPropriedades.get(chave)); - - } - } } } @@ -577,9 +571,9 @@ public class MovimentoEstoqueServiceImpl extends GenericServiceImpl mapaPropriedades, Map> mapaDeMesesPorQuantidade) { + private void divideValoresPorMesEAno(ArrayList listaPropriedades, Map> mapaDeMesesPorQuantidade) { - Calendar data = (Calendar) mapaPropriedades.get(ATENDIMENTO_REQUISICAO_CONSUMO_ITEM_ATENDIMENTO_REQUISICAO_CONSUMO_DATA_ATENDIMENTO); + Calendar data = (Calendar) listaPropriedades.get(ATENDIMENTO_REQUISICAO_CONSUMO_ITEM_ATENDIMENTO_REQUISICAO_CONSUMO_DATA_ATENDIMENTO); Integer mes = data.get(Calendar.MONTH); @@ -592,7 +586,7 @@ public class MovimentoEstoqueServiceImpl extends GenericServiceImpl()); } - BigDecimal valor = (BigDecimal) mapaPropriedades.get(ATENDIMENTO_REQUISICAO_CONSUMO_ITEM_QUANTIDADE); + BigDecimal valor = (BigDecimal) listaPropriedades.get(ATENDIMENTO_REQUISICAO_CONSUMO_ITEM_QUANTIDADE); mapaDeMesesPorQuantidade.get(chave).add(valor); diff --git a/cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/controller/AtendimentoRequisicaoConsumoController.js b/cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/controller/AtendimentoRequisicaoConsumoController.js index ea7a29c..aae006d 100644 --- a/cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/controller/AtendimentoRequisicaoConsumoController.js +++ b/cit-almoxarifado-web/src/main/webapp/assets/js/angular/custom/controller/AtendimentoRequisicaoConsumoController.js @@ -340,7 +340,7 @@ citApp.controller( 'AtendimentoRequisicaoConsumoController', result.forEach(function(localEstoque){ if(localEstoque.localPrincipal){ - atendimentoItem.localEstoque = localEstoque; + atendimentoItem.materialLocalEstoque = localEstoque.originalElement; } }); }); 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 b9cdf64..9a8e5e9 100644 --- a/cit-almoxarifado-web/src/main/webapp/html/atendimentoRequisicaoConsumo/atendimentoRequisicaoConsumoEdit.html +++ b/cit-almoxarifado-web/src/main/webapp/html/atendimentoRequisicaoConsumo/atendimentoRequisicaoConsumoEdit.html @@ -65,7 +65,7 @@ ng-disabled="!edit" ng-mode="day" ng-format="dd/MM/yyyy" /> -
+

@@ -139,10 +139,10 @@ - atendimentoRequisicaoConsumoItem.$quantidade}} - + ng-custom-options="materialLocalEstoque.id as materialLocalEstoque.endereco.descricao for materialLocalEstoque"> @@ -165,7 +165,6 @@ ALMOXARIFADO.LABEL.UNIDADE_REQUISITANTE - ALMOXARIFADO.LABEL.QTD_EM_ESTOQUE ALMOXARIFADO.LABEL.CONSUMO_MEDIO_MENSAL ALMOXARIFADO.LABEL.CONSUMO_EXERCICIO_ANTERIOR ALMOXARIFADO.LABEL.CONSUMO_EXERCICIO_ATUAL @@ -178,16 +177,37 @@ - {{atendimentoRequisicaoConsumoItem.$info.qtdEstoque}} {{atendimentoRequisicaoConsumoItem.$info.consumoMedioMensalMaterial}} {{atendimentoRequisicaoConsumoItem.$info.consumoExercicioAnterior}} {{atendimentoRequisicaoConsumoItem.$info.consumoExercicioAtual}} {{atendimentoRequisicaoConsumoItem.$info.consumo12meses}} {{atendimentoRequisicaoConsumoItem.$info.consumoMedioMensalUR}} - {{atendimentoRequisicaoConsumoItem.$info.numeroUltimaRequisicao}} - {{atendimentoRequisicaoConsumoItem.$info.dataUltimaRequisicao | dateBR}} - {{atendimentoRequisicaoConsumoItem.$info.qtdRequeridaUltimaRequisicao}} - {{atendimentoRequisicaoConsumoItem.$info.qtdFornecidaUltimaRequisicao}} + + {{atendimentoRequisicaoConsumoItem.$info.numeroUltimaRequisicao ? atendimentoRequisicaoConsumoItem.$info.numeroUltimaRequisicao : "-"}} + + + {{atendimentoRequisicaoConsumoItem.$info.dataUltimaRequisicao ? (atendimentoRequisicaoConsumoItem.$info.dataUltimaRequisicao | dateBR) : "-"}} + + + {{atendimentoRequisicaoConsumoItem.$info.qtdRequeridaUltimaRequisicao ? atendimentoRequisicaoConsumoItem.$info.qtdRequeridaUltimaRequisicao : "-"}} + + + {{atendimentoRequisicaoConsumoItem.$info.qtdFornecidaUltimaRequisicao ? atendimentoRequisicaoConsumoItem.$info.qtdFornecidaUltimaRequisicao : "-"}} + + + + + + + + + + + + + + +
ALMOXARIFADO.LABEL.ENDERECO_ESTOQUEALMOXARIFADO.LABEL.SALDO_ENDERECOLABEL.CAPACIDADE
{{localEstoque.endereco.descricao}}{{localEstoque.quantidade}}{{localEstoque.capacidade}}
-- libgit2 0.21.2