package br.com.centralit.citcorpore.negocio;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import br.com.centralit.bpm.dto.ElementoFluxoDTO;
import br.com.centralit.bpm.dto.ObjetoInstanciaFluxoDTO;
import br.com.centralit.bpm.dto.TarefaFluxoDTO;
import br.com.centralit.bpm.dto.TipoFluxoDTO;
import br.com.centralit.bpm.integracao.ElementoFluxoDao;
import br.com.centralit.bpm.integracao.ObjetoInstanciaFluxoDao;
import br.com.centralit.bpm.integracao.TarefaFluxoDao;
import br.com.centralit.bpm.integracao.TipoFluxoDao;
import br.com.centralit.citcorpore.bean.ContratoDTO;
import br.com.centralit.citcorpore.bean.ExecucaoSolicitacaoDTO;
import br.com.centralit.citcorpore.bean.FluxoServicoDTO;
import br.com.centralit.citcorpore.bean.GerenciamentoServicosDTO;
import br.com.centralit.citcorpore.bean.ParamRecuperacaoTarefasDTO;
import br.com.centralit.citcorpore.bean.SolicitacaoServicoDTO;
import br.com.centralit.citcorpore.bean.UsuarioDTO;
import br.com.centralit.citcorpore.bpm.negocio.ExecucaoSolicitacao;
import br.com.centralit.citcorpore.integracao.ExecucaoSolicitacaoDao;
import br.com.centralit.citcorpore.integracao.FluxoServicoDao;
import br.com.centralit.citcorpore.integracao.SolicitacaoServicoDao;
import br.com.centralit.citcorpore.metainfo.bean.CamposObjetoNegocioDTO;
import br.com.centralit.citcorpore.metainfo.bean.GrupoVisaoCamposNegocioDTO;
import br.com.centralit.citcorpore.metainfo.bean.ObjetoNegocioDTO;
import br.com.centralit.citcorpore.metainfo.integracao.ObjetoNegocioDao;
import br.com.centralit.citcorpore.util.CITCorporeUtil;
import br.com.centralit.citcorpore.util.Enumerados.ParametroSistema;
import br.com.centralit.citcorpore.util.Enumerados.TipoSolicitacaoServico;
import br.com.centralit.citcorpore.util.ParametroUtil;
import br.com.citframework.excecao.PersistenceException;
import br.com.citframework.excecao.ServiceException;
import br.com.citframework.integracao.TransactionControler;
import br.com.citframework.integracao.TransactionControlerImpl;
import br.com.citframework.integracao.core.Page;
import br.com.citframework.integracao.core.Pageable;
import br.com.citframework.service.CrudServiceImpl;
import br.com.citframework.service.ServiceLocator;
import com.google.gson.Gson;
@SuppressWarnings("unchecked")
public class ExecucaoSolicitacaoServiceEjb extends CrudServiceImpl implements ExecucaoSolicitacaoService {
private static List<TarefaFluxoDTO> listTarefas;
private ExecucaoSolicitacaoDao dao;
/**
* Service de Contrato.
*
* @author valdoilo.damasceno
*/
private ContratoService contratoService;
@Override
protected ExecucaoSolicitacaoDao getDao() {
if (dao == null) {
dao = new ExecucaoSolicitacaoDao();
}
return dao;
}
@Override
public List<TarefaFluxoDTO> recuperaTarefas(final String loginUsuario) throws Exception {
return new ExecucaoSolicitacao().recuperaTarefas(loginUsuario);
}
@Override
public TarefaFluxoDTO recuperaTarefa(final String loginUsuario, final Integer idTarefa) throws Exception {
TarefaFluxoDTO result = null;
final List<TarefaFluxoDTO> lstTarefas = new ExecucaoSolicitacao().recuperaTarefas(loginUsuario, idTarefa);
if (!lstTarefas.isEmpty()) {
for (final TarefaFluxoDTO tarefaDto : lstTarefas) {
if (tarefaDto.getIdItemTrabalho().intValue() == idTarefa.intValue()) {
result = tarefaDto;
break;
}
}
}
return result;
}
@Override
public void delegaTarefa(final String loginUsuario, final Integer idTarefa, final String usuarioDestino, final String grupoDestino) throws Exception {
if (idTarefa == null) {
return;
}
final TarefaFluxoDTO tarefaDto = this.recuperaTarefa(idTarefa);
final ExecucaoSolicitacaoDTO execucaoSolicitacaoDto = this.getDao().findByIdInstanciaFluxo(tarefaDto.getIdInstancia());
final SolicitacaoServicoDTO solicitacaoDto = new SolicitacaoServicoServiceEjb().restoreAll(execucaoSolicitacaoDto.getIdSolicitacaoServico());
final TransactionControler tc = new TransactionControlerImpl(this.getDao().getAliasDB());
try {
tc.start();
final ExecucaoSolicitacao execucaoSolicitacao = this.getExecucaoSolicitacao(solicitacaoDto, tc);
execucaoSolicitacao.delega(loginUsuario, solicitacaoDto, idTarefa, usuarioDestino, grupoDestino);
tc.commit();
} catch (final Exception e) {
tc.rollback();
} finally {
try {
tc.close();
} catch (final PersistenceException e) {
e.printStackTrace();
}
}
}
@Override
public TarefaFluxoDTO recuperaTarefa(final Integer idTarefa) throws Exception {
final TarefaFluxoDao tarefaFluxoDao = new TarefaFluxoDao();
TarefaFluxoDTO tarefaFluxoDto = new TarefaFluxoDTO();
tarefaFluxoDto.setIdItemTrabalho(idTarefa);
tarefaFluxoDto = (TarefaFluxoDTO) tarefaFluxoDao.restore(tarefaFluxoDto);
final ElementoFluxoDTO elementoDto = new ElementoFluxoDao().restore(tarefaFluxoDto.getIdElemento());
tarefaFluxoDto.setElementoFluxoDto(elementoDto);
return tarefaFluxoDto;
}
@Override
public void trataCamposTarefa(final Map<String, String> params, final Collection<CamposObjetoNegocioDTO> colCampos, final Map<String, Object> map, final String principal,
final TransactionControler tc) throws Exception {
if (colCampos == null) {
return;
}
final Gson gson = new Gson();
final ObjetoNegocioDao objetoNegocioDao = new ObjetoNegocioDao();
objetoNegocioDao.setTransactionControler(tc);
final HashMap<Integer, ObjetoNegocioDTO> mapObjetos = new HashMap<>();
for (final CamposObjetoNegocioDTO campoDto : colCampos) {
final String value = params.get(campoDto.getNome());
if (value == null) {
return;
}
String nomeTabelaBD = "";
if (campoDto.getNomeTabelaDB() != null) {
nomeTabelaBD = campoDto.getNomeTabelaDB();
nomeTabelaBD = campoDto.getNomeTabelaDB().toLowerCase();
} else if (campoDto.getIdObjetoNegocio() != null) {
ObjetoNegocioDTO objetoNegocioDto = mapObjetos.get(campoDto.getIdObjetoNegocio());
if (objetoNegocioDto == null) {
objetoNegocioDto = new ObjetoNegocioDTO();
objetoNegocioDto.setIdObjetoNegocio(campoDto.getIdObjetoNegocio());
objetoNegocioDto = (ObjetoNegocioDTO) objetoNegocioDao.restore(objetoNegocioDto);
if (objetoNegocioDto != null) {
mapObjetos.put(campoDto.getIdObjetoNegocio(), objetoNegocioDto);
}
}
if (objetoNegocioDto != null) {
nomeTabelaBD = objetoNegocioDto.getNomeTabelaDB();
}
}
final ObjetoInstanciaFluxoDTO objetoInstanciaDto = new ObjetoInstanciaFluxoDTO();
objetoInstanciaDto.setIdObjetoNegocio(campoDto.getIdObjetoNegocio());
objetoInstanciaDto.setObjetoPrincipal(principal);
objetoInstanciaDto.setCampoChave(campoDto.getPk());
objetoInstanciaDto.setNomeObjeto(campoDto.getNome().toLowerCase());
objetoInstanciaDto.setNomeTabelaBD(nomeTabelaBD);
objetoInstanciaDto.setNomeCampoBD(campoDto.getNomeDB());
objetoInstanciaDto.setTipoCampoBD(campoDto.getTipoDB());
objetoInstanciaDto.setNomeClasse(String.class.getName());
objetoInstanciaDto.setValor(gson.toJson(value));
map.put(objetoInstanciaDto.getNomeObjeto(), objetoInstanciaDto);
}
}
@Override
public Collection<GrupoVisaoCamposNegocioDTO> findCamposTarefa(final Integer idTarefa) throws Exception {
final TarefaFluxoDTO tarefaDto = this.recuperaTarefa(idTarefa);
if (tarefaDto == null) {
return null;
}
Collection<GrupoVisaoCamposNegocioDTO> result = null;
result = new ArrayList<>();
final Collection<ObjetoInstanciaFluxoDTO> colCampos = this.getObjetoInstanciaFluxoDAO().findByIdTarefa(idTarefa);
if (colCampos != null) {
final Gson gson = new Gson();
for (final ObjetoInstanciaFluxoDTO campoTarefaDto : colCampos) {
if (campoTarefaDto.getObjetoPrincipal().equalsIgnoreCase("S") && campoTarefaDto.getCampoChave().equalsIgnoreCase("S")) {
final GrupoVisaoCamposNegocioDTO grupoCampoDto = new GrupoVisaoCamposNegocioDTO();
final CamposObjetoNegocioDTO campoDto = new CamposObjetoNegocioDTO();
campoDto.setIdObjetoNegocio(campoTarefaDto.getIdObjetoNegocio());
campoDto.setNome(campoTarefaDto.getNomeObjeto());
campoDto.setNomeDB(campoTarefaDto.getNomeCampoBD());
campoDto.setPk("S");
campoDto.setValue(gson.fromJson(campoTarefaDto.getValor(), String.class));
campoDto.setTipoDB(campoTarefaDto.getTipoCampoBD());
grupoCampoDto.setCamposObjetoNegocioDto(campoDto);
result.add(grupoCampoDto);
}
}
} else {
final ExecucaoSolicitacaoDTO execucaoSolicitacaoDto = this.getDao().findByIdInstanciaFluxo(tarefaDto.getIdInstancia());
if (execucaoSolicitacaoDto != null) {
final ObjetoNegocioDTO objetoNegocioDto = new ObjetoNegocioDao().findByNomeObjetoNegocio("SolicitacaoServico");
if (objetoNegocioDto == null) {
return null;
}
final GrupoVisaoCamposNegocioDTO grupoCampoDto = new GrupoVisaoCamposNegocioDTO();
final CamposObjetoNegocioDTO campoDto = new CamposObjetoNegocioDTO();
campoDto.setNome("IDSOLICITACAOSERVICO");
campoDto.setNomeDB("IDSOLICITACAOSERVICO");
campoDto.setIdObjetoNegocio(objetoNegocioDto.getIdObjetoNegocio());
campoDto.setPk("S");
campoDto.setValue(execucaoSolicitacaoDto.getIdSolicitacaoServico());
grupoCampoDto.setCamposObjetoNegocioDto(campoDto);
result.add(grupoCampoDto);
}
}
return result;
}
public TipoFluxoDTO recuperaFluxoServico(final SolicitacaoServicoDTO solicitacaoServicoDto, final TransactionControler tc) throws Exception {
Integer idServicoContrato = solicitacaoServicoDto.getIdServicoContrato();
if (solicitacaoServicoDto.getIdServicoContrato() == null || solicitacaoServicoDto.getIdServicoContrato().intValue() <= 0) {
SolicitacaoServicoDTO solicitacaoAuxDto = new SolicitacaoServicoDTO();
solicitacaoAuxDto.setIdSolicitacaoServico(solicitacaoServicoDto.getIdSolicitacaoServico());
if (CITCorporeUtil.SGBD_PRINCIPAL.equalsIgnoreCase("sqlserver")) {
if (tc != null) {
this.getSolicitacaoDAO().setTransactionControler(tc);
}
}
solicitacaoAuxDto = (SolicitacaoServicoDTO) this.getSolicitacaoDAO().restore(solicitacaoAuxDto);
idServicoContrato = solicitacaoAuxDto.getIdServicoContrato();
}
TipoFluxoDTO tipoFluxoDto = null;
if (CITCorporeUtil.SGBD_PRINCIPAL.equalsIgnoreCase("sqlserver")) {
if (tc != null) {
this.getTipoFluxoDAO().setTransactionControler(tc);
}
}
final FluxoServicoDTO fluxoServicoDto = new FluxoServicoDao().findPrincipalByIdServicoContrato(idServicoContrato);
if (fluxoServicoDto != null) {
tipoFluxoDto = new TipoFluxoDTO();
tipoFluxoDto.setIdTipoFluxo(fluxoServicoDto.getIdTipoFluxo());
tipoFluxoDto = (TipoFluxoDTO) this.getTipoFluxoDAO().restore(tipoFluxoDto);
} else {
final String fluxoPadrao = ParametroUtil.getValorParametroCitSmartHashMap(ParametroSistema.NomeFluxoPadraoServicos, "SolicitacaoServico");
if (fluxoPadrao != null) {
tipoFluxoDto = this.getTipoFluxoDAO().findByNome(fluxoPadrao);
}
}
if (tipoFluxoDto == null) {
throw new Exception("O fluxo associado ao servi�o n�o foi parametrizado");
}
return tipoFluxoDto;
}
public ExecucaoSolicitacao getExecucaoSolicitacao(final SolicitacaoServicoDTO solicitacaoServicoDto, final TransactionControler tc) throws Exception {
final TipoFluxoDTO tipoFluxoDto = this.recuperaFluxoServico(solicitacaoServicoDto, tc);
if (tipoFluxoDto.getNomeClasseFluxo() != null && !tipoFluxoDto.getNomeClasseFluxo().trim().equals("")) {
try {
final ExecucaoSolicitacao execucaoSolicitacao = (ExecucaoSolicitacao) Class.forName(tipoFluxoDto.getNomeClasseFluxo()).newInstance();
execucaoSolicitacao.setTransacao(tc);
execucaoSolicitacao.setObjetoNegocioDto(solicitacaoServicoDto);
return execucaoSolicitacao;
} catch (final Exception e) {
if((Class.forName(tipoFluxoDto.getNomeClasseFluxo()).newInstance() instanceof ExecucaoSolicitacao) == false){
throw new Exception("execucaosolicitacao.invalido.fluxodeproblema");
}
e.printStackTrace();
return null;
}
} else {
return new ExecucaoSolicitacao(solicitacaoServicoDto, tc);
}
}
@Override
public ExecucaoSolicitacao registraSolicitacao(final SolicitacaoServicoDTO solicitacaoServicoDto, final TransactionControler tc) throws Exception {
final ExecucaoSolicitacao execucaoSolicitacao = this.getExecucaoSolicitacao(solicitacaoServicoDto, tc);
if(execucaoSolicitacao == null)
return null;
execucaoSolicitacao.inicia();
return execucaoSolicitacao;
}
@Override
public void executa(final UsuarioDTO usuarioDto, final TransactionControler tc, final Integer idFluxo, final Integer idTarefa, final String acaoFluxo, final Map<String, String> params,
final Collection<CamposObjetoNegocioDTO> colCamposTodosPrincipal, final Collection<CamposObjetoNegocioDTO> colCamposTodosVinc) throws Exception {
final HashMap<String, Object> map = new HashMap<>();
this.trataCamposTarefa(params, colCamposTodosPrincipal, map, "S", tc);
this.trataCamposTarefa(params, colCamposTodosVinc, map, "N", tc);
final Integer idSolicitacao = new Integer((String) map.get("IDSOLICITACAOSERVICO"));
final SolicitacaoServicoDTO solicitacaoServicoDto = new SolicitacaoServicoServiceEjb().restoreAll(idSolicitacao, tc);
final ExecucaoSolicitacao execucaoSolicitacao = this.getExecucaoSolicitacao(solicitacaoServicoDto, tc);
execucaoSolicitacao.executa(usuarioDto.getLogin(), solicitacaoServicoDto, idTarefa, acaoFluxo, map);
}
public SolicitacaoServicoDTO executar(final UsuarioDTO usuarioDto, final Integer idTarefa, final String acaoFluxo, TransactionControler tc) throws Exception {
final TarefaFluxoDTO tarefaDto = this.recuperaTarefa(idTarefa);
if (tarefaDto == null) {
throw new Exception("Problemas na recupera��o da Tarefa ");
}
if (tc == null) {
tc = new TransactionControlerImpl(this.getDao().getAliasDB());
}
final ExecucaoSolicitacaoDTO execucaoSolicitacaoDto = this.getDao().findByIdInstanciaFluxo(tarefaDto.getIdInstancia());
if (execucaoSolicitacaoDto == null) {
throw new Exception("Problemas na recupera��o da Solicita��o ");
}
final SolicitacaoServicoDTO solicitacaoServicoDto = new SolicitacaoServicoDTO();
solicitacaoServicoDto.setIdSolicitacaoServico(execucaoSolicitacaoDto.getIdSolicitacaoServico());
solicitacaoServicoDto.setUsuarioDto(usuarioDto);
this.executa(solicitacaoServicoDto, idTarefa, acaoFluxo, tc);
return solicitacaoServicoDto;
}
@Override
public void executa(final UsuarioDTO usuarioDto, final Integer idTarefa, final String acaoFluxo) throws Exception {
final TarefaFluxoDTO tarefaDto = this.recuperaTarefa(idTarefa);
if (tarefaDto == null) {
return;
}
final ExecucaoSolicitacaoDTO execucaoSolicitacaoDto = this.getDao().findByIdInstanciaFluxo(tarefaDto.getIdInstancia());
if (execucaoSolicitacaoDto == null) {
return;
}
final SolicitacaoServicoDTO solicitacaoServicoDto = new SolicitacaoServicoDTO();
solicitacaoServicoDto.setIdSolicitacaoServico(execucaoSolicitacaoDto.getIdSolicitacaoServico());
solicitacaoServicoDto.setUsuarioDto(usuarioDto);
final TransactionControlerImpl tc = new TransactionControlerImpl(this.getDao().getAliasDB());
try {
tc.start();
this.executa(solicitacaoServicoDto, idTarefa, acaoFluxo, tc);
tc.commit();
} catch (final Exception e) {
this.rollbackTransaction(tc, e);
throw new ServiceException(e);
} finally {
try {
tc.close();
} catch (final PersistenceException e) {
e.printStackTrace();
}
}
}
@Override
public void cancelaTarefa(final String loginUsuario, final Integer idTarefa, final String motivo, final TransactionControler tc) throws Exception {
final TarefaFluxoDTO tarefaDto = this.recuperaTarefa(idTarefa);
if (tarefaDto == null) {
return;
}
final ExecucaoSolicitacaoDTO execucaoSolicitacaoDto = this.getDao().findByIdInstanciaFluxo(tarefaDto.getIdInstancia());
if (execucaoSolicitacaoDto == null) {
return;
}
final SolicitacaoServicoDTO solicitacaoServicoDto = new SolicitacaoServicoServiceEjb().restoreAll(execucaoSolicitacaoDto.getIdSolicitacaoServico(), null);
final ExecucaoSolicitacao execucaoSolicitacao = this.getExecucaoSolicitacao(solicitacaoServicoDto, tc);
execucaoSolicitacao.cancelaTarefa(loginUsuario, solicitacaoServicoDto, tarefaDto, motivo);
}
@Override
public void executa(final SolicitacaoServicoDTO solicitacaoServicoDto, final Integer idTarefa, final String acaoFluxo, final TransactionControler tc) throws Exception {
final HashMap<String, Object> objetos = new HashMap<>();
final SolicitacaoServicoDTO solicitacaoAuxDto = new SolicitacaoServicoServiceEjb().restoreAll(solicitacaoServicoDto.getIdSolicitacaoServico(), tc);
final ExecucaoSolicitacao execucaoSolicitacao = this.getExecucaoSolicitacao(solicitacaoServicoDto, tc);
execucaoSolicitacao.executa(solicitacaoServicoDto.getUsuarioDto().getLogin(), solicitacaoAuxDto, idTarefa, acaoFluxo, objetos);
}
public void direcionaAtendimento(final SolicitacaoServicoDTO solicitacaoServicoDto, final TransactionControler tc) throws Exception {
if (solicitacaoServicoDto.getIdGrupoAtual() == null) {
return;
}
final SolicitacaoServicoDTO solicitacaoAuxDto = new SolicitacaoServicoServiceEjb().restoreAll(solicitacaoServicoDto.getIdSolicitacaoServico(), tc);
if (solicitacaoAuxDto == null) {
throw new Exception("Problemas na recupera��o da solicita��o");
}
if (solicitacaoAuxDto.getGrupoAtual() == null || solicitacaoAuxDto.getGrupoAtual().length() == 0) {
throw new Exception("Grupo executor n�o encontrado");
}
this.getExecucaoSolicitacao(solicitacaoAuxDto, tc).direcionaAtendimento(solicitacaoServicoDto.getUsuarioDto().getLogin(), solicitacaoAuxDto, solicitacaoAuxDto.getGrupoAtual());
}
public void direcionaAtendimentoAutomatico(final SolicitacaoServicoDTO solicitacaoServicoDto, final TransactionControler tc) throws Exception {
if (solicitacaoServicoDto.getIdGrupoAtual() == null) {
return;
}
final SolicitacaoServicoDTO solicitacaoAuxDto = new SolicitacaoServicoServiceEjb().restoreAll(solicitacaoServicoDto.getIdSolicitacaoServico(), tc);
if (solicitacaoAuxDto != null && solicitacaoAuxDto.getIdResponsavel() == null) {
solicitacaoAuxDto.setIdResponsavel(1);
}
if (solicitacaoAuxDto == null) {
throw new Exception("Problemas na recupera��o da solicita��o");
}
if (solicitacaoAuxDto.getIdGrupoAtual() == null || solicitacaoAuxDto.getIdGrupoAtual() == 0) {
throw new Exception("Grupo executor n�o encontrado");
}
this.getExecucaoSolicitacao(solicitacaoAuxDto, tc).direcionaAtendimento("admin", solicitacaoAuxDto, solicitacaoAuxDto.getGrupoAtual());
}
public void encerra(final SolicitacaoServicoDTO solicitacaoServicoDto, final TransactionControler tc) throws Exception {
final ExecucaoSolicitacao execucaoSolicitacao = this.getExecucaoSolicitacao(solicitacaoServicoDto, tc);
execucaoSolicitacao.encerra();
}
public void reabre(final UsuarioDTO usuarioDto, final SolicitacaoServicoDTO solicitacaoServicoDto, final TransactionControler tc) throws Exception {
final ExecucaoSolicitacao execucaoSolicitacao = this.getExecucaoSolicitacao(solicitacaoServicoDto, tc);
execucaoSolicitacao.reabre(usuarioDto.getLogin());
}
public void suspende(final UsuarioDTO usuarioDto, final SolicitacaoServicoDTO solicitacaoServicoDto, final TransactionControler tc) throws Exception {
final ExecucaoSolicitacao execucaoSolicitacao = this.getExecucaoSolicitacao(solicitacaoServicoDto, tc);
execucaoSolicitacao.suspende(usuarioDto.getLogin());
}
public void reativa(final UsuarioDTO usuarioDto, final SolicitacaoServicoDTO solicitacaoServicoDto, final TransactionControler tc) throws Exception {
final ExecucaoSolicitacao execucaoSolicitacao = this.getExecucaoSolicitacao(solicitacaoServicoDto, tc);
execucaoSolicitacao.reativa(usuarioDto.getLogin());
}
public void determinaPrazoLimiteSolicitacaoACombinarReclassificada(final SolicitacaoServicoDTO solicitacaoServicoDto, final Integer idCalendario, final TransactionControler tc) throws Exception {
final ExecucaoSolicitacao execucaoSolicitacao = this.getExecucaoSolicitacao(solicitacaoServicoDto, tc);
if (execucaoSolicitacao != null) {
execucaoSolicitacao.determinaPrazoLimiteSolicitacaoACombinarReclassificada(solicitacaoServicoDto, idCalendario);
}
}
@Override
public List<TarefaFluxoDTO> recuperaTarefas(final Integer pgAtual, final Integer qtdAPaginacao, final String login) throws Exception {
return new ExecucaoSolicitacao().recuperaTarefas(pgAtual, qtdAPaginacao, login);
}
@Override
public List<TarefaFluxoDTO> recuperaTarefas(final String loginUsuario, final TipoSolicitacaoServico[] tiposSolicitacao, final String somenteEmAprovacao) throws Exception {
return new ExecucaoSolicitacao().recuperaTarefas(loginUsuario, tiposSolicitacao, somenteEmAprovacao);
}
@Override
public Integer totalPaginas(final Integer itensPorPagina, final String loginUsuario) throws Exception {
return new ExecucaoSolicitacao().totalPaginas(itensPorPagina, loginUsuario);
}
public List<TarefaFluxoDTO> getListTarefas() {
return listTarefas;
}
@Override
public Integer obterTotalDePaginas(final Integer itensPorPagina, final String loginUsuario, final GerenciamentoServicosDTO gerenciamentoBean,
final Collection<ContratoDTO> listContratoUsuarioLogado, final boolean isPortal) throws Exception {
Integer total = 0;
// ESSA LISTA DE TAREFAS J� EST� VINDO COM A SOLICITACAOSERVICODTO E N�O DEVERIA VIR. CRIAR M�TODO PARA TRAZER APENAS AS TAREFAS COM O IDINSTANCIA, QUE � A �NICA INFORMA��O
// UTILIZADA NA
// CONSULTA ABAIXO.
// List<TarefaFluxoDTO> listTarefasComSolicitacaoServico = recuperaTarefas(loginUsuario);
//
// listTarefas = listTarefasComSolicitacaoServico;
// Comentado para centalizar o m�todo abaixo
if (listTarefas != null) {
total = this.getSolicitacaoDAO().totalDePaginas(itensPorPagina, this.getListTarefas(), gerenciamentoBean, listContratoUsuarioLogado);
}
if (isPortal) {
// atualizaListaTarefas(loginUsuario, gerenciamentoBean);
total = this.getSolicitacaoDAO().totalDePaginasPortal(itensPorPagina, null, gerenciamentoBean, listContratoUsuarioLogado);
listTarefas = null;
}
return total;
}
@Override
public Integer atualizarListaTarefasAndReturnTotalPaginas(UsuarioDTO usuarioLogado, GerenciamentoServicosDTO gerenciamentoServicos, Pageable pageable) throws Exception {
Integer totalPaginas = 0;
if (usuarioLogado != null) {
String COLABORADORES_VINC_CONTRATOS = ParametroUtil.getValorParametroCitSmartHashMap(br.com.centralit.citcorpore.util.Enumerados.ParametroSistema.COLABORADORES_VINC_CONTRATOS, "N");
if (COLABORADORES_VINC_CONTRATOS == null) {
COLABORADORES_VINC_CONTRATOS = "N";
}
Collection<ContratoDTO> listContratoUsuarioLogado = null;
if (COLABORADORES_VINC_CONTRATOS != null && COLABORADORES_VINC_CONTRATOS.equalsIgnoreCase("S")) {
listContratoUsuarioLogado = getContratoService().findAtivosByIdEmpregado(usuarioLogado.getIdEmpregado());
} else {
listContratoUsuarioLogado = getContratoService().listAtivos();
}
/** Alterado para chamar o novo m�todo recuperaTarefas. 29.01.2015. Opera��o Usain Bolt. valdoilo.damasceno */
ParamRecuperacaoTarefasDTO paramRecuperacaoTarefasDTO = new ParamRecuperacaoTarefasDTO(usuarioLogado.getLogin(), gerenciamentoServicos, listContratoUsuarioLogado);
paramRecuperacaoTarefasDTO.setSomenteTotalizacao(true);
Page<TarefaFluxoDTO> page = this.recuperaTarefas(paramRecuperacaoTarefasDTO, pageable);
totalPaginas = page.getTotalPages();
gerenciamentoServicos.setTotalPaginas(1);
}
return totalPaginas;
}
/**
* Consulta utilizada para a RENDERIZA��O da LISTAGEM SOLICITACAO SERVI�O. Retorna a Lista de TarefaDTO com SolicitacaoServidoDTO de acordo com po aramRecuperacaoTarefasDto.
*
* @param ParamRecuperacaoTarefasDTO
* paramRecuperacaoTarefasDto
* @return List<TarefaFluxoDTO - Com SolicitacaoServicoDTO recuperados.
* @throws Exception
* @author carlos.santos
* @since 27.01.2015 - Opera��o Usain Bolt.
*/
public Page<TarefaFluxoDTO> recuperaTarefas(ParamRecuperacaoTarefasDTO paramRecuperacaoTarefasDto, Pageable pageable) throws Exception {
listTarefas = null;
return new ExecucaoSolicitacao().recuperaTarefas(paramRecuperacaoTarefasDto, pageable);
}
@Override
public List<TarefaFluxoDTO> recuperaTarefas(final Integer pgAtual, final Integer qtdAPaginacao, final String login, final GerenciamentoServicosDTO gerenciamentoBean,
final Collection<ContratoDTO> listContratoUsuarioLogado) throws Exception {
final List<TarefaFluxoDTO> listTarefaFluxo = new ExecucaoSolicitacao().recuperaTarefas(pgAtual, qtdAPaginacao, login, gerenciamentoBean, listContratoUsuarioLogado, this.getListTarefas());
return listTarefaFluxo;
}
@Override
public List<TarefaFluxoDTO> recuperaTarefas(final String loginUsuario, final GerenciamentoServicosDTO gerenciamentoBean, final Collection<ContratoDTO> listContratoUsuarioLogado) throws Exception {
final List<TarefaFluxoDTO> listTarefaFluxo = new ExecucaoSolicitacao().recuperaTarefas(loginUsuario, gerenciamentoBean, listContratoUsuarioLogado, this.getListTarefas());
listTarefas = null;
return listTarefaFluxo;
}
@Override
public ExecucaoSolicitacaoDTO findByIdInstanciaFluxo(final Integer idInstanciaFluxo) throws Exception {
return this.getDao().findByIdInstanciaFluxo(idInstanciaFluxo);
}
private ObjetoInstanciaFluxoDao objetoInstanciaFluxoDAO;
private SolicitacaoServicoDao solicitacaoDAO;
private TipoFluxoDao tipoDAO;
private ObjetoInstanciaFluxoDao getObjetoInstanciaFluxoDAO() {
if (objetoInstanciaFluxoDAO == null) {
objetoInstanciaFluxoDAO = new ObjetoInstanciaFluxoDao();
}
return objetoInstanciaFluxoDAO;
}
private SolicitacaoServicoDao getSolicitacaoDAO() {
if (solicitacaoDAO == null) {
solicitacaoDAO = new SolicitacaoServicoDao();
}
return solicitacaoDAO;
}
private TipoFluxoDao getTipoFluxoDAO() {
if (tipoDAO == null) {
tipoDAO = new TipoFluxoDao();
}
return tipoDAO;
}
/**
* Retorna inst�ncia do Service de Contrato.
*
* @return ContratoService
* @throws Exception
* @author valdoilo.damasceno
* @since 27.01.2015 - Opera��o Usain Bolt
*/
private ContratoService getContratoService() throws Exception {
if (contratoService == null) {
contratoService = (ContratoService) ServiceLocator.getInstance().getService(ContratoService.class, null);
}
return contratoService;
}
}