package gcom.gui.relatorio.atendimentopublico;
import gcom.gui.ActionServletException;
import gcom.relatorio.ExibidorProcessamentoTarefaRelatorio;
import gcom.relatorio.atendimentopublico.RelatorioOrdemFiscalizacao;
import gcom.relatorio.atendimentopublico.RelatorioOrdemFiscalizacaoBean;
import gcom.relatorio.atendimentopublico.RelatorioOrdemFiscalizacaoFaturasBean;
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 net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
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;
/**
* @author Raphael Rossiter
* @data 02/01/2008
*/
public class GerarOrdemFiscalizacaoAction extends ExibidorProcessamentoTarefaRelatorio {
public ActionForward execute(ActionMapping actionMapping,
ActionForm actionForm, HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) {
ActionForward retorno = actionMapping.findForward("gerarOrdemFiscalizacao");
//REALIZANDO O UPLOAD DO ARQUIVO INFORMADO =========================================
DiskFileUpload upload = new DiskFileUpload();
List itens = null;
try {
itens = upload.parseRequest(httpServletRequest);
this.getSessao(httpServletRequest).setAttribute("arquivo",itens);
} catch (FileUploadException e) {
itens = (List) this.getSessao(httpServletRequest).getAttribute("arquivo");
if(itens == null){
throw new ActionServletException("erro.sistema", e);
}
}
//==================================================================================
//Carregar objeto BEAN para montagem do relat�rio ==================================
Collection colecaoOrdemFiscalizacao = this.gerarColecaoOrdemFiscalizacaoHelper(itens);
//==================================================================================
//Definindo em que formato o relat�rio ser� gerado =================================
String tipoRelatorio = httpServletRequest.getParameter("tipoRelatorio");
if (tipoRelatorio == null) {
tipoRelatorio = TarefaRelatorio.TIPO_PDF + "";
}
//==================================================================================
//Renomeando o arquivo =============================================================
FileItem item = (FileItem) Util.retonarObjetoDeColecao(itens);
String nomeArquivo = this.tratarNomeArquivo(item.getName());
nomeArquivo = nomeArquivo.replace(".txt","");
nomeArquivo = nomeArquivo.replace("EMITIR","RELATORIO");
//==================================================================================
RelatorioOrdemFiscalizacao relatorio =
new RelatorioOrdemFiscalizacao(this.getUsuarioLogado(httpServletRequest));
relatorio.addParametro("colecaoOrdemFiscalizacao", colecaoOrdemFiscalizacao);
relatorio.addParametro("tipoFormatoRelatorio", Integer.parseInt(tipoRelatorio));
relatorio.addParametro("nomeArquivo", nomeArquivo);
retorno = processarExibicaoRelatorio(relatorio, tipoRelatorio, httpServletRequest,
httpServletResponse, actionMapping);
return retorno;
}
private Collection gerarColecaoOrdemFiscalizacaoHelper(List itens){
Collection retorno =
new ArrayList();
FileItem item = null;
String nomeItem = null;
// Parse the request
try {
Iterator iter = itens.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;
RelatorioOrdemFiscalizacaoBean relatorioOrdemFiscalizacaoBean = 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 {
relatorioOrdemFiscalizacaoBean = new RelatorioOrdemFiscalizacaoBean();
//-Sequencial de Impress�o
relatorioOrdemFiscalizacaoBean.setSequencial(linhaLida.substring(7,14).trim());
//-Grupo
relatorioOrdemFiscalizacaoBean.setGrupo(linhaLida.substring(14,16).trim());
//-Rota.SeqRota
relatorioOrdemFiscalizacaoBean.setRotaSeqRota(linhaLida.substring(16, 22).trim()+"."+
linhaLida.substring(22, 26).trim());
//-Matricula
relatorioOrdemFiscalizacaoBean.setMatricula(linhaLida.substring(38, 47).trim());
//-Inscricao
relatorioOrdemFiscalizacaoBean.setInscricao(linhaLida.substring(47, 67).trim());
//-Endereco - Parte 1 + Parte 2 + Parte 3
relatorioOrdemFiscalizacaoBean.setEndereco(
linhaLida.substring(67,167).trim() +
" " + linhaLida.substring(167, 197).trim() +
" " + linhaLida.substring(197, 227).trim()
+ " - " +linhaLida.substring(227, 229).trim()
+ " " +linhaLida.substring(229, 238).trim());
//-Nome do Cliente
relatorioOrdemFiscalizacaoBean.setNomeCliente(linhaLida.substring(409, 459).trim());
//-Valor Total do Debito
relatorioOrdemFiscalizacaoBean.setValorDebito(linhaLida.substring(1194, 1208).trim());
//-Data Emissao
relatorioOrdemFiscalizacaoBean.setDataEmissao(linhaLida.substring(1264, 1274).trim());
//-Descricao Situacao Ligacao Agua
relatorioOrdemFiscalizacaoBean.setLigacaoAguaSituacao(linhaLida.substring(1475, 1495).trim());
//-Descricao Situacao Ligacao Esgoto
relatorioOrdemFiscalizacaoBean.setLigacaoEsgotoSituacao(linhaLida.substring(1495, 1515).trim());
// //ITEM 23 - N�mero do Hidr�metro
relatorioOrdemFiscalizacaoBean.setNumeroHidrometro(linhaLida.substring(1284, 1294).trim());
//ITEM 31 - Consumo M�dio
relatorioOrdemFiscalizacaoBean.setConsumoMedio(linhaLida.substring(1530, 1540).trim());
//ITEM 32 - Consumo Fixo
relatorioOrdemFiscalizacaoBean.setConsumoFixo(linhaLida.substring(1540, 1550).trim());
//ITEM 33 - Resid�ncial
relatorioOrdemFiscalizacaoBean.setQtdeEconResidencial(linhaLida.substring(1550, 1553).trim());
//ITEM 34 - Comercial
relatorioOrdemFiscalizacaoBean.setQtdeEconComercial(linhaLida.substring(1553, 1556).trim());
//ITEM 35 - Industrial
relatorioOrdemFiscalizacaoBean.setQtdeEconIndustrial(linhaLida.substring(1556, 1559).trim());
//ITEM 36 - P�blico
relatorioOrdemFiscalizacaoBean.setQtdeEconPublica(linhaLida.substring(1559, 1562).trim());
//ITEM 37 - Soma Total das economias
relatorioOrdemFiscalizacaoBean.setQtdeEconTotal(linhaLida.substring(1562, 1566).trim());
//ITEM 38 - Data da Posi��o do D�bito
relatorioOrdemFiscalizacaoBean.setDataPosicaoDebito(linhaLida.substring(1566, 1576).trim());
//ITEM 39 - Data do Corte
relatorioOrdemFiscalizacaoBean.setDataCorte(linhaLida.substring(1576, 1586).trim());
//ITEM 40 - Data da Supress�o
relatorioOrdemFiscalizacaoBean.setDataSupressaoTotal(linhaLida.substring(1586, 1596).trim());
//ITEM 41 - Origem
relatorioOrdemFiscalizacaoBean.setOrigem(linhaLida.substring(1596, 1611).trim());
//ITEM 42 - Ocorr�ncia
relatorioOrdemFiscalizacaoBean.setOcorrencia(linhaLida.substring(1611, 1645).trim());
//ITEM 43 - Data �ltima Altera��o
relatorioOrdemFiscalizacaoBean.setUltimaAlteracao(linhaLida.substring(1645, 1655).trim());
//ITEM 44 - Ordem de Servi�o
relatorioOrdemFiscalizacaoBean.setOrdemFiscalizacao(linhaLida.substring(1655, 1670).trim());
//ITEM 45 - Tipo de Consumidor (ImovelPerfil da tabela CobrancaDocumento)
relatorioOrdemFiscalizacaoBean.setTipoConsumidor(linhaLida.substring(1670, 1690).trim());
ArrayList colecaoDebito = new ArrayList();
RelatorioOrdemFiscalizacaoFaturasBean relatorioOrdemFiscalizacaoFaturasBean = null;
//anoMes LINHA 1
String anoMesFatura = linhaLida.substring(462,469).trim();
String valor = "";
if(!anoMesFatura.equals("")){
valor = linhaLida.substring(481, 495).trim();
relatorioOrdemFiscalizacaoFaturasBean = new RelatorioOrdemFiscalizacaoFaturasBean();
relatorioOrdemFiscalizacaoFaturasBean.setFaturaAtraso(anoMesFatura);
relatorioOrdemFiscalizacaoFaturasBean.setValor(valor);
relatorioOrdemFiscalizacaoFaturasBean.setDataVencimento(linhaLida.substring(471,481).trim());
colecaoDebito.add(relatorioOrdemFiscalizacaoFaturasBean);
}
//anoMes LINHA 2
anoMesFatura = linhaLida.substring(523,530).trim();
valor = "";
if(!anoMesFatura.equals("")){
valor = linhaLida.substring(542, 556).trim();
relatorioOrdemFiscalizacaoFaturasBean = new RelatorioOrdemFiscalizacaoFaturasBean();
relatorioOrdemFiscalizacaoFaturasBean.setFaturaAtraso(anoMesFatura);
relatorioOrdemFiscalizacaoFaturasBean.setValor(valor);
relatorioOrdemFiscalizacaoFaturasBean.setDataVencimento(linhaLida.substring(532,542).trim());
colecaoDebito.add(relatorioOrdemFiscalizacaoFaturasBean);
}
//anoMes LINHA 3
anoMesFatura = linhaLida.substring(584,591).trim();
valor = "";
if(!anoMesFatura.equals("")){
valor = linhaLida.substring(603, 617).trim();
relatorioOrdemFiscalizacaoFaturasBean = new RelatorioOrdemFiscalizacaoFaturasBean();
relatorioOrdemFiscalizacaoFaturasBean.setFaturaAtraso(anoMesFatura);
relatorioOrdemFiscalizacaoFaturasBean.setValor(valor);
relatorioOrdemFiscalizacaoFaturasBean.setDataVencimento(linhaLida.substring(593,603).trim());
colecaoDebito.add(relatorioOrdemFiscalizacaoFaturasBean);
}
//anoMes LINHA 4
anoMesFatura = linhaLida.substring(645,652).trim();
valor = "";
if(!anoMesFatura.equals("")){
valor = linhaLida.substring(664, 678).trim();
relatorioOrdemFiscalizacaoFaturasBean = new RelatorioOrdemFiscalizacaoFaturasBean();
relatorioOrdemFiscalizacaoFaturasBean.setFaturaAtraso(anoMesFatura);
relatorioOrdemFiscalizacaoFaturasBean.setValor(valor);
relatorioOrdemFiscalizacaoFaturasBean.setDataVencimento(linhaLida.substring(654,664).trim());
colecaoDebito.add(relatorioOrdemFiscalizacaoFaturasBean);
}
//anoMes LINHA 5
anoMesFatura = linhaLida.substring(706,713).trim();
valor = "";
if(!anoMesFatura.equals("")){
valor = linhaLida.substring(725, 739).trim();
relatorioOrdemFiscalizacaoFaturasBean = new RelatorioOrdemFiscalizacaoFaturasBean();
relatorioOrdemFiscalizacaoFaturasBean.setFaturaAtraso(anoMesFatura);
relatorioOrdemFiscalizacaoFaturasBean.setValor(valor);
relatorioOrdemFiscalizacaoFaturasBean.setDataVencimento(linhaLida.substring(715,725).trim());
colecaoDebito.add(relatorioOrdemFiscalizacaoFaturasBean);
}
//anoMes LINHA 6
anoMesFatura = linhaLida.substring(767,774).trim();
valor = "";
if(!anoMesFatura.equals("")){
valor = linhaLida.substring(786, 800).trim();
relatorioOrdemFiscalizacaoFaturasBean = new RelatorioOrdemFiscalizacaoFaturasBean();
relatorioOrdemFiscalizacaoFaturasBean.setFaturaAtraso(anoMesFatura);
relatorioOrdemFiscalizacaoFaturasBean.setValor(valor);
relatorioOrdemFiscalizacaoFaturasBean.setDataVencimento(linhaLida.substring(776,786).trim());
colecaoDebito.add(relatorioOrdemFiscalizacaoFaturasBean);
}
//anoMes LINHA 7
anoMesFatura = linhaLida.substring(828,835).trim();
valor = "";
if(!anoMesFatura.equals("")){
valor = linhaLida.substring(847,861).trim();
relatorioOrdemFiscalizacaoFaturasBean = new RelatorioOrdemFiscalizacaoFaturasBean();
relatorioOrdemFiscalizacaoFaturasBean.setFaturaAtraso(anoMesFatura);
relatorioOrdemFiscalizacaoFaturasBean.setValor(valor);
relatorioOrdemFiscalizacaoFaturasBean.setDataVencimento(linhaLida.substring(837,847).trim());
colecaoDebito.add(relatorioOrdemFiscalizacaoFaturasBean);
}
//anoMes LINHA 8
anoMesFatura = linhaLida.substring(889,896).trim();
valor = "";
if(!anoMesFatura.equals("")){
valor = linhaLida.substring(908,922).trim();
relatorioOrdemFiscalizacaoFaturasBean = new RelatorioOrdemFiscalizacaoFaturasBean();
relatorioOrdemFiscalizacaoFaturasBean.setFaturaAtraso(anoMesFatura);
relatorioOrdemFiscalizacaoFaturasBean.setValor(valor);
relatorioOrdemFiscalizacaoFaturasBean.setDataVencimento(linhaLida.substring(898,908).trim());
colecaoDebito.add(relatorioOrdemFiscalizacaoFaturasBean);
}
//anoMes LINHA 9
anoMesFatura = linhaLida.substring(950,957).trim();
valor = "";
if(!anoMesFatura.equals("")){
valor = linhaLida.substring(969,983).trim();
relatorioOrdemFiscalizacaoFaturasBean = new RelatorioOrdemFiscalizacaoFaturasBean();
relatorioOrdemFiscalizacaoFaturasBean.setFaturaAtraso(anoMesFatura);
relatorioOrdemFiscalizacaoFaturasBean.setValor(valor);
relatorioOrdemFiscalizacaoFaturasBean.setDataVencimento(linhaLida.substring(959,969).trim());
colecaoDebito.add(relatorioOrdemFiscalizacaoFaturasBean);
}
//anoMes LINHA 10
anoMesFatura = linhaLida.substring(1011,1018).trim();
valor = "";
if(!anoMesFatura.equals("")){
valor = linhaLida.substring(1030,1044).trim();
relatorioOrdemFiscalizacaoFaturasBean = new RelatorioOrdemFiscalizacaoFaturasBean();
relatorioOrdemFiscalizacaoFaturasBean.setFaturaAtraso(anoMesFatura);
relatorioOrdemFiscalizacaoFaturasBean.setValor(valor);
relatorioOrdemFiscalizacaoFaturasBean.setDataVencimento(linhaLida.substring(1020,1030).trim());
colecaoDebito.add(relatorioOrdemFiscalizacaoFaturasBean);
}
//anoMes LINHA 11
anoMesFatura = linhaLida.substring(1072,1079).trim();
valor = "";
if(!anoMesFatura.equals("")){
valor = linhaLida.substring(1091,1105).trim();
relatorioOrdemFiscalizacaoFaturasBean = new RelatorioOrdemFiscalizacaoFaturasBean();
relatorioOrdemFiscalizacaoFaturasBean.setFaturaAtraso(anoMesFatura);
relatorioOrdemFiscalizacaoFaturasBean.setValor(valor);
relatorioOrdemFiscalizacaoFaturasBean.setDataVencimento(linhaLida.substring(1081,1091).trim());
colecaoDebito.add(relatorioOrdemFiscalizacaoFaturasBean);
}
//anoMes LINHA 12
anoMesFatura = linhaLida.substring(1133,1140).trim();
valor = "";
if(!anoMesFatura.equals("")){
valor = linhaLida.substring(1152,1166).trim();
relatorioOrdemFiscalizacaoFaturasBean = new RelatorioOrdemFiscalizacaoFaturasBean();
relatorioOrdemFiscalizacaoFaturasBean.setFaturaAtraso(anoMesFatura);
relatorioOrdemFiscalizacaoFaturasBean.setValor(valor);
relatorioOrdemFiscalizacaoFaturasBean.setDataVencimento(linhaLida.substring(1142,1152).trim());
colecaoDebito.add(relatorioOrdemFiscalizacaoFaturasBean);
}
relatorioOrdemFiscalizacaoBean.setArrayRelatorioOrdemFiscalizacaoFaturasBean(colecaoDebito);
relatorioOrdemFiscalizacaoBean.setArrayJRFaturas(new JRBeanCollectionDataSource(colecaoDebito));
retorno.add(relatorioOrdemFiscalizacaoBean);
}
}//fim do while eof
}
}
}
} catch (IOException ex) {
throw new ActionServletException("erro.importacao.nao_concluida");
}
return retorno;
}
public String tratarNomeArquivo(String caminho) {
if (caminho.indexOf("\\") != -1){
caminho = caminho.substring(caminho.lastIndexOf("\\") + 1);
}
return caminho;
}
}