From 00289f1fc36e0b9b5b6317a3c8b0feae0bb300d1 Mon Sep 17 00:00:00 2001 From: erick.sato Date: Thu, 28 Apr 2016 11:35:24 -0300 Subject: [PATCH] [Redmine Atendimento #4701]Informações de atendido de requisição --- cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/MovimentoEstoqueDao.java | 2 +- cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/RequisicaoConsumoItemDao.java | 2 +- cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/impl/MovimentoEstoqueDaoHibernate.java | 7 ++++++- cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/impl/RequisicaoConsumoItemDaoHibernate.java | 8 +++++--- cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/MovimentoEstoqueService.java | 3 ++- cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/AtendimentoRequisicaoConsumoItemServiceImpl.java | 26 +++++++++++++++++++++----- cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/MovimentoEstoqueServiceImpl.java | 4 ++-- cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/RequisicaoConsumoItemServiceImpl.java | 4 +++- 8 files changed, 41 insertions(+), 15 deletions(-) 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 002b70f..257fc16 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 @@ -114,7 +114,7 @@ public interface MovimentoEstoqueDao extends CitGenericDAO { * @param dataFim * @return */ - List> getQuantidadeMaterialAtendido(MaterialConsumo materialConsumo, EstruturaOrganizacional almoxarifado, EstruturaOrganizacional unidadeRequisitante, Calendar dataInicio, Calendar dataFim); + 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/RequisicaoConsumoItemDao.java b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/RequisicaoConsumoItemDao.java index bdb7ad5..638e8d5 100644 --- a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/RequisicaoConsumoItemDao.java +++ b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/RequisicaoConsumoItemDao.java @@ -25,6 +25,6 @@ public interface RequisicaoConsumoItemDao extends CitGenericDAO { * @param statusFinalizado * @return */ - Long findRequisicaoAnteriorPorMaterial(MaterialConsumo materialConsumo, EstruturaOrganizacional unidadeRequisitante, Dominio statusFinalizado); + Long findRequisicaoAnteriorPorMaterial(MaterialConsumo materialConsumo, EstruturaOrganizacional unidadeRequisitante, Dominio statusFinalizado, Dominio statusParcialmenteAtendida, Dominio statusAtendida); } 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 6ac469d..87d70cf 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 @@ -19,6 +19,7 @@ import br.com.centralit.framework.dao.arquitetura.CitGenericDAOImpl; import br.com.centralit.framework.dao.arquitetura.SearchSeven; import br.com.centralit.framework.model.Organizacao; import br.com.centralit.framework.model.arquitetura.PersistentObjectAudit; +import br.com.centralit.framework.util.UtilColecao; import br.com.centralit.framework.util.UtilObjeto; import com.googlecode.genericdao.search.Field; @@ -171,7 +172,7 @@ public class MovimentoEstoqueDaoHibernate extends CitGenericDAOImpl implements M * {@inheritDoc} */ @Override - public List> getQuantidadeMaterialAtendido(MaterialConsumo materialConsumo, EstruturaOrganizacional almoxarifado, EstruturaOrganizacional unidadeRequisitante, Calendar dataInicio, Calendar dataFim) { + public List> getQuantidadeMaterialAtendido(MaterialConsumo materialConsumo, EstruturaOrganizacional almoxarifado, EstruturaOrganizacional unidadeRequisitante, Calendar dataInicio, Calendar dataFim, List idsDominiosTipoStatusRequisicao) { SearchSeven search = new SearchSeven(); @@ -190,6 +191,10 @@ public class MovimentoEstoqueDaoHibernate extends CitGenericDAOImpl implements M search.addFilterEqual("atendimentoRequisicaoConsumoItem.requisicaoConsumoItem.requisicaoConsumo.unidadeRequisitante.id", unidadeRequisitante.getId()); } + if(!UtilColecao.isVazio(idsDominiosTipoStatusRequisicao)){ + search.addFilterIn("atendimentoRequisicaoConsumoItem.requisicaoConsumoItem.requisicaoConsumo.tipoStatusRequisicao.id", idsDominiosTipoStatusRequisicao); + } + if(UtilObjeto.isReferencia(dataInicio) && UtilObjeto.isReferencia(dataFim)){ search.addFilterAnd( diff --git a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/impl/RequisicaoConsumoItemDaoHibernate.java b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/impl/RequisicaoConsumoItemDaoHibernate.java index 14cddbb..868175c 100644 --- a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/impl/RequisicaoConsumoItemDaoHibernate.java +++ b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/dao/impl/RequisicaoConsumoItemDaoHibernate.java @@ -158,20 +158,22 @@ public class RequisicaoConsumoItemDaoHibernate extends CitGenericDAOImpl impleme * {@inheritDoc} */ @Override - public Long findRequisicaoAnteriorPorMaterial(MaterialConsumo materialConsumo, EstruturaOrganizacional unidadeRequisitante, Dominio dominioStatus) { + public Long findRequisicaoAnteriorPorMaterial(MaterialConsumo materialConsumo, EstruturaOrganizacional unidadeRequisitante, Dominio statusFinalizado, Dominio statusParcialmenteAtendida, Dominio statusAtendida) { StringBuilder str = new StringBuilder(); str.append("select RequisicaoConsumo.id "); str.append("from RequisicaoConsumoItem as RequisicaoConsumoItem "); str.append("inner join RequisicaoConsumo RequisicaoConsumo on RequisicaoConsumo.id = RequisicaoConsumoItem.requisicaoconsumo_id "); - str.append("where RequisicaoConsumo.tipostatusrequisicao_id = :dominioStatus AND RequisicaoConsumoItem.materialConsumo_id = :idMaterial AND RequisicaoConsumo.unidaderequisitante_id = :idUnidadeRequisitante "); + str.append("where (RequisicaoConsumo.tipostatusrequisicao_id = :dominioFinalizado OR RequisicaoConsumo.tipostatusrequisicao_id = :dominioParcialmenteAtendida OR RequisicaoConsumo.tipostatusrequisicao_id = :dominioAtendida) AND RequisicaoConsumoItem.materialConsumo_id = :idMaterial AND RequisicaoConsumo.unidaderequisitante_id = :idUnidadeRequisitante "); str.append("order by RequisicaoConsumo.id desc"); Query query = em().createNativeQuery(str.toString()); query.setParameter("idMaterial", materialConsumo.getId()); query.setParameter("idUnidadeRequisitante", unidadeRequisitante.getId()); - query.setParameter("dominioStatus", dominioStatus.getId()); + query.setParameter("dominioFinalizado", statusFinalizado.getId()); + query.setParameter("dominioParcialmenteAtendida", statusParcialmenteAtendida.getId()); + query.setParameter("dominioAtendida", statusAtendida.getId()); query.setMaxResults(1); diff --git a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/MovimentoEstoqueService.java b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/MovimentoEstoqueService.java index e323410..f96fa7e 100644 --- a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/MovimentoEstoqueService.java +++ b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/MovimentoEstoqueService.java @@ -2,6 +2,7 @@ package br.com.centralit.api.service; import java.math.BigDecimal; import java.util.Calendar; +import java.util.List; import br.com.centralit.api.model.AtendimentoRequisicaoConsumo; import br.com.centralit.api.model.AtendimentoRequisicaoConsumoItem; @@ -150,7 +151,7 @@ public interface MovimentoEstoqueService extends GenericService idsDominiosTipoStatusRequisicao); /** * Método responsável por recuperar a quantidade movimentada de um determinado material de consumo em uma determinada referência. 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 e1115eb..25efd5d 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 @@ -1,7 +1,9 @@ package br.com.centralit.api.service.impl; +import java.util.ArrayList; import java.util.Calendar; import java.util.Collection; +import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; @@ -10,10 +12,12 @@ import org.springframework.validation.Validator; import br.com.centralit.api.dao.AtendimentoRequisicaoConsumoItemDao; import br.com.centralit.api.model.AtendimentoRequisicaoConsumoItem; +import br.com.centralit.api.model.DominioAlmoxarifado; import br.com.centralit.api.model.RequisicaoConsumo; import br.com.centralit.api.model.RequisicaoConsumoItem; import br.com.centralit.api.service.AtendimentoRequisicaoConsumoItemService; import br.com.centralit.api.service.ContaContabilMovimentoService; +import br.com.centralit.api.service.DominioService; import br.com.centralit.api.service.MaterialConsumoService; import br.com.centralit.api.service.MovimentoEstoqueService; import br.com.centralit.api.service.RequisicaoConsumoItemService; @@ -22,6 +26,7 @@ import br.com.centralit.api.viewHelper.AtendimentoVH; import br.com.centralit.api.viewHelper.InformacoesAtendimentoVH; import br.com.centralit.framework.exception.BusinessException; import br.com.centralit.framework.exception.CodigoErro; +import br.com.centralit.framework.model.Dominio; import br.com.centralit.framework.service.arquitetura.GenericServiceImpl; import br.com.centralit.framework.util.UtilDate; import br.com.centralit.framework.util.UtilObjeto; @@ -66,6 +71,9 @@ public class AtendimentoRequisicaoConsumoItemServiceImpl extends GenericServiceI @Autowired private ContaContabilMovimentoService contaContabilMovimentoService; + + @Autowired + private DominioService dominioService; /** * Responsável pela criação de novas instâncias desta classe. @@ -148,6 +156,14 @@ public class AtendimentoRequisicaoConsumoItemServiceImpl extends GenericServiceI */ @Override public InformacoesAtendimentoVH getInformacoesParaRequisicao(AtendimentoRequisicaoConsumoItem atendimentoRequisicaoConsumoItem) { + + List idsDominiosTipoStatusRequisicao = new ArrayList<>(); + Dominio statusFinalizado = this.dominioService.findByChaveAndCodigo(DominioAlmoxarifado.TIPO_STATUS_REQUISICAO, DominioAlmoxarifado.TIPO_STATUS_FINALIZADA); + idsDominiosTipoStatusRequisicao.add(statusFinalizado.getId()); + Dominio statusParcialmenteAtendida = this.dominioService.findByChaveAndCodigo(DominioAlmoxarifado.TIPO_STATUS_REQUISICAO, DominioAlmoxarifado.TIPO_STATUS_ATENDIDA_PARCIALMENTE); + idsDominiosTipoStatusRequisicao.add(statusParcialmenteAtendida.getId()); + Dominio statusAtendida = this.dominioService.findByChaveAndCodigo(DominioAlmoxarifado.TIPO_STATUS_REQUISICAO, DominioAlmoxarifado.TIPO_STATUS_ATENDIDA); + idsDominiosTipoStatusRequisicao.add(statusAtendida.getId()); RequisicaoConsumoItem requisicaoConsumoItem = this.requisicaoConsumoItemService.find(atendimentoRequisicaoConsumoItem.getRequisicaoConsumoItem().getId()); @@ -163,7 +179,7 @@ public class AtendimentoRequisicaoConsumoItemServiceImpl extends GenericServiceI informacoesAtendimentoVH.setConsumoExercicioAtual(this.movimentoEstoqueService.getMediaQuantidadeMaterial(requisicaoConsumoItem.getMaterialConsumo(), requisicaoConsumoItem.getRequisicaoConsumo().getAlmoxarifado(), requisicaoConsumoItem.getRequisicaoConsumo().getUnidadeRequisitante(), - primeiroDiaAnoAtual, ultimoDiaAnoAtual, Boolean.FALSE)); + primeiroDiaAnoAtual, ultimoDiaAnoAtual, Boolean.FALSE, idsDominiosTipoStatusRequisicao)); Calendar primeiroDiaAnoAnterior = UtilDate.dateToCalendar(UtilDate.getPrimeiroDiaDoAno(Integer.parseInt(UtilDate.getAnoAtual()) - 1)); @@ -171,7 +187,7 @@ public class AtendimentoRequisicaoConsumoItemServiceImpl extends GenericServiceI informacoesAtendimentoVH.setConsumoExercicioAnterior(this.movimentoEstoqueService.getMediaQuantidadeMaterial(requisicaoConsumoItem.getMaterialConsumo(), requisicaoConsumoItem.getRequisicaoConsumo().getAlmoxarifado(), requisicaoConsumoItem.getRequisicaoConsumo().getUnidadeRequisitante(), - primeiroDiaAnoAnterior, ultimoDiaAnoAnterior, Boolean.FALSE)); + primeiroDiaAnoAnterior, ultimoDiaAnoAnterior, Boolean.FALSE, idsDominiosTipoStatusRequisicao)); Calendar data12MesesAtras = UtilDate.dateToCalendar(UtilDate.somaMeses(UtilDate.calendarUltimoDiaDoMes(Calendar.getInstance()).getTime(), -12)); @@ -179,13 +195,13 @@ public class AtendimentoRequisicaoConsumoItemServiceImpl extends GenericServiceI informacoesAtendimentoVH.setConsumo12meses(this.movimentoEstoqueService.getMediaQuantidadeMaterial(requisicaoConsumoItem.getMaterialConsumo(), requisicaoConsumoItem.getRequisicaoConsumo().getAlmoxarifado(), requisicaoConsumoItem.getRequisicaoConsumo().getUnidadeRequisitante(), - data12MesesAtras, dataMesAtual, Boolean.FALSE)); + data12MesesAtras, dataMesAtual, Boolean.FALSE, idsDominiosTipoStatusRequisicao)); informacoesAtendimentoVH.setConsumoMedioMensalMaterial(this.movimentoEstoqueService.getMediaQuantidadeMaterial(requisicaoConsumoItem.getMaterialConsumo(), - requisicaoConsumoItem.getRequisicaoConsumo().getAlmoxarifado(), null, null, null, Boolean.TRUE)); + 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)); + 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 04dae7a..35f6753 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 @@ -438,11 +438,11 @@ public class MovimentoEstoqueServiceImpl extends GenericServiceImpl idsDominiosTipoStatusRequisicao) { BigDecimal result = BigDecimal.valueOf(0); - List> valoresAtendidos = this.movimentoEstoqueDao.getQuantidadeMaterialAtendido(materialConsumo, almoxarifado, unidadeRequisitante, dataInicio, dataFim); + List> valoresAtendidos = this.movimentoEstoqueDao.getQuantidadeMaterialAtendido(materialConsumo, almoxarifado, unidadeRequisitante, dataInicio, dataFim, idsDominiosTipoStatusRequisicao); if (!UtilColecao.isVazio(valoresAtendidos)) { diff --git a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/RequisicaoConsumoItemServiceImpl.java b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/RequisicaoConsumoItemServiceImpl.java index 1a6b312..f938dfd 100644 --- a/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/RequisicaoConsumoItemServiceImpl.java +++ b/cit-almoxarifado-api/src/main/java/br/com/centralit/api/service/impl/RequisicaoConsumoItemServiceImpl.java @@ -142,8 +142,10 @@ public class RequisicaoConsumoItemServiceImpl extends GenericServiceImpl