package gcom.cadastro; import gcom.batch.UnidadeProcessamento; import gcom.cadastro.sistemaparametro.SistemaParametro; import gcom.faturamento.debito.DebitoTipo; import gcom.util.ControladorException; import gcom.util.Util; import gcom.util.ZipUtil; import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.math.BigDecimal; import java.util.Collection; import java.util.Date; import java.util.Iterator; import java.util.zip.ZipOutputStream; import javax.ejb.EJBException; import javax.ejb.SessionBean; import br.com.danhil.BarCode.Interleaved2of5; /** * Controlador Cadastro CAERN * * @author R�mulo Aur�lio * @date 24/11/2009 */ public class ControladorCadastroCAERNSEJB extends ControladorCadastro implements SessionBean{ private static final long serialVersionUID = 1L; //============================================================================================================== // M�TODOS EXCLUSIVOS DA CAERN //============================================================================================================== /** * [UC0925] Emitir Boletos * * Alteracao para o caso da processamento da CAERN, * considerar todos os municipios e o tipo de debito 202 * * @author R�mulo Aur�lio / Analista: Rafael Pinto * @date 25/11/2009 */ public void emitirBoletos(Integer idFuncionalidadeIniciada,Integer grupo)throws ControladorException{ int idUnidadeIniciada = 0; try { /* * Registrar o in�cio do processamento da Unidade de * Processamento do Batch */ idUnidadeIniciada = getControladorBatch().iniciarUnidadeProcessamentoBatch(idFuncionalidadeIniciada,UnidadeProcessamento.FUNCIONALIDADE,0); boolean flagFimPesquisa = false; final int quantidadeCobrancaDocumento = 1000; int quantidadeInicio = 0; StringBuilder boletoTxt = new StringBuilder(); System.out.println("***************************************"); System.out.println("EMITIR BOLETOS"); System.out.println("***************************************"); SistemaParametro sistemaParametro = getControladorUtil().pesquisarParametrosDoSistema(); while (!flagFimPesquisa) { Collection dadosBoleto = repositorioCadastro.pesquisarDadosBoleto( quantidadeInicio,grupo,sistemaParametro.getNomeAbreviadoEmpresa()); if(dadosBoleto != null && !dadosBoleto.isEmpty()){ Iterator iterDadosBoleto = dadosBoleto.iterator(); if (dadosBoleto.size() < quantidadeCobrancaDocumento) { flagFimPesquisa = true; } else { quantidadeInicio = quantidadeInicio + 1000; } System.out.println("***************************************"); System.out.println("QUANTIDADE :" + dadosBoleto.size()); System.out.println("***************************************"); while (iterDadosBoleto.hasNext()) { DadosBoletoHelper helper = (DadosBoletoHelper) iterDadosBoleto.next(); //1.1 Inscri��o boletoTxt.append(Util.completaString(helper.getImovel().getInscricaoFormatada(), 20)); //1.2 Matr�cula Im�vel String matriculaStr = Util.adicionarZerosEsquedaNumero(9, "" + helper.getImovel().getId()); boletoTxt.append(matriculaStr.substring(0,8) + "." + matriculaStr.substring(8,9)); //1.3 Nome Cliente Usu�rio boletoTxt.append(Util.completaString(helper.getNomeCliente(), 40)); //1.4 Endere�o do Im�vel String endereco = getControladorEndereco().pesquisarEnderecoFormatado(helper.getImovel().getId()); boletoTxt.append(Util.completaString(endereco, 60)); //1.5 Grupo de Faturamento boletoTxt.append(Util.adicionarZerosEsquedaNumero(2,helper.getIdGrupoFaturamento().toString())); //1.6 Empresa boletoTxt.append(helper.getIdEmpresa().toString()); //1.7 Representa��o Num�rica do C�digo de Barras //1.8 C�digo de Barras BigDecimal valorCodigoBarras = pesquisarValorSugeridoDebitoTipo(DebitoTipo.DOACAO_AO_HOSPITAL_INFANTIL_VARELA_SANTIAGO); String representacaoNumericaCodBarra = ""; // Obt�m a representa��o num�rica do c�digo de barra representacaoNumericaCodBarra = this.getControladorArrecadacao().obterRepresentacaoNumericaCodigoBarra( 4, valorCodigoBarras, helper.getImovel().getLocalidade().getId(), helper.getImovel().getId(), null, null, DebitoTipo.DOACAO_AO_HOSPITAL_INFANTIL_VARELA_SANTIAGO, "" + Util.getAno(new Date()), null, null, null, null, null); // Formata a representa��o n�merica do c�digo de barras String representacaoNumericaCodBarraFormatada = representacaoNumericaCodBarra.substring(0, 11) + " " + representacaoNumericaCodBarra.substring(11, 12) + " " + representacaoNumericaCodBarra.substring(12, 23) + " " + representacaoNumericaCodBarra.substring(23, 24) + " " + representacaoNumericaCodBarra.substring(24, 35) + " " + representacaoNumericaCodBarra.substring(35, 36) + " " + representacaoNumericaCodBarra.substring(36, 47) + " " + representacaoNumericaCodBarra.substring(47, 48); boletoTxt.append(representacaoNumericaCodBarraFormatada); // Cria o objeto para gerar o c�digo de barras no padr�o intercalado 2 de 5 Interleaved2of5 codigoBarraIntercalado2de5 = new Interleaved2of5(); // Recupera a representa��o n�merica do c�digo de barras sem os d�gitos verificadores String representacaoCodigoBarrasSemDigitoVerificador = representacaoNumericaCodBarra.substring(0, 11) + representacaoNumericaCodBarra.substring(12, 23) + representacaoNumericaCodBarra.substring(24, 35) + representacaoNumericaCodBarra.substring(36, 47); boletoTxt.append(codigoBarraIntercalado2de5.encodeValue(representacaoCodigoBarrasSemDigitoVerificador)); // Codigo da Rota tam (02) boletoTxt.append(Util.adicionarZerosEsquedaNumeroTruncando(2,helper.getCodigoRota().toString())); //Sequencial da Rota Tam (04) boletoTxt.append("." + Util.adicionarZerosEsquedaNumeroTruncando(4,helper.getSequencialRota().toString())); boletoTxt.append(System.getProperty("line.separator")); } }else{ flagFimPesquisa = true; } } Date dataAtual = new Date(); String nomeZip = null; nomeZip = "BOLETO_HOSPITAL_INFANTIL_VARELA_SANTIAGO_GRUPO_" + grupo + "_" + Util.formatarData(dataAtual) + Util.formatarHoraSemDataSemDoisPontos(dataAtual); nomeZip = nomeZip.replace("/", "_"); // pegar o arquivo, zipar pasta e arquivo e escrever no stream try { System.out.println("***************************************"); System.out.println("INICO DA CRIACAO DO ARQUIVO"); System.out.println("***************************************"); if (boletoTxt != null && boletoTxt.length() != 0) { // criar o arquivo zip File compactado = new File(nomeZip + ".zip"); // nomeZip ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(compactado)); File leitura = new File(nomeZip + ".txt"); BufferedWriter out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(leitura.getAbsolutePath()))); out.write(boletoTxt.toString()); out.close(); ZipUtil.adicionarArquivo(zos, leitura); // close the stream zos.close(); leitura.delete(); } System.out.println("***************************************"); System.out.println("FIM DA CRIACAO DO ARQUIVO"); System.out.println("***************************************"); } catch (IOException e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } catch (Exception e) { e.printStackTrace(); throw new ControladorException("erro.sistema", e); } getControladorBatch().encerrarUnidadeProcessamentoBatch(null,idUnidadeIniciada, false); System.out.println("******* FIM **********"); } catch (Exception ex) { ex.printStackTrace(); getControladorBatch().encerrarUnidadeProcessamentoBatch(ex,idUnidadeIniciada, true); throw new EJBException(ex); } } }