package br.com.centralit.citcorpore.negocio; import java.sql.Date; import java.util.ArrayList; import java.util.Calendar; import java.util.Collection; import java.util.Iterator; import java.util.List; import br.com.centralit.citcorpore.bean.AtividadesOSDTO; import br.com.centralit.citcorpore.bean.ContratoDTO; import br.com.centralit.citcorpore.bean.GlosaOSDTO; import br.com.centralit.citcorpore.bean.OSDTO; import br.com.centralit.citcorpore.bean.RelatorioAcompanhamentoDTO; import br.com.centralit.citcorpore.bean.RelatorioOrdemServicoUstDTO; import br.com.centralit.citcorpore.integracao.AtividadesOSDao; import br.com.centralit.citcorpore.integracao.ContratoDao; import br.com.centralit.citcorpore.integracao.GlosaOSDao; import br.com.centralit.citcorpore.integracao.OSDao; import br.com.citframework.dto.IDto; import br.com.citframework.excecao.LogicException; import br.com.citframework.excecao.ServiceException; import br.com.citframework.integracao.CrudDAO; import br.com.citframework.integracao.TransactionControler; import br.com.citframework.integracao.TransactionControlerImpl; import br.com.citframework.service.CrudServiceImpl; import br.com.citframework.util.UtilDatas; import br.com.citframework.util.UtilFormatacao; @SuppressWarnings({"rawtypes", "unchecked"}) public class OSServiceEjb extends CrudServiceImpl implements OSService { private OSDao oSDao; @Override protected OSDao getDao() { if (oSDao == null) { oSDao = new OSDao(); } return oSDao; } @Override public Collection findByIdContratoAndSituacao(final Integer parm, final Integer sit) throws Exception { try { return this.getDao().findByIdContratoAndSituacao(parm, sit); } catch (final Exception e) { throw new ServiceException(e); } } @Override public Collection findByIdContrato(final Integer parm) throws Exception { try { return this.getDao().findByIdContrato(parm); } catch (final Exception e) { throw new ServiceException(e); } } @Override public void deleteByIdContrato(final Integer parm) throws Exception { try { this.getDao().deleteByIdContrato(parm); } catch (final Exception e) { throw new ServiceException(e); } } @Override public Collection findByIdClassificacaoOS(final Integer parm) throws Exception { try { return this.getDao().findByIdClassificacaoOS(parm); } catch (final Exception e) { throw new ServiceException(e); } } @Override public void deleteByIdClassificacaoOS(final Integer parm) throws Exception { try { this.getDao().deleteByIdClassificacaoOS(parm); } catch (final Exception e) { throw new ServiceException(e); } } @Override public Collection findByAno(final Integer parm) throws Exception { try { return this.getDao().findByAno(parm); } catch (final Exception e) { throw new ServiceException(e); } } @Override public void deleteByAno(final Integer parm) throws Exception { try { this.getDao().deleteByAno(parm); } catch (final Exception e) { throw new ServiceException(e); } } @Override public IDto create(IDto model) throws ServiceException, LogicException { final CrudDAO crudDao = this.getDao(); final AtividadesOSDao atividadesOSDao = new AtividadesOSDao(); final TransactionControler tc = new TransactionControlerImpl(crudDao.getAliasDB()); try { // Faz validacao, caso exista. this.validaCreate(model); final OSDTO osDTO = (OSDTO) model; // Instancia ou obtem os DAOs necessarios. // Seta o TransactionController para os DAOs crudDao.setTransactionControler(tc); atividadesOSDao.setTransactionControler(tc); // Inicia transacao tc.start(); // Executa operacoes pertinentes ao negocio. model = crudDao.create(model); if (osDTO.getColItens() != null) { int i = 0; for (final Iterator it = osDTO.getColItens().iterator(); it.hasNext();) { i++; final AtividadesOSDTO atividadesOSDTO = (AtividadesOSDTO) it.next(); atividadesOSDTO.setIdOS(osDTO.getIdOS()); atividadesOSDTO.setSequencia(i); atividadesOSDTO.setDeleted("N"); atividadesOSDao.create(atividadesOSDTO); } } // Faz commit e fecha a transacao. tc.commit(); tc.close(); return model; } catch (final Exception e) { this.rollbackTransaction(tc, e); } return model; } @Override public boolean retornaRegistroOsPai(final OSDTO osDTO) throws Exception { Collection col = null; try { col = this.getDao().retornaSeExisteOSFilha(osDTO.getIdOS()); if (col != null && col.size() == 0) { return true; } else { return false; } } catch (final Exception e) { throw new ServiceException(e); } } @Override public void retornaAtividadeCadastradaByPai(final OSDTO osDTO) throws Exception { final AtividadesOSDao atividadesOSDao = new AtividadesOSDao(); final Collection colAtividadeOs = atividadesOSDao.findByIdOS(osDTO.getIdOSPai()); if (colAtividadeOs != null && colAtividadeOs.size() > 0) { final List<AtividadesOSDTO> listAtividadeOs = (List<AtividadesOSDTO>) colAtividadeOs; final Collection listFinal = new ArrayList(); for (final AtividadesOSDTO atividadesOSDTO : listAtividadeOs) { if (osDTO.getQuantidade() != null) { atividadesOSDTO.setCustoAtividade(atividadesOSDTO.getCustoAtividade() * osDTO.getQuantidade()); } listFinal.add(atividadesOSDTO); } osDTO.setColItens(listFinal); } } @Override public void duplicarOS(final Integer idOS) throws Exception { final OSDao osDao = this.getDao(); final AtividadesOSDao atividadesOSDao = new AtividadesOSDao(); final GlosaOSDao glosaOSDao = new GlosaOSDao(); OSDTO osDto = new OSDTO(); osDto.setIdOS(idOS); osDto = (OSDTO) osDao.restore(osDto); osDto.setDataInicio(null); osDto.setDataFim(null); osDto.setSituacaoOS(null); osDto.setNumero(null); final Collection<GlosaOSDTO> glosasOS = glosaOSDao.findByIdOs(idOS); if (glosasOS != null && !glosasOS.isEmpty()) { if (osDto.getQuantidadeGlosasAnterior() != null) { osDto.setQuantidadeGlosasAnterior(glosasOS.size() + osDto.getQuantidadeGlosasAnterior()); } else { osDto.setQuantidadeGlosasAnterior(glosasOS.size()); } } final Collection<AtividadesOSDTO> atividadesOS = atividadesOSDao.findByIdOS(idOS); final TransactionControler transaction = new TransactionControlerImpl(osDao.getAliasDB()); try { osDao.setTransactionControler(transaction); atividadesOSDao.setTransactionControler(transaction); transaction.start(); osDto.setIdOS(null); osDto = (OSDTO) osDao.create(osDto); if (atividadesOS != null && !atividadesOS.isEmpty()) { for (final AtividadesOSDTO atividade : atividadesOS) { atividade.setIdAtividadesOS(null); atividade.setGlosaAtividade(null); atividade.setIdOS(osDto.getIdOS()); atividadesOSDao.create(atividade); } } transaction.commit(); transaction.close(); } catch (final Exception e) { this.rollbackTransaction(transaction, e); } } @Override public void update(final IDto model) throws ServiceException, LogicException { // Instancia Objeto controlador de transacao final CrudDAO crudDao = this.getDao(); final AtividadesOSDao atividadesOSDao = new AtividadesOSDao(); final TransactionControler tc = new TransactionControlerImpl(crudDao.getAliasDB()); try { // Faz validacao, caso exista. this.validaUpdate(model); final OSDTO osDTO = (OSDTO) model; final OSDTO osDTOAux = (OSDTO) crudDao.restore(osDTO); if (!osDTOAux.getIdServicoContrato().equals(osDTO.getIdServicoContrato())) { osDTO.setQuantidadeGlosasAnterior(null); } else { osDTO.setQuantidadeGlosasAnterior(osDTOAux.getQuantidadeGlosasAnterior()); } // Seta o TransactionController para os DAOs crudDao.setTransactionControler(tc); atividadesOSDao.setTransactionControler(tc); // Inicia transacao tc.start(); // Executa operacoes pertinentes ao negocio. crudDao.update(osDTO); atividadesOSDao.deleteByIdOS(osDTO.getIdOS()); if (osDTO.getColItens() != null) { int i = 0; for (final Iterator it = osDTO.getColItens().iterator(); it.hasNext();) { i++; final AtividadesOSDTO atividadesOSDTO = (AtividadesOSDTO) it.next(); atividadesOSDTO.setIdOS(osDTO.getIdOS()); atividadesOSDTO.setSequencia(i); atividadesOSDTO.setDeleted("N"); atividadesOSDao.create(atividadesOSDTO); } } // Faz commit e fecha a transacao. tc.commit(); tc.close(); } catch (final Exception e) { this.rollbackTransaction(tc, e); } } @Override public void updateSituacao(final OSDTO os, final Collection colGlosas, final Collection colItens) throws Exception { final OSDao dao = this.getDao(); final GlosaOSDao glosaOSDao = new GlosaOSDao(); final AtividadesOSDao atividadesOSDao = new AtividadesOSDao(); final TransactionControler tc = new TransactionControlerImpl(dao.getAliasDB()); new ArrayList(); try { dao.setTransactionControler(tc); glosaOSDao.setTransactionControler(tc); atividadesOSDao.setTransactionControler(tc); tc.start(); if (os.getSituacaoOS() != null) { dao.updateSituacao(os.getIdOS(), os.getSituacaoOS()); } if (os.getObsFinalizacao() != null) { dao.updateObsFinal(os.getIdOS(), os.getObsFinalizacao()); } if (os.getQuantidade() != null) { dao.updateQuantidade(os.getIdOS(), os.getQuantidade()); } if (colItens != null) { for (final Iterator it = colItens.iterator(); it.hasNext();) { final AtividadesOSDTO atividadesOSDTO = (AtividadesOSDTO) it.next(); AtividadesOSDTO atividadesOSAux = new AtividadesOSDTO(); atividadesOSAux.setIdAtividadesOS(atividadesOSDTO.getIdAtividadesOS()); atividadesOSAux.setGlosaAtividade(atividadesOSDTO.getGlosaAtividade()); atividadesOSAux.setQtdeExecutada(atividadesOSDTO.getQtdeExecutada()); atividadesOSAux.setCustoAtividade(atividadesOSDTO.getCustoAtividade()); if (atividadesOSDTO.getGlosaAtividade() != null || atividadesOSDTO.getQtdeExecutada() != null) { atividadesOSDao.updateNotNull(atividadesOSAux); } else if (atividadesOSDTO.getCustoAtividade() != null && os.getIdOSPai() != null) { atividadesOSAux = null; atividadesOSAux = new AtividadesOSDTO(); atividadesOSAux.setIdAtividadesOS(atividadesOSDTO.getIdAtividadesOS()); atividadesOSAux.setCustoAtividade(atividadesOSDTO.getCustoAtividade()); atividadesOSDao.updateNotNull(atividadesOSAux); } } } if (colGlosas != null) { for (final Iterator it = colGlosas.iterator(); it.hasNext();) { GlosaOSDTO glosaOSDTO = (GlosaOSDTO) it.next(); glosaOSDTO.setIdOs(os.getIdOS()); glosaOSDTO.setDataUltModificacao(UtilDatas.getDataAtual()); if (glosaOSDTO.getIdGlosaOS() == null || glosaOSDTO.getIdGlosaOS().intValue() == 0) { glosaOSDTO.setDataCriacao(UtilDatas.getDataAtual()); glosaOSDTO = (GlosaOSDTO) glosaOSDao.create(glosaOSDTO); } else { GlosaOSDTO glosaOSAux = new GlosaOSDTO(); glosaOSAux.setIdGlosaOS(glosaOSDTO.getIdGlosaOS()); glosaOSAux = (GlosaOSDTO) glosaOSDao.restore(glosaOSAux); glosaOSDTO.setDataCriacao(glosaOSAux.getDataCriacao()); glosaOSDao.update(glosaOSDTO); } // colIdsNaoApagar.add(glosaOSDTO.getIdGlosaOS()); }/* * String notIn = ""; * for (Iterator it = colIdsNaoApagar.iterator(); it.hasNext();) { * Integer id = (Integer) it.next(); * if (!notIn.equalsIgnoreCase("")) { * notIn += ","; * } * notIn += "" + id.intValue(); * } * if (!notIn.equalsIgnoreCase("")) { * glosaOSDao.deleteByOsNotIn(os.getIdOS(), notIn); * } */ } tc.commit(); tc.close(); } catch (final Exception e) { this.rollbackTransaction(tc, e); } } @Override public void updateSituacao(final Integer idOs, final Integer situacao, final Collection colGlosasOS, final Collection colItens, final String obsFinalizacao) throws Exception { final OSDao dao = this.getDao(); final GlosaOSDao glosaOSDao = new GlosaOSDao(); final AtividadesOSDao atividadesOSDao = new AtividadesOSDao(); final TransactionControler tc = new TransactionControlerImpl(dao.getAliasDB()); new ArrayList(); try { dao.setTransactionControler(tc); glosaOSDao.setTransactionControler(tc); atividadesOSDao.setTransactionControler(tc); tc.start(); dao.updateSituacao(idOs, situacao); dao.updateObsFinal(idOs, obsFinalizacao); if (colItens != null) { for (final Iterator it = colItens.iterator(); it.hasNext();) { final AtividadesOSDTO atividadesOSDTO = (AtividadesOSDTO) it.next(); final AtividadesOSDTO atividadesOSAux = new AtividadesOSDTO(); atividadesOSAux.setIdAtividadesOS(atividadesOSDTO.getIdAtividadesOS()); atividadesOSAux.setGlosaAtividade(atividadesOSDTO.getGlosaAtividade()); atividadesOSAux.setQtdeExecutada(atividadesOSDTO.getQtdeExecutada()); if (atividadesOSDTO.getGlosaAtividade() != null || atividadesOSDTO.getQtdeExecutada() != null) { atividadesOSDao.updateNotNull(atividadesOSAux); } } } if (colGlosasOS != null) { for (final Iterator it = colGlosasOS.iterator(); it.hasNext();) { GlosaOSDTO glosaOSDTO = (GlosaOSDTO) it.next(); glosaOSDTO.setIdOs(idOs); glosaOSDTO.setDataUltModificacao(UtilDatas.getDataAtual()); if (glosaOSDTO.getIdGlosaOS() == null || glosaOSDTO.getIdGlosaOS().intValue() == 0) { glosaOSDTO.setDataCriacao(UtilDatas.getDataAtual()); glosaOSDTO = (GlosaOSDTO) glosaOSDao.create(glosaOSDTO); } else { GlosaOSDTO glosaOSAux = new GlosaOSDTO(); glosaOSAux.setIdGlosaOS(glosaOSDTO.getIdGlosaOS()); glosaOSAux = (GlosaOSDTO) glosaOSDao.restore(glosaOSAux); glosaOSDTO.setDataCriacao(glosaOSAux.getDataCriacao()); glosaOSDao.update(glosaOSDTO); } // colIdsNaoApagar.add(glosaOSDTO.getIdGlosaOS()); }/* * String notIn = ""; * for (Iterator it = colIdsNaoApagar.iterator(); it.hasNext();) { * Integer id = (Integer) it.next(); * if (!notIn.equalsIgnoreCase("")) { * notIn += ","; * } * notIn += "" + id.intValue(); * } * if (!notIn.equalsIgnoreCase("")) { * glosaOSDao.deleteByOsNotIn(idOs, notIn); * } */ } tc.commit(); tc.close(); } catch (final Exception e) { this.rollbackTransaction(tc, e); } } @Override public Collection findByIdContratoAndPeriodoAndSituacao(final Integer idContrato, final Date dataInicio, final Date dataFim, final Integer[] situacao, final Integer idospai) throws Exception { final OSDao dao = this.getDao(); return dao.findByIdContratoAndPeriodoAndSituacao(idContrato, dataInicio, dataFim, situacao, idospai); } @Override public Collection findByIdContratoAndPeriodoAndSituacao(final Integer idContrato, final Date dataInicio, final Date dataFim, final Integer[] situacao) throws Exception { final OSDao dao = this.getDao(); return dao.findByIdContratoAndPeriodoAndSituacao(idContrato, dataInicio, dataFim, situacao); } @Override public Collection listOSHomologadasENaoAssociadasFatura(final Integer idContrato) throws Exception { final OSDao dao = this.getDao(); return dao.listOSHomologadasENaoAssociadasFatura(idContrato); } @Override public Collection listOSByIds(final Integer idContrato, final Integer[] idOSs) throws Exception { final OSDao dao = this.getDao(); return dao.listOSByIds(idContrato, idOSs); } @Override public Collection listOSAssociadasFatura(final Integer idFatura) throws Exception { final OSDao dao = this.getDao(); return dao.listOSAssociadasFatura(idFatura); } @Override public Collection listOSByIdAtividadePeriodica(final Integer idatividade) throws Exception { final OSDao dao = this.getDao(); return dao.listOSByIdAtividadePeriodica(idatividade); } @Override public Collection listAtividadePeridodicaByIdos(final Integer idos) throws Exception { final OSDao dao = this.getDao(); return dao.listAtividadePeridodicaByIdos(idos); } @Override public Collection<RelatorioOrdemServicoUstDTO> listaCustoAtividadeOrdemServicoPorPeriodo(final RelatorioOrdemServicoUstDTO relatorio) throws Exception { final OSDao dao = this.getDao(); Collection<RelatorioOrdemServicoUstDTO> listaCustoAtividadePorPerido = null; try { listaCustoAtividadePorPerido = dao.listaCustoAtividadeOrdemServicoPorPeriodo(relatorio); if (listaCustoAtividadePorPerido != null) { for (final RelatorioOrdemServicoUstDTO ust : listaCustoAtividadePorPerido) { if (ust.getPeriodo().equals(1)) { ust.setMes(this.i18nMessage("citcorpore.texto.mes.janeiro")); } if (ust.getPeriodo().equals(2)) { ust.setMes(this.i18nMessage("citcorpore.texto.mes.fevereiro")); } if (ust.getPeriodo().equals(3)) { ust.setMes(this.i18nMessage("citcorpore.texto.mes.marco")); } if (ust.getPeriodo().equals(4)) { ust.setMes(this.i18nMessage("citcorpore.texto.mes.abril")); } if (ust.getPeriodo().equals(5)) { ust.setMes(this.i18nMessage("citcorpore.texto.mes.maio")); } if (ust.getPeriodo().equals(6)) { ust.setMes(this.i18nMessage("citcorpore.texto.mes.junho")); } if (ust.getPeriodo().equals(7)) { ust.setMes(this.i18nMessage("citcorpore.texto.mes.julho")); } if (ust.getPeriodo().equals(8)) { ust.setMes(this.i18nMessage("citcorpore.texto.mes.agosto")); } if (ust.getPeriodo().equals(9)) { ust.setMes(this.i18nMessage("citcorpore.texto.mes.setembro")); } if (ust.getPeriodo().equals(10)) { ust.setMes(this.i18nMessage("citcorpore.texto.mes.outubro")); } if (ust.getPeriodo().equals(11)) { ust.setMes(this.i18nMessage("citcorpore.texto.mes.novembro")); } if (ust.getPeriodo().equals(12)) { ust.setMes(this.i18nMessage("citcorpore.texto.mes.dezembro")); } final String valor1 = UtilFormatacao.formatDoubleSemPontos(ust.getCustoAtividade(), 2); ust.setCustoAtividadeFormatada(valor1); } } } catch (final Exception e) { e.printStackTrace(); } return listaCustoAtividadePorPerido; } @Override public Collection<RelatorioOrdemServicoUstDTO> listaAnos() throws Exception { final OSDao osDao = this.getDao(); return osDao.listaAnos(); } @Override public Collection<RelatorioAcompanhamentoDTO> listaAcompanhamentoPorPeriodoDoContrato(final RelatorioAcompanhamentoDTO relatorio) throws Exception { ContratoDTO contratoDto = new ContratoDTO(); final OSDao osDao = this.getDao(); final ContratoDao contratoDao = new ContratoDao(); contratoDto.setIdContrato(relatorio.getIdContrato()); contratoDto = (ContratoDTO) contratoDao.restore(contratoDto); List<RelatorioAcompanhamentoDTO> listaDeMesesAcompanhamentoPorPeriodoDoContrato = new ArrayList<RelatorioAcompanhamentoDTO>(); final List<RelatorioAcompanhamentoDTO> listRelatorioAcompanhamentoFinal = new ArrayList<RelatorioAcompanhamentoDTO>(); final Calendar dataInicioContrato = Calendar.getInstance(); dataInicioContrato.setTime(contratoDto.getDataContrato()); final Integer anoInicial = dataInicioContrato.get(Calendar.YEAR); final Integer mesInicial = dataInicioContrato.get(Calendar.MONTH) + 1; relatorio.setDataInicioContrato(contratoDto.getDataContrato()); relatorio.setDataFimContrato(contratoDto.getDataFimContrato()); final Integer quantidadeMesesPeriodoContratro = this.verificarPeriodoDeVigenciaContrato(relatorio); Integer cont = 0; try { listaDeMesesAcompanhamentoPorPeriodoDoContrato = (List<RelatorioAcompanhamentoDTO>) osDao.listaAcompanhamentoPorPeriodoDoContrato(relatorio); if (quantidadeMesesPeriodoContratro != null && quantidadeMesesPeriodoContratro > 0) { int mes = 0; Integer ano = anoInicial; for (int numeroMes = mesInicial; numeroMes < quantidadeMesesPeriodoContratro + mesInicial; numeroMes++) { mes = numeroMes; if (numeroMes > 12) { Integer diferenca = 0; diferenca = numeroMes / 12; mes = numeroMes - diferenca * 12; if (mes == 0) { mes = 12; diferenca = diferenca - 1; } ano = anoInicial + diferenca; } final RelatorioAcompanhamentoDTO relatorioAcompanhamentoDto = new RelatorioAcompanhamentoDTO(); relatorioAcompanhamentoDto.setMes(this.i18nMessage(UtilDatas.getDescricaoMes(mes)) + " / " + ano); /* relatorioAcompanhamentoDto.setNumeroMes(mes); */ relatorioAcompanhamentoDto.setNumeroMesDouble((double) mes); relatorioAcompanhamentoDto.setAnoDouble((double) ano); if (listaDeMesesAcompanhamentoPorPeriodoDoContrato != null && !listaDeMesesAcompanhamentoPorPeriodoDoContrato.isEmpty()) { for (final RelatorioAcompanhamentoDTO mesComAtividadeRealizada : listaDeMesesAcompanhamentoPorPeriodoDoContrato) { if (mesComAtividadeRealizada.getNumeroMes().equals(relatorioAcompanhamentoDto.getNumeroMes()) && mesComAtividadeRealizada.getAno().equals(relatorioAcompanhamentoDto.getAno())) { cont = cont + 1; relatorioAcompanhamentoDto.setCustoAtividade(mesComAtividadeRealizada.getCustoAtividade()); } relatorioAcompanhamentoDto.setValorEstimadoContrato(mesComAtividadeRealizada.getValorEstimadoContrato()); relatorioAcompanhamentoDto.setQuantidadePeriodoRealizado(cont); if (this.verificarPeriodoDeVigenciaContrato(mesComAtividadeRealizada) != null) { relatorioAcompanhamentoDto.setPeridoVigenciaContrato(this.verificarPeriodoDeVigenciaContrato(mesComAtividadeRealizada)); } } } listRelatorioAcompanhamentoFinal.add(relatorioAcompanhamentoDto); } } } catch (final Exception e) { e.printStackTrace(); } return listRelatorioAcompanhamentoFinal; } public Integer verificarPeriodoDeVigenciaContrato(final RelatorioAcompanhamentoDTO relatorio) { Integer quantidade = 0; quantidade = UtilDatas.getDifMeses(relatorio.getDataInicioContrato(), relatorio.getDataFimContrato()); if (quantidade != null) { return quantidade; } else { return null; } } @Override public void cancelaOsFilhas(final OSDTO os) throws Exception { try { if (os.getSituacaoOS() != null) { this.getDao().cancelaOSFilhas(os); } } catch (final Exception e) { throw new ServiceException(e); } } @Override public Collection retornaSeExisteOSFilha(final OSDTO os) throws Exception { try { return this.getDao().retornaSeExisteOSFilha(os.getIdOS()); } catch (final Exception e) { throw new ServiceException(e); } } @Override public void delete(final IDto model) throws ServiceException, LogicException { // Instancia Objeto controlador de transacao final CrudDAO crudDao = this.getDao(); final AtividadesOSDao atividadesOSDao = new AtividadesOSDao(); final TransactionControler tc = new TransactionControlerImpl(crudDao.getAliasDB()); try { // Faz validacao, caso exista. this.validaUpdate(model); final OSDTO osDTO = (OSDTO) model; // Seta o TransactionController para os DAOs crudDao.setTransactionControler(tc); atividadesOSDao.setTransactionControler(tc); // Inicia transacao tc.start(); // Executa operacoes pertinentes ao negocio. atividadesOSDao.deleteByIdOS(osDTO.getIdOS()); crudDao.delete(osDTO); // Faz commit e fecha a transacao. tc.commit(); tc.close(); } catch (final Exception e) { this.rollbackTransaction(tc, e); } } }