package gcom.gui.relatorio.faturamento; import gcom.faturamento.bean.EmitirContaTipo2Helper; import gcom.gui.ActionServletException; import gcom.relatorio.ExibidorProcessamentoTarefaRelatorio; import gcom.relatorio.faturamento.RelatorioContaTipo2; import gcom.relatorio.faturamento.conta.ContaLinhasDescricaoServicosTarifasTotalHelper; import gcom.tarefa.TarefaRelatorio; import gcom.util.Util; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.fileupload.DiskFileUpload; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadException; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; public class GerarContasAction extends ExibidorProcessamentoTarefaRelatorio { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) { // Seta o mapeamento de retorno ActionForward retorno = actionMapping.findForward("exibirGerarContas"); DiskFileUpload upload = new DiskFileUpload(); List items = null; try { items = upload.parseRequest(httpServletRequest); this.getSessao(httpServletRequest).setAttribute("arquivo",items); } catch (FileUploadException e) { items = (List) this.getSessao(httpServletRequest).getAttribute("arquivo"); if(items == null){ throw new ActionServletException("erro.sistema", e); } } Collection colecaoEmitirContaTipo2Helper = this.gerarColecaoEmitirContaTipo2Helper(items); FileItem item = (FileItem) Util.retonarObjetoDeColecao(items); String nomeArquivo = item.getName().replace(".txt",""); String tipoRelatorio = httpServletRequest.getParameter("tipoRelatorio"); RelatorioContaTipo2 relatorio = new RelatorioContaTipo2(this.getUsuarioLogado(httpServletRequest)); relatorio.addParametro("colecaoEmitirContaTipo2Helper", colecaoEmitirContaTipo2Helper); if (tipoRelatorio == null) { tipoRelatorio = TarefaRelatorio.TIPO_PDF + ""; } relatorio.addParametro("tipoFormatoRelatorio",Integer.parseInt(tipoRelatorio)); relatorio.addParametro("nomeArquivo",nomeArquivo); retorno = processarExibicaoRelatorio(relatorio, tipoRelatorio, httpServletRequest, httpServletResponse, actionMapping); return retorno; } private Collection gerarColecaoEmitirContaTipo2Helper(List items){ Collection retorno = new ArrayList(); FileItem item = null; String nomeItem = null; // Parse the request try { Iterator iter = items.iterator(); while (iter.hasNext()) { item = (FileItem) iter.next(); // verifica se n�o � diretorio if (!item.isFormField()) { // coloca o nome do item para maiusculo nomeItem = item.getName().toUpperCase(); // compara o final do nome do arquivo � .txt if (nomeItem.endsWith(".TXT")) { // abre o arquivo InputStreamReader reader = new InputStreamReader(item.getInputStream()); BufferedReader buffer = new BufferedReader(reader); // cria uma variavel do tipo boolean boolean eof = false; EmitirContaTipo2Helper emitirContaTipo2Helper = null; // enquanto a variavel for false while (!eof) { // pega a linha do arquivo String linhaLida = buffer.readLine(); // se for a ultima linha do arquivo if (linhaLida == null || linhaLida.trim().length() == 0) { // seta a variavel boolean para true eof = true; } else { emitirContaTipo2Helper = new EmitirContaTipo2Helper(); //1-N�mero da Conta emitirContaTipo2Helper.setNumeroConta(linhaLida.substring(0, 10).trim()); //2-Nome do Cliente emitirContaTipo2Helper.setNomeCliente(linhaLida.substring(10, 60).trim()); //3-Endereco - Parte 1 emitirContaTipo2Helper.setEndereco(linhaLida.substring(60, 160).trim()); //4-Endereco - Parte 2 emitirContaTipo2Helper.setBairro(linhaLida.substring(160, 190).trim()); //5-Endereco - Parte 3 emitirContaTipo2Helper.setEnderecoLinha3(linhaLida.substring(190, 231).trim()); //8-Referencia emitirContaTipo2Helper.setMesAnoConta(linhaLida.substring(231, 238).trim()); //9-Vencimento //Nesse caso pega o primeiro vencimento da conta dos vencimento alternativos //Anterior - linhaLida.substring(238, 248) emitirContaTipo2Helper.setDataVencimento(linhaLida.substring(1075,1085).trim()); //10-Matricula do imovel emitirContaTipo2Helper.setMatricula(linhaLida.substring(248, 256).trim()); //11-Inscricao do Imovel emitirContaTipo2Helper.setInscricao(linhaLida.substring(256, 276).trim()); //12-Rota emitirContaTipo2Helper.setRota(linhaLida.substring(276, 284).trim()); //13-Categoria emitirContaTipo2Helper.setCategoria(linhaLida.substring(284, 297).trim()); //14-Numero de Economias emitirContaTipo2Helper.setQtdeEconomia(linhaLida.substring(297, 301).trim()); //15-Numero do Hidrometro emitirContaTipo2Helper.setHidrometro(linhaLida.substring(301, 311).trim()); //16-Tipo Consumo Faturado emitirContaTipo2Helper.setDescricaoTipoConsumo(linhaLida.substring(311, 331).trim()); //17-Consumo Faturado emitirContaTipo2Helper.setVolFaturado(linhaLida.substring(331, 335).trim()); //18-Consumo Estimado //19-Data Leitura Anterior emitirContaTipo2Helper.setDtLeituraAnterior(linhaLida.substring(339, 349).trim()); //20-Data Leitura Atual emitirContaTipo2Helper.setDtLeituraAtual(linhaLida.substring(349, 359).trim()); //21-Dias de Consumo emitirContaTipo2Helper.setDiasConsumo(linhaLida.substring(359, 361).trim()); //22-Leitura Anterior emitirContaTipo2Helper.setLeituraAnterior(linhaLida.substring(361, 368).trim()); //23-Leitura Atual emitirContaTipo2Helper.setLeituraAtual(linhaLida.substring(368, 375).trim()); //24-Media emitirContaTipo2Helper.setConsumoMedio(linhaLida.substring(375, 381).trim()); //25-Referencia 1 emitirContaTipo2Helper.setMesAno1Conta(linhaLida.substring(381, 388).trim()); //26-Consumo 1 emitirContaTipo2Helper.setConsumo1Conta(linhaLida.substring(388, 392).trim()); //27-Referencia 2 emitirContaTipo2Helper.setMesAno2Conta(linhaLida.substring(392, 399).trim()); //28-Consumo 2 emitirContaTipo2Helper.setConsumo2Conta(linhaLida.substring(399, 403).trim()); //29-Referencia 3 emitirContaTipo2Helper.setMesAno3Conta(linhaLida.substring(403, 410).trim()); //30-Consumo 3 emitirContaTipo2Helper.setConsumo3Conta(linhaLida.substring(410, 414).trim()); //31-Referencia 4 emitirContaTipo2Helper.setMesAno4Conta(linhaLida.substring(414, 421).trim()); //32-Consumo 4 emitirContaTipo2Helper.setConsumo4Conta(linhaLida.substring(421, 425).trim()); //33-Refencia 5 emitirContaTipo2Helper.setMesAno5Conta(linhaLida.substring(425, 432).trim()); //34-Consumo 5 emitirContaTipo2Helper.setConsumo5Conta(linhaLida.substring(432, 436).trim()); //35-Referencia 6 emitirContaTipo2Helper.setMesAno6Conta(linhaLida.substring(436, 443).trim()); //36-Consumo 6 emitirContaTipo2Helper.setConsumo6Conta(linhaLida.substring(443, 447).trim()); Collection<ContaLinhasDescricaoServicosTarifasTotalHelper> colecaoServicos = new ArrayList(); ContaLinhasDescricaoServicosTarifasTotalHelper descricaoServico = null; //37-Descricao Item 1 //38-Valor Item 1 String servico = linhaLida.substring(447, 502).trim(); String valor = null; if(!servico.equals("")){ valor = linhaLida.substring(502, 516).trim(); descricaoServico = new ContaLinhasDescricaoServicosTarifasTotalHelper(); descricaoServico.setDescricaoServicosTarifas(servico); descricaoServico.setValor(valor); colecaoServicos.add(descricaoServico); } //39-Descricao Item 2 //40-Valor Item 2 servico = linhaLida.substring(516, 571).trim(); if(!servico.equals("")){ valor = linhaLida.substring(571, 585).trim(); descricaoServico = new ContaLinhasDescricaoServicosTarifasTotalHelper(); descricaoServico.setDescricaoServicosTarifas(servico); descricaoServico.setValor(valor); colecaoServicos.add(descricaoServico); } //41-Descricao Item 3 //42-Valor Item 3 servico = linhaLida.substring(585, 640).trim(); if(!servico.equals("")){ valor = linhaLida.substring(640, 654).trim(); descricaoServico = new ContaLinhasDescricaoServicosTarifasTotalHelper(); descricaoServico.setDescricaoServicosTarifas(servico); descricaoServico.setValor(valor); colecaoServicos.add(descricaoServico); } //43-Descricao Item 4 //44-Valor Item 4 servico = linhaLida.substring(654, 709).trim(); if(!servico.equals("")){ valor = linhaLida.substring(709, 723).trim(); descricaoServico = new ContaLinhasDescricaoServicosTarifasTotalHelper(); descricaoServico.setDescricaoServicosTarifas(servico); descricaoServico.setValor(valor); colecaoServicos.add(descricaoServico); } //45-Descricao Item 5 //46-Valor Item 5 servico = linhaLida.substring(723, 778).trim(); if(!servico.equals("")){ valor = linhaLida.substring(778, 792).trim(); descricaoServico = new ContaLinhasDescricaoServicosTarifasTotalHelper(); descricaoServico.setDescricaoServicosTarifas(servico); descricaoServico.setValor(valor); colecaoServicos.add(descricaoServico); } //47-Descricao Item 6 //48-Valor Item 6 servico = linhaLida.substring(792, 847).trim(); if(!servico.equals("")){ valor = linhaLida.substring(847, 861).trim(); descricaoServico = new ContaLinhasDescricaoServicosTarifasTotalHelper(); descricaoServico.setDescricaoServicosTarifas(servico); descricaoServico.setValor(valor); colecaoServicos.add(descricaoServico); } emitirContaTipo2Helper.setColecaoContaLinhasDescricaoServicosTarifasTotalHelper(colecaoServicos); //49-Valor Total Conta emitirContaTipo2Helper.setValorTotalConta(linhaLida.substring(861,875).trim()); //50-Mensagem 1 emitirContaTipo2Helper.setMsgConta(linhaLida.substring(875,945).trim()); //51-Mensagem 2 emitirContaTipo2Helper.setMsgLinha1Conta(linhaLida.substring(945,1010).trim()); //52-Mensagem 3 emitirContaTipo2Helper.setMsgLinha2Conta(linhaLida.substring(1010,1075).trim()); //53-Mensagem 4 emitirContaTipo2Helper.setDatasVencimentos(linhaLida.substring(1075,1140).trim()); //54-Mensagem 5 emitirContaTipo2Helper.setMsgLinha3Conta(linhaLida.substring(1140,1205).trim()); //55-Mensagem 6 emitirContaTipo2Helper.setMsgLinha4Conta(linhaLida.substring(1205,1270).trim()); //56-Mensagem 7 emitirContaTipo2Helper.setMsgLinha5Conta(linhaLida.substring(1270,1335).trim()); //57-Turbidez Valor Medio emitirContaTipo2Helper.setValorMedioTurbidez(linhaLida.substring(1335,1340).trim()); //58-Turbidez Valor Padrao emitirContaTipo2Helper.setPadraoTurbidez(linhaLida.substring(1340,1360).trim()); //59-Ph Valor Medio emitirContaTipo2Helper.setValorMedioPh(linhaLida.substring(1360,1365).trim()); //60-Ph Valor Padrao emitirContaTipo2Helper.setPadraoPh(linhaLida.substring(1365,1385).trim()); //61-Cor Valor Medio emitirContaTipo2Helper.setValorMedioCor(linhaLida.substring(1385,1390).trim()); //62-Cor Valor Padrao emitirContaTipo2Helper.setPadraoCor(linhaLida.substring(1390,1410).trim()); //63-Cloro Valor Medio emitirContaTipo2Helper.setValorMedioCloro(linhaLida.substring(1410,1415).trim()); //64-Cloro Valor Padrao emitirContaTipo2Helper.setPadraoCloro(linhaLida.substring(1415,1435).trim()); //65-Fluor Valor Medio emitirContaTipo2Helper.setValorMedioFluor(linhaLida.substring(1435,1440).trim()); //66-Fluor Valor Padrao emitirContaTipo2Helper.setPadraoFluor(linhaLida.substring(1440,1460).trim()); //67-Ferro Valor Medio emitirContaTipo2Helper.setValorMedioFerro(linhaLida.substring(1460,1465).trim()); //68-Ferro Valor Padrao emitirContaTipo2Helper.setPadraoFerro(linhaLida.substring(1465,1485).trim()); //69-Coliformes Totais Valor Medio emitirContaTipo2Helper.setValorMedioColiformesTotais(linhaLida.substring(1485,1495)); //70-Coliformes Totais Valor Padrao emitirContaTipo2Helper.setPadraoColiformesTotais(linhaLida.substring(1495,1515).trim()); //71-Coliformes Fecais Valor Medio emitirContaTipo2Helper.setValorMedioColiformesfecais(linhaLida.substring(1515,1525).trim()); //72-Coliformes Fecais Valor Padrao emitirContaTipo2Helper.setPadraoColiformesfecais(linhaLida.substring(1525,1545).trim()); //73-Representa��o Numerica Codigo de Barras if(!linhaLida.substring(1545,1600).trim().equals("")){ String codigoBarraFormatado = Util.formatarCodigoBarra(linhaLida.substring(1545,1600).trim()); emitirContaTipo2Helper.setRepresentacaoNumericaCodBarraFormatada(codigoBarraFormatado); //Representa��o numerica cod barra sem digito String codigoBarra = codigoBarraFormatado.substring(0,11) + codigoBarraFormatado.substring(14, 25) + codigoBarraFormatado.substring(28, 39) + codigoBarraFormatado.substring(42, 53); emitirContaTipo2Helper.setRepresentacaoNumericaCodBarraSemDigito(codigoBarra); emitirContaTipo2Helper.setIndicadorCodigoBarras("true"); }else{ emitirContaTipo2Helper.setIndicadorCodigoBarras(null); } //74 - Codigo de Barras //75-Origem emitirContaTipo2Helper.setOrigem(linhaLida.substring(1640,1643).trim()); //76-Data Limite Para Pagamento //77-Grupo Faturamento emitirContaTipo2Helper.setGrupoFaturamento(linhaLida.substring(1653,1656).trim()); //78-Sequencial de Impressao emitirContaTipo2Helper.setSequencialImpressao(linhaLida.substring(1656,1663).trim()); //79-Codigo rota e sequencial do cliente responsavel if(!linhaLida.substring(1663,1679).trim().equals("")){ emitirContaTipo2Helper.setCodigoRotaSequencialRota(linhaLida.substring(1663,1679).trim()); }else{ emitirContaTipo2Helper.setCodigoRotaSequencialRota(null); } retorno.add(emitirContaTipo2Helper); } }//fim do while eof } else { throw new ActionServletException("atencao.tipo_importacao.nao_txt"); } } } } catch (IOException ex) { throw new ActionServletException("erro.importacao.nao_concluida"); } return retorno; } }